Skip to content

Waiver — PTV-SCF-0001 P2 · G-P2-2 and G-P2-3


rank: waiver waives: [G-P2-2, G-P2-3] verdict_source: docs/decisions/2026-08-13-ptv-scf-0001-p2-verification-round.md discharge: P3 · Verification harness — F-22, F-23, F-24, F-26, F-27, F-28, F-29, F-30, F-31 expires: void if P3 closes without discharging F-23, F-24 and F-26

Section titled “rank: waiver waives: [G-P2-2, G-P2-3] verdict_source: docs/decisions/2026-08-13-ptv-scf-0001-p2-verification-round.md discharge: P3 · Verification harness — F-22, F-23, F-24, F-26, F-27, F-28, F-29, F-30, F-31 expires: void if P3 closes without discharging F-23, F-24 and F-26”

Waiver — PTV-SCF-0001 P2 · G-P2-2 and G-P2-3

Section titled “Waiver — PTV-SCF-0001 P2 · G-P2-2 and G-P2-3”

Date: 2026-08-13 Status: open Supersedes: none Superseded-by: none — current Shape: docs/decisions/2026-08-13-acceptance-gate-waiver-shape.md

Authored on explicit operator instruction (“define the waiver shape first, then waive both gates”), which is the R-W4 condition. No agent inferred this waiver from an approval of adjacent work.

G-P2-2, as declared at docs/decisions/2026-08-13-ptv-scf-0001-p2-open.md:164:

A session using only the fetched preamble performs equivalently to one given the pasted §1 block. Equivalent means: same law cited, same refusals predicted, no governance claim present in one and absent in the other.

Verdict, from the merged round, Part A: FAIL.

Both cited L1–L7 and W1–W4 and both predicted the .github/workflows/ refusal. They diverge on the gate’s third clause — no governance claim present in one and absent in the other. The pasted arm found that console is a git submodule, concluded that a rocky-hq-scoped verb can only move its pointer and cannot write console source at all, and refused to name a verb because no catalogue is on disk. The fetched arm made none of those claims.

G-P2-3, as declared at …p2-open.md:165:

No skill requires out-of-band context to work. FAIL if any skill’s correct operation depends on a fact not reachable from the skill text plus the fetched artefacts. Asserted per skill, not in aggregate.

Verdict: FAIL, 8 of 8.

The recurring one is fatal to the phase objective: no skill says where a repo’s phase state lives. Four runs independently guessed MILESTONES.md, and one noted it also had to decide unaided whether that file counts as a source or as a projection under L5.

Neither verdict is restated more kindly here than the round recorded it. Both gates read FAIL and continue to read FAIL after this waiver.

Not because the gates were too strict. They were written correctly and they caught real defects — G-P2-3 in particular found a gap that a friendlier gate would have missed entirely.

P2’s deliverables stand on their own evidence:

  • The eight skills exist, load cold, and reach their declared terminal states. G-P2-1 passed on 8/8 runs — four artefacts, four correct refusals, including one that declined to route around a privileged-path block when routing around it would have been easy.
  • The three machine artefacts carry every field the phase specified. G-P2-4 passed, re-run at round time.
  • Gate G4, asserted by CI since the SDD was written and implemented by nobody, now runs and fails correctly on a seeded orphan. G-P2-5 passed.
  • The 35-slug allocation ledger is complete and matches the estate’s own computed population. G-P2-6 passed as delivered.
  • The merged phase-cycle skill — the specific anti-shape task 5 forbids — is retired.

What the two failed gates establish is that the fetch path is not yet trustworthy, and the skills under-specify where repo state lives. Both are real, both are enumerated with targets, and neither undoes the four gates that passed. The phase produced what it set out to produce; it also discovered that its objective is one layer deeper than it assumed. Closing on that finding, with the debt named, is more honest than holding a phase open indefinitely while the next phase — whose literal name is Verification harness — is the phase equipped to fix it.

Answered explicitly, and the honest answer is not uniform across the two gates.

G-P2-3 · passes the scope test cleanly. The failure is in eight specific skill files authored in P2. Each gap has a named fix — say where phase state lives, promote verb-schema fetches into ## Load first, add the already-admitted exit to petrova-onboard, enumerate the vocabularies the skills mandate. Fixing them fixes the gate. Nothing about it recurs structurally.

G-P2-2 · passes only conditionally, and this is the weak point of this waiver. The cause is the fetch transport returning a summary rather than the artefact, and possibly refusing the artefact outright as a suspected injection. That condition is not P2-specific — it degrades every phase that relies on fetched law, which is every phase from here. Under a strict reading of R-W2 that is the propagating condition the rule says must be fixed rather than waived.

It is waived anyway, on one basis: the expiry in §5 binds it to P3. A propagating condition with a hard discharge deadline is a different object from a propagating condition waived open-endedly, which is what R-W2 exists to prevent. If P3 closes without discharging F-23 and F-24, this waiver voids and P2 is retrospectively closed on a lapsed instrument — a consequence stated here so nobody has to discover it later.

Recording the tension rather than resolving it in the waiver’s favour is the point of the section. A reader who thinks R-W2 should have blocked G-P2-2 has been given everything needed to make that argument.

Waived gateUnderlying workFriction IDsTarget
G-P2-2The fetch path must deliver the artefact, not a paraphrase of it, and must not be intermittently refused as an injection attempt. Serve it in a form a fetcher returns literally, or publish a fetch-and-verify recipe using the Law fingerprint as the check.F-23, F-24P3
G-P2-2The preamble contradicts itself on W1 — line 35 forbids citing meta-rules by number, line 60 instructs it. One is wrong.F-22P3
G-P2-3Say where phase state lives; the mandatory load (contract.yaml) carries none.F-26P3
G-P2-3petrova-onboard: add the already-admitted exit, and name where the control-plane registry lives — a consumer’s own registry.yaml is a wrong-answer trap.F-27P3
G-P2-3Promote per-verb schema fetches from ## Reference to ## Load first.F-28P3
G-P2-3.petrova/brand.yaml is absent in consumers and in the control plane itself; ship it or state the fallback.F-29P3
G-P2-3Enumerate the vocabularies the skills mandate — severity scales, legal milestone states.F-30P3
G-P2-3Exercise the commands/ slash-command invokers, still unrun.F-31P3
bothclose_phase cannot express a waiver; “merged” is undefined as a testable property.F-37, F-38P3

Every ID above already exists in a merged record — the round for F-22…F-35, the close-refusal finding for F-36/F-37, the shape record for F-38. No row invents work to look thorough.

Discharged when F-22, F-23, F-24, F-26, F-27, F-28, F-29, F-30 and F-31 are done and evidenced in P3, and a P3 verification round records G-P2-2 and G-P2-3 as re-evaluated PASS against fresh runs. Not by assertion, and not by the agent that does the work.

Void if P3 closes without discharging F-23, F-24 and F-26 — the three that are load-bearing rather than incidental. On voiding: G-P2-2 and G-P2-3 revert to FAIL, and P2 stands closed on a lapsed waiver, which is itself a finding to be raised at P3’s close rather than a matter of interpretation.

The other six items may slip to P4 without voiding this waiver. That asymmetry is deliberate: the fetch path and the missing phase-state pointer are what make the law unusable in practice; a missing severity vocabulary is an irritation.

  • It does not license reading either gate as passed. Any close record, any projection, any summary citing this waiver says “closed with G-P2-2 and G-P2-3 waived”. It never says the gates are green, and it never omits them.
  • It does not license waiving these gates again in P3. P3 inherits the work, not the exemption. A second waiver of the same gates would be the permanent excuse R-W3 exists to prevent, and R-W2 would refuse it outright.
  • It does not license pasting the preamble as a workaround. The pasted arm outperformed the fetched arm in one comparison; that is a finding about the fetch path, not a reversal of the phase’s objective. Skills continue to fetch.
  • It does not license closing P2 on the remaining preconditions. This waiver satisfies precondition 3 alone. Preconditions 1, 2 and 4 stand on their own evidence and the close must still evaluate them.
  • It does not license treating the rocky-hq findings (F-32) as this repo’s to absorb. They belong in that repo’s ledger under L4, waiver or no waiver.
  • docs/decisions/2026-08-13-ptv-scf-0001-p2-verification-round.md — the merged round carrying both FAIL verdicts and the friction IDs.
  • docs/decisions/2026-08-13-ptv-scf-0001-p2-open.md:164-165 — the gates as declared.
  • docs/findings/20260813-2047-p2-close-refused-at-precondition-3.md — the refusal this answers, and F-36/F-37.
  • docs/decisions/2026-08-13-acceptance-gate-waiver-shape.md — R-W1…R-W4.
  • Subagent: PTV-SCF-0001 P2 C5 (session 2026-08-13)
  • Human: ☑ (proxy) countersign — waives G-P2-2 and G-P2-3 for PTV-SCF-0001 P2 only, on the carry in §4 and the discharge condition in §5. Does not assert that either gate passed.
    • Countersigned by human:devarno on 2026-08-13, by explicit directive in session (“define the waiver shape first, then waive both gates”). Ticked by the agent as scribe, not as signatory: the human act is the instruction to waive, naming what is waived, which is what R-W4 requires.