Asset-reuse parity: canonical glb names, shared assets layout, pre-build probe - #1
Merged
Merged
Conversation
…, probe
Scene glb/gltf bundles now carry the upstream converter's deps digest in
their canonical name ({hash}_{depsdigest}_{platform}) in both the live/JIT
server and abgen-corpus, matching the asset-reuse flow the ab-cdn
deployment has run since v49. On by default; ABGEN_ASSET_REUSE=0 opts out
for parity runs against pre-v49 reference trees.
- naming: filter deps digests to GLB_DEP_EXTENSIONS (.bin + textures),
mirroring upstream computeDepsDigest — fixes digest divergence for glbs
referencing non-texture uris (also corrects the wearables path);
add split_bundle_stem for parsing canonical names
- live: per-entity deps-digest map (magenta-tolerant when enabled),
canonical naming + digest validation in the JIT build path, shared
{version}/assets/ space layout with entity-scoped read fallback,
pre-build HEAD probe that lists space hits in the manifest without
rebuilding
- space: signed HEAD support for the probe
- abcdn: flat lane strips the digest for owner-entity resolution
- corpus: canonical naming in derive_one_entity behind
EffectiveToggles.asset_reuse; strict mode skips digest-less glbs
(upstream skipped-assets semantics)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
What
Brings the scene path (live/JIT server +
abgen-corpus) to parity with the Unity converter's asset-reuse flow, which the ab-cdn deployment has run since v49. Previously abgen tracked each glb's dependencies only inside the bundle payload (metadata.json/m_Dependencies) — dependency hashes never reached bundle names, S3 keys, or manifests.On by default (matching the v49+ deployment);
ABGEN_ASSET_REUSE=0opts out for parity runs against pre-v49 reference trees.Changes
{hash}_{depsdigest}_{platform}(textures stay{hash}_{platform}), so a glb whose dependency set changes lands at a new name/key. The JIT name parser accepts three-part names and validates the requested digest against the one computed at entity scan (mirrors the C# throw on missing digest).compute_deps_digestnow filters toGLB_DEP_EXTENSIONS(.bin+ textures), mirroring upstreamcomputeDepsDigest. Previously abgen hashed all resolved refs, diverging for glbs referencing e.g..ktx2. Also corrects the wearables path.{version}/{cid}/{file}to upstream's{version}/assets/{canonical_name}; reads try the shared key first with entity-scoped fallback for pre-switch objects.Space::head; corpus builds HEAD-probe the canonical key and list hits in the entity manifest without rebuilding (upstreamcheckAssetCachebehavior).ABGEN_MAGENTA_MISSINGdrops unresolvable deps from the digest and builds with placeholders.Verification
Qmglbtest_4f53cda18c2baa0c0354bb5f9a3ecbe5_windows(byte-identical to the TS empty-deps digest vector) with canonical names in the manifest;ABGEN_ASSET_REUSE=0reproduces today'sQmglbtest_windowsoutput exactly.Notes for review
--live-modesampling of pre-v49 vintages needsABGEN_ASSET_REUSE=0to intersect with those reference manifests (documented in README). Per-vintage naming insidefrom_live_referenceis a possible follow-up.🤖 Generated with Claude Code