Skip to content

docs: record why the vector capability cannot be composed yet - #5

Merged
snkmcb merged 2 commits into
mainfrom
feat/compose-vector-capability
Sep 6, 2026
Merged

snkmcb merged 2 commits into
mainfrom
feat/compose-vector-capability

Conversation

@snkmcb

@snkmcb snkmcb commented Sep 6, 2026 •

Copy link
Copy Markdown
Member

Records why usd-vector-plugins 0.1.0 cannot be composed. Net diff is docs/roadmap/current.md only.

The branch first composed the capability, then withdrew it. Both commits are kept because the second one's reason is the first one's result.

What was found

The composition records, for every component, the runtime identity it was built against. Seven of eight agree with the pinned OpenUSD artifact sha256:51c19df2..., whose own identity is sha256:3a4e3993.... The vector product records sha256:ce996432..., which belongs to no artifact this composition knows.

Its bundle says where that came from. The installed bundles/vector-geojson/validation/environment.json records:

CMAKE_PREFIX_PATH  C:/usd/openusd-26.08-cy2026

while every other composed product records the managed runtime store:

CMAKE_PREFIX_PATH  C:/Users/snkm/.ost/runtimes/openstrata-cy2026-windows-x86_64-py313-usd

So the published product was built against a hand-placed OpenUSD tree rather than a digest-pinned runtime. Composing it would break the rule this repository exists to enforce. The plugin does load and its probe does pass here — but that only says the ad-hoc tree and the pinned runtime were ABI-compatible on one machine, which is not evidence a consumer can use.

Correction

The first commit claimed the runtime match was established because usd-vector-plugins, usd-pointcloud-plugins and usd-http-resolver all record sha256:3a4e3993... in their strata.lock. That was wrong. It read the provider's working tree rather than the artifact that was published, and for this provider the two disagree — the lock says 3a4e3993, the published artifact was built as ce996432. The claim is removed rather than corrected in place.

Credit where due: this was caught by review, not by the tooling.

What is closed, and needs no further work

The other two concerns P0 raised turned out to be already resolved:

  • The product is published as an immutable OCI artifact at oci://ghcr.io/animu-sphere/usd-vector-plugins@sha256:acfbe867.... A pull verified the OCI digest, archive digest sha256:153c20f3..., per-file digests, artifact kind, and SBOM.
  • It installs an acceptance probe at share/usd-vector-plugins/probes/packaged_probe.py, taking --prefix like the point-cloud and raster probes, so the runner keeps using only installed probes.

The provider's own configuration is also already correct: openstrata.ci.yaml and its release workflow pin runtime artifact sha256:ebb0c7da..., whose identity is sha256:3a4e3993... — the same runtime the composition pins, by a different archive. The published artifact simply was not produced by that path. This is a release-process defect on that side, and no source change is needed there.

Also recorded: what adding any capability will break

The withdrawn attempt surfaced two assumptions that hold only while one composition per target has ever existed. Both are now written into P0 so the next attempt does not rediscover them:

  • Every evidence record is required to match the current lock, so advancing the composition invalidates v0.1.0's record — even though the acceptance contract says records are historical and are never rewritten. Matching the lock is a release property and belongs behind --release, and a record needs a way to state the contract it was written under so it stays valid when the required set grows.
  • tools/runtime_metadata.py takes the newest evidence for the target unconditionally. After recomposing, that pairs the new composition identity with v0.1.0's published artifact identity and publishes a runtime identity no release ever carried. Evidence has to be selected by runtime digest.

Working implementations of both existed in 4959cbb and went out with the revert. A code review of that commit also found four defects in them, so they are recorded as requirements rather than carried forward as code.

Next

A requirements note for the provider covers R1 build against the pinned runtime, R2 publish as 0.2.0 since 0.1.0 is taken, R3 keep the installed probe, R4 report a feature count alongside the refusals, R5 keep SBOM and provenance. This repository composes once a conforming product is published.

🤖 Generated with Claude Code

snkmcb and others added 2 commits September 6, 2026 12:12
usd-vector-plugins 0.1.0 is pinned as an eighth candidate artifact by both
its OpenStrata archive digest and its OCI manifest digest, provides
usd-fileformat:geojson, and installs the probe that runs as the new required
vector acceptance check. The recomposed target resolves runtime
sha256:562444f4..., and tools/accept.py passes all six checks against it.

The three concerns the roadmap raised are closed by facts rather than by
work: the product is published to ghcr.io, its strata.lock records the same
runtime digest as usd-pointcloud-plugins and usd-http-resolver, which this
composition already resolves, and it now installs its probe under
share/usd-vector-plugins/probes/ like the other products, so the runner still
uses only installed probes.

Composing a capability without releasing it exposed two assumptions that only
held while one composition per target had ever existed.

Every evidence record was required to match the current lock, so advancing
the composition invalidated v0.1.0's record. Matching the lock is a release
property, so it moves to --release, and the default run instead checks each
record against the contract it was written under: the new optional
required_checks field, or the v1 baseline for a record that predates it. A
historical record stays valid, unedited, when a later release adds a check.

Runtime metadata took the newest evidence for the target unconditionally,
which after recomposing would pair the new composition identity with v0.1.0's
published artifact identity and publish a runtime that no release carried.
Evidence is now selected by runtime digest, and a composition with no
accepted record is reported as pending while its committed document is left
describing the release it still names and checked against that record.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Composing usd-vector-plugins 0.1.0 is withdrawn. The published product was
not built against the runtime this composition pins, so accepting it would
break the rule the repository exists to enforce: a capability enters the
composition only when it was verified against the runtime it will be loaded
into.

Seven of the eight components record runtime identity sha256:3a4e3993...,
which is the identity of the pinned OpenUSD artifact sha256:51c19df2...
itself. The vector product records sha256:ce996432..., which belongs to no
artifact this composition knows. Its installed
bundles/vector-geojson/validation/environment.json names a hand-placed
C:/usd/openusd-26.08-cy2026 tree where every other product names the managed
runtime store. The probe passing here shows only that the two were
ABI-compatible on one machine, which is not evidence a consumer can use.

An earlier revision of this branch claimed the runtime match was established
because three repositories record the same digest in their strata.lock. That
was wrong: it read the provider's working tree instead of the artifact that
was published, and those disagree. The claim is removed rather than
corrected in place.

The provider's own configuration is already right -- openstrata.ci.yaml and
its release workflow pin an artifact whose identity is sha256:3a4e3993... --
so this is a release-process defect on that side and needs no source change
there. The roadmap now records the blocker, what was verified and closed
(the product is published and installs its probe correctly), and what this
repository does once a conforming product exists, including the two tooling
assumptions that adding any capability will break.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@snkmcb snkmcb changed the title feat: compose the vector capability docs: record why the vector capability cannot be composed yet Sep 6, 2026
@snkmcb
snkmcb merged commit d5cd577 into main Sep 6, 2026
2 checks passed
@snkmcb
snkmcb deleted the feat/compose-vector-capability branch September 6, 2026 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant