feat(qa): flow-recording harness + demonstrated browser evidence receipt (capture-flow 6/6) - #21
Open
obvious-autobuild[bot] wants to merge 2 commits into
Open
obvious-autobuild[bot] wants to merge 2 commits into
obvious-autobuild[bot] wants to merge 2 commits into
Conversation
obvious-autobuild
Bot
force-pushed
the
qa/flow-recording
branch
from
September 17, 2026 20:15
057700f to
368c3dd
Compare
…and evidence receipts Playwright (Bun) harness that records the six-step caregiver flow — capture, inspect, correct, save (failure/recovery), reopen, handoff — against the evaluation corpus's CandidateAdapter protocol via a local console fixture: - qa/src: record.ts orchestrator, strict manifest types + validator, seq-based settle detection, HEAD-bound git metadata, receipt generator - qa/console: served fixture wrapping evaluation's example-adapter with a fail-save seam; window.__qa.state() exposes deterministic assertions; raw transcript SHA-256 fidelity computed in-page - qa/src/scenarios/capture-flow.ts: tc-1..tc-6 with DOM+state assertions (1440x900, >=720px shorter edge, PNG/WebM assets, synthetic data only) - Apple native adapter contract documented in qa/README.md (platform: native manifests merge into one receipt via qa/src/receipt.ts) - .obvious/obvious.md: qa/ layout + standalone-harness verification note
Validated FlowManifest binding HEAD 8de8cfa (rebased tooling commit on master 9ea7e73, clean tracked tree): tc-1..tc-6 all pass, 10 screenshots + session WebM, synthetic data only. Receipt at qa/evidence/2026-09-17T20-17-03-146Z-capture-flow/receipt.md with merge-owner fields left explicitly pending per repo contract. Re-recorded after each rebase so the HEAD-bound manifest names a live commit (pre-rebase runs at 16af15a and c1a8129 were discarded per the results-don't-carry-over rule). Co-authored-by: Gilbert Polanco <gilbertpolanco42@gmail.com>
obvious-autobuild
Bot
force-pushed
the
qa/flow-recording
branch
from
September 17, 2026 20:25
368c3dd to
4000c3e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Acceptance criteria
qa/flow-recording tooling — Playwright (via Bun, repo strict-TS conventions, not a pnpm workspace member likesecurity//evaluation/): scenario runner, validatedFlowManifest, HEAD-bound git metadata, viewport 1440×900 with PNG + WebM capture, receipt generator.tc-Nids mapping the caregiver flow onto the evaluation corpus'sCandidateAdapterprotocol: capture → inspect → correct → save (failure/recovery) → reopen → handoff.window.__qa.state()state and visible DOM; settle detection is seq-based (monotonic counter), so no step can assert a pre-click state.qa/src/validate.tsstructural checks, bindsheadSha/branch/worktreeDirty, records environment + fixture seed; merge-owner receipt fields left explicitly pending.platform: "native"manifests satisfy the same validator + receipt merge path (qa/src/receipt.ts --manifest=... --manifest=...), owned by the Apple worker.What is in the box
qa/src/—record.tsorchestrator, strict types + validator, seq-based settle helper, git/HEAD metadata, receipt generator, args.qa/console/— served fixture console wrappingevaluation/src/example/example-adapter.tswith a fail-save seam; exposes raw-transcript SHA-256 fidelity computed in-page, extracted-event inspection, timeline, role-based fail-closed authorization, andwindow.__qa.state().qa/src/scenarios/capture-flow.ts—tc-1…tc-6(seeqa/README.md"What the recording proves").qa/README.md— quick start, step→proof table, adapter contract, native contract, receipt contract, data policy..obvious/obvious.md—qa/added to layout + standalone-harness verification note.Scope note: master's product UI is an arena-held candidate lineage, so this recording evidences the flow protocol + harness against the worked-example adapter — the same tooling records the product UI by pointing scenario steps at the app URL. This is stated on the receipt itself.
Rebase & conflict resolution (this push)
Rebased onto master
9ea7e73(PR #15's capture-recovery). One conflict, one file:.obvious/obvious.md— master's new "Verification gate (executable merge workflow)" section vs this PR'sqa/standalone-harness sentence; resolved by keeping master's section in full and appending theqa/sentence.qa/tree is byte-identical through the rebase (git diff <old> <new> -- qa/empty). Because the tooling commit SHA moved, the browser run was re-recorded so the HEAD-bound manifest names a live commit — pre-rebase runs (at16af15a, thenc1a8129) were discarded per the results-don't-carry-over rule.Known blocker, not introduced here:
@journal/capture-recovery#typecheckfails on master9ea7e73itself (pre-A5ExtractionAttemptname drift), reproduced byte-identically on a pristine9ea7e73checkout. All other 10 turbo typecheck tasks pass on this head. The fix is queued as PR #35 (both CI workflows green on its head); after it merges, this PR rebases once more and both workflows are expected green on the final head — theverification-manifest:v1block lands in this body at that point, on the exact final tested head.Evidence receipt (demonstrated run)
qa/evidence/2026-09-17T20-17-03-146Z-capture-flow/— manifest headSha8de8cfa…,worktreeDirty: false, 6/6 steps pass, 10 screenshots +tc-flow-session.webm.4000c3eadds evidence files only on top of the tested tooling commit8de8cfa; the tested diff is8de8cfa+ this evidence commit.IdempotentReplaywith no second write.Verification
Local verification outside
qa/at this head:pnpm typecheck10/11 tasks green (sole failure@journal/capture-recovery#typecheck= pre-existing master breakage, see PR #35);pnpm test/pnpm buildfail only on the same package. No workspace-member files touched by this diff, no lockfile changes outsideqa/(qa/bun.lock), CI's turbo path otherwise unaffected.Native (Apple worker) status
Pending by design — the contract it fulfills is
qa/README.md§ "Native adapter contract" (platform: "native", sametc-Nids, HEAD-bound, synthetic data). Merge into one receipt with:Human author: Gilbert Polanco (gilbertpolanco42@gmail.com)
🔗 Obvious Project · 🧵 Obvious Thread