# HyperTwist Phase 4R Packet 4R-C shared-assets Allowlist Implementation

Created on `2026-05-13`

## Status

`Phase 4R / Packet 4R-C` is now `closed`.

This packet converts the retained boundary-sensitive `google/model-viewer/packages/shared-assets` row from a queued mixed-provenance fixture pack into a landed first-party HyperTwist shared-assets allowlist, provenance-boundary, and fixture-refresh lane.

It does not reopen `Phase 0R`, `Phase 1R`, `Phase 2R`, `Phase 3R`, `Phase 4R-A`, or `Phase 4R-B`.

Those earlier packets still own:

- source-value extraction
- retained-set routing
- ownership and acceptance boundaries
- landed browser viewer and browser spatial owner decisions
- the landed classic-cubing and legacy `4D` boundary-sensitive preserve lanes

This packet owns the next question instead:

- what first-party shared-assets implementation actually landed
- how the mixed per-asset terms were converted into an explicit allowlist and shipping boundary
- which retained fixture value is now live
- what remains review-only, local-only, or excluded
- what validation was completed
- what the next bounded implementation move is after this landing

## Authority order

For future work on the shared-assets boundary-sensitive lane, read in this order:

1. this packet for landed allowlist scope, provenance boundary result, and validation result
2. [HYPERTWIST_LIVE_LANES_SOURCE_AND_PRESERVATION_AUDIT_2026-05-13.md](C:/HyperTwist/docs/HYPERTWIST_LIVE_LANES_SOURCE_AND_PRESERVATION_AUDIT_2026-05-13.md:1) for live-lane preserve posture
3. [HYPERTWIST_PHASE_1R_RETAINED_SET_CONTRACT_AND_HANDOFF_2026-05-13.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_1R_RETAINED_SET_CONTRACT_AND_HANDOFF_2026-05-13.md:1) for retained-set routing
4. [HYPERTWIST_PHASE_0R_PACKET_0R_C_EVALUATION_2026-05-12.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_0R_PACKET_0R_C_EVALUATION_2026-05-12.md:1) for source-value extraction and non-promotion rationale
5. [HYPERTWIST_MODEL_A_MAX_VALUE_EXTRACTION_MODUS_OPERANDI_2026-05-13.md](C:/HyperTwist/docs/HYPERTWIST_MODEL_A_MAX_VALUE_EXTRACTION_MODUS_OPERANDI_2026-05-13.md:1) for the canonical interpretation rule that keeps future `Model A` boundary-sensitive extraction rich rather than shallow
6. [REPO_LICENSE_TRACKING.md](C:/HyperTwist/docs/REPO_LICENSE_TRACKING.md:1) for package-license, attribution, asset-term, and provenance obligations

## Packet licensing snapshot

Owner row widened by this packet:

- `google/model-viewer/packages/shared-assets`: `Apache-2.0` container with mixed per-asset terms

Checked local notice and provenance surfaces:

- [README.md](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/README.md:1)
- [ATTRIBUTIONS.md](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/ATTRIBUTIONS.md:1)
- [LICENSE](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/LICENSE:1)
- [scripts/fetch-khronos-gltf-samples.sh](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/scripts/fetch-khronos-gltf-samples.sh:1)

Representative fixture files checked:

- [RobotExpressive.glb](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/RobotExpressive.glb:1)
- [BarramundiFish.mixed.glb](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/BarramundiFish.mixed.glb:1)
- [Astronaut.glb](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/Astronaut.glb:1)
- [NeilArmstrong.glb](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/NeilArmstrong.glb:1)
- [Horse.glb](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/Horse.glb:1)
- [aircraft_workshop_01_1k.hdr](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/aircraft_workshop_01_1k.hdr:1)
- [music_hall_01_1k.hdr](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/music_hall_01_1k.hdr:1)
- [spruit_sunrise_1k_HDR.hdr](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/spruit_sunrise_1k_HDR.hdr:1)
- [whipple_creek_regional_park_04_1k.hdr](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/whipple_creek_regional_park_04_1k.hdr:1)
- [cube.gltf](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/cube.gltf:1)
- [Triangle.gltf](C:/Workspaces/HyperTwist/mirrors/permissive/google/model-viewer/packages/shared-assets/Triangle.gltf:1)

Boundary result:

- no donor asset files were copied into first-party owned source in this packet
- no claim was made that the whole package is ship-eligible
- the landed surface is a first-party Unreal allowlist, provenance-boundary, and refresh-pattern ledger that makes the mixed asset terms explicit

## Packet result

`4R-C` lands the shared-assets row as:

- `google/model-viewer/packages/shared-assets` -> `implemented_live_boundary_sensitive`

Current portfolio effect:

- curated HyperTwist shallow-eval set: `71`
- currently verified live in checked Unreal surfaces: `17`
- live permissive lanes: `13`
- live boundary-sensitive lanes: `3`
- live restrictive clean-room lanes: `1`
- active non-live implementation-board rows: `42`

## First-party landing surfaces

The landed first-party Unreal surfaces are:

