Skip to content

Exhausted QA becomes a user fork; dictated changes apply directly; findings can be waived - #18

Merged
leochenpm merged 3 commits into
sync/scaffold-scene-anchorsfrom
sync/gate-user-choice
Aug 12, 2026
Merged

Exhausted QA becomes a user fork; dictated changes apply directly; findings can be waived#18
leochenpm merged 3 commits into
sync/scaffold-scene-anchorsfrom
sync/gate-user-choice

Conversation

@leochenpm

Copy link
Copy Markdown
Collaborator

Batch 5/8 of the release_1.6.5 sync (gate authority). Stacked on #17. Re-mapped by hand from Orkas commits d2c477f34, e6a71cc8f, 274678ccf.

The semantic reversal

Upstream spent early August discovering that its own gate model was wrong in two directions at once, and reversed both:

  1. Exhausted visual QA used to wait silently ("Technical QA exhaustion is not a second user decision... wait for a real revision request" — OSS transition.ts and gate-control still say this). End state: it is a user fork. present_findings_and_ask_user_direction — show the frames and remaining findings, offer another round or skipping the named check, end the turn; the reply grants the next cycle, and the next edit must be materially different (failed strategies are recorded; repeating one spends the new budget for nothing). A real revise decision still starts the fresh cycle directly.
  2. User-dictated changes used to be re-confirmed. New origin input (--origin user|model): a gate_b_payload change the current turn names in the user's own words resolves to apply_user_instruction_then_approve_plan — apply exactly that change and re-sign. Asking the user to confirm a change they just dictated costs a round trip and teaches them their instructions are not taken at face value. Mixed replies stay on the amendment path (the higher bar wins). In OSS nothing verifies origin — it is the driving agent's honest self-report, and the skill says so explicitly.

What makes the skip option honorable

Telling the agent to "offer skipping the check" without a mechanism would be an offer the toolchain can't honor. So: ovs draft --waive <codes> (CLI + MCP) downgrades the named blocking findings to info with a [skipped by user decision] suffix, persists them in qa/waivers.json (the user is never asked to skip the same check twice), and refuses evidence-integrity codes (missing frames/maps, *_PARSE_FAILED) — those are repaired, not offered.

Verification

Build green; full OVS_E2E=1 suite 275/276. New cases: exhausted fork with/without error code, dictated vs model/mixed amendment, waivable/refused codes, and a draft integration: blocked run → waived run moves to the next real gate with the integrity code refused → waiver persists → a later run without the flag is not re-blocked.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV

leochenpm and others added 2 commits August 12, 2026 01:31
… directly, and findings can be waived

Sync of the gate-authority reversal from Orkas release_1.6.5
(d2c477f34, e6a71cc8f, 274678ccf, 33904ce59 context), re-mapped onto
the ovs resolver and draft gate:

- resolveGateTransition: an exhausted visual-QA cycle is now a USER
  FORK, not a silent wait. `present_findings_and_ask_user_direction`
  replaces `report_visual_qa_blocker`: show the current frames and
  remaining findings, offer another repair round or skipping the named
  check, and end the turn; the user's reply grants the next cycle, and
  the follow-up edit must be materially different — the failed
  strategies are recorded, and repeating one spends the new budget for
  nothing. A real revise decision still starts the fresh cycle
  directly, unchanged.
- New `origin` input: who asked for the change decides whether to ask
  again. A gate_b_payload revision the CURRENT user turn names in the
  user's own words resolves to `apply_user_instruction_then_approve_plan`
  — the instruction is itself the authorization; asking the user to
  confirm a change they just dictated costs a full round trip and
  teaches them their instructions are not taken at face value. A
  model-initiated or mixed reply stays on the amendment path. Origin is
  the driving agent's honest self-report; nothing verifies it in OVS,
  and the skill says so.
- QA waivers make the skip option honorable: `ovs draft --waive <codes>`
  (CLI + MCP) downgrades the named blocking findings to informational
  with a "[skipped by user decision]" suffix, persists them in
  qa/waivers.json so the user is never asked to skip the same check
  twice, and refuses evidence-integrity codes (missing frames/maps,
  parse failures) — those are repaired, not offered.
- gate-control SKILL.md carries the matching contract: the exhausted
  fork with real choices, the origin classification step, the
  offer-the-waiver rule, and "repair passes that remain never stop for
  the user; an exhausted cycle does".

Verified: build green; full OVS_E2E=1 suite 275/276 (1 intentional
skip). New cases: exhausted fork (with and without an error code),
user-dictated vs model/mixed amendment, waivable/refused codes, and a
draft-gate integration proving a waiver moves past the blocking design
finding, refuses the integrity code, persists, and never re-asks.

Prompt audit: gate-control SKILL.md — replaced the "technical QA
exhaustion must never create a recovery form" clause with the
user-fork contract (behavioral reversal shipped in the resolver);
added the origin classification step and the offer-the-waiver rule
(both state what the resolver/draft now enforce); inverted the closing
exhausted-cycle bullet. No clause duplicates another rule; each names
the code path that backs it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV
… the direction stop first

Sync of the checkpoint-protocol craft from Orkas release_1.6.5
(c4ba98815 end-state, 707a8bf1f, 734cfc675, ed5d22684, 2182ad89a,
72e541a87, b0514f075, f0e0c348a), prompt-only, re-mapped onto the OSS
orchestration/gate-control/video-router split:

- orchestration: "Show the work; stop only five times" — the stops are
  a closed set and showing an artifact is not an ending in itself; the
  visual preview stops once per VISUAL IDENTITY (narration-only changes
  inherit the accepted frames); artifacts ride the message that ENDS
  the turn; an enumerated-option reply IS the decision; everything
  outside a tool call is user-facing copy (no finding codes or severity
  words; passing checks stay silent); repair every independent finding
  in one message and never re-read to confirm a successful write.
- Gate A: the direction stop comes first, before any plan file exists;
  2-3 genuinely different concepts; an exact brief still stops with ONE
  concept; propose instead of interrogating for creative preferences.
- AUTO: an assembled production is ONE video — the stop count is fixed
  by the gate table, never per segment; an edit invalidates only its
  own segment.
- gate-control: Gate B opens with the locked direction summary and
  restates settled facts instead of reopening them; a different-language
  reply is a revise instruction; amendment aftermath follows the visual
  identity; a recovery is executed, not narrated (the concrete mutation
  precedes the validator retry).
- video-router: routing ends at the direction boundary — no plan file,
  script, narration copy, or art direction before the user picks.

Verified: skills content tests pin each new clause; suite 266 pass.

Prompt audit: every clause above is NEW behavioral guidance absent from
the OSS pack (verified against current SKILL.md text); none duplicates
gate-control's authorization rules — orchestration carries presentation
/stop craft, gate-control carries authorization; the five-stops set
matches the resolver's gate enum; no clause contradicts the PR5
user-fork/waiver contract, and the preview-identity rule is consistent
with the PR5 amendment-aftermath resolver reasons.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV
Checkpoint craft: five stops, visual identity, and the direction stop first
@leochenpm
leochenpm merged commit 4aeecce into sync/scaffold-scene-anchors Aug 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant