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”The write probe’s first green campaign
Section titled “The write probe’s first green campaign”Date: 2026-08-28
Follows: PTV-DEC-0025, countersigned earlier today, which admitted
petrova-probe to petrova-canary.
1 · What ran
Section titled “1 · What ran”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.
| seq | run identifier | stage | verdict | canary PR |
|---|---|---|---|---|
| 1 | 88592d5b-d5c9-4c93-87f6-6c8f754503f8 | full | green | petrova-canary#2 |
| 2 | 99eb5c26-7158-4565-beb1-1053d9163bc6 | full | green | petrova-canary#3 |
| 3 | c422c00d-9421-4e81-b3ff-004c727991be | full | green | petrova-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.
2 · G-P3-2 — FAIL
Section titled “2 · G-P3-2 — FAIL”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 hop | status |
|---|---|
| schema resolution | schema_resolution |
| fingerprint match | fingerprint_match — see §4, it asserted nothing in these runs |
| idempotency key | absent → M3.4 |
| registry lookup | registry_lookup |
| admission | admission |
| phase integrity | absent — never scoped to a milestone |
| dry-run render | dry_run_render |
| apply | apply |
| PR emission | pr_emission |
| metadata parse-back | metadata_parse_back |
| re-invocation returns already-emitted | absent → 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.
4 · What these runs did not assert
Section titled “4 · What these runs did not assert”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.
| SR | before | after | why |
|---|---|---|---|
PTV-SR-0001 | assertion-complete · evidence-pending | assertion-partial | Correction. 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-0002 | assertion-complete · evidence-pending | test-verified | pr_emission asserted both conjuncts and executed green in runs 1–3, cited above. Base SHA unchanged across each run. |
PTV-SR-0005 | assertion-partial | unchanged | Idempotency key still has no hop; the fingerprint hop asserted nothing (§4). |
PTV-SR-0006 | assertion-complete · evidence-pending | test-verified | registry_lookup, admission and admission_refuses executed green, admission exercised in both directions against the live registry. |
PTV-SR-0007 | no-assertion | unchanged | No hop, no milestone. |
PTV-SR-0008 | assertion-complete · evidence-pending | test-verified | dry_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.
7 · What is now true, stated plainly
Section titled “7 · What is now true, stated plainly”- 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#1from G-P3-1). They are inert by design and may be closed or left; the repo’s remedy for accumulation is deletion and recreation.
8 · Countersign
Section titled “8 · Countersign”- Ratified by alex@devarno.com on 2026-08-28. This record cites the three
run identifiers
G-P3-2requires. Ticking this box does not makeG-P3-2pass — §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.