Repository navigation
refactor(sdk): simplify the 0.36.0 surfaces (stacked on #202) - #203
Open
facontidavide wants to merge 5 commits into
Open
facontidavide wants to merge 5 commits into
facontidavide wants to merge 5 commits into
Conversation
… helper The ImageAnnotations codec writes colours through builtin_wire::writeColor and normalizedToByte instead of byte-identical local copies; the local decoder stays, because annotation colours default alpha to 1 and skip unknown fields. create() and createV2() share detail::collectResolvedTopics for the count-then-fill retry. Drop the no-op reserved = 0 after value initialisation, and note that snapshot v2 is a full deep copy to acquire when the catalog may have changed, not per tick. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…med pixel datatypes - detail::assignPayloadBytes<T> replaces four identical buffer_assign lambdas (PointCloud, Image, DepthImage, VideoFrame). - Every FieldTable<T>::fields array deduces its size: a hand-counted N with too few initialisers left trailing descriptors with null accessors. - Image and DepthImage pixel layouts name PointField::Datatype and derive the byte size from bytesPerElement instead of the magic tags 2, 4 and 7. - PinholeIntrinsics::fromK validates K once, so a per-pixel loop checks only its own inputs; unprojectPixel stays as the one-pixel form. - field_table.hpp says list elements are addressable one by one, so a binder reads list_at lazily instead of materialising the list per access. - The unprojectPixel test moves inside the PJ namespace with its include at the top, and covers PinholeIntrinsics. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
snapshot(false) after snapshot() left pj_snapshot set although the comment promised the incremental default. It now removes the key. The key's comment also called it a "field table" stream, a name taken by FieldTable<T> in the same release; it is a snapshot stream. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
field_table_test compares serialized bytes through expectSameWireBytes instead of nine copies of the same five lines. plugin_catalog_test builds its manifests with manifestWith(key, value) on one minimal manifest constant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…act text - CHANGELOG 0.36.0 lists what changed since 0.35.0. Entries narrating the unreleased line's own history (a rename, a struct that "grew", text the previous draft "would have" broken) are gone, and so is the contradiction between the 64-handle / 64 MiB numbers and "host policy". The Host contract line is unchanged. - The toolbox guide no longer states those limits as numbers, and says createV2 serves every kind. - LIFETIME no longer says "exactly one of three" before listing four: a pinned node can also be history-exempt. - The capability rule keeps one statement (plugin_data_api.h) and the guide's table; ARCHITECTURE.md and the plugin skill point to them. - Fix the stale skill note that the annotations codec drops image_topic and the timestamp, the reference to a buffer<>() factory that does not exist, and the hand-kept list of tabled types (describe() is the list). - Note that a zero ImageAnnotations timestamp reads as absent, that an empty scene_view kind clears the view, and add the new helpers to sdk-utilities. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #202: it targets
feat/derived-objects-sdk-integration, notmain. These are the cleanups from a simplify pass (reuse, simplification, efficiency and altitude) over the 0.36.0 diff. No C ABI, vtable, flag, enum or wire-format change. The decisions that would change the contract are listed in a comment on #202, not made here.Changes
image_annotations_codec.cppwrites colours withbuiltin_wire::writeColor/normalizedToByteinstead of byte-identical local copies. The local decoder stays: annotation colours default alpha to 1 and skip unknown fields.create()andcreateV2()sharedetail::collectResolvedTopics.reserved = 0after{}.detail::assignPayloadBytes<T>replaces four identicalbuffer_assignlambdas.FieldTable<T>::fieldsarrays deduce their size. With a hand-countedN, too few initialisers silently left descriptors with null accessors.PointField::DatatypeandbytesPerElementinstead of the magic tags 2, 4 and 7.PinholeIntrinsics::fromK()validatesKonce;unprojectPixelstays as the one-pixel form. PJ4'sdepth_opscurrently re-validatesKfor every pixel at playback rate.ObjectTopicMetadataBuilder::snapshot(false)now clears the key. It was a no-op, although its comment said otherwise.expectSameWireBytes(it was copied 9 times) and amanifestWith(key, value)manifest helper.unprojectPixeltest moved inside the namespace and now coversPinholeIntrinsics.Host contract:line is untouched, andcheck_feature_floors.pyis OK.buffer<>(), and the hand-kept list of tabled types.sdk-utilities.md.Test plan
./build.sh: clean./test.sh: 98/98 passpre-commit runon the changed files (clang-format 22.1.0): cleantools/feature_floors/check_feature_floors.py: OK (126 surfaces)main, so this PR gets no CI while it targets the feat(sdk): host surfaces for derived objects and builtin field tables (0.36.0) #202 branchConsumers are source-compatible. The one removed symbol,
detail::depthImageBytesPerPixel(nowdetail::depthImageDatatype), is used nowhere in PJ4 or the plugins.🤖 Generated with Claude Code