daily-fix: verified-at-filing: 3 new probe clauses
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the /daily 2026-07-25 problem sweep. This is a filing-quality
defect in /daily itself: three of the tasks filed by the 2026-07-24 wave carried
premises their own clarifiers refuted the next morning, each burning clarifier or
plan-revision time before the session could start on real work.
Goal
Extend the verified-at-filing: mandate in .claude/rules/workflow-fix-on-bug.md
§ Body-file template with three new binding clauses — marker-existence, call-hop
target tracing, and suppression-predicate — so a filing may not assert a missing
marker, a fix surface, or a lost park without running the compose-time probe that
would refute it.
Workflow gap
Three refuted premises from one wave (all three tasks still merged, but each paid a correction round first):
- Marker-existence claim, unverified — #1667 (session
203baf55, clarifier @ 2026-07-25T06:51:56Z). The filed body's claim (b) asserted no failover marker had been posted on #1586's events. The clarifier found it:epm:progressv146 at 05:42:00Z carrying the[autonomous_session_watch:runpod-noport-wedge-failover]sentinel. The real defect was a pre-dispatch external-marker triage MISS by the owning session. Half the task's proposed change collapsed to verify-only. Clarifier verbatim: "CORRECTION to the filed body: claim (b) 'no marker was posted on #1586's events' is FALSE — the failover marker WAS posted (epm:progress v146, 05:42:00Z …)". - Wrong primary target file — #1669 (session
7457e1a3, clarifier @ 2026-07-25T08:40:34Z). The filed body namedscripts/autonomous_session_watch.py. The actual fix surface wasscripts/backend_poll.py(_runspec_from_runpod_handle) +src/explore_persona_space/backends/runpod.py(launcher render) + the handle writer inbackends/issue_dispatch.py; the watcher is only the CALLER. The shipped diff touched 13 files, none of them the named target. This also weakens dedup, whose key is(target_file, fingerprint). - "A park was lost" claim, unverified — #1680 (session
5277f92c, clarifier @ 2026-07-25T13:18:32Z). The filed bug-(b) hypothesis was that the #1642 parked candidate had been lost by the Step C sweep. The clarifier found the park was correctly suppressed by a routed record (origin_candidate_tsexact match, fp-less primary key). The real gap was counter opacity. The session re-scoped mid-flight and shipped a different fix than the one filed.
Why the existing mandate did not catch these: today's clauses (a)/(a')/(b)/(c)/(d)/(e)
cover pattern presence/absence in FILES, relocation, landed-fix context, commit-SHA
resolution, and artifact-state mutation. None covers (i) an assertion about a MARKER's
existence in an events stream, (ii) whether the named target_file is the site that
CONSTRUCTS the wrong value versus a caller that merely propagates it, or (iii) whether
a record the filer believes was dropped was in fact suppressed by a documented
predicate. All three are one cheap probe away at compose time.
- Confidence (emitter): high — three independent same-wave incidents, each with a clarifier correction quoted verbatim from the task's own events.
- verified-at-filing: absence of the three clauses confirmed in the named target —
grep -c 'marker-existence\|call-hop\|suppression-predicate' .claude/rules/workflow-fix-on-bug.md→ 0; the existingverified-at-filing:clause list in § Body-file template enumerates (a) per-target confirmation, (a') semantic probe for text-matching guards, (b) relocation grep, (c) context consistency, (d) sha-resolution, (e) artifact-state mutation — and stops there. Incident evidence read from the three tasks' ownevents.jsonlclarifier markers (quoted above), not from recall. Landed-fix history checkgit log --oneline --since='7 days ago' -- .claude/rules/workflow-fix-on-bug.md→ the 2026-07-25 wave landed #1677 (unverified-premise labeling,591cd93cff) and #1680 (Step C suppression,51d2e343a0); neither adds these three clauses — #1677 governs how to LABEL an unverifiable claim, which is the complement of requiring a probe for a claim that IS verifiable. (2026-07-25)
Proposed change (refine in planning)
Three new clauses in § Body-file template, in the existing (a)…(e) register:
(f) marker-existence — a claim that "no marker / no record was posted" on task #M is
verified at compose time with
uv run python scripts/task.py view <M> --json | jq -r '.events[] | ...'
scanning for the marker kind AND the sentinel/phrase the claim denies, recorded
like the grep evidence. A found marker refutes the claim: re-scope before filing.
(g) call-hop target tracing — before fixing target_file, trace the failing behavior
ONE call-hop past the observed symptom: name the site that CONSTRUCTS the wrong
value, not the caller that consumes it. Record both. Re-run the dedup fingerprint
against the corrected target (the dedup key is (target_file, fingerprint), so a
mis-target silently weakens dedup too).
(h) suppression-predicate — a claim that a candidate/park/record was DROPPED or LOST
is verified by enumerating the documented suppression predicates the owning tool
applies (for Step C: the routed-record scan, the verbatim-fp key, the #1680
origin_candidate_ts fallback). A correctly-suppressed record refutes the claim.
Scope / surfaces
- Primary target:
.claude/rules/workflow-fix-on-bug.md(§ Body-file templateverified-at-filing:clause list, and the § Anti-patterns table — each existing clause has a matching anti-pattern row; add three). .claude/skills/daily/SKILL.mdroute-2 block references the mandate by clause; check whether it enumerates clauses inline and needs the same three added.- Keep the clauses cheap: each must be ONE bounded probe. A clause that costs a multi-minute investigation at compose time will be skipped under load, which is how the mandate degrades.
Constraints / invariants
- Workflow-surface only.
- Do NOT weaken the existing fail-open posture: an ambiguous probe result means FILE and note the ambiguity, never silently skip (a wrongly-skipped filing has no dedup tag, so the bug can vanish entirely).
scripts/workflow_lint.py --check-references/--check-askspass; ruff passes.- This session runs under
EPM_WORKFLOW_FIX_SESSION=1and carries aworkflow_fix_target:Provenance line — recursion guard applies.
Provenance
- workflow_fix_target: .claude/rules/workflow-fix-on-bug.md
- fingerprint: 96b748d25c4c
- Source:
/daily2026-07-25 transcript sweep, sessions203baf55(#1667),7457e1a3(#1669),5277f92c(#1680).