# W6 (#337 + #64 + #340) — REQ gap, measured 2026-09-24 (doyle)

**Finding: W6 has three requests and ZERO covering REQs.** Under the no-untracked-work rule this
makes W6 undispatchable, exactly as W5 was until `REQ-BUNDLE-APPLY-MEMBERS` was minted. Minting the
W6 seed is therefore the design task that GATES the next dispatch — do it before W5 closes, not after.

Measured against `traceable-reqs.toml` (958 REQs) by id sweep, then by reading each near-miss in full.
The three near-misses are all genuinely different surfaces:

## #337 — now-signal UPDATES divulge → NEEDS A NEW REQ

`REQ-NOW-SIGNAL-UPDATES` (line 7636) exists, `required_stages = ["doc","impl","unit"]`, and is
already SATISFIED by the shipped row shape (activated todlando, NOW-SIGNAL W1 / releases#245,
2026-08-30).

It does **not** cover W6's change, for a reason that is structural rather than stylistic:

- Its text ratifies the CURRENT contract — three subjects, per-shell keying, seen-set-as-event-detector,
  no event journal, absence-is-silence. W6 keeps all of that and adds a **row format** for a subject
  whose version MOVED: `UPDATED <subject> <old> → <new> at <HH:MMAM|PM YYYY-MM-DD> — changelog: <url>`.
- That row needs **data the current REQ never required**: applied-at time and the OLD version, which
  per the JIT plan come from the apply record, written by BOTH the CLI and daemon paths.
- So the new evidence is new impl (two writers + the row composer) and new units. Re-tagging the
  existing REQ would attach W6's evidence to a requirement whose stages are already green — the
  change would gate on nothing.

Note the existing REQ's own load-bearing clause to preserve: the seen-set key CARRIES the version,
so a moved subject re-tells exactly once. W6 must not add a second source for that fact.

## #64 — `spt update status` trust-anchor OVERRIDDEN line → NEEDS A NEW REQ

`REQ-TRUST-WARNING-OVERRIDE` (line 4001) is the nearest id match and is **unrelated**. It governs an
operator replacing the ADVISORY PARAGRAPH of an endpoint's *trust warning* (`spt endpoint
trust-warning set|reset|show`, elevation-gated writes, node-local store, prompt-injection bounding).

#64 is a different surface: `spt update status` reporting that the *release trust anchor* is
overridden from `identity/release-keys.json` — `trust anchor OVERRIDDEN (identity/release-keys.json,
key <id>, channel <ch>, expires <date|EXPIRED>)` plus a cleanup hint. Shared noun ("override"),
different claim. No REQ covers it.

## #340 — adapter `summary` + `changelog` → NEEDS A NEW REQ

Nothing covers it. `REQ-DOCS-CHANGELOG-PAGE` (line 7746) is the docs-SITE changelog page
(`gen_changelog` diffing `docs-site/src/changelog.md`), not a per-adapter changelog.

W6 scope needing coverage: manifest `[adapter] summary` (<=300 chars) + `changelog`
(archive-relative md); install/update renders md -> HTML via **`pulldown-cmark` (a NEW dependency —
justify in the PR body)**; served at `…/<node>/a/<adapter>/changelog`; schema + MANIFEST.md in the
same commit.

## Carry-forward constraints for whoever authors the seed

- **#337 is operator re-ruled (2026-09-24 08:20Z): NO new notification surface, NO ADR-0046 notif
  row.** The divulge lives INSIDE the existing now-signal `<UPDATES>` block, reshaping
  `gather_updates` (`crates/spt/src/api/nowsignal.rs` ~1216). A seed that mints a notif row
  contradicts a standing operator ruling.
- Unchanged subjects keep their current one-line shape; the adapter changelog link appears only when
  declared (#340), so #337 and #340 are coupled and the seed should state which way.
- `[update].message` / post-step notice folds into the same row.
- `spt update status`'s last-applied line per subject is unchanged.
- #340 adds a dependency — the new-dep justification is a PR-body requirement, and the doc stage
  lands where a MANIFEST author looks (the REQ-SHELL-HINTS precedent: a manifest section no author
  can find reads as absent).

## Not a finding, recorded so it is not re-derived

`traceable-reqs lint` emits 1514 `[must]` rows over 834 of the 958 REQs (828 `length`, 683
`contains-and`, 3 `tbd-todo`), and CI runs it as `|| true`. That is registry-wide and predates every
current lane; the non-blocking wiring is correct. Do not let a new W6 REQ's title length be argued
from those rows — match the house style of the surrounding requirements. See
`gate-docs266-31a82bf8.md`.
