diff --git a/App/Resources/Companion/Lira/README.md b/App/Resources/Companion/Lira/README.md index 3be1946..9e583ac 100644 --- a/App/Resources/Companion/Lira/README.md +++ b/App/Resources/Companion/Lira/README.md @@ -3,55 +3,45 @@ ```yaml evidence_class: MESHY_EMBER_FOX_WALK_V1 file: Lira_AR_Base.usdz -runtime_size: ~4.8MB_artist_blend_dcc +runtime_size: ~20MB_ember_fox_walk +mesh_authority_pr: 246 +supersedes: ARTIST_BLEND_HERO_DCC_MID_LOD ``` -Primary: `App/Resources/Lira_AR_Base.usdz` (bundled via xcodegen) -Mirror: `App/Resources/Companion/Lira/Lira_AR_Base.usdz` -Docs mirror: `docs/assets/companion/ar/Lira_AR_Base.usdz` -Artist source: `ArtSource/Companion/Lira/lira.blend` +Primary: `App/Resources/Lira_AR_Base.usdz` (bundled via xcodegen) +Mirror: `App/Resources/Companion/Lira/Lira_AR_Base.usdz` +Docs mirror: `docs/assets/companion/ar/Lira_AR_Base.usdz` -Re-export after sculpt / clip changes (does **not** use the Meshy interim path): +Current runtime package is the **Ember Fox** walk USDZ shipped by **PR #246**. The three tracked copies must remain **byte-identical**. + +Do **not** re-import or replace this mesh without an explicit asset issue. Closed PRs **#242** and **#243** are superseded; do not force-merge them. + +## Integrity ```bash -./scripts/export_lira_blend_to_usdz.sh ArtSource/Companion/Lira/lira.blend ./scripts/check_lira_usdz_integrity.sh +# or +make check-lira-usdz ``` -Legacy Meshy image-to-3d packages (if still under `ArtSource/Companion/Lira/meshy/`) are -**not** the runtime default. Do not copy them over `Lira_AR_Base.usdz`. +Marker: `docs/assets/companion/ar/artist/EXPORT_OK` — `MESHY_EMBER_FOX_WALK_V1`. +Validation: `usdchecker --arkit` PASS on package (see EXPORT_OK). ## Runtime -1. AR attach → `LiraARAssetLoader.preloadFromBundle()` -2. If hierarchy incomplete → promote markers (Body + A1–A3) + spectral FX (ember/plume/shadow) -3. Spawn clone; preserve Body textures; `applySpectralFXSkin` for Dawn/Veil/Rupture FX climate -4. Hybrid puppet: Body bob/lean + CoreGlow breath + Filament sway -5. On failure → procedural Living Familiar mid-LOD - -## Required hierarchy (post-promote) - -| Node | Role | -|------|------| -| `LiraRoot` | Root | -| `Body` | Visual mesh parent | -| `Head`, `LeftEar`, `RightEar`, `Tail` | Puppet / motion | -| `Filament`, `CoreGlow` | A3 / A2 anchors | -| `GroundShadow`, `StatusIndicator` | Chrome | +1. AR attach → `LiraARAssetLoader.preloadFromBundle()` (versioned async template load) +2. Spawn may use **procedural Living Familiar** only as a bounded fallback while the package decodes +3. When decode completes, **authored Ember Fox** replaces the fallback in-place +4. Scene-owned anchors are explicitly detached so replacement leaves **one** companion +5. Embedded walk cycle targets the **skeleton**; scale/ground contact follow measured contract +6. State updates must not overwrite the imported asset’s canonical base transform -## DCC clip sidecars - -Per-state Blender actions also ship as: +## Per-state clip sidecars `App/Resources/Companion/Lira/Clips/Lira_{Idle,Follow,Investigate,Alert,Celebrate,Spawn}.usdz` -At preload, `LiraARAssetLoader.loadDCCClipSidecars()` maps any RealityKit-visible -animations into `LiraSkeletalPlayer` (overlaying the puppet library). When RealityKit -exposes no `availableAnimations` for the Blender crate export, the player stays on -`puppet:multiPart:6_clips` — state motion still works; DCC bone curves do not. +These remain bundled for catalog/fallback paths. While an authored walk clip is present on the Ember Fox rig, `LiraSkeletalPlayer` stands down for conflicting multi-part DCC binding (see EXPORT_OK). Per-state authored clips return when a compatible rig ships — add incrementally; **never** replace the base mesh merely to add clips. -## Integrity +## Historical note -```bash -./scripts/check_lira_usdz_integrity.sh -``` +The retired **artist-blend / DCC mid-LOD** package (`ARTIST_BLEND_HERO_DCC_MID_LOD`, ~5 MB) was the previous default. It is **not** the active runtime. Historical receipts and Phase A notes that pin artist-blend SHAs (`3cc8ac2`, `d7954ac`) remain historical evidence only. diff --git a/KNOWN_LIMITATIONS.md b/KNOWN_LIMITATIONS.md index 6007f08..eddb373 100644 --- a/KNOWN_LIMITATIONS.md +++ b/KNOWN_LIMITATIONS.md @@ -25,7 +25,9 @@ - Whether Apple Watch-originated samples appear with the expected timing in the current iPhone HealthKit queries. - Whether the conservative defaults are appropriate across devices, terrain, urban canyons, and accessibility-related walking patterns. -A **PARTIAL** outdoor AR operator receipt exists (`docs/design/receipts/OUTDOOR_AR_RECEIPT_20260720_DEVICE_PARTIAL.md`, pre-mitigation continuity/audio notes). That is **not** a full outdoor COH PASS. Continuity/audio/UI/DCC mitigations and Hallmark polish have since landed on main; do **not** mark GPS, outdoor audio, battery, or outdoor AR quality as PASS from simulator, package evidence, Phase A, or that PARTIAL alone. Issue #41 requires a daylight re-walk on **current main tip** (see `docs/collaboration/ACTIVE_WORK.md` and the latest `OUTDOOR_QA_RECEIPT_*_PENDING.md`). +A **PARTIAL** outdoor AR operator receipt exists (`docs/design/receipts/OUTDOOR_AR_RECEIPT_20260720_DEVICE_PARTIAL.md`, pre-mitigation continuity/audio notes). That is **not** a full outdoor COH PASS. Continuity/audio/UI mitigations, Hallmark polish, Ember Fox mesh/runtime (**#246**), and real-walk pressure tuning (**#248**) have since landed on main; do **not** mark GPS, outdoor audio, battery, or outdoor AR quality as PASS from simulator, package evidence, historical Phase A (`3cc8ac2` / `d7954ac` era), or that PARTIAL alone. Issue #41 requires a daylight re-walk on **current main tip** (see `docs/collaboration/ACTIVE_WORK.md`). Pre-mesh indoor/outdoor PENDING scaffolds are historical — re-scaffold for the install tip. + +**Companion package:** Packaged Ember Fox (`MESHY_EMBER_FOX_WALK_V1`) is the authoritative runtime asset. The retired artist-blend/DCC mid-LOD package is not current. Device claims that the authored mesh replaced the procedural fallback require physical OBSERVED evidence; issue **#247** holds TestFlight archive until that is confirmed on the post-#246 tip. The local field-test receipt is engineering evidence only. It has no remote analytics or automatic upload, and receipt creation does not validate physical behavior. Timestamps may reveal session timing when a receipt is shared, field-test ratings remain manual, and receipt-related battery impact is unverified. Settings can show latest-receipt status and share the on-device JSON; that is still a privacy-filtered engineering export, not analytics. diff --git a/README.md b/README.md index 7d5e363..4727fcf 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,8 @@ Demo Mode runs the same deterministic loop without physical movement or location | Deterministic Demo Mode | ✅ Implemented | Package-testable | | Local session memories | ✅ Implemented | Concise, privacy-bounded facts | | Real-walk Core Location wiring | 🟡 Validation | Outdoor GPS requires device receipts (#41) | -| AR app adapter (MVP) | ✅ Implemented (frozen) | Presentation-only; outdoor tracking PARTIAL / re-walk | +| AR app adapter (MVP) | ✅ Implemented (frozen) | Presentation-only; outdoor tracking PARTIAL / re-walk (#41) | +| Packaged companion (Ember Fox) | ✅ Implemented (#246) | Async load + procedural fallback + live replace; device outdoor evidence still open | | Path progress + session map | ✅ Implemented | Semantic path, not navigation-grade | | HealthKit read enrichment | ✅ Implemented | Soft context; physical HK evidence open | | Multiplayer, marketplace, LiveOps | 🔒 Deferred | Outside current scope | diff --git a/docs/assets/companion/ar/README.md b/docs/assets/companion/ar/README.md index a9fc477..0befc84 100644 --- a/docs/assets/companion/ar/README.md +++ b/docs/assets/companion/ar/README.md @@ -2,9 +2,11 @@ | File | Role | | ---- | ---- | -| `Lira_AR_Base.usdz` | Packaged mid-LOD (same as app) | -| `src/Lira_AR_Base.usda` | Editable source; rebuild via `scripts/build_lira_usdz.sh` | +| `Lira_AR_Base.usdz` | Packaged Ember Fox runtime (same bytes as app; `MESHY_EMBER_FOX_WALK_V1`) | +| `artist/EXPORT_OK` | Evidence marker for current package | +| `src/Lira_AR_Base.usda` | Historical/generated source path; not the current Ember Fox default | -Runtime: `App/Resources/Companion/Lira/Lira_AR_Base.usdz` -Loader: `LiraARAssetLoader` +Runtime: `App/Resources/Lira_AR_Base.usdz` (+ nested mirror) +Loader: `LiraARAssetLoader` (async template + procedural fallback + live replace) +Authority: PR #246 Spec: `docs/design/LIRA_AR_PRODUCTION_RIG.md` diff --git a/docs/canonical/CURRENT_CAPABILITY_MATRIX.md b/docs/canonical/CURRENT_CAPABILITY_MATRIX.md index 0f7ddca..c5847b9 100644 --- a/docs/canonical/CURRENT_CAPABILITY_MATRIX.md +++ b/docs/canonical/CURRENT_CAPABILITY_MATRIX.md @@ -6,13 +6,15 @@ | Movement integrity | Implemented | Binding | Do not change thresholds without scoped issue | | Lira companion | Implemented | Binding | Extend only through approved states | | Bond | Implemented | Binding | Require migration plan for schema or semantic changes | -| Bounded pursuit pressure | Implemented | Binding | Preserve safety constraints | +| Bounded pursuit pressure | Implemented | Binding | Preserve safety constraints; real-walk pressure curve from PR #248 is gameplay tuning only | | Deterministic events | Implemented | Binding | Seeded reproducibility; companion-first defaultRules v1.1 | | Semantic audio | Implemented | Binding | Core must not own filenames | | Local persistence | Implemented | Binding | Make no cloud assumptions | | Field-test receipts | Implemented | Binding | Preserve privacy filtering | | AR semantic contracts | Implemented | Binding | Keep platform-neutral | | AR app adapter (MVP) | **Implemented (frozen)** | Binding | Maintenance/defects only — see `AR_MVP_FREEZE.md` | +| Packaged companion mesh (Ember Fox) | **Implemented** | Binding | PR #246; do not re-import/replace without asset issue; #242/#243 superseded | +| Mesh async load + procedural fallback + live replace | **Implemented** | Binding | Authored asset must replace fallback; single companion anchor | | Real-walk-to-AR commands | **Implemented** | Binding | Device tracking quality still requires evidence | | Path progress (semantic) | **Implemented (v1.1+summary)** | Binding | Not navigation-grade | | HealthKit read enrichment | **Implemented (v1.1 hardened)** | Binding | Optional step-volume + distance; Demo never blocked | @@ -23,7 +25,8 @@ | Workout-session mirroring | Deferred | Reference only | Preserve iPhone gameplay authority and idempotent reconciliation | | WatchConnectivity semantic sync | Deferred | Reference only | Non-authoritative state only; session ID + revision required | | Live heart-rate/effort enrichment | Deferred | Reference only | Raw metrics may not directly select events or raise coercive pressure | -| Outdoor physical AR QA | Partial | Binding evidence | PARTIAL receipt 2026-07-20; full PASS requires #41 re-walk on tip SHA (blocking further outdoor PASS claims) | +| Outdoor physical AR QA | Partial | Binding evidence | PARTIAL receipt 2026-07-20 (historical pre-mesh); full PASS requires #41 re-walk on **current** tip SHA | +| Indoor Ember Fox device smoke | Pending device | Binding evidence | Mesh may render on device; outdoor tracking/thermal still incomplete without receipts | | Glasses glance adapter | Implemented (flag default off) | Supporting | Mock/transport; physical glasses NOT_COMPUTABLE | | Companion presentation matrix | Implemented | Binding | Shared behavior/distance/AR string authority | | Conversation Director | **Release candidate** | Reference only | Define provider-neutral contracts and evidence gate before implementation | @@ -36,4 +39,15 @@ | Multiplayer | Excluded | Binding | Do not implement | | Marketplace/creator SDK | Excluded | Binding | Do not implement | | Economy/LiveOps | Deferred | Reference only | Do not implement | -| Generative AI required for canonical loop | Excluded | Binding | Deterministic and offline fallback behavior is mandatory | \ No newline at end of file +| Generative AI required for canonical loop | Excluded | Binding | Deterministic and offline fallback behavior is mandatory | + +## Runtime identity snapshot (non-binding convenience) + +| Field | Value | +| --- | --- | +| Documented `main` tip at last matrix refresh | `7df3a169ede507ce54469330318f66c4603f8c3d` | +| Companion package | Ember Fox USDZ (`MESHY_EMBER_FOX_WALK_V1`) | +| Mesh authority | PR #246 | +| Superseded mesh PRs | #242, #243 (closed) | +| Retired default package | Artist-blend / DCC mid-LOD (`ARTIST_BLEND_HERO_DCC_MID_LOD`) | +| Live coordination | `docs/collaboration/ACTIVE_WORK.md` | diff --git a/docs/collaboration/ACTIVE_WORK.md b/docs/collaboration/ACTIVE_WORK.md index 7a52d45..97ac73b 100644 --- a/docs/collaboration/ACTIVE_WORK.md +++ b/docs/collaboration/ACTIVE_WORK.md @@ -2,7 +2,7 @@ This file is a repository-readable coordination surface for humans and coding agents. GitHub issues and pull requests remain the authoritative records. -Last updated: 2026-07-25 (main `d7954ac` — Phase A PASS; device + TF human lane) +Last updated: 2026-07-29 (**FREEZE LANE** — re-baseline docs + laptop baseline on lineage `7df3a16`; no redesign until freeze merges) > **Coordination contract:** [Issue #47](https://github.com/scrimshawlife-ctrl/Waykin/issues/47) · **Live workflow:** [Project #1](https://github.com/users/scrimshawlife-ctrl/projects/1) · [Coordination protocol](GITHUB_PROJECT_COORDINATION.md) @@ -10,59 +10,77 @@ Last updated: 2026-07-25 (main `d7954ac` — Phase A PASS; device + TF human lan | Work | Owner | Status | Dependency | |---|---|---|---| -| Issue #41 — outdoor / physical validation | Human device | **Parked / PARTIAL** — daylight re-walk on tip `d7954ac` (or ≥ `3cc8ac2` with same binary identity) | [DEFERRED_RECOMMENDATIONS.md](../design/DEFERRED_RECOMMENDATIONS.md) · [OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md](../design/receipts/OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md) | -| Indoor AR hybrid smoke | Human device | **Armed** — Phase A PASS; fill PENDING on install tip | [INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md](../design/receipts/INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md) · protocol [INDOOR_AR_HYBRID_SMOKE.md](../design/INDOOR_AR_HYBRID_SMOKE.md) | -| Internal TestFlight RC | Human (signing / ASC) | **Ready to archive** — marketing **0.9.0** / build **2**; laptop validate PASS | [TESTFLIGHT_RC_CHECKLIST.md](../design/TESTFLIGHT_RC_CHECKLIST.md) · [PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md](../design/receipts/PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md) | +| **Freeze: docs re-baseline + laptop receipt** | Docs / eng | **PR open** — [#249](https://github.com/scrimshawlife-ctrl/Waykin/pull/249) (`docs/current-main-rebaseline`); receipt + Prabu mesh ref; merge before build-on-top | [CONTINUATION_PLAN.md](../design/CONTINUATION_PLAN.md) · [PR #249](https://github.com/scrimshawlife-ctrl/Waykin/pull/249) | +| Indoor Ember Fox smoke | Human device | **Scaffold ready** — fill [INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md](../design/receipts/INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md) after #249 merge; visual gold = Prabu IMG_2534 | [INDOOR_AR_HYBRID_SMOKE.md](../design/INDOOR_AR_HYBRID_SMOKE.md) · [DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md](../design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md) | +| Prabu device mesh reference | Prabu (historical OBSERVED) | **Authored fox on device** (not procedural spheres); strip `animated_usdz` + `anim=PLAYING` — **SHA not on photo** | [DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md](../design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md) · evidence PNG | +| Issue #41 — outdoor / physical validation | Human device | **Parked** — scaffold [OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md](../design/receipts/OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md); walk after indoor preferred | [DEFERRED_RECOMMENDATIONS.md](../design/DEFERRED_RECOMMENDATIONS.md) | +| Issue #247 — TF archive hold | Product / dist | **Softened, not closed** — Prabu photo shows authored mesh on *some* build; still need OBSERVED on **exact freeze/archive SHA** before TF | [#247](https://github.com/scrimshawlife-ctrl/Waykin/issues/247) | +| Internal TestFlight RC | Human (signing / ASC) | **Blocked** — freeze + #247 + fresh validate first | [TESTFLIGHT_RC_CHECKLIST.md](../design/TESTFLIGHT_RC_CHECKLIST.md) | +| PR #245 AR redesign docs | Docs lane | **Parked behind freeze** — SUPPORTING only; recover onto freeze tip later; do **not** merge stale branch | [#245](https://github.com/scrimshawlife-ctrl/Waykin/pull/245) | +| AR session redesign PRs / Phase 0 law | — | **Not started** — build-on-top only after freeze + device honesty | Continuation plan steps 9–12 | ## Tip identity | Field | Value | |---|---| -| `main` tip (full) | `d7954ac44000da76f53ee687ebb26fed9dcfeeca` | -| `main` tip (short) | `d7954ac` | -| Marketing / build | **0.9.0 (2)** | -| Phase A validate SHA | `3cc8ac2` (ancestor; app version + binary same; tip adds docs only via #239) | -| Open product issues | [#41](https://github.com/scrimshawlife-ctrl/Waykin/issues/41) only | -| Open PRs | Prefer none; board is device/TF human lane | +| Code lineage (app/mesh binary) | `7df3a169ede507ce54469330318f66c4603f8c3d` (`7df3a16`) — Ember Fox #246 + pressure #248 | +| Freeze docs PR | [#249](https://github.com/scrimshawlife-ctrl/Waykin/pull/249) — docs-only on top of code lineage; **after merge**, `main` tip moves to the freeze merge commit | +| Install / device / #247 SHA rule | Always `git pull` then record **`git rev-parse HEAD`** of the install build. Do **not** treat `7df3a16` as the post-freeze archive tip once #249 lands — use the **current `main` tip** at install time | +| Current companion | Packaged **Ember Fox** USDZ (`MESHY_EMBER_FOX_WALK_V1`) | +| Mesh integration authority | [PR #246](https://github.com/scrimshawlife-ctrl/Waykin/pull/246) (`b17864e`) | +| Mesh runtime | Versioned asynchronous template loading; procedural fallback; live authored replacement; scene-owned anchors explicitly removed | +| Gameplay tuning (not AR impl) | Real-walk pressure curve — [PR #248](https://github.com/scrimshawlife-ctrl/Waykin/pull/248) | +| Superseded mesh PRs | [#242](https://github.com/scrimshawlife-ctrl/Waykin/pull/242) and [#243](https://github.com/scrimshawlife-ctrl/Waykin/pull/243) **closed**; do not merge | +| Marketing / build (in tree) | **0.9.0 (2)** — **revalidate** before retaining as RC; #247 holds archive | +| Last pre-mesh Phase A receipt | `3cc8ac2` / tip `d7954ac` era — **historical**; re-run validate on current tip | +| Open implementation issues | [#41](https://github.com/scrimshawlife-ctrl/Waykin/issues/41), [#247](https://github.com/scrimshawlife-ctrl/Waykin/issues/247) (re-query at execution; do not assume “#41 only”) | +| Open PRs (non-mesh) | #245 (docs redesign, supporting), #244 (license) — treat as separate lanes | ## Recently completed (main) | Work | Evidence | |---|---| -| Coordination doc sync to tip | PR #240 · main `d7954ac` | -| Phase A + device/TF handoff receipts | PR #239 · `7089b5d` | -| TF cut SHA pin | PR #238 · `3cc8ac2` | +| Real-walk event pressure on real distances | PR #248 · main `7df3a16` | +| Ember Fox package + load/replace/anchor/animation runtime | PR #246 · `b17864e` | +| Coordination doc sync (pre-mesh tip) | PR #240 · `d7954ac` — **historical tip pin** | +| Phase A + device/TF handoff receipts (artist-blend era) | PR #239 · `7089b5d` — **historical** | +| TF cut SHA pin (artist-blend era) | PR #238 · `3cc8ac2` — **historical** | | Marketing 0.9.0 (2) + board + indoor scaffold | PR #237 · `2d969a0` | -| Hallmark UI polish (Trail featured, single state chip, LiraMaterial tokens, left-bias, WaykinDisplay titles) | PR #236 · `d9d1df7` | +| Hallmark UI polish | PR #236 · `d9d1df7` | | Session double-End receipt/bond guard | PR #235 · `dc54694` | | Audio cue family + lifecycle + AR presentation audio | PRs #230–#234 | -| DCC bake / composition / artist mid-LOD | PRs #222–#226 | +| Artist-blend / DCC mid-LOD (now superseded as runtime default) | PRs #222–#226 — **historical package**; not current runtime | | Privacy manifest + encryption | PRs #215 / #219 | | Persistence WP-DB1–DB5 | PRs #185–#192 | ## Operator order (human) -1. **Connect iPhone** → install Debug tip `d7954ac` → indoor I1–I12 → `evidence_class: OBSERVED` (note indoor). -2. **Archive Release** tip → Internal Testing (0.9.0 / 2) — re-run `make validate` if tip moved past Phase A receipt. -3. **Daylight outdoor #41** on same tip when free; COH only with OBSERVED device rows. +1. **Merge freeze docs #249**, then `git checkout main && git pull --ff-only` and record **exact HEAD**. +2. **Connect iPhone** → install Debug of **that HEAD** (not a remembered parent short SHA) → indoor Ember Fox smoke (fallback → authored replace, single anchor, skeleton walk; match Prabu visual ref) → `evidence_class: OBSERVED` (note indoor). +3. Confirm #247 can close only with **device** evidence on the **exact install SHA** that the authored mesh replaced the procedural fallback. +4. **Archive Release** only after #247 hold lifts and validate PASS on archive SHA; re-check marketing/build if prior candidate was already uploaded. +5. **Daylight outdoor #41** on the same install SHA when free; COH only with OBSERVED device rows. Mesh/runtime rows and world-event rows stay separate. ## Intake | Work | Reason | |---|---| -| Device Motion chrome after plant (`dcc` / clip ids) | Indoor smoke + #41 | -| Smooth companion follow polish | Field-tune if needed after #217 | +| Ember Fox indoor smoke (replace, single companion, skeleton anim) | Device lane after #246 | +| Outdoor #41 on Ember Fox tip | Mesh + world-event evidence separate | +| Recover #245 redesign docs on current main | Docs only; SUPPORTING authority | +| Phase 0 product-law AR vs audio identity | Before AR session redesign PRs | +| Smooth companion follow polish | Field-tune only after device evidence | | WP-DB6 CloudKit evaluation ADR | Only if multi-device restore required | -| Optional DM Sans / extra SVG icons | Dedicated issue only | +| Per-state animation clips on Ember Fox skeleton | Incremental; preserve base mesh | | Orc / FutureSelf cleanup | Migration issue + Codable tests | ## Blocked | Work | Reason | Required resolution | |---|---|---| -| Indoor smoke OBSERVED | Needs physical iPhone | Connect device; fill indoor PENDING receipt | -| #41 outdoor COH PASS | Device + daylight | Outdoor packet + COH; do not invent PASS from sim | -| TestFlight upload | Human Apple signing / ASC | Organizer archive of tip with 0.9.0 (2) | +| Indoor smoke OBSERVED (post-mesh) | Needs physical iPhone on tip ≥ `b17864e` | Install tip; fill Ember Fox indoor receipt | +| #41 outdoor COH PASS | Device + daylight on post-mesh tip | Outdoor packet + COH; do not invent PASS from sim | +| TestFlight archive 0.9.0 (2) | Issue #247 hold + code moved past pre-mesh Phase A | Device mesh replacement evidence; fresh validate; revalidate version/build | ## Field-test JSON (agents) @@ -76,14 +94,18 @@ See [DEFERRED_RECOMMENDATIONS.md](../design/DEFERRED_RECOMMENDATIONS.md). - Pathfinding v2, Health v2, Watch, AI Directors RC, multi-companion - Marketplace / multiplayer +- Broad AR UX redesign until binding docs are reconciled (Phase 0) ## Merge hygiene ```text -Main tip: d7954ac · version 0.9.0 (2) -Ruleset: 1 write-access approving review required -Do not reintroduce Meshy walk as default Lira_AR_Base.usdz -Do not claim outdoor PASS without #41 device receipt +Code lineage: 7df3a16 · freeze docs: #249 · companion: Ember Fox (MESHY_EMBER_FOX_WALK_V1) +After #249 merges: install/record current main HEAD (not a remembered parent short SHA) +Ruleset: 1 write-access approving review + resolved conversations required +Do not re-import or replace the Ember Fox mesh without an explicit asset issue +Do not merge closed PRs #242 or #243 (superseded by #246) +Do not force-merge stale branches onto main +Do not claim outdoor PASS without #41 device receipt on the tested SHA ``` ## UI authority (quick) diff --git a/docs/design/AR_MVP_FREEZE.md b/docs/design/AR_MVP_FREEZE.md index 4555b09..9b1a4b1 100644 --- a/docs/design/AR_MVP_FREEZE.md +++ b/docs/design/AR_MVP_FREEZE.md @@ -2,51 +2,64 @@ ```yaml document_id: WAYKIN-AR-MVP-FREEZE-001 -version: 1.1 -date: 2026-07-20 +version: 1.2 +date: 2026-07-29 status: FROZEN_FOR_ENGINEERING evidence_class: SIMULATOR_PLUS_CODE -outdoor_physical_ar: PARTIAL_DEVICE_2026_07_20 +outdoor_physical_ar: PARTIAL_DEVICE_2026_07_20_HISTORICAL outdoor_receipt: docs/design/receipts/OUTDOOR_AR_RECEIPT_20260720_DEVICE_PARTIAL.md outdoor_pass: REQUIRES_REWALK_ISSUE_41 +packaged_companion: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 +main_tip_at_refresh: 7df3a16 ``` ## Purpose -Declare AR presentation **complete for MVP engineering** so pathfinding and HealthKit can proceed without AR feature creep. +Declare AR presentation **complete for MVP engineering** so pathfinding and HealthKit can proceed without AR feature creep. Mesh/runtime shipping under approved issues (e.g. #246) is **package + loader maintenance**, not a freeze exit. ## In scope (frozen as shipped) | Surface | Implementation | | ------- | -------------- | | Session 2D Lira | Spectral stills 7×3, skins, motion polish | -| AR mid-LOD | Procedural Living Familiar **or** packaged `Lira_AR_Base.usdz` | -| USDZ load | `LiraARAssetLoader` validate + skin remap + procedural fallback | +| AR mid-LOD companion | Packaged **Ember Fox** `Lira_AR_Base.usdz` (`MESHY_EMBER_FOX_WALK_V1`) | +| USDZ load | `LiraARAssetLoader`: versioned async template load, procedural fallback, live authored replacement | +| Anchor ownership | Scene-owned anchors explicitly removed on clear/replace (no duplicate companions) | +| Animation | Embedded walk cycle targets skeleton; per-state DCC sidecars may exist for fallback paths | | Commands | `ARWorldCommand` from demo + real walk via `CanonicalARWorldCommandMapper` | -| Skins | Dawn / Veil / Rupture materials only | +| Skins | Dawn / Veil / Rupture materials only (FX / climate remap as implemented) | | Determinism | Replay/soak suites; no wall-clock in core tests | ## Explicit non-goals (do not implement under AR-F) -- Hand-sculpted **hero marketing** mesh as runtime default / AnimationLibrary expansion without an issue -- Outdoor AR tracking quality claims +- Replacing the Ember Fox base mesh without an explicit asset issue +- Merging closed mesh branches **#242** / **#243** (superseded by **#246**) +- Outdoor AR tracking quality claims without #41 device evidence - Multi-companion AR, marketplace assets - Navigation map UI, AR glasses - New companion mechanics +- Broad AR session UX redesign before Phase 0 product-law reconciliation -### Authorized art package swap +### Authorized mesh package history -**Issue #220** authorizes replacing interim Meshy / stub USDZ with a **mid-LOD production sculpt** that matches spectral stills (A1–A3). See [LIRA_AR_SCULPT_PLAN.md](LIRA_AR_SCULPT_PLAN.md). Scope is package + evidence class + integrity/tests — not AR feature expansion. +| Event | Authority | Status | +| ----- | --------- | ------ | +| Interim Meshy / stub USDZ | Pre-#220 | Retired | +| Artist mid-LOD + DCC (`ARTIST_BLEND_HERO_DCC_MID_LOD`) | #220 / #222–#226 | **Superseded as runtime default** | +| Ember Fox packaged walk | **PR #246** | **Current runtime default** | + +Scope of mesh work remains package + evidence class + integrity/tests + loader defects — not AR feature expansion. ## Frozen paths (maintenance-only) -Unless a **defect** is found: +Unless a **defect** is found or an **explicit issue** authorizes a narrow change: - `App/AR/**` feature expansion -- USDZ art pipeline expansions +- USDZ art pipeline expansions beyond approved asset issues - New AR presentation states beyond existing companion/discovery/threat -Defect fixes and isolation tests remain allowed. +Defect fixes, integrity tests, and approved mesh/loader repairs remain allowed. ## Real-walk integration (code-observed) @@ -56,6 +69,8 @@ Defect fixes and isolation tests remain allowed. | Accepted movement + world update | `update(companion, event)` | | End / fail / clear | `clearSession` | +Gameplay pressure tuning (PR **#248**) may change event reachability; it does **not** authorize AR presentation feature work. + See `docs/design/REAL_WALK_TO_AR_MAPPING.md`. ## Exit to pathfinding / HealthKit @@ -68,6 +83,7 @@ When this freeze is accepted: ## Related -- [CONTINUATION_PLAN.md](CONTINUATION_PLAN.md) v0.3 +- [CONTINUATION_PLAN.md](CONTINUATION_PLAN.md) v5.0 - [LIRA_AR_PRODUCTION_RIG.md](LIRA_AR_PRODUCTION_RIG.md) - [AR_REPLAY_VALIDATION.md](../AR_REPLAY_VALIDATION.md) +- [ACTIVE_WORK.md](../collaboration/ACTIVE_WORK.md) diff --git a/docs/design/CONTINUATION_PLAN.md b/docs/design/CONTINUATION_PLAN.md index d68948c..15d97a2 100644 --- a/docs/design/CONTINUATION_PLAN.md +++ b/docs/design/CONTINUATION_PLAN.md @@ -2,48 +2,86 @@ ```yaml document_id: WAYKIN-CONTINUATION-001 -version: 4.1 -date: 2026-07-25 -status: DEVICE_EVIDENCE_LANE -goal: indoor_smoke_then_internal_tf_then_outdoor_41 +version: 5.0 +date: 2026-07-29 +status: FREEZE_BASELINE_THEN_BUILD_ON_TOP +goal: freeze_docs_and_laptop_baseline_then_device_only_then_optional_redesign outdoor_qa: PARKED_SEE_DEFERRED_RECOMMENDATIONS -ar_status: MAINTENANCE_ONLY_UNLESS_41_OR_DEFECT +ar_status: MAINTENANCE_PLUS_APPROVED_MESH_RUNTIME_ONLY ui_package: Waykin-Design/11_Approved-Exports/CANDIDATE_v0.2/ -main_tip_at_refresh: d7954ac +main_tip_at_refresh: 7df3a16 +main_tip_full: 7df3a169ede507ce54469330318f66c4603f8c3d +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 +gameplay_pressure_pr: 248 marketing_version: "0.9.0" build_number: "2" -open_product_pr: none -open_issues: [41] +marketing_note: revalidate_before_retaining_as_rc +open_product_pr: "245_supporting_docs_only_do_not_merge_stale" +open_issues: [41, 247] authority_note: ACTIVE_WORK.md is the live coordination snapshot ``` ## Executive summary -Engineering for Lira AR mid-LOD, device AR/audio, DCC binding, Hallmark presentation polish, and internal TF version **0.9.0 (2)** is **on main**. Remaining value is **device evidence** and **distribution**, not more mesh pipeline or UI reskin churn. +Engineering for **Ember Fox** packaged companion mesh/runtime (**PR #246**), real-walk event pressure on real distances (**PR #248**), full-screen AR, audio, plant/follow, Hallmark presentation polish, and internal TF version metadata **0.9.0 (2)** is **on main**. -| Layer | Status on tip | -| ----- | ------------- | -| Artist mesh + DCC clips | Shipped (`ARTIST_BLEND_HERO_DCC_MID_LOD`, sim `clipSource=dcc`) | +Remaining value is **documentation accuracy**, **fresh automated baseline**, and **device evidence** — not mesh re-import, stale-branch recovery, or broad UI reskin churn. + +| Layer | Status on tip `7df3a16` | +| ----- | ------------------------ | +| Packaged companion | **Ember Fox** USDZ (`MESHY_EMBER_FOX_WALK_V1`, ~19–20 MB triple-mirrored) | +| Mesh / loader runtime | Async template load, procedural fallback, live authored replacement, explicit anchor detach (#246) | +| Embedded animation | Single authored walk cycle on skeleton; per-state DCC sidecars present but not bound while authored clip is active | +| Retired runtime package | Artist-blend / DCC mid-LOD (`ARTIST_BLEND_HERO_DCC_MID_LOD`) — **superseded**; historical only | +| Superseded mesh PRs | #242 / #243 closed — **do not merge** | | Full-screen AR, audio, plant/follow | Shipped (#217+) | | Hallmark UI polish | Shipped (#236) | -| Marketing / build | **0.9.0 (2)** (#237) | -| Phase A laptop validate | **PASS** on `3cc8ac2` (ancestor of tip; app binary identity holds) | -| Indoor device smoke | **Human — next** (PENDING receipt) | -| Internal TestFlight upload | **Human — parallel OK** | -| Outdoor #41 COH | **Human — daylight** | +| Real-walk pressure curve | Shipped (#248) — gameplay tuning, **not** AR implementation | +| Marketing / build (in tree) | **0.9.0 (2)** — revalidate; #247 holds TF archive | +| Phase A laptop validate (post-mesh) | **Required** on current tip (pre-mesh receipts are historical) | +| Indoor device smoke | **Human — next** (Ember Fox protocol) | +| Outdoor #41 COH | **Human — daylight** on post-mesh tip | +| AR redesign docs (#245) | Supporting only; recover onto current main — do not merge stale branch | ## Completed eng waves (recent) | Wave | Evidence | | ---- | -------- | -| Artist mid-LOD package | #222 | +| Ember Fox package + placement + animation runtime | #246 · `b17864e` | +| Real-walk pressure on real distances | #248 · `7df3a16` | +| Artist mid-LOD package (superseded runtime) | #222 — **historical** | | Device AR/audio/follow | #217 | -| DCC sidecar composition + bake | #224 / #226 | +| DCC sidecar composition + bake (historical path) | #224 / #226 | | Audio cue family + lifecycle + AR audio map | #230–#234 | | Session double-End guard | #235 | | Hallmark presentation polish | #236 · `d9d1df7` | -| TF 0.9.0 (2) + board | #237 · `2d969a0` | -| Cut SHA pin + Phase A handoff + board sync | #238–#240 · tip `d7954ac` | +| TF 0.9.0 (2) + board (pre-mesh) | #237 · `2d969a0` | +| Pre-mesh cut SHA + Phase A + board sync | #238–#240 · tip `d7954ac` — **historical tip** | + +## Safe sequence (campaign) — freeze first, then build + +```text +FREEZE LANE (do not skip) +1. Re-baseline current documentation ← done on docs/current-main-rebaseline +2. Validate post–Ember Fox lineage → receipt ← POST_EMBER_FOX_BASELINE_* +3. Merge freeze docs to main (write-access gate) +4. Stop feature/redesign work on other branches that predate the freeze tip + +DEVICE LANE (on frozen lineage only) +5. Indoor Ember Fox smoke (device OBSERVED) +6. Resolve or re-scope #247 (authored mesh on device) +7. Outdoor evidence walk (#41) +8. Internal TestFlight only after #247 + validate on archive SHA + +BUILD-ON-TOP LANE (only after freeze + device honesty) +9. Recover PR #245 docs onto freeze tip (SUPPORTING; never merge stale branch) +10. Phase 0 binding product-law reconciliation +11. AR session shell in bounded PRs +12. State animations incrementally (preserve base mesh) +``` + +**Rule:** Do not start steps 9–12 until freeze docs are on `main` and device lanes are at least armed with tip-bound receipts. Prefer freezing release engineering over parallel redesign churn. ## Phase A — Pre-device gates (laptop) @@ -51,39 +89,46 @@ Engineering for Lira AR mid-LOD, device AR/audio, DCC binding, Hallmark presenta git checkout main && git pull --ff-only SHA=$(git rev-parse HEAD) && echo tip=$SHA make check-lira-usdz +make test make validate +make validate-simulator # when presentation changed +git diff --check ``` -| Gate | Expected on tip ≥ `2d969a0` | +| Gate | Expected on tip ≥ `b17864e` | | ---- | --------------------------- | -| Integrity | PASS + 6 DCC sidecars + animated joints | +| Integrity | PASS + triple hash match + `MESHY_EMBER_FOX_WALK_V1` | | Validate | OVERALL PASS (package tests + WaykinApp) | -| Version | Info.plist **0.9.0** / **2** | +| Version | Info.plist **0.9.0** / **2** (revalidate before RC claim) | -Latest Phase A receipt: `docs/design/receipts/PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` -Re-run Phase A if main moves with **code** changes before archive/device install. +Pre-mesh Phase A receipt (historical): `docs/design/receipts/PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` +**Re-run Phase A** on current tip before archive/device install claims. -## Phase B — Indoor AR hybrid smoke (human, ~15 min) +## Phase B — Indoor Ember Fox smoke (human, ~15 min) Protocol: [INDOOR_AR_HYBRID_SMOKE.md](INDOOR_AR_HYBRID_SMOKE.md) 1. Install **exact** tip SHA (Debug + operator strip preferred). -2. Run I1–I12; mark PASS / FAIL / NOT_COMPUTABLE only. -3. Expect Motion line with `dcc` / clip ids after plant (**device** OBSERVED). -4. Share field-test JSON (schema ≥ 5); no coordinates. -5. Fill PENDING receipt; use `evidence_class: OBSERVED` (note indoor); open repair issues only for FAIL. - -**Current scaffold:** `docs/design/receipts/INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md` +2. Confirm procedural fallback may appear only during bounded load. +3. Confirm **Ember Fox** replaces fallback automatically; **one** companion anchor remains. +4. Confirm embedded walk drives the **skeleton** (not wrong root target). +5. Plant / replant / interruption / background recovery; end session diagnostics. +6. Share field-test JSON (schema ≥ 5); no coordinates. +7. Fill a tip-bound PENDING receipt; `evidence_class: OBSERVED` (note indoor). + +Historical scaffold (artist-blend era, not current install target): +`docs/design/receipts/INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md` **Does not close #41.** -## Phase C — Internal TestFlight (human, parallel to B) +## Phase C — Internal TestFlight (human; gated) Checklist: [TESTFLIGHT_RC_CHECKLIST.md](TESTFLIGHT_RC_CHECKLIST.md) -1. Archive tip with **0.9.0 (2)** (already set on main). -2. Privacy/encryption already on main (#215/#219). -3. Internal group only; #41 **not** required for internal TF. -4. Re-run `make validate` if tip moved past Phase A receipt with code changes. +1. Issue **#247** must be resolved or explicitly waived with device evidence of authored mesh on screen. +2. Archive only an exact validated SHA after post-mesh Phase A PASS. +3. Revalidate marketing/build; bump build if **0.9.0 (2)** was already uploaded. +4. Privacy/encryption already on main (#215/#219). +5. Internal group only; #41 **not** required for internal TF, but mesh replacement **is**. ## Phase D — Outdoor #41 (human, daylight) @@ -91,15 +136,20 @@ Protocol: [OUTDOOR_SESSION_PACKET.md](OUTDOOR_SESSION_PACKET.md) + issue #41. 1. Same tip as indoor (or re-run Phase A after any merge). 2. Daylight walk; COH PASS/PARTIAL/FAIL with OBSERVED only. -3. Silhouette, plant/replant, DCC motion in sun, continuity, audio, thermal. +3. Report **mesh/runtime** evidence separately from **world-event** evidence (pressure curve from #248 changes variety reachability, not density intent). +4. Silhouette, plant/replant, authored walk in sun, continuity, audio, thermal. -**Current scaffold:** `docs/design/receipts/OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md` +Historical outdoor scaffold: `docs/design/receipts/OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md` +Create a new tip-bound scaffold when walking `7df3a16` or later. ## Explicit non-goals -- Re-sculpt Lira without a defect -- Meshy walk as default runtime USDZ +- Re-import or replace the Ember Fox mesh without an explicit asset issue +- Merge closed PRs **#242** or **#243** +- Force-merge stale branches onto `main` - Outdoor quality claims from sim or indoor smoke alone +- Broad AR UX redesign before Phase 0 binding-doc reconciliation +- Treating supporting redesign docs (#245) as binding product law - MVP expansion without promotion - AI Directors / Watch / CloudKit without promotion @@ -107,21 +157,26 @@ Protocol: [OUTDOOR_SESSION_PACKET.md](OUTDOOR_SESSION_PACKET.md) + issue #41. | Symptom | First look | | ------- | ---------- | -| `mapped=0` / puppet only on tip ≥ `c4995f4` | Wrong build/tip; Clips missing; integrity FAIL | -| Plant fail / duplicate Lira | Continuity / placement | +| Procedural placeholder never replaced | Template load / versioned replace path (#246); issue #247 | +| Duplicate companion anchors | Scene-owned anchor detach; continuity | +| Animation on wrong target | Skeleton-target selection vs root scene animation | +| Scale / ground drift after state change | Base-transform invariant; do not overwrite imported base | +| Plant fail / tracking loss pile-up | Continuity / placement | | Silent audio | `.playback` / silent switch / interruption | -| DCC bound but ugly motion | Art bake quality — field note; not #41 close alone | +| Sparse events after long walk | #248 pressure is distance-scaled; do not retune cadence from sparse alone | ## Success criteria | Milestone | Done when | | --------- | --------- | -| Eng DCC + Hallmark + 0.9.0 (2) | On main (done through `d7954ac`) | -| Indoor smoke | Filled receipt with device OBSERVED rows | -| Internal TF | Build on internal testing group | -| #41 | Dated outdoor receipt; no invented PASS | +| Docs match current main | No live tip pin to `d7954ac`; Ember Fox is canonical runtime | +| Eng mesh + pressure | On main through `7df3a16` | +| Indoor smoke | Filled receipt with device OBSERVED rows (Ember Fox) | +| Outdoor #41 | Dated outdoor receipt on tested SHA; no invented PASS | +| Internal TF | Build on internal testing group from validated SHA after #247 | +| Redesign docs | Recovered SUPPORTING docs on current main (not #245 merge) | --- -**Live board:** [ACTIVE_WORK.md](../collaboration/ACTIVE_WORK.md) +**Live board:** [ACTIVE_WORK.md](../collaboration/ACTIVE_WORK.md) **Parked backlog:** [DEFERRED_RECOMMENDATIONS.md](DEFERRED_RECOMMENDATIONS.md) diff --git a/docs/design/DEFERRED_RECOMMENDATIONS.md b/docs/design/DEFERRED_RECOMMENDATIONS.md index 8408df7..004493a 100644 --- a/docs/design/DEFERRED_RECOMMENDATIONS.md +++ b/docs/design/DEFERRED_RECOMMENDATIONS.md @@ -4,57 +4,67 @@ document_id: WAYKIN-DEFERRED-RECS-001 created: 2026-07-20 status: PARKED -reason: Device evidence lane (indoor smoke + outdoor #41); eng + Hallmark UI shipped +reason: Device evidence lane (indoor Ember Fox smoke + outdoor #41); eng mesh/runtime shipped main_tip_at_park: f0e6762 -main_tip_at_refresh: d7954ac -refresh_date: 2026-07-25 +main_tip_at_refresh: 7df3a16 +refresh_date: 2026-07-29 +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 +gameplay_pressure_pr: 248 marketing_version: "0.9.0" build_number: "2" ``` -Parked after UI waves, AR mesh/device stack, Hallmark polish (#236), and internal TF version cut (#237). **On tip `d7954ac`:** artist package + DCC path shipped; Phase A laptop validate **PASS** on ancestor `3cc8ac2`; indoor/outdoor human receipts PENDING. Outdoor **#41** remains first for COH. +Parked after UI waves, Ember Fox mesh/runtime (**#246**), real-walk pressure (**#248**), Hallmark polish (#236), and internal TF version metadata cut (#237). **On tip `7df3a16`:** packaged Ember Fox is the authoritative runtime; artist-blend/DCC mid-LOD is **superseded**. Pre-mesh Phase A on `3cc8ac2` / tip `d7954ac` is **historical**. Indoor/outdoor human receipts on the post-mesh tip remain PENDING. Outdoor **#41** remains first for COH. TestFlight archive remains held by **#247** until device confirms authored mesh replacement. ## Top parked item — outdoor device | Priority | Item | Notes | | -------- | ---- | ----- | -| **1** | **[#41](https://github.com/scrimshawlife-ctrl/Waykin/issues/41) outdoor AR re-walk** | Daylight physical iPhone; COH PASS/PARTIAL/FAIL; tip SHA at walk time (`d7954ac` preferred; scaffold `OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md`) | +| **1** | **[#41](https://github.com/scrimshawlife-ctrl/Waykin/issues/41) outdoor AR re-walk** | Daylight physical iPhone; COH PASS/PARTIAL/FAIL; tip SHA at walk time (`7df3a16` preferred). Pre-mesh scaffold `OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md` is **historical** — re-scaffold for the install tip. | ### Outdoor packet (when resuming #41) -1. Install tip on device (not sim only). +1. Install tip on device (not sim only); record exact SHA. 2. World plant + re-plant / camera loss (#125 mitigations). -3. A1 head · A2 core · A3 filament readability in sun/glare. -4. Hero-skinned mesh + **DCC** motion (`dcc` / clip ids on Motion line) still legible. +3. Ember Fox silhouette + ground contact readability in sun/glare. +4. Authored walk cycle on skeleton still legible while moving; animation pause when stationary if implemented. 5. Reduce Motion + live form (skin) swap. 6. Route create + map presentation still sane. -7. COH receipt with **OBSERVED** notes — no outdoor quality PASS without it. +7. Separate mesh/runtime notes from world-event variety under #248 pressure (do not retune density from sparse alone). +8. COH receipt with **OBSERVED** notes — no outdoor quality PASS without it. ## After outdoor (or if still blocked) | Priority | Recommendation | Why | | -------- | -------------- | --- | | 2 | ~~Sim screenshot matrix~~ | **Done** #194 | -| 3 | Device **indoor** AR smoke | **Armed** — fill `INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md` | -| 4 | ~~Internal TF version cut 0.9.0 (2)~~ | **Done** eng (#237); **upload** still human | -| 5 | Freehand weight paint | Only if outdoor shows joint tearing | -| 6 | Slim package further | Optional; base ~5 MB + clips | -| 7 | RC/FUTURE features | Directors, Watch, Path/Health v2 — need promotion | -| 8 | Orc/FutureSelf cleanup | Migration issue + Codable tests | +| 3 | Device **indoor** Ember Fox smoke | **Armed** — fallback→authored replace, single anchor, skeleton walk | +| 4 | ~~Ember Fox mesh/runtime eng~~ | **Done** #246 on main | +| 5 | ~~Real-walk pressure curve~~ | **Done** #248 (gameplay, not AR) | +| 6 | Close or re-scope **#247** TF hold | Device OBSERVED authored mesh; then revalidate RC | +| 7 | Internal TF archive | Only after #247 + fresh validate on archive SHA | +| 8 | Recover #245 redesign docs on current main | SUPPORTING only; do not merge stale branch | +| 9 | Phase 0 product-law AR/audio identity | Before AR session redesign implementation | +| 10 | Per-state clips on Ember Fox skeleton | Incremental; never replace base mesh just to add clips | +| 11 | RC/FUTURE features | Directors, Watch, Path/Health v2 — need promotion | +| 12 | Orc/FutureSelf cleanup | Migration issue + Codable tests | ## Explicit non-priorities while parked -- Re-authoring armature/skin “because we can” +- Replacing or re-importing the Ember Fox mesh “because we can” +- Merging closed mesh PRs #242 / #243 - Claiming outdoor AR quality without #41 -- Expanding AR under freeze without issue +- Expanding AR under freeze without issue (except approved mesh/runtime defects) - Marketplace / multiplayer / per-skin unique meshes -- Reintroducing Meshy walk as default runtime USDZ +- Treating PR #245 supporting redesign docs as binding law ## Related shipped ladder (context only) -- Mid-LOD: artist blend + DCC clips · evidence `ARTIST_BLEND_HERO_DCC_MID_LOD` +- Current runtime: Ember Fox package + async replace · evidence `MESHY_EMBER_FOX_WALK_V1` · PR #246 +- Superseded mid-LOD: artist blend + DCC clips · evidence `ARTIST_BLEND_HERO_DCC_MID_LOD` · **historical** - Hallmark presentation polish (#236): Trail featured, single state chip, LiraMaterial tokens -- Phase A: `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` +- Pre-mesh Phase A (historical): `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` --- diff --git a/docs/design/INDOOR_AR_HYBRID_SMOKE.md b/docs/design/INDOOR_AR_HYBRID_SMOKE.md index 2f0a9af..42ca8c0 100644 --- a/docs/design/INDOOR_AR_HYBRID_SMOKE.md +++ b/docs/design/INDOOR_AR_HYBRID_SMOKE.md @@ -1,12 +1,14 @@ -# Indoor AR hybrid smoke (device) +# Indoor Ember Fox AR smoke (device) ```yaml document_id: WAYKIN-INDOOR-AR-HYBRID-SMOKE-001 -version: 1.0 +version: 2.0 status: ACTIVE -priority: deferred_rec_3 +priority: deferred_rec_indoor_ember_fox evidence_rule: OBSERVED_only_on_named_device not: outdoor_COH +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 depends_on: - docs/design/LIRA_AR_PRODUCTION_RIG.md - docs/design/AR_MVP_FREEZE.md @@ -14,12 +16,18 @@ depends_on: - Issue_41_outdoor_parked ``` -**Purpose:** Confirm on a **physical iPhone indoors** that DCC / hybrid / puppet motion paths are live and legible — without claiming outdoor glare, GPS, or #41 COH PASS. +**Purpose:** Confirm on a **physical iPhone indoors** that the **Ember Fox** packaged runtime loads, replaces any procedural fallback, animates the skeleton, and recovers cleanly — without claiming outdoor glare, GPS, or #41 COH PASS. -**Who:** Human with Debug (or Release + `-WAYKIN_OPERATOR_DEBUG`) build on tip `main`. +**Visual gold standard (Prabu device test):** companion should read as the stylized fox mesh in +[`receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md`](receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md) +([evidence PNG](receipts/evidence/IMG_2534_prabu_ember_fox_device.png)) — **not** procedural multi-sphere placeholder. Operator strip should show authored `animated_usdz` (or equivalent) with animation playing when follow is active. + +**Who:** Human with Debug (or Release + `-WAYKIN_OPERATOR_DEBUG`) build on tip `main` **≥ `b17864e`** (PR #246). **Not this packet:** Daylight outdoor walk (#41). Use outdoor packet for that. +**Supersedes:** Pre-mesh DCC-clip-centric smoke expectations pinned to artist-blend tips (`d7954ac` / `3cc8ac2` era). Historical receipts retain their SHAs. + --- ## 0. Pre-device gate (laptop) @@ -37,10 +45,10 @@ bash scripts/indoor_ar_smoke_prep.sh | Gate | Required | |------|----------| -| `make check-lira-usdz` | PASS | +| `make check-lira-usdz` | PASS (`MESHY_EMBER_FOX_WALK_V1`, triple match) | | `make validate` | PASS | | Exact tip SHA recorded | yes | -| Receipt scaffold under `docs/design/receipts/` | yes | +| Receipt scaffold under `docs/design/receipts/` | yes (tip-bound; do not reuse historical `3cc8ac2` PENDING as install target) | --- @@ -63,14 +71,14 @@ Install **exact** tip. Do not mix SHAs mid-session. ## 2. Operator chrome -- DEBUG build: operator strip ON during Active Session -- Settings → Field-test receipts → after AR session end, **Share latest JSON** +- DEBUG build: operator strip ON during Active Session +- Settings → Field-test receipts → after AR session end, **Share latest JSON** - Confirm receipt schema ≥ 5 and inspect: - - `summary.arPresentation.arSessionOpened` - - `finalLODDescription` / `meshEvidenceClass` - - `motionDiagnosticsLine` (expect `dcc:` / `hybrid:` / `puppet:` style labels when skeletal path ran) - - `continuityReplantCount`, `companionPlaced` + - `summary.arPresentation.arSessionOpened` + - `finalLODDescription` / `meshEvidenceClass` (expect Ember Fox / `MESHY_EMBER_FOX_WALK_V1` class when authored path ran) + - `motionDiagnosticsLine` (skeleton / authored walk when live) + - `continuityReplantCount`, `companionPlaced` - Console.app: subsystem `life.scrimshaw.waykin`, category `ar` @@ -80,33 +88,58 @@ Install **exact** tip. Do not mix SHAs mid-session. | ID | Check | Pass criteria | Result | |----|--------|---------------|--------| -| I1 | Cold launch → Home | Splash dismisses; Begin Walk visible | | -| I2 | Demo Begin Walk | Session chrome; operator strip shows Persist + Map | | +| I1 | Cold launch from clean install | Splash dismisses; Home / Begin Walk visible; no crash on persistence init | | +| I2 | Demo or real Begin Walk | Session chrome; persistence healthy | | | I3 | Open AR full-screen | Cover not swipe-dismiss; Pause/End mirrored | | -| I4 | Plant / place Lira | Companion becomes visible on horizontal surface (table/floor) | | -| I5 | Motion source | Operator chrome / receipt motion line shows **dcc**, **hybrid**, or **puppet** (not stuck `none` forever after place) | | -| I6 | Idle → walk presentation | Distinct motion or still change when session state advances (no color-only claim) | | -| I7 | Tracking loss (cover lens briefly) | Continuity hint or calm recovery; no duplicate Liras after recover | | -| I8 | Clear / leave AR | No leftover companion when AR closed | | -| I9 | Re-open AR | Single Lira; no resurrected pile of entities | | -| I10 | Reduce Motion ON | Continuous decorative motion stops or stills; state still readable | | -| I11 | Skin / form if available | Dawn/Veil/Rupture materials change without crash | | -| I12 | End walk → Settings receipt | Share JSON; `arPresentation` filled; no coordinates | | - -Mark each: **PASS** / **FAIL** / **NOT_COMPUTABLE** (not exercised). +| I4 | Procedural fallback window | Fallback **may** appear only during bounded asset load; not permanently | | +| I5 | Ember Fox replacement | Authored mesh **automatically** replaces fallback | | +| I6 | Single companion | Only **one** companion remains after replacement (no duplicate anchors) | | +| I7 | Height / ground contact | Plausible scale and ground contact (not floating/sunk grossly) | | +| I8 | Skeleton animation | Embedded walk affects the **skeleton** (not wrong root-only motion) | | +| I9 | Stationary pause | Companion pauses or idles animation when stationary (if implemented) | | +| I10 | Closing distance | Animation resumes or continues while closing distance / follow | | +| I11 | Plant / replant / interrupt | Tracking loss, background/foreground, replant remain functional; no pile-up | | +| I12 | End session diagnostics | Ending records AR presentation diagnostics before dismissal; share JSON | | +| I13 | Audio | Cues audible under intended audio-session policy (or note silent-switch) | | +| I14 | Stability | No severe hitch, thermal escalation, or **repeated** asset decode during short test | | + +Mark each: **PASS** / **PARTIAL** / **FAIL** / **NOT_COMPUTABLE** (not exercised). + +Legacy I-series IDs from v1.0 (DCC motion labels) are retired for new walks; historical receipts may still use them. + +--- + +## 4. Evidence fields (capture) + +| Field | Value | +|-------|-------| +| Installed commit SHA | | +| Device and iOS | | +| Time to fallback appearance | | +| Time to authored mesh replacement | | +| Anchor count before replacement | | +| Anchor count after replacement | | +| Animation state | | +| Companion scale / ground observation | | +| Session recovery behavior | | +| Audio behavior | | +| Thermal observation | | +| Screenshot or screen recording reference | | +| Overall | PASS / PARTIAL / FAIL / NOT_COMPUTABLE | --- -## 4. Evidence rules +## 5. Evidence rules -- `OBSERVED` only for direct device sight -- Indoor ≠ outdoor glare -- FAIL → **new bounded defect issue** (do not sidewalk-edit product under freeze) -- Do not close #41 from this packet +- `OBSERVED` only for direct device sight +- Indoor ≠ outdoor glare +- FAIL → **new bounded defect issue** (do not sidewalk-edit product under freeze) +- Do not close #41 from this packet +- Issue **#247** (TF hold) may close only when authored mesh replacement is OBSERVED on the archive tip --- -## 5. Receipt path +## 6. Receipt path ```text docs/design/receipts/INDOOR_AR_HYBRID_SMOKE__.md @@ -116,12 +149,14 @@ Scaffold: run `scripts/indoor_ar_smoke_prep.sh` or copy template section below. --- -## 6. Related code (for operators / agents) +## 7. Related code (for operators / agents) | Area | Path | |------|------| -| Clip source enum | `App/AR/Companion/LiraSkeletalPlayer.swift` (`dcc` / `hybrid` / `puppet`) | -| USDZ | `App/Resources/Lira_AR_Base.usdz` | +| Asset catalog / evidence class | `App/AR/Companion/LiraARAssetCatalog.swift` | +| Async load + replace | `App/AR/Companion/LiraARAssetLoader.swift` | +| Skeletal player | `App/AR/Companion/LiraSkeletalPlayer.swift` | +| USDZ | `App/Resources/Lira_AR_Base.usdz` (+ nested + docs mirrors) | | Diagnostics publish | `App/AR/CanonicalARSessionView.swift` | | Integrity | `make check-lira-usdz` | @@ -130,7 +165,7 @@ Scaffold: run `scripts/indoor_ar_smoke_prep.sh` or copy template section below. ## Template body (paste into receipt) ```markdown -# Indoor AR hybrid smoke receipt +# Indoor Ember Fox AR smoke receipt \`\`\`yaml document_id: WAYKIN-INDOOR-AR-HYBRID-SMOKE-RECEIPT @@ -140,26 +175,29 @@ git_short: device_model: ios: operator: -evidence_class: OBSERVED_INDOOR_DEVICE # or NOT_COMPUTABLE if not run +evidence_class: OBSERVED # note indoor in device fields — or NOT_COMPUTABLE if not run outdoor_qa: NOT_COMPUTABLE +companion_runtime: MESHY_EMBER_FOX_WALK_V1 \`\`\` -## Results I1–I12 +## Results I1–I14 | ID | Result | Notes | |----|--------|-------| | I1 | | | | I2 | | | | I3 | | | -| I4 | | | -| I5 | | motion label: | -| I6 | | | -| I7 | | | -| I8 | | | +| I4 | | fallback timing: | +| I5 | | authored replace: | +| I6 | | anchor count after: | +| I7 | | scale/ground: | +| I8 | | skeleton walk: | | I9 | | | | I10 | | | | I11 | | | | I12 | | receipt schema / ar opened: | +| I13 | | audio: | +| I14 | | thermal/hitch: | ## Failures → issues @@ -168,5 +206,5 @@ outdoor_qa: NOT_COMPUTABLE ## Explicit non-claims - Outdoor readability / #41 COH -- GPS / battery / thermal (unless noted) +- GPS / battery / thermal PASS (unless noted as OBSERVED) ``` diff --git a/docs/design/LIRA_AR_PRODUCTION_RIG.md b/docs/design/LIRA_AR_PRODUCTION_RIG.md index 2902fa1..cb2506c 100644 --- a/docs/design/LIRA_AR_PRODUCTION_RIG.md +++ b/docs/design/LIRA_AR_PRODUCTION_RIG.md @@ -2,38 +2,43 @@ ```yaml document_id: WAYKIN-LIRA-AR-RIG-001 -version: 0.6 -status: ARTIST_BLEND_HERO_DCC_MID_LOD_SHIPPED -usdz: ARTIST_BLEND_HERO_DCC_MID_LOD +version: 0.7 +date: 2026-07-29 +status: MESHY_EMBER_FOX_WALK_V1_SHIPPED +usdz: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 mesh_descriptor: SHIPPED -runtime_animation_clips: SHIPPED_PUPPET_STATIC_MESH -skeletal_joint_hierarchy: PROMOTED_MARKERS -blender_armature_rigid_bind: REFERENCE_ONLY -direction: spectral_living_familiar -evidence_class: ARTIST_BLEND_HERO_DCC_MID_LOD -source_mesh: ArtSource/Companion/Lira/meshy/Meshy_Lira_ImageTo3D_Textured.usdz -armature: puppet_markers_plus_optional_prior_LiraArmature -puppet_style: staticMesh_body_plus_spectral_fx -spectral_fx: A2_CoreGlow_A3_Filament_GroundShadow +runtime_animation: EMBEDDED_WALK_ON_SKELETON +procedural_fallback: SHIPPED_BOUNDED_LOAD_ONLY +supersedes: ARTIST_BLEND_HERO_DCC_MID_LOD +direction: spectral_living_familiar_with_ember_fox_package +evidence_class: MESHY_EMBER_FOX_WALK_V1 +armature: meshy_auto_skin_12_joints ``` -## What shipped +## Current runtime (PR #246) | Layer | Implementation | Status | | ----- | -------------- | ------ | | Session 2D | Spectral still matrix 7×3 | DIRECTION_ACCEPTED | -| AR mid-LOD | Procedural Living Familiar (`CompanionEntityFactory`) | **Shipped** (fallback) | -| AR mesh primitives | `LiraMeshGeometry` (tapered head, sensor blades, filament segments) | **Shipped** (fallback) | -| AR local motion | `LiraARMotion` multi-seg filament, ears/tail, body bob, hunter echo | **Shipped** | -| AR runtime clips | `LiraARAnimationLibrary` (`AnimationResource` FromToBy) | **Shipped** | -| AR skeletal puppet | `LiraSkeletalAnimationLibrary` + `LiraSkeletalPlayer` | **Shipped** (entity-bind) | -| AR USDZ load | `LiraARAssetLoader` + hierarchy **promote** for incomplete meshes | **Wired** | -| AR USDZ asset | `App/Resources/Lira_AR_Base.usdz` | **ARTIST_BLEND_HERO_DCC_MID_LOD** (~4.8 MB; armature + DCC clips) | -| Blender armature | `LiraArmature` 25 bones | **Shipped** (`build_lira_armature.py`) | -| Heat-map skin | Auto-weights Body/Head/ears/legs; FX rigid | **Shipped** (`skin_lira_armature.py`) | -| Artist source | `ArtSource/Companion/Lira/lira.blend` | Export: `scripts/export_lira_blend_to_usdz.sh` | -| Generated fallback | `docs/assets/companion/ar/src/Lira_AR_Base.usda` | `scripts/build_lira_usdz.sh` | -| Animation plan | [LIRA_ANIMATION_PLAN.md](LIRA_ANIMATION_PLAN.md) | Mid-LOD + armature | +| Packaged AR companion | Ember Fox `Lira_AR_Base.usdz` (triple-mirrored) | **Current default** | +| Async template load | Versioned load + live authored replacement | **Shipped** (#246) | +| Procedural Living Familiar | `CompanionEntityFactory` | **Bounded fallback only** | +| Anchor cleanup | Scene-owned anchors explicitly removed on replace/clear | **Shipped** | +| Animation | Embedded walk cycle → skeleton target | **Shipped** | +| Per-state DCC sidecars | Six clip USDZs still bundled | Present; not bound while authored walk is active | +| AR USDZ load path | `LiraARAssetLoader` | **Shipped** | +| Superseded package | Artist-blend / DCC mid-LOD | **Historical** — not active runtime | +| Superseded mesh PRs | #242 / #243 | **Closed** — do not merge | +| Animation plan | [LIRA_ANIMATION_PLAN.md](LIRA_ANIMATION_PLAN.md) | Incremental clips without base-mesh replace | + +### Historical (superseded as default) + +| Layer | Note | +| ----- | ---- | +| Artist-blend package | Was ~4.8–5.3 MB `ARTIST_BLEND_HERO_DCC_MID_LOD`; retired as runtime default by #246 | +| Puppet / promote markers | Still used for incomplete meshes and fallback paths | +| Blender export scripts | Remain for future compatible rigs; do not overwrite Ember Fox without an issue | ## Anchors (required) diff --git a/docs/design/README.md b/docs/design/README.md index 93deac3..1cf1d90 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -12,7 +12,7 @@ Visual system imports and production follow-ons for the app repository. | [UI_CHANGE_VALIDATION_RECEIPT.md](UI_CHANGE_VALIDATION_RECEIPT.md) | Material UI PR / RC evidence checklist | SUPPORTING | | [UI_CANDIDATE_RESIDUAL_AUDIT.md](UI_CANDIDATE_RESIDUAL_AUDIT.md) | CANDIDATE_v0.2 residual vs shipped app | SUPPORTING | | [DEBUG_OPERATOR_CONTINUATION.md](DEBUG_OPERATOR_CONTINUATION.md) | Operator debug D5–D7 plan (map/persistence/font) | SUPPORTING | -| [INDOOR_AR_HYBRID_SMOKE.md](INDOOR_AR_HYBRID_SMOKE.md) | Indoor device AR DCC/hybrid/puppet smoke | Evidence protocol | +| [INDOOR_AR_HYBRID_SMOKE.md](INDOOR_AR_HYBRID_SMOKE.md) | Indoor device Ember Fox AR smoke (fallback→authored replace) | Evidence protocol | | [OUTDOOR_QA_CHECKLIST.md](OUTDOOR_QA_CHECKLIST.md) | Outdoor device UI checks (#41) | Evidence gate | | [TESTFLIGHT_RC_CHECKLIST.md](TESTFLIGHT_RC_CHECKLIST.md) | Internal TestFlight / RC engineering checklist | SUPPORTING | diff --git a/docs/design/TESTFLIGHT_RC_CHECKLIST.md b/docs/design/TESTFLIGHT_RC_CHECKLIST.md index cc62c47..8c11945 100644 --- a/docs/design/TESTFLIGHT_RC_CHECKLIST.md +++ b/docs/design/TESTFLIGHT_RC_CHECKLIST.md @@ -2,25 +2,29 @@ ```yaml document_id: WAYKIN-TESTFLIGHT-RC-001 -version: 1.1 -date: 2026-07-25 +version: 1.2 +date: 2026-07-29 status: SUPPORTING authority: SUPPORTING -parent_main_at_prep: d9d1df7ebb2dd458223f1c5ee2ab1787456c5635 -phase_a_validate_sha: 3cc8ac21a3bbe286486c551b04630b5531ec928c -main_tip_at_doc_sync: d7954ac44000da76f53ee687ebb26fed9dcfeeca -baseline_short: d7954ac +parent_main_at_prep: 7df3a169ede507ce54469330318f66c4603f8c3d +phase_a_validate_sha: REQUIRES_FRESH_POST_EMBER_FOX_RUN +main_tip_at_doc_sync: 7df3a169ede507ce54469330318f66c4603f8c3d +baseline_short: 7df3a16 +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 marketing_version: "0.9.0" build_number: "2" -validate_observed: PASS_LOCAL_20260725T194535Z_3cc8ac2 +marketing_note: revalidate_before_retaining_as_rc +validate_observed: HISTORICAL_PASS_LOCAL_20260725T194535Z_3cc8ac2_PRE_MESH outdoor_gate: ISSUE_41_OPEN +archive_hold: ISSUE_247_OPEN ``` **Purpose:** Prepare an internal TestFlight release candidate without claiming outdoor AR/GPS PASS or App Store public launch readiness. **Authority:** Supporting engineering checklist. Does not override `docs/SOLO_MVP_SCOPE.md`, `KNOWN_LIMITATIONS.md`, or issue #41 evidence rules. -**Note (2026-07-25):** Marketing **0.9.0** / build **2** is on main. Phase A `make validate` **PASS** on `3cc8ac2` (receipt `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2`). Main tip `d7954ac` adds docs only after that SHA — same app version. Prefer archiving **current `main` tip** after `git pull`; re-run validate if **code** moved past Phase A. +**Note (2026-07-29):** Marketing **0.9.0** / build **2** remains in tree. Code has moved past the pre-mesh Phase A on `3cc8ac2` / tip `d7954ac`: Ember Fox mesh/runtime is on main via **#246**, pressure tuning via **#248**. Pre-mesh validate PASS is **historical only**. Prefer archiving **current `main` tip** after `git pull` and a **fresh** `make validate`. Issue **#247** holds archive until device evidence shows the authored companion replaces the procedural placeholder. **Who:** Human with Apple Developer Program access for signing, App Store Connect, and upload. Agent can run automated gates and fill OBSERVED/NOT_COMPUTABLE rows. @@ -30,13 +34,14 @@ outdoor_gate: ISSUE_41_OPEN | Field | Value at cut | | ----- | ------------ | -| Recommended archive tip | Current `main` (`d7954ac` at doc sync; pull first) | -| Phase A validate SHA | `3cc8ac21a3bbe286486c551b04630b5531ec928c` | -| Cut date (UTC) | 2026-07-25 | +| Recommended archive tip | Current `main` (`7df3a16` at doc sync; pull first) | +| Phase A validate SHA | **Fill at cut** — must be post–Ember Fox (`≥ b17864e`); do not reuse `3cc8ac2` PASS | +| Cut date (UTC) | | | Branch | `main` | -| Marketing / build | **0.9.0 (2)** | -| `make validate` | **PASS** local 2026-07-25T19:45:22Z on `3cc8ac2` (130 package tests + WaykinApp) | -| Open product blockers | #41 outdoor COH still open — ship only as **internal** TF with known limitations | +| Marketing / build | **0.9.0 (2)** in tree — revalidate; bump build if already uploaded | +| Companion package | Ember Fox `Lira_AR_Base.usdz` (`MESHY_EMBER_FOX_WALK_V1`) present in archive | +| `make validate` | **Fill at cut** (pre-mesh PASS on `3cc8ac2` is historical only) | +| Open product blockers | #41 outdoor COH open; **#247** holds archive until authored mesh on device; internal TF only | | Dirty tree | Only intentional RC commits | If tip moves after this doc’s baseline, re-run section 2 and rewrite the SHA rows. @@ -91,14 +96,16 @@ git diff --check | Gate | Required | Result (fill) | | ---- | -------- | ------------- | | core isolation | PASS | | -| lira usdz (Meshy ≤ soft budget) | PASS | | +| lira usdz (Ember Fox integrity + triple match) | PASS | | | collaboration coordination | PASS | | | make validate (package + native best-effort) | PASS | | | git diff --check | PASS | | | validate-simulator | Recommended if UI changed since last TF | | | CI on cut commit (GitHub Actions) | PASS | | -**Baseline OBSERVED (2026-07-25 on `3cc8ac2`):** isolation PASS, usdz PASS (`ARTIST_BLEND_HERO_DCC_MID_LOD`, ~5.3 MB + 6 DCC sidecars), collab PASS, validate PASS (130 package tests + WaykinApp native build). +**Historical baseline (2026-07-25 on `3cc8ac2`, pre-mesh):** isolation PASS, usdz PASS (`ARTIST_BLEND_HERO_DCC_MID_LOD`, ~5.3 MB + 6 DCC sidecars), collab PASS, validate PASS (130 package tests + WaykinApp native build). **Not valid for post-#246 archive.** + +**Current expectation (tip ≥ `b17864e`):** usdz PASS with `MESHY_EMBER_FOX_WALK_V1`, triple byte-identical packages (~20 MB under 20 MB hard cap), catalog evidence, integrity script green. Fill OBSERVED rows only after a fresh local run. --- @@ -133,7 +140,7 @@ git diff --check | ---- | ------------------------ | -------------------- | | Demo walk | Completes; summary/memory; no location required | N/A | | Real walk | Permission honesty; pause when inactive/background | GPS quality still #41 | -| AR | Plants/clears; freeze compliance; Meshy package loads or soft fallback | Outdoor COH #41 | +| AR | Plants/clears; freeze compliance; Ember Fox replaces procedural fallback; single companion | Outdoor COH #41; #247 mesh on device | | Continuity | Indoor hybrid smoke preferred before TF wave | Outdoor re-walk after mitigations | | Path / map | Presentation-only; clears on end/fail | Outdoor map readability NOT_COMPUTABLE | | HealthKit | Optional; deny path still walks | Device auth/lifecycle evidence open | @@ -250,10 +257,11 @@ Build SHA: - Companion Walk loop (Demo + real walk), Lira presence, Bond, semantic audio - Session map presentation (not navigation-grade) - Optional HealthKit step/distance enrichment -- AR presentation with packaged Meshy Lira mid-LOD (freeze maintenance path) +- AR presentation with packaged Ember Fox companion (freeze maintenance path; PR #246) ### Engineering / known limitations - Outdoor AR/GPS/audio quality: issue #41 — NOT_COMPUTABLE until daylight COH on this tip +- Authored mesh vs procedural fallback: confirm on device before archive (#247) - Privacy notice still DRAFT_FOR_PRODUCT_REVIEW for public store - Local-first persistence only (no CloudKit) @@ -285,16 +293,18 @@ Build SHA: | **BLOCKED** | Validate red; missing PrivacyInfo; wrong entitlements (e.g. background location added accidentally); no signing; critical crash on TF1–TF2 | | **NOT READY for public App Store** | Until product-reviewed legal URLs/policy, outdoor honesty narrative, and product sign-off beyond internal TF | -### Baseline verdict (2026-07-25, tip `d7954ac` / Phase A `3cc8ac2`) +### Baseline verdict (2026-07-29, tip `7df3a16` — docs re-baseline) | Dimension | Verdict | | --------- | ------- | -| Engineering package/native validate | **READY** (PASS on `3cc8ac2`; re-run if code moves) | -| Marketing / build | **0.9.0 (2)** on main | +| Engineering package/native validate | **REQUIRES FRESH RUN** on tip ≥ `b17864e` (pre-mesh PASS on `3cc8ac2` is historical) | +| Companion package | Ember Fox on main (#246); triple package integrity expected | +| Marketing / build | **0.9.0 (2)** in tree — revalidate; bump if already uploaded | | Privacy manifest + encryption | **READY** (#215 / #219) | | Legal product review | **OPEN** (draft privacy for public store) | | Outdoor evidence | **Residual** (#41) | -| TestFlight readiness | **READY for internal TF** once human signing + Organizer archive | +| Mesh on device | **HOLD** (#247) until OBSERVED authored replacement | +| TestFlight readiness | **BLOCKED** by #247 + fresh validate; then human signing + Organizer archive | | App Store public | **BLOCKED** pending legal review + product outdoor honesty + release decision | --- diff --git a/docs/design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md b/docs/design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md new file mode 100644 index 0000000..6734f6d --- /dev/null +++ b/docs/design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md @@ -0,0 +1,105 @@ +# Device mesh visual reference — Prabu indoor test (IMG_2534) + +```yaml +document_id: WAYKIN-DEVICE-MESH-REF-PRABU-IMG-2534 +date_local_observed_on_photo: "9:37" # status bar only; full calendar date NOT_COMPUTABLE from image +evidence_class: OBSERVED +operator: Prabu +source_media: Messages attachment IMG_2534.heic → docs/design/receipts/evidence/IMG_2534_prabu_ember_fox_device.png +purpose: VISUAL_GOLD_STANDARD_FOR_AUTHORED_MESH +not: outdoor_COH +not: full_indoor_I1_I14_packet +``` + +## Purpose + +Record **how the packaged companion mesh should look on device** after successful authored load, based on Prabu’s physical-device test screenshot. This is the freeze-lane **visual acceptance reference** for Ember Fox / authored USDZ — not procedural spheres, not artist-blend primitives. + +## Source media + +| Field | Value | +| ----- | ----- | +| Original | `IMG_2534.heic` (Messages attachment; HEIF) | +| Repo copy | [`evidence/IMG_2534_prabu_ember_fox_device.png`](evidence/IMG_2534_prabu_ember_fox_device.png) | +| Conversion | `sips -s format png` from HEIC (lossless-intent still; pixel 1179×2556) | +| Privacy | Indoor carpet / household objects; **no coordinates**; no face; OK as engineering evidence | + +## OBSERVED (from screenshot) + +### Companion appearance + +- Single stylized **fox-like** companion on carpet (large upright ears, soft body, pale blue / cool-toned surface). +- Reads as **authored mesh**, not the multi-sphere procedural Living Familiar placeholder. +- Plausible ground contact relative to carpet (not grossly floating/sunk in the frame). +- Only **one** companion visible in frame. + +### Operator chrome (DEBUG strip) + +Readable fragments: + +```text +active · follow · anim=PLAYING +animated_usdz:Lira_AR_Bas… animated_skelanim:clips=6 +ok_present +``` + +| Signal | Interpretation | +| ------ | -------------- | +| `animated_usdz:Lira_AR_Bas…` | Authored package path active (not stuck on procedural-only) | +| `animated_skelanim:clips=6` | Skeletal animation path with clip count reported | +| `anim=PLAYING` | Animation not stuck off after plant | +| `active · follow` | Session active; companion presentation follow | +| `ok_present` | Continuity / presence healthy in strip | + +### Session chrome + +- Full-screen AR camera background (indoor room, mirror, carpet). +- Bottom **Pause** / **End** controls present. + +## INFERRED + +- Device path exercised a build where package load + skeletal animation were live (consistent with post-#246 runtime goals). +- This is the **intended product mesh look** for freeze acceptance and indoor smoke I5–I8 visual rows. + +## NOT_COMPUTABLE (do not invent) + +| Field | Reason | +| ----- | ------ | +| Exact install git SHA | Not visible in screenshot | +| Marketing version / build number | Not visible | +| Device model / iOS version | Not labeled | +| Time to fallback → replace | Not timed | +| Anchor count before/after replace | Not instrumented in photo | +| Outdoor quality | Indoor only | +| Audio / thermal / battery | Not evidenced | +| Whether this build equals freeze tip `7df3a16` / `ddb1438` | Unknown without operator note | + +## Relation to freeze / #247 + +| Item | Status | +| ---- | ------ | +| Visual gold standard for authored mesh | **This photo** | +| Procedural-placeholder-only failure (#247) | Contradicted **for the unknown SHA Prabu tested** — authored mesh is on screen | +| Close #247 for freeze tip | **Not automatic** — needs OBSERVED on **exact archive/install SHA** (prefer `7df3a16` or later freeze tip) | +| Outdoor #41 | Unrelated; still open | +| Laptop baseline | Still `POST_EMBER_FOX_BASELINE_*` (sim/package only) | + +## Acceptance use + +When running indoor Ember Fox smoke on the freeze tip, compare: + +1. Companion silhouette / style ≈ this reference (fox, not spheres). +2. Operator strip shows `animated_usdz` (or equivalent authored class) and animation playing when moving/follow. +3. Single companion after load/replace. + +Mismatch → narrow defect issue; do not replace mesh without an asset issue. + +## Explicit non-claims + +- Does not by itself close #41. +- Does not authorize TF archive without tip-bound SHA confirmation. +- Does not promote redesign docs or product-law changes. + +--- + +**Filed under freeze lane.** Live board: `docs/collaboration/ACTIVE_WORK.md`. diff --git a/docs/design/receipts/INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md b/docs/design/receipts/INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md new file mode 100644 index 0000000..faeeb8f --- /dev/null +++ b/docs/design/receipts/INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md @@ -0,0 +1,90 @@ +# Indoor Ember Fox AR smoke receipt (PENDING human device) + +```yaml +document_id: WAYKIN-INDOOR-AR-HYBRID-SMOKE-RECEIPT +date_utc: 2026-07-29T19:15:00Z +git_sha: 7df3a169ede507ce54469330318f66c4603f8c3d +git_short: 7df3a16 +code_lineage_note: app binary from main 7df3a16 (Ember Fox #246 + pressure #248); after #249 merge install current main HEAD not this parent short alone +freeze_docs_pr: 249 +device_model: # fill on device +ios: # fill +operator: # fill +evidence_class: NOT_COMPUTABLE +outdoor_qa: NOT_COMPUTABLE +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +visual_reference: docs/design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md +protocol: docs/design/INDOOR_AR_HYBRID_SMOKE.md +status: PENDING_HUMAN_DEVICE +note: After #249 merges, git pull and install exact HEAD. Scaffold name pins code lineage for prep only. When filled set evidence_class OBSERVED (note indoor); never use OBSERVED_INDOOR_DEVICE; never invent outdoor PASS. +``` + +## Automated pre-device gates + +| Check | Result | +| ----- | ------ | +| Laptop baseline receipt | `POST_EMBER_FOX_BASELINE_20260729T190249Z_1378307.md` **PASS** | +| `make validate` | PASS (local freeze branch on lineage `7df3a16`) | +| `make check-lira-usdz` | PASS (`MESHY_EMBER_FOX_WALK_V1`, triple match) | +| Package tests | PASS (133) | +| `make validate-simulator` | PASS (13 UI tests, 0 failures, 1 skipped) | +| `usdchecker --arkit` | PASS | + +## Visual gold standard + +Compare to Prabu device still: + +- Receipt: [DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md](DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md) +- PNG: [evidence/IMG_2534_prabu_ember_fox_device.png](evidence/IMG_2534_prabu_ember_fox_device.png) +- Expect: stylized fox mesh, **not** procedural spheres +- Operator strip should show `animated_usdz` (or equivalent) and animation playing when follow is active + +## Device results I1–I14 + +| ID | Check | Result | Notes | +| -- | ----- | ------ | ----- | +| I1 | Cold launch / clean install | | | +| I2 | Session start; persistence healthy | | | +| I3 | AR full-screen + Pause/End | | | +| I4 | Procedural fallback only during load | | timing: | +| I5 | Ember Fox replaces fallback | | match Prabu look? | +| I6 | Single companion after replace | | anchor count: | +| I7 | Height / ground contact | | | +| I8 | Skeleton animation | | strip labels: | +| I9 | Stationary pause / idle | | | +| I10 | Closing distance / follow anim | | | +| I11 | Plant / replant / interrupt / background | | | +| I12 | End session + arPresentation receipt | | schema: | +| I13 | Audio under intended policy | | | +| I14 | No severe hitch / thermal / re-decode | | | + +Mark each: **PASS** / **PARTIAL** / **FAIL** / **NOT_COMPUTABLE**. + +## Extra capture fields + +| Field | Value | +| ----- | ----- | +| Installed commit SHA (full) | | +| Time to fallback | | +| Time to authored replace | | +| Anchor count before/after | | +| Screenshot / recording ref | | +| Overall | | + +## Failures → new bounded issues + +- + +## Explicit non-claims + +- Outdoor #41 COH / glare +- GPS integrity +- Battery / thermal PASS (unless OBSERVED rows filled) +- Closing #247 without this tip’s SHA recorded + +## Operator + +1. Prefer Debug install of **freeze tip after #249 merges**, or code lineage `7df3a16` if docs-only tip differs. +2. Follow `docs/design/INDOOR_AR_HYBRID_SMOKE.md` v2 (Ember Fox). +3. Fill I1–I14; set `evidence_class: OBSERVED` if completed on named device (note indoor). +4. PR the filled receipt; do not claim outdoor PASS. diff --git a/docs/design/receipts/OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md b/docs/design/receipts/OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md new file mode 100644 index 0000000..070b206 --- /dev/null +++ b/docs/design/receipts/OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md @@ -0,0 +1,78 @@ +# Outdoor QA receipt (PENDING — daylight #41) + +```yaml +document_id: WAYKIN-OUTDOOR-QA-RECEIPT +date_utc: 2026-07-29T19:15:00Z +git_sha: 7df3a169ede507ce54469330318f66c4603f8c3d +git_short: 7df3a16 +freeze_docs_pr: 249 +device_model: +ios: +operator: +evidence_class: NOT_COMPUTABLE +status: PENDING_HUMAN_DEVICE +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +visual_reference: docs/design/receipts/DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md +protocol: docs/design/OUTDOOR_SESSION_PACKET.md +depends_on: indoor_smoke_preferred_first +note: Fill only on daylight physical walk of freeze tip / 7df3a16 lineage. Never invent PASS from sim or indoor alone. +``` + +## Pre-walk gates + +| Gate | Required | +| ---- | -------- | +| Freeze docs #249 merged (preferred) | yes | +| Install exact tip SHA | recorded below | +| Indoor Ember Fox smoke | preferred PASS/PARTIAL first | +| Laptop baseline | `POST_EMBER_FOX_BASELINE_*` PASS | + +## Identity at walk + +| Field | Value | +| ----- | ----- | +| Full SHA | | +| Marketing / build | | +| Weather / light | daylight | +| Duration | | + +## Mesh / runtime (report separately from world events) + +| Check | Result | Notes | +| ----- | ------ | ----- | +| Authored fox visible (vs spheres) | | match Prabu ref? | +| Ground stability / plant | | | +| Replant / tracking loss | | | +| Continuity while walking | | | +| Follow distance | | | +| Animation start/stop | | | +| Sunlight readability | | | +| Occlusion / depth artifacts | | | + +## World events / pressure (#248) + +| Check | Result | Notes | +| ----- | ------ | ----- | +| Event vocabulary variety | | | +| Event frequency (intentionally sparse OK) | | do not retune cadence from sparse alone | +| Pursuit-related reachability | | | + +## Session / system + +| Check | Result | Notes | +| ----- | ------ | ----- | +| Audio audibility | | | +| Interruption recovery | | | +| Battery / thermal | | | +| Overall COH | PASS / PARTIAL / FAIL / NOT_COMPUTABLE | | + +## Explicit non-claims until filled OBSERVED + +- Outdoor quality from indoor smoke or simulator +- TF archive readiness without #247 tip-bound mesh confirm + +## Operator + +1. Install freeze tip on physical iPhone. +2. Follow outdoor packet + issue #41. +3. Use only OBSERVED rows; open narrow defects for FAIL. diff --git a/docs/design/receipts/POST_EMBER_FOX_BASELINE_20260729T190249Z_1378307.md b/docs/design/receipts/POST_EMBER_FOX_BASELINE_20260729T190249Z_1378307.md new file mode 100644 index 0000000..ec9452d --- /dev/null +++ b/docs/design/receipts/POST_EMBER_FOX_BASELINE_20260729T190249Z_1378307.md @@ -0,0 +1,134 @@ +# Post–Ember Fox baseline receipt + +```yaml +document_id: WAYKIN-POST-EMBER-FOX-BASELINE +date_utc: 2026-07-29T19:02:49Z +evidence_class: OBSERVED +environment: laptop +status: PASS +code_lineage_main: 7df3a169ede507ce54469330318f66c4603f8c3d +docs_branch_sha: 1378307884e10558cdc40ce33c2f93e8e214bd33 +docs_branch: docs/current-main-rebaseline +companion_runtime: MESHY_EMBER_FOX_WALK_V1 +mesh_authority_pr: 246 +gameplay_pressure_pr: 248 +freeze_intent: FREEZE_ENGINEERING_BASELINE_THEN_BUILD_ON_TOP +whitespace_note: initial freeze-range commits had trailing-whitespace; fixed in follow-up commit before freeze merge +``` + +## Purpose + +Immutable laptop baseline for the post–Ember Fox, post-pressure `main` lineage. This receipt freezes **engineering health** at a known SHA. It does **not** claim outdoor AR PASS, TestFlight readiness, or product-law redesign authority. + +## Exact identity + +| Field | Value | +| ----- | ----- | +| Parent `main` (code lineage) | `7df3a169ede507ce54469330318f66c4603f8c3d` (`7df3a16`) | +| Validated docs-branch HEAD | `1378307884e10558cdc40ce33c2f93e8e214bd33` (`1378307`) | +| Docs commit relative to main | Docs-only re-baseline on top of `7df3a16` | +| Marketing / build (in tree) | **0.9.0 (2)** — not archived; #247 holds TF | +| Dirty tree during validate | Only untracked `.worktrees/` (ignored for product paths) | + +## Toolchain (OBSERVED) + +| Tool | Version | +| ---- | ------- | +| Xcode | 26.5 (Build 17F42) | +| Swift | Apple Swift 6.3.2 (swiftlang-6.3.2.1.108) | +| XcodeGen | 2.46.0 | +| `usdchecker` | `/usr/bin/usdchecker` present | + +## Commands executed + +```bash +git rev-parse HEAD +git status --short +make check-lira-usdz +usdchecker --arkit App/Resources/Lira_AR_Base.usdz +shasum -a 256 App/Resources/Lira_AR_Base.usdz \ + App/Resources/Companion/Lira/Lira_AR_Base.usdz \ + docs/assets/companion/ar/Lira_AR_Base.usdz +make test +make validate +git diff --check +make validate-simulator +``` + +## Results + +| Gate | Result | Notes | +| ---- | ------ | ----- | +| Core isolation | **PASS** | Via `make validate` | +| Lira USDZ integrity | **PASS** | Triple size 20362444; soft budget WARN (>12MB, <20MB hard) | +| Catalog evidence | **PASS** | `MESHY_EMBER_FOX_WALK_V1` | +| DCC sidecars | **PASS** | 6 present; animated joint curves | +| `usdchecker --arkit` | **PASS** | Success (harmless ConnectableAPI double-register noise) | +| Triple SHA-256 | **MATCH** | `3b563f1b9019cf939644b2e31a36fb6ff7c80e32446b64f14ca161d2a70dfb2f` | +| Collaboration coordination | **PASS** | | +| XcodeGen generate | **PASS** | No intentional project drift committed | +| `swift test` / package | **PASS** | **133** tests, 0 failures | +| Native `WaykinApp` build | **PASS** | Best-effort in validate | +| `make validate` OVERALL | **PASS** | package + generation | +| `git diff --check` (initial freeze commits) | **FAIL** (corrected) | Trailing whitespace in docs/READMEs on range vs main; **fixed** in follow-up commit — re-run `git diff --check origin/main...HEAD` before merge | +| `git diff --check` (post-fix tip) | **Required green** | Must PASS on freeze tip before archive claims | +| `validate-simulator` | **PASS** | App build + UI tests (see below) | +| UI tests (`WaykinUITests`) | **PASS** | 13 executed, 1 skipped, 0 failures | +| Physical indoor smoke (full I1–I14) | **NOT_COMPUTABLE** | Human device on freeze tip | +| Prabu mesh visual reference | **OBSERVED** (separate receipt) | Authored fox on device; SHA unknown — see `DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md` | +| Outdoor #41 | **NOT_COMPUTABLE** | Human daylight | +| TF archive | **HOLD** | Issue #247 until freeze-tip device confirm | + +## Mesh-specific checks (package / config) + +| Check | Result | +| ----- | ------ | +| Ember Fox at root / nested / docs paths | **OBSERVED** present | +| Copies byte-identical | **OBSERVED** triple SHA match | +| `project.yml` resources | **OBSERVED** root USDZ + Companion/** + six clip paths | +| Skeleton / animation present | **OBSERVED** via integrity (animated joints + catalog class) | +| Procedural fallback path still in code | **INFERRED** from #246 / loader design + prior tests; not re-traced line-by-line in this receipt | +| Live replace leaves one anchor | **NOT_COMPUTABLE** here (device / native suite); package tests on main cover loader contracts separately | +| Scale / base-transform invariants | **NOT_COMPUTABLE** as full device contract; `LiraPackagedMeshScaleTests` ship on main | + +## Known limitations at freeze + +1. Outdoor AR/GPS/audio/thermal remain open (#41). +2. Device confirmation that authored mesh replaces procedural fallback is still a TF hold (#247). +3. USDZ exceeds 12MB soft budget (WARN only; under 20MB hard cap). +4. Marketing **0.9.0 (2)** is in tree but **not** proven as archive candidate until fresh TF checklist on freeze SHA. +5. Simulator PASS is not outdoor or physical-device PASS. +6. Supporting AR redesign docs (#245) are **not** binding and were **not** merged into this freeze. + +## Evidence classes + +| Class | Content | +| ----- | ------- | +| **OBSERVED** | Validate PASS; 133 package tests; USDZ triple match; usdchecker Success; `validate-simulator` OVERALL PASS (13 UI tests, 0 failures, 1 skipped); toolchain versions above; docs-only commits on top of code `7df3a16` | +| **INFERRED** | App binary identity for product behavior matches `7df3a16` code lineage (docs commits do not change Swift/USDZ) | +| **NOT_COMPUTABLE** | Indoor device smoke; outdoor COH; TF upload; thermal/battery; human audio loudness | + +## Freeze contract (build on top) + +```text +FROZEN CODE LINEAGE: main 7df3a16 (+ docs re-baseline when merged) +COMPANION: Ember Fox MESHY_EMBER_FOX_WALK_V1 — do not re-import/replace +DO NOT MERGE: #242, #243 +DO NOT ARCHIVE TF: until #247 cleared with device OBSERVED on this lineage +NEXT LANES ONLY AFTER FREEZE DOCS MERGE: + 1. Device indoor Ember Fox smoke (receipt) + 2. Outdoor #41 on same lineage + 3. Then optional: recover #245 as SUPPORTING docs on freeze tip + 4. Then optional: Phase 0 product-law (binding) before AR session redesign PRs +``` + +## Confirmation + +- No intentional product source/asset file was modified during validation. +- Only untracked path observed: `.worktrees/`. +- This receipt is immutable once committed; failures after this date open **narrow defect issues**, not broad refactors. + +--- + +**Live board:** `docs/collaboration/ACTIVE_WORK.md` +**Continuation:** `docs/design/CONTINUATION_PLAN.md` (freeze-then-build) diff --git a/docs/design/receipts/README.md b/docs/design/receipts/README.md index b6e5b55..fcb9f7b 100644 --- a/docs/design/receipts/README.md +++ b/docs/design/receipts/README.md @@ -5,24 +5,27 @@ Evidence files only. Do not invent OBSERVED results. **Evidence vocabulary:** `OBSERVED` · `INFERRED` · `NOT_COMPUTABLE` (see `AGENTS.md`). Do not invent values like `OBSERVED_INDOOR_DEVICE` — use `OBSERVED` and note indoor in device fields. -## Current tip (2026-07-25) +## Current tip (2026-07-29) | Field | Value | | ----- | ----- | -| Prefer install tip | `main` @ `d7954ac` (or ≥ `3cc8ac2` with 0.9.0 / 2) | -| Marketing / build | **0.9.0 (2)** | -| Phase A (laptop) | `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` — **PASS** | -| Indoor human | `INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md` — **PENDING** | -| Outdoor human | `OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md` — **PENDING** | +| Prefer install tip | `main` @ `7df3a16` (`7df3a169ede507ce54469330318f66c4603f8c3d`) | +| Companion runtime | Packaged **Ember Fox** (`MESHY_EMBER_FOX_WALK_V1`) via PR #246 | +| Marketing / build (in tree) | **0.9.0 (2)** — revalidate; TF archive held by #247 | +| Phase A (laptop, post-mesh) | `POST_EMBER_FOX_BASELINE_20260729T190249Z_1378307.md` — **PASS** laptop validate (code lineage `7df3a16`) | +| Phase A (pre-mesh, historical) | `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` — **PASS on `3cc8ac2` only** | +| Indoor human | `INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md` — **PENDING** (Ember Fox; Prabu visual ref) | +| Outdoor human | `OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md` — **PENDING** (post-mesh tip scaffold) | -Older `*_PENDING.md` scaffolds for prior SHAs are **superseded** for new walks; keep for history only. +Older `*_PENDING.md` scaffolds for prior SHAs are **historical / superseded** for new walks; keep for history only. Do not rewrite their original SHAs. ## Outdoor / physical | File | Status | | ---- | ------ | -| `OUTDOOR_AR_RECEIPT_20260720_DEVICE_PARTIAL.md` | **PARTIAL** historical operator notes (pre-mitigation). Not full COH PASS. | -| `OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md` | **Current** outdoor scaffold — fill on daylight walk | +| `OUTDOOR_AR_RECEIPT_20260720_DEVICE_PARTIAL.md` | **PARTIAL** historical operator notes (pre-mitigation, pre-mesh). Not full COH PASS. | +| `OUTDOOR_QA_RECEIPT_20260729T191500Z_7df3a16_PENDING.md` | **Current** outdoor scaffold — fill on daylight walk of freeze tip | +| `OUTDOOR_QA_RECEIPT_20260725T194535Z_3cc8ac2_PENDING.md` | **Historical** outdoor scaffold for artist-blend tip era | | Template | `../OUTDOOR_QA_RECEIPT_TEMPLATE.md` | Outdoor filled copies should use: @@ -31,19 +34,29 @@ Outdoor filled copies should use: OUTDOOR_QA_RECEIPT_YYYYMMDD_.md ``` +or tip-bound: + +```text +OUTDOOR_QA_RECEIPT___PENDING.md +``` + ## Indoor AR hybrid smoke | File | Status | | ---- | ------ | -| `INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md` | **Current** indoor scaffold — fill on device | -| Protocol | `../INDOOR_AR_HYBRID_SMOKE.md` | +| `DEVICE_MESH_REFERENCE_PRABU_IMG_2534.md` | **Visual gold standard** — Prabu device photo; authored fox + `animated_usdz`; install SHA **not** on image | +| `evidence/IMG_2534_prabu_ember_fox_device.png` | Converted still from `IMG_2534.heic` | +| `INDOOR_AR_HYBRID_SMOKE_20260729T191500Z_7df3a16_PENDING.md` | **Current** indoor scaffold — fill on freeze tip / `7df3a16` lineage | +| `INDOOR_AR_HYBRID_SMOKE_20260725T194535Z_3cc8ac2_PENDING.md` | **Historical** (artist-blend / pre-Ember Fox install target) | +| Protocol | `../INDOOR_AR_HYBRID_SMOKE.md` (Ember Fox checks) | ## Phase A (laptop / sim) | File | Status | | ---- | ------ | -| `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` | **PASS** validate on `3cc8ac2` (130 tests) | +| `PHASE_A_PREDEVICE_20260725T194535Z_3cc8ac2.md` | **Historical PASS** validate on `3cc8ac2` (pre-mesh) | | Older `PHASE_A_PREDEVICE_*` | Historical | +| Post–Ember Fox baseline | Create on validate of tip ≥ `b17864e` / `7df3a16` | ## Simulator preflight / engineering @@ -57,6 +70,7 @@ See [`samples/`](samples/) — real sim export (schema 4) + synthetic schema **5 - `OBSERVED` only from named device/build sessions. - PARTIAL outdoor AR receipt does **not** close Issue #41. -- After mitigations (continuity, audio, Hallmark UI, DCC), re-walk on **current main tip** for COH PASS claims. +- After mesh/runtime supersession (#246), re-walk on **current main tip** for COH PASS claims. - Do not treat `samples/*.json` as outdoor AR or device PASS. - Prefer newest tip-bound PENDING receipt when starting a new human session. +- Historical receipts retain original SHAs; label them historical rather than rewriting. diff --git a/docs/design/receipts/evidence/IMG_2534_prabu_ember_fox_device.png b/docs/design/receipts/evidence/IMG_2534_prabu_ember_fox_device.png new file mode 100644 index 0000000..f501713 Binary files /dev/null and b/docs/design/receipts/evidence/IMG_2534_prabu_ember_fox_device.png differ diff --git a/scripts/indoor_ar_smoke_prep.sh b/scripts/indoor_ar_smoke_prep.sh index 016e844..0fd662e 100755 --- a/scripts/indoor_ar_smoke_prep.sh +++ b/scripts/indoor_ar_smoke_prep.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Scaffold indoor AR hybrid smoke receipt + run automated pre-device gates. +# Scaffold indoor Ember Fox AR smoke receipt + run automated pre-device gates. # Does NOT claim outdoor or device AR quality. set -euo pipefail @@ -14,7 +14,7 @@ RECEIPT_DIR="docs/design/receipts" mkdir -p "$RECEIPT_DIR" RECEIPT="${RECEIPT_DIR}/INDOOR_AR_HYBRID_SMOKE_${STAMP}_${SHA}_PENDING.md" -echo "=== Waykin Indoor AR hybrid smoke prep ===" +echo "=== Waykin Indoor Ember Fox AR smoke prep ===" echo "sha: $FULL" PASS_USDZ=FAIL @@ -33,7 +33,7 @@ set -e if [ "$VAL_EXIT" -eq 0 ]; then PASS_VALIDATE=PASS; fi cat > "$RECEIPT" <