- [HyperTwistTrainingSharedAssetLibrary.h](C:/HyperTwist/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingSharedAssetLibrary.h:1)
- [HyperTwistTrainingSharedAssetLibrary.cpp](C:/HyperTwist/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingSharedAssetLibrary.cpp:1)
- [HyperTwistTrainingRuntimeLibrary.h](C:/HyperTwist/UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingRuntimeLibrary.h:1)
- [HyperTwistTrainingRuntimeLibrary.cpp](C:/HyperTwist/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRuntimeLibrary.cpp:1)
- [hypertwist-reference-incorporation-targets.json](C:/HyperTwist/UnrealHyperTwist/Content/HyperTwistTraining/MaterializedCatalog/hypertwist-reference-incorporation-targets.json:1)
- [hypertwist-catalog-materialization-summary.json](C:/HyperTwist/UnrealHyperTwist/Content/HyperTwistTraining/MaterializedCatalog/hypertwist-catalog-materialization-summary.json:1)
- [google-model-viewer-shared-assets-reference-pages.jsonl](C:/HyperTwist/UnrealHyperTwist/Content/HyperTwistTraining/MaterializedCatalog/raw-extracts/google-model-viewer-shared-assets-reference-pages.jsonl:1)

## Landed implementation scope

What landed:

- a first-party shared-assets fixture ledger covering:
  - CC0 ship-eligible QA fixtures
  - attribution-bound review fixtures
  - Smithsonian review-only fixtures
  - local-only noncommercial fixtures
  - contributor-noted geometry smoke-test fixtures
- a first-party allowlist contract that records:
  - required fixture families
  - ship-eligible fixture ids
  - review-required fixture ids
  - local-only fixture ids
  - approved workflow tags
- a first-party provenance and shipping boundary that records:
  - allowed shipping fixtures
  - notice-bound fixtures
  - review-only fixtures
  - excluded fixtures
  - required notice actions
  - provenance caveats
- a first-party refresh pattern that preserves the fixture-sync and attribution-recheck workflow without automatic allowlist widening
- first-party runtime-library accessors and TSV checklist export for the new shared-assets bundle
- bundled first-party reference targets and raw source-reference capture for the allowlist, CC0 environment matrix, provenance boundary, refresh pattern, and contributed-geometry smoke-test boundary

What that means in practice:

- `google/model-viewer/packages/shared-assets` now owns the landed boundary-sensitive fixture and QA-pack preserve lane in HyperTwist
- the landed surface is a first-party Unreal contract and runtime API, not a vague future donor note
- the practical path is explicit per-asset allowlisting rather than blanket mixed-asset shipping
- the landed `google/model-viewer` packet remains the primary browser viewer owner, while `shared-assets` now owns the explicit fixture/provenance sidecar beneath it

## Preserved landed value

The donor value that was actually promoted is:

- explicit per-asset fixture family curation
- explicit CC0 environment-lighting matrices for browser parity and capture workflows
- explicit notice-bound versus review-only versus excluded asset splits
- explicit provenance and attribution review rules carried forward from `ATTRIBUTIONS.md`
- explicit fixture refresh and attribution-recheck discipline
- explicit geometry-smoke-test and parser-fixture value without turning contributor-noted assets into blanket shipping assumptions

## Excluded or non-promotion boundary

Do not promote this packet into:

- a blanket license to ship the full `shared-assets` package
- silent inheritance of all mixed-provenance fixtures as product-owned assets
- gameplay or runtime ownership
- donor docs or example-shell ownership
- removal of asset-level attribution, review, or noncommercial boundaries

Rationale:

- the package is valuable because it concentrates sample-fixture, HDRI, and provenance coverage for browser QA
- its strongest value is explicit fixture selection and compliance discipline rather than ownership of a product asset program
- the right legal posture is an explicit allowlist and provenance boundary, not pretending the container license resolves the package

## Acceptance markers satisfied

The `0R-C` and `Phase 1R` retained-value markers for this lane are now satisfied in first-party Unreal surfaces:

- a first-party fixture ledger exists for approved, review-required, local-only, and excluded fixture families
- a first-party allowlist contract exists for bounded fixture, documentation-example, and visual-QA use
- a first-party provenance and shipping boundary exists for notice, review, and exclusion duties
- a first-party refresh pattern exists for fixture sync and attribution rechecks
- bundled first-party reference targets exist for the allowlist, environment-fixture matrix, provenance boundary, refresh pattern, and contributed-geometry smoke-test boundary

## Validation

Validation completed for this packet:

- `git diff --check` passed apart from CRLF conversion warnings
- JSON validation passed for the updated materialized-catalog files and workspace manifest
- CSV import validation passed for the four canonical v6.3 ledgers
- Unreal build succeeded with:
  - `C:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\Build.bat UnrealHyperTwistEditor Win64 Development C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject -WaitMutex -NoHotReloadFromIDE`

Build result:

- `Succeeded` on `2026-05-13`

## Next move

The next bounded move is `Phase 4R-D`:

- widen `PostHog/posthog` as the retained boundary-sensitive telemetry, replay-diagnostic, and feature-governance lane with `ee/` excluded
- keep the optional `Phase 3R-G` `pissang/claygl` and `pissang/clay-viewer` comparison lane deferred unless the landed primary browser spatial stack exposes a real gap
