Topic · vector campaign closure

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

Process green can mean the YAML is still partial and nobody closed it.

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

Same V-edge-cases. A silent partial, or this hop.

status partial, no evidence, no KI, no deferral. Click the tabs.

The row

  • Ask does proof/vectors still have a YAML
  • Stamp partial, no KI, no until
  • Why the hunt never took an exit
Status green

This hop

Nobody bound evidence, filed a KI, or dated a deferral. External-review still reads as complete.

No stamp

The row

Keep the threat-model spreadsheet. Keep the Jama field. That is not this hop.

Keep the record

Proof

  • Ask did every non-terminal vector take one exit
  • Out vector_campaign_closure V-edge-cases partial
No closure

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

Proof names an opened hunt with no exit. It does not hunt the angle, and it does not prove the Go.

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 people type next.

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.