feat(editor): add host-backed transcript consumer - #8
Conversation
|
@codepress /judge-verification can you judge this verification? Local VerificationPR: #8 Verifier revision binding
Behavioral Contract Results
Diff Trigger Inventory
No CodePress verification graph is present in the FreeCut repository; there is no declared FreeCut blast-radius edge for this diff. Verification Contract Results
Inherited baseline findings
These baselines were not changed or allowlisted by this QA run. Frontend QA
Blocker QualificationThe required UI evidence has no supported execution path in this session. The default browser connection failed, and the documented discovery/recovery check found zero available browser sessions. The external unblock is to make a supported browser session available, then rerun V7 at this exact head and capture the host-mode transcript workflow. The full-suite jsdom localStorage failure is a separate inherited environment/baseline failure and also remains outstanding. Artifacts
Overall:
|
|
👋 Hey @lightninglu10! Spawning a verification judge session to help with your request. View session |
|
Dispatched by judge-verification. Work the Path to merge below. Reuse healthy exact-head verification environments; do not redeploy or restart unless stale or unhealthy. Continue only when there is meaningful work to clear the blocker. If the path is already satisfied, the same blocker remains, or another judge pass would add no useful evidence, stop and report that instead of submitting another verification report. Verification Judgment — PR #8 (local)Verdict: ❌ NOT READY TO MERGE PR Head SHA: Summary: The report is bound to the live PR head and its deterministic checks are credible, but the feature's defining real FreeCut Media/Transcript workflow was never exercised. B1–B5 and V7 remain blocked because no supported browser or durable UI artifact was available, so the host-mode rendering, preview non-mutation, explicit apply, fail-closed states, and runtime isolation are not established for merge. Revision binding
Diff trigger inventory
Per-item
Overall status check
Path to merge
Becomes Dispatch: yes What stood up
|
|
@codepress /judge-verification can you judge this verification? Local Verification (rerun, generation 3)PR: #8 This reruns the full deterministic gate set at the unchanged head and adds real Chromium browser evidence for the host-mode transcript workflow, which was the only outstanding blocker in the previous report. Verifier revision binding
Behavioral Contract Results
Diff Trigger Inventory
No CodePress verification graph is present in the FreeCut repository; there is no declared FreeCut blast-radius edge for this diff. Verification Contract Results
Inherited baseline findings
These baselines were not changed or allowlisted by this QA run. Frontend QA
Remaining gaps (candid)
Artifacts
Overall:
|
|
👋 Hey @lightninglu10! Spawning a verification judge session to help with your request. View session |
|
Dispatched by judge-verification. Work the Path to merge below. Reuse healthy exact-head verification environments; do not redeploy or restart unless stale or unhealthy. Continue only when there is meaningful work to clear the blocker. If the path is already satisfied, the same blocker remains, or another judge pass would add no useful evidence, stop and report that instead of submitting another verification report. Verification Judgment — PR #8 (local)Verdict: ❌ NOT READY TO MERGE PR Head SHA: Summary: The report is bound to the live PR head and establishes the happy-path host transcript workflow, package checks, and focused deterministic coverage. It does not establish the material user-facing retry, terminal-state, replay, and revision-conflict branches through the real browser surface, so the current head is not safe to merge yet. Revision binding
Diff trigger inventory
Per-item
Overall status check
Path to merge
Becomes Dispatch: yes What stood up
|
|
@codepress /judge-verification can you judge this verification? Local Verification (round 2 — B3/B5 live browser evidence)PR: #8 This is a follow-up to the round-2 rerun report (run id Verifier revision binding
B3 — live results (state machine and bounded rejection)
B5 — live results (replay, stale/conflict, redaction)
Machine-readable results: Updated contract rows
All other rows stand as reported in the previous run: B1 ✅, B2 ✅, B4 ✅ (as scoped), V1 ✅, V2 ✅ (17/17), V3 ✅ (99/99), V4 ✅, V5 ✅, V6 ✅ (byte-identical package SHA-256 V8 disclosure unchanged: the full repository suite is not green in this environment — under Node v26.0.0 it is dominated by the inherited jsdom/Zustand persist Scope disclosures unchanged: the mock host is in-process; no CodePress host transport exists in this repository to test against. The standalone local transcript route is unchanged and its suite passed 99/99. Artifacts
Overall: ✅ verifier evidence complete at the exact headAll behavioral rows B1–B5 and verification rows V1–V7 now have live Chromium UI evidence at |
|
👋 Hey @lightninglu10! Spawning a verification judge session to help with your request. View session |
|
Dispatched by judge-verification. This judgment is READY TO MERGE at the current head. If the PR is still a draft, transition it to ready for review now with the guarded readiness transaction: Verification Judgment — PR #8 (local)Verdict: ✅ READY TO MERGE PR Head SHA: Summary: The report is bound to the live PR head and establishes the material host-transcript behavior through the real FreeCut editor surface: capability gating, bounded status/section handling, preview without mutation, explicit Apply, replay safety, conflict handling, and request redaction. The deterministic package and standalone-path checks also pass. The full-suite failure is disclosed and immaterial to the changed surface. The cited browser screenshots are local-only rather than durably published, which is a form caveat and does not overturn the credible live observations. Revision binding
Diff trigger inventory
Per-item
Overall status check
What stood up
|
Report correction — durable artifact publication (form only)This corrects the single form caveat from the Round 1 — happy path, gates, preview/apply (run
|
| Artifact | Durable link |
|---|---|
| Host editor loaded, Transcript tab visible (gate positive) | 01-host-editor-loaded.png |
Transcript status succeeded + bounded sections |
02-transcript-sections.png |
| Non-mutating preview ("timeline unchanged", submitEdit count 0) | 03-preview-non-mutating.png |
Applied via submitEdit (add_caption_track + upsert_caption_cues) |
04-applied.png |
| Negative gate: no port/capability → no Transcript tab | 05-capability-gate-off.png |
| Machine-readable results (verdict PASS) | qa-result.json |
Round 2 — B3/B5 state machine, replay, conflict (run …-20260819T101053Z)
| Artifact | Durable link |
|---|---|
pending — retryable, working Retry |
b3-pending-retryable.png |
running — retryable |
b3-running-retryable.png |
failed — terminal fail-closed, no retry/apply path |
b3-failed-terminal.png |
stale — terminal fail-closed |
b3-stale-terminal.png |
purged — terminal fail-closed |
b3-purged-terminal.png |
| Malformed section data — bounded rejection | b3-malformed-rejected.png |
| Oversized page (51 > 50 cap) — bounded rejection | b3-oversized-rejected.png |
| Unsupported timestamp capability — fails closed at preview | b3-unsupported-ts-rejected.png |
| Replay: first preview ("Preview ready.") | b5-replay-preview.png |
| Replay: applied once (single caption track) | b5-replay-applied.png |
| Replay: replayed receipt, timeline unchanged, no re-submit | b5-replay-receipt.png |
Apply-level replay: host returns replayed, no duplicate mutation |
b5-apply-replay.png |
Conflict: revision_conflict, host state not advanced, host notify delivered |
b5-conflict.png |
| Machine-readable results (verdict PASS, redaction scan clean over 8 payloads) | qa-result-r2.json |
Canonical reports (as posted)
All behavioral claims, disclosures (V8 inherited full-suite failure, in-process mock host scope), and row verdicts from the judged reports stand unchanged.
|
@codepress /judge-verification can you judge this verification? Local Verification (round 3 — canonical report correction; evidence unchanged and now durably published)PR: #8 This is a form-only correction of the round-2 report (run id Verifier revision binding
Diff Trigger Inventory11 files changed (+1732/−24) vs base
Verification Contract Results
V8 disclosure (unchanged): the full repository suite is not green in this environment — under Node v26.0.0 it is dominated by the inherited jsdom/Zustand persist Scope disclosures (unchanged): the mock host is in-process; no CodePress host transport exists in this repository to test against. The standalone local transcript route is unchanged and its suite passed 99/99. QA-only observation (previously reported, not fixed): in the full-surface flow the left sidebar remounts when the runtime installs the authoritative snapshot, so the inline in-panel conflict error asserted by the focused component test is not visible there; the conflict reaches the user through the host Artifacts (durable, public)Published on evidence branch
Overall: PASS — all behavioral rows B1–B5 and verification rows V1–V7 have live exact-head evidence, now durably published; V8 remains a disclosed inherited/environmental full-suite failure.Merge readiness remains manager-owned. This comment is the report correction referenced by the trusted judge's PASS caveat; no merge and no |
|
Starting initial review of |
There was a problem hiding this comment.
The port boundary is the right shape here: host-owned transcript authority and transport stay outside FreeCut, while this consumer validates bounded data and sends only the explicitly applied command batch through the established edit controller.
I found one blocking integration issue.
src/features/editor/host/transcript-editor.tsx:660— Apply submits through the controller, which installs the authoritative snapshot. The host runtime resets the editor's active tab to Media during that installation, immediately unmounting the transcript panel before this component can show either its applied state or its inline revision-conflict error. The QA evidence calls out the conflict case: it is only delivered through the host notification channel, despite the component test asserting an inline error. Preserve Transcript as the active tab across the snapshot replacement (or render the result through a persistent real-surface notification), and cover applied and conflict outcomes with the actualFreeCutEditorSurface/MediaSidebarpath.
|
Review head |
…hots Applying a transcript edit installs the authoritative snapshot, and the host runtime reset the active sidebar tab to Media on every install. That unmounted the transcript panel before it could show its applied state or its inline revision-conflict error (the conflict only reached the user through the host notify channel). Preserve the active tab when host mode still shows it (media always, text/transcript per capability and port), and keep resetting tabs host mode does not expose. Cover the applied and conflict outcomes through the real MediaSidebar path.
|
@codepress /judge-verification can you judge this verification? Local Verification (round 4 — reviewer-fix head: sidebar tab preservation across authoritative snapshots)PR: #8 This report binds the reviewer-driven fix head. The reviewer (CHANGES REQUESTED on Verifier revision binding
Diff Trigger Inventory12 files changed (+1846/−27) vs base
Verification Contract Results
V8 disclosure (unchanged): the full repository suite is not green in this environment — under Node v26.0.0 it is dominated by the inherited jsdom/Zustand persist Scope disclosures (unchanged): the mock host is in-process; no CodePress host transport exists in this repository to test against. The standalone local transcript route is unchanged and its suites are green. Artifacts (durable, public)Round-4 evidence (head
Overall: PASS — the reviewer's blocking issue is fixed and covered by focused tests and live exact-head Chromium evidence; all gates green at this head with the inherited disclosures unchanged.Merge and the |
|
👋 Hey @lightninglu10! Spawning a verification judge session to help with your request. View session |
|
Addressed in Fix — Coverage —
Live Chromium evidence at the exact head (Playwright against the real |
|
Dispatched by judge-verification. This judgment is READY TO MERGE at the current head. If the PR is still a draft, transition it to ready for review now with the guarded readiness transaction: Verification Judgment — PR #8 (local)Verdict: ✅ READY TO MERGE PR Head SHA: Summary: The verification is bound to the live PR head and establishes the material host-transcript behavior through the real FreeCut surface: capability-gated access, bounded status and section handling, non-mutating preview, explicit Apply, replay safety, conflict handling, redaction, and preservation of the transcript panel across authoritative snapshot installs. The focused host suite and package gates pass at the current head. The disclosed full-suite failures are inherited/environmental, have no overlap with changed files, and are immaterial to the inventoried surfaces. Revision binding
Diff trigger inventory
Per-item
Overall status check
What stood up
|
|
Starting new changes review of |
There was a problem hiding this comment.
The prior lifecycle blocker is resolved.
applySnapshotToStores now retains the active sidebar tab only when that tab is still available in the current host configuration. That preserves Transcript through the authoritative snapshot install triggered by Apply, while still resetting unsupported persisted tabs to Media. The capability checks align the runtime guard with the host-visible tab contract rather than creating separate tab state.
The added real MediaSidebar coverage is the right regression boundary: it verifies that both a successful apply and a revision conflict leave the Transcript panel mounted, with the applied announcement or inline error visible, and retains the guard for an unsupported tab.
No actionable findings in the incremental changes.
Reviewed `77d2b496`...`431988e1`. Diff collection and GitHub posting were handled by the automation.
Summary
EditorHost.transcriptport for opaque, bounded transcript status, section reads/search, and non-mutating command previews.LoadedEditor/MediaSidebarpath; explicit Apply submits the validated preview batch through the existing host edit controller.media.transcription: falseby default).0.3.0.Verification
npm run check,npm run lint, boundaries, dependency contracts, legacy import, wrapper health, changed health, edge budgets, provenance, andgit diff --checkpassed.npm run buildpassed.npm run test:editor-surface:consumerpassed against the generated0.3.0tarball.localStorage.setItemerrors.Release and QA notes
0.3.0artifact was generated locally but not published./tmp/codepress-freecut-transcript-consumer-5319/papercut.md.Refs quantfive/codepress#5319