The row
- Ask does proof/vectors still have a YAML
- Stamp partial, no KI, no until
- Why the hunt never took an exit
Topic · vector campaign closure
Gist
Vector campaign closure is whether every opened hunt under proof/vectors/ ended somewhere auditable. Proof runs proof audit --check vector_campaign_closure. An ad campaign is not that floor. Jama still authors.
proof audit --check vector_campaign_closure
Keep the threat-model spreadsheet if the board already owns it. Keep Jama if it already authors the shall. Neither one refuses a partial YAML with no evidence, no KnownIssue, and no dated deferral.
01 · The open hunt
A vector is a planned attack-angle campaign under proof/vectors/. Closure is whether a non-terminal status ended in bound evidence, an owned KnownIssue, or a dated deferral. Hygiene is whether the YAML still points at real files.
The check is default-on at warning. It walks every vector whose status is not a terminal exit (closed-null, closed-ki, deferred). For each of those it demands one of three exits. (a) Evidence-bound: a KnownIssue linked to the campaign carries an evidence_manifests entry that resolves on disk, same resolver as
known issue complete.
(b) KI-owned: a filed KnownIssue yaml mentions the vector id on a word boundary, so V-H1 does not match V-H12. (c) Dated deferral: checks.threat_surface.deferrals[] names the vector, a reason of at least 16 runes, and an until date that has not passed. Otherwise one warning per vector, naming the id, the priority, and the three paths.
This hop does not ask whether the YAML still resolves. That is
vector campaign hygiene.
A hunt can pass hygiene with a live KI pointer and still fail here: status partial, no evidence, no KI text, no deferral. A P0 still sitting at unresearched stays on
unresearched P0 vectors.
id: V-edge-cases title: Deadline wrap on the periphery priority: P1 status: partial
The suite can still be green. The hunt YAML is an opened campaign with no exit. Terminal statuses pass silently. The one exception: status: deferred without defer_note warns even though deferred is terminal. Hand-edited yaml can skip the write-path that requires the note. This hop surfaces that, instead of reporting silent false closure.
proof vector list proof vector show V-edge-cases proof known-issue new --id KI-DEADLINE-01 --title "Deadline wrap on periphery" proof vector link V-edge-cases --known-issue KI-DEADLINE-01 proof audit --check vector_campaign_closure
Bind evidence, file the KI, or write a dated deferral. Do not drop the YAML so the hop goes green. An opened hunt with no exit is still an opened hunt.
02 · The exhibit
status partial, no evidence, no KI, no deferral. Click the tabs.
The row
This hop
Nobody bound evidence, filed a KI, or dated a deferral. External-review still reads as complete.
No stampThe row
Keep the threat-model spreadsheet. Keep the Jama field. That is not this hop.
Keep the recordProof
Same V-edge-cases. A silent partial, or this hop. Click the tabs.
| Surface | What they do | What Proof does | What we lose |
|---|---|---|---|
| Ad campaign | A marketing spend named campaign closure. | Warn when an opened hunt YAML has no auditable exit. | We do not run ads. Bare "campaign closure" is that SERP, not this hop. |
| Vector campaign hygiene | Whether the hunt YAML still points at real files. | Whether a non-terminal status took an exit. | Not the link floor. See vector campaign hygiene. |
| Unresearched P0 vectors | Whether a P0 hunt YAML is still unopened. | Whether an opened hunt ended somewhere auditable. | Not the open-work gate. See unresearched P0 vectors. |
| Known issue complete | Whether a KI yaml still has a resolving evidence path. | Reuses that resolver for exit (a). Broken evidence is its own bucket. | Not the KI completeness hop. See known issue complete. |
| Jama field | The authoring programme. Attributes if you put them there. | A YAML object the audit can fail next to the shall. | Not Jama's V&V. Jama still authors. We have not run a frozen Jama pack. |
The teaching graph is still one campaign next to one missing exit. Read the finding. Then bind evidence, file the KI, or write a dated deferral.
proof vector list proof known-issue new --id KI-DEADLINE-01 --title "Deadline wrap on periphery" proof vector link V-edge-cases --known-issue KI-DEADLINE-01 proof audit --check vector_campaign_closure --verbose proof help vector-campaign
Close a closure finding by making one of the three exits true, by taking a terminal status with its notes, or by correcting the id. Hygiene stays on vector campaign hygiene. Unopened P0 status stays on unresearched P0 vectors. Residual-only measured kills stay on residual kill hygiene. Do not treat a missing vectors directory as proof the hunts closed. Jama still authors. Proof vs Jama.
03 · The honest loss
A green vector_campaign_closure can still mean there was no vectors directory. It is warning, not a hard gate. Jama still authors.
Warning severity. Terminal vectors pass silently. Missing proof/vectors/ inspects nothing. warn_after_days (default 0) can grant open campaigns a grace from the earliest parseable campaign_log timestamp; a vector with no parseable timestamps is always due. A deferral is honored through its until day and re-warns the next UTC day. Broken evidence is its own bucket: an unreadable manifest, or an oracle run that errored or timed out, warns as closure-inconclusive. KI ownership does not cure that. A dated deferral does not launder it either. Two critical gates cap a would-be pass at warn: an armed oracle family whose contract_ref does not resolve, and a ledger pointer whose owner is missing from the other store. Opt-out is project.checks.threat_surface.campaign_closure false. The hop does not run the campaign. It does not inspect the implementation. Hygiene of the YAML object is a different check, not this URL. We have not scored this floor against a frozen Jama pack, an ad campaign, or a STRIDE workbook. The loss is named, not scored.
The link-floor hop stays on vector campaign hygiene. The open-P0 hop stays on unresearched P0 vectors. The sample-table hop stays on residual kill hygiene. The KI completeness hop stays on known issue complete. The engagement stays on software correctness audit. Jama still authors.
04 · Nearby questions
What is vector campaign closure? Same question. Same URL.
Is this vector campaign hygiene? No. That hop is whether the YAML still resolves. This hop is whether a non-terminal status took an exit. See vector campaign hygiene.
Is this unresearched P0 vectors? No. That hop is whether a P0 campaign is still unopened. This hop is whether an opened hunt ended. See unresearched P0 vectors.
Is this known issue complete? No. That hop is whether a KI yaml still has a resolving evidence path. Exit (a) reuses the resolver. Broken evidence here is closure-inconclusive, not a green KI. See known issue complete.
Is this an ad campaign? No. Ads campaign closure is that marketing spend. A hosted ad is not this cell.
Does a missing vectors directory fail? No. Missing proof/vectors/ inspects nothing. Put a YAML there when you open a hunt, then take an exit.
Does an open hunt fail the merge? No. The check keeps warning severity. Critical-gate rows cap a would-be pass at warn. They do not flip the hop to a hard fail.
Does a KI without evidence close the hunt? Ownership (b) can. Broken evidence cannot. An unreadable manifest, or an oracle that errored, stays closure-inconclusive even if a KI names the vector.
Is Proof a Jama alternative for the shall? No. Jama still authors. Proof vs Jama.