diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index b1ee3d93..54a436f0 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -93,6 +93,39 @@ and must not be cited as merge evidence. Rely on reviewer clearance + real CI. Three independent live instances in a single session — format gate, agent context reset, queue guard — is the class confirmed, not anecdote. +### D-12 — a requested SAFETY flag was silently degraded, and I did not check + +I created PR #1027 with `pr-create.sh ... -d` (draft) because it carries **partial, unproven work**. +`tea` authentication was stale, so the wrapper fell back to its raw-API path — which cannot set draft — +and emitted: + +``` +Warning: API fallback applies title/body/head/base only; labels/milestone/draft require authenticated tea setup. +``` + +The PR was created **not-draft**. I read the success output, saw the PR number, and moved on. I then +reported to the coordinator that the PR was "opened as draft". **It was open, mergeable, and marked +ready for ~25 minutes**, protected only by the words "DRAFT" and "do not merge" in its title and body — +i.e. by prose a human might read, not by the platform control I asked for. Detected only because a +watcher polled `draft:` and the value disagreed with my belief. Corrected by setting the `WIP:` title +prefix (Gitea's draft mechanism); `draft: True` verified after. + +**Three distinct failures, and the third is mine:** + +1. **Silent degradation of a safety flag.** The fallback path dropped `--draft` and still exited 0. A + fallback that cannot honour a _safety_ argument must fail, not proceed — degrading `--labels` is a + nuisance; degrading `--draft` publishes unproven work as ready to merge. +2. **The warning went to stderr and nothing consumed it.** It was correct, specific, and ignored — a + warning nobody acts on is indistinguishable from no warning. +3. **I did not verify the flag took effect.** I checked that the PR existed, not that it had the + property I required. This is the mission's own thesis turned on me: **I trusted a success exit code + over an observed state**, on exactly the class of tool this mission exists to distrust. + +**Requirements.** RM-02: a wrapper that cannot honour a safety-relevant argument must exit non-zero — +registered with a must-fail control asserting `--draft` on a degraded path fails rather than proceeds. +RM-24 (tri-state write outcomes): this is precisely `written-unverified` being treated as `verified` — +the PR write succeeded, the _requested property_ was never confirmed, and no one looked. + ### D-11 — seat identity did not survive into git, and seat capability is invisible at dispatch Two defects, one dispatch (RM-01 → `f10-coder`):