phase id work_item goal tdd_spec interfaces_contracts data_models code_artifacts tests_unit

P0 Foundations P0-01 Lock test harness Jest + RNTL baseline, coverage thresholds, deterministic mocks Given scaffolding, When `npm run test`, Then tests run & coverage ≥70% jest.config.js, jest.setup.ts n/a package.json scripts, TESTING.md Smoke test imports, mock NativeModules, schema unit tests pass
P0 Foundations P0-02 E2E runner online Detox configured to launch dev build on sim/emulator Given dev build, When `npm run e2e:test`, Then app launches to Home .detoxrc.json, testIDs plan n/a e2e/init.js, e2e/jest-e2e.config.js Mock NativeModules present
P0 Foundations P0-03 Type contracts baseline Shared types for native bridges + effect graphs Given type errors, When `npm run typecheck`, Then 0 TS errors DetectorsSpec, RecordingSpec, EffectGraph types EffectGraph.zod (placeholder) src/native/index.ts, src/effects/engine/types.ts Types compile
P1 Graph P1-01 EffectGraph schema (zod) Declarative JSON drives pipeline Given invalid graph.json, When load, Then validation error explains path EffectGraph (nodes, triggers) zod schema for Node union src/effects/engine/types.ts Unit: schema validates, rejects bad nodes
P1 Graph P1-02 Graph loader + registry Map node.type to implementation Given graph with LUT, When run, Then LUT node invoked NodeRegistry<{type:string → class}> n/a src/effects/engine/useEffectEngine.ts, nodes/* Unit: registry resolves nodes
P1 Graph P1-03 Triggers engine Signals/data drive param updates declaratively Given signal mouthOpen>0.6, Then Sprite.opacity→1 Trigger DSL (when/op/value, set/param) trigger schema & evaluator src/effects/engine/useEffectEngine.ts Unit: evaluator truth table
P2 Render P2-01 GLView mount + swapchain GPU surface exists & presents frames Given GLSurface mounts, Then frame presented @ ≥30fps (mock) Composer API: init, renderFrame, getOutputTexture n/a src/render/GLSurface.tsx, src/render/Composer.ts Unit: composer lifecycle methods
P2 Render P2-02 Full-screen quad program Base shader path for all passes Given input texture, Then output equals input ShaderProgram interface (compile/link/use) n/a src/render/Composer.ts, nodes/Output.ts Unit: shader compile errors caught
P2 Render P2-03 LUT node First visible filter pass Given cube LUT + intensity, Then color graded output Node.render(inTex,lut,intensity) .cube format reader src/effects/nodes/LUT.ts Unit: LUT math on sample pixels
P3 Camera P3-01 Permissions flow Request camera+mic with failure UX Given deny, Then graceful fallback & retry Permissions API wrapper n/a src/camera/*, app/effects/[id].tsx Unit: permission state reducer
P3 Camera P3-02 VisionCamera preview Live camera texture feeds pipeline Given preview active, Then frames available CameraView props & callbacks n/a app/effects/[id].tsx Unit: camera component props validations
P3 Camera P3-03 Frame processor hook Per-frame callback into detectors Given frame, Then call Detectors.processFrame() FrameRef shape contract n/a app/effects/[id].tsx, src/native/index.ts Unit: frame → call count
P4 Detect P4-01 Stub detectors return Deterministic signals for TDD Given frame, Then signals={mouthOpen:0.0} processFrame(): Promise<{signals,map}> n/a ios/DetectorsModule.swift, android/…/DetectorsModule.kt Unit: promise resolves shape
P4 Detect P4-02 Face landmarks (lightweight) Real signals from Vision/ML Kit Given face, Then mouthOpen/eyes/pose normalize landmarks → signals n/a ios/DetectorsModule.swift, android/…/DetectorsModule.kt Unit: math for mouth distance/face height
P4 Detect P4-03 Person segmentation (low-res) Matte mask texture for background Given person present, Then mask coverage >90% torso mask texture handle contract n/a ios/DetectorsModule.swift, android/… Unit: mask post-process (threshold, dilate)
P5 Record P5-01 Video-only recording Encode GL output to mp4 Given start→stop, Then fileUri exists Recording.start/stop options n/a ios/RecordingModule.swift, android/…/RecordingModule.kt Unit: promise resolve/reject paths
P5 Record P5-02 Audio capture + mux Mic AAC muxed with video Given speak while recording, Then audio present and in-sync ±50ms audio graph contract n/a ios/RecordingModule.swift, android/… Unit: audio buffer timing math
P5 Record P5-03 Auto-stop & error handling Safety for thermal/storage conditions Given maxSeconds, Then stop automatically Error codes enum; maxSeconds param n/a Recording modules + UI Unit: timers & error mapping
P6 UX P6-01 Save to library/Documents Persist recording visibly to user Given fileUri, Then saved & listed Storage adapter interface SavedItem model app/effects/[id].tsx, src/utils/* Unit: path resolution
P6 UX P6-02 Exit flow Return to home or terminate (Android) Given save complete, Then exit/return ExitController n/a app/effects/[id].tsx Unit: state machine reaches ‘Done’
P7 Effects P7-01 Sprite2D node Render PNG as overlay Given texture, Then composited correctly SpriteNode props: anchor, offset, scale n/a src/effects/nodes/Sprite2D.ts Unit: UV math
P7 Effects P7-02 FaceAttach binding Attach sprite to nose/eyes Given landmarks, Then sprite follows attach {anchor, offset, scale} n/a engine + detectors Unit: coord normalization
P8 Perf P8-01 Diagnostics HUD On-screen FPS, nodes, scale Given two-finger tap, Then HUD toggles HUD API n/a src/utils/HUD.tsx Unit: HUD state machine
P8 Perf P8-02 Adaptive resolution Maintain frame rate Given FPS<24, Then internal scale 0.8/0.6 Scaler policy interface n/a Composer + engine Unit: policy thresholds
P9 DX P9-01 Auto-discovery of graphs Drop-in filters without code Given new folder, Then listed on Home EffectRegistry API GraphIndex model src/effects/graphs/*, app/index.tsx Unit: file scan mock
P9 DX P9-02 Graph hot-reload (dev) Faster authoring loop Given edited JSON, Then reload effect Dev-only watcher interface n/a engine loader Unit: debounce + reload
P10 QA P10-01 Device matrix runbook Documented test matrix & limits Given list, Then tests executed per device Runbook.md template n/a docs/ Unit: n/a
P10 QA P10-02 POC demo package Deliverable build for stakeholders Given dev build, Then install & run instructions Release notes template n/a README, IMPLEMENTATION.md Unit: n/a

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *