Skip to content

The write probe's first green campaign


rank: decision outranks: [] doc_id: PTV-DEC-0026 title: The write probe’s first green campaign — three full-stage runs cited, and why G-P3-2 still fails date: 2026-08-28 status: open — awaiting human countersign owner: petrova-codes scaffold: PTV-SCF-0001 phase: P3 supersedes: none amends: none depends_on: docs/decisions/2026-08-28-ptv-scf-0001-canary-fleet-admission.md

Section titled “rank: decision outranks: [] doc_id: PTV-DEC-0026 title: The write probe’s first green campaign — three full-stage runs cited, and why G-P3-2 still fails date: 2026-08-28 status: open — awaiting human countersign owner: petrova-codes scaffold: PTV-SCF-0001 phase: P3 supersedes: none amends: none depends_on: docs/decisions/2026-08-28-ptv-scf-0001-canary-fleet-admission.md”

Date: 2026-08-28 Follows: PTV-DEC-0025, countersigned earlier today, which admitted petrova-probe to petrova-canary.

Three consecutive full-stage probe runs against the live canary, each opening a real pull request and reading it back. All nine implemented hops passed in each.

seqrun identifierstageverdictcanary PR
188592d5b-d5c9-4c93-87f6-6c8f754503f8fullgreenpetrova-canary#2
299eb5c26-7158-4565-beb1-1053d9163bc6fullgreenpetrova-canary#3
3c422c00d-9421-4e81-b3ff-004c727991befullgreenpetrova-canary#4

Artefact: docs/evidence/g-p3-2-full-probe-runs.jsonl, seq 1–3, gapless, zero red, one verb (petrova_act_registry_edit), one schema fingerprint (527e83bf1a3b), operator human:alex@devarno.com.

The stage is stated because the checker asks for it and because the two halves do not exercise the same path. All three runs are full: they authenticated, applied a write, opened a PR, and fetched the committed blobs back. The skeleton campaign (g-p3-2-probe-runs.jsonl) remains at 0 records.

The gate reads:

The probe asserts every hop named in scope A2 and runs green on three consecutive runs, with the three run identifiers cited in the round record.

Two clauses. The second is now satisfied and the first is not.

A2 names eleven hops (docs/specs/2026-08-12-ptv-scf-0001-scaffold-rev-a.xml:237-241). Eight exist:

A2 hopstatus
schema resolutionschema_resolution
fingerprint matchfingerprint_match — see §4, it asserted nothing in these runs
idempotency keyabsent → M3.4
registry lookupregistry_lookup
admissionadmission
phase integrityabsent — never scoped to a milestone
dry-run renderdry_run_render
applyapply
PR emissionpr_emission
metadata parse-backmetadata_parse_back
re-invocation returns already-emittedabsent → M3.4

The probe also implements admission_refuses, which A2 does not name. It is a deliberate addition — an admission hop run only against an admitted actor proves nothing about refusal — and it does not substitute for any absent hop.

Three green runs is necessary and not sufficient. A campaign that satisfies the counting clause while the coverage clause is unmet is precisely the shape this phase exists to refuse: the number that looks like the verdict is not the verdict.

3 · PTV-FND-0067 — the artefact undercounted what remains

Section titled “3 · PTV-FND-0067 — the artefact undercounted what remains”

docs/PTV-VCRM-0001.md reads “Nine hops exist of A2’s eleven; the two absent are the idempotency key and re-invocation (M3.4).”

Both halves are wrong. Nine hop implementations exist, but only eight are A2’s — the ninth is admission_refuses, which A2 does not name. And three of A2’s are absent, not two: phase integrity has never been implemented, never been assigned a milestone, and appears in no backlog. M3.4 is scoped to the idempotency key and re-invocation only.

This is the mirror of the defect this phase keeps finding. An artefact that overcounts what exists claims work nobody did; one that undercounts what remains promises a finish line nearer than it is. PTV-VCRM-0001 did the second, and it did it in the sentence a reader would use to estimate the distance.

The sentence was written in M3.3 while narrowing two other overclaims. Sweeping a claim’s echoes is not the same as re-deriving the claim, and this is what the difference costs.

Discharge: phase integrity needs a hop and a milestone. Neither exists. That is a decision, not a task, and it is not taken here.

fingerprint_match recorded and did not compare, in all three runs. No --expect-fingerprint was supplied, so the hop took the honest weak path it was built for: it records the computed value, marks asserted: false, and discharges nothing. The CLI printed RECORDED, NOT COMPARED — nothing asserted beside it each time.

So the campaign does not evidence SR-0005’s fingerprint clause. Three green runs contain one hop that asserted nothing, by design and in the open. Re-running with an expected value would strengthen a future campaign; it would not retroactively strengthen this one, and mixing asserted and unasserted runs inside one campaign would make the three heterogeneous in what they claim.

No hop asserts SR-0001’s soleness clause, and none can — see §5.

5 · G-P3-4 — FAIL, and one row moves backwards

Section titled “5 · G-P3-4 — FAIL, and one row moves backwards”

The gate wants all six SRs at test-verified. Three reach it. One is corrected downwards.

SRbeforeafterwhy
PTV-SR-0001assertion-complete · evidence-pendingassertion-partialCorrection. The soleness clause has no hop and cannot have one — a hop observes the path it takes, not the absence of others. The row already said so while carrying a status meaning every clause has a hop. assertion-partial is what the vocabulary has for exactly this. M3.3 mis-stated it.
PTV-SR-0002assertion-complete · evidence-pendingtest-verifiedpr_emission asserted both conjuncts and executed green in runs 1–3, cited above. Base SHA unchanged across each run.
PTV-SR-0005assertion-partialunchangedIdempotency key still has no hop; the fingerprint hop asserted nothing (§4).
PTV-SR-0006assertion-complete · evidence-pendingtest-verifiedregistry_lookup, admission and admission_refuses executed green, admission exercised in both directions against the live registry.
PTV-SR-0007no-assertionunchangedNo hop, no milestone.
PTV-SR-0008assertion-complete · evidence-pendingtest-verifieddry_run_render → apply → metadata_parse_back executed green; committed blobs fetched from the emitted branch and sha256-compared against the pre-apply digest.

test-verified: 3 of 6. The gate wants six. It stays FAIL, and it is now FAIL for a smaller and better-understood reason than before: two rows need hops that do not exist, and one needs a clause that no hop can assert.

6 · A result worth recording, not just an incident

Section titled “6 · A result worth recording, not just an incident”

Countersigning PTV-DEC-0025 edited registry.yaml and left docs/domains/petrova-canary.md — its generated projection — still reading “Fleets admitted: none. No autonomous write. Every change here is an operator action.” True until the countersign, false after.

CI caught it (E_PROJECTION_DRIFT) at the moment the source moved, before the change merged.

F-57, recorded in PTV-DEC-0024, names the shape where a fix lands at some call sites and the stale one stays invisible until something downstream resolves wrong. (F-57 is a round-local identifier in that record, not PTV-FND-0057, which is a different finding entirely — checked, because this record spends §3 on a citation that was not.) Here the something downstream was a checker, and it resolved wrong immediately and loudly. That is the same shape terminating correctly, and it is evidence the generator and its drift gate earn their place — the class of defect this phase keeps finding by hand is, in this one instance, found mechanically.

  • A fleet identity can effect an applied write on the canary through the governed path, and three recorded runs show it doing so.
  • Every mutation landed as a pull request. No run wrote to a default branch.
  • The bytes committed were the bytes rendered, compared by digest and not assumed.
  • Two gates remain FAIL, for reasons named above rather than for want of evidence.
  • The canary holds four open probe PRs (#2, #3, #4, plus #1 from G-P3-1). They are inert by design and may be closed or left; the repo’s remedy for accumulation is deletion and recreation.
  • Ratified by alex@devarno.com on 2026-08-28. This record cites the three run identifiers G-P3-2 requires. Ticking this box does not make G-P3-2 pass — §2’s first clause is unmet and no signature changes that.

Superseded in one clause, on the same day. §2’s table records phase integrity as “absent — never scoped to a milestone”, and §3 as “never been assigned a milestone”. PTV-DEC-0027, ratified 2026-08-28, creates M3.9 · phase integrity hop. Both clauses were true when written and are false from that ratification.

This record is append-only and those sentences stand as written; the correction lives in PTV-DEC-0027 §5 and here. Phase integrity remains absent as a hop — that half of §2 is unchanged, and it is the half that keeps G-P3-2 failing.