no pipeline path for guard/characterization tests (unexpected_pass escalation) #859
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#859
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Evidence: cc-plugins #79 (enforce parity between two identical template trees) — test-writer's parity test is correctly green on day one; both maps poodr-ticket-implementation.yaml and poodr-implementation.yaml require
diff-test expect: red, so Runner escalatesunexpected_pass:test-writer/diff-test; escalation procedure forbids merging freeform work, leaving no sanctioned route. Ask: a map or node for guard tests (e.g. a mutation check proving the test goes red when the guarded invariant is broken).User ruled 2026-10-01: map reroute (ADR-0258). Slice 1 children: #868, #869, #870, #871, #872, #873, #874. Slices 2–4 follow.
Slice 1 updated to amendments A1-A6 (ADR-0259). All tickets are ready-for-agent.
Slices 2-4 children (ADR-0258, ADR-0259):
Slice 2 — guard map + mutation gate
Slice 3 — change-auditor reroute verdict
Slice 4 — drafting
Order: #875 -> #876 (after slice 1) -> #877, #878 -> #879; #880 -> #881 -> #882.
Slice 1 result (session 48007765, 2026-10-01)
The user stopped this session after slice 1. Slices 2-4 continue in a new session. #859 stays open for verification in the design session.
a2875763;38652664(lockfile);ca494959(History)payload.nodeon a Hash); test fixed, re-opened as 20. Suite-check hit an env defect from #858 (Gemfile.lockBUNDLED WITH 4.0.11 vs installed 4.0.22); fixed in38652664. Implementation 20 endedverdict:error: the test-support migration (name-only catalog, thread-local seam) needed existing-test edits no role may make. HAND-FINISHED by a sonnet worker; independent opus review PASS.643add26,4028738c;dd4fa868(History)model/dispatch.rbindirty_paths; committed by hand.bcd0a3cc;18b27ba7(History)poodr-implementation(prose-only ticket, skill rule).d155aaa8;0521e786(History)unexpected_pass: behavior-verifier could not see staged map deletions incode_changes(wrong verdict, #887). HAND-FINISHED; coding fixture moved from a Ruby hash totests/fixtures/maps/coding.yamlas the ticket says.91f8a7e6,f28dff08;92196350(History)model/dispatch.rbdirty (unlisted path); committed by hand.74f05b7d;a1cf85fe(History)f128fdcd;2f86fb08(History)a3701b71,8425ff91;1fc00080(History)diff-testrequired YAML fixtures (LoadError) → #888 first; test work kept (WIP 58f1eb3f), re-opened. Run 2: orchestrator hand-fixedtests/support/repeated_next_row_check.rb(asserted the removedfailed_reason), then repair went green. Runner left 27 test/fixture paths dirty; committed by hand.b9896f57;34c5b4c2(History)4dd5a54a,6f02d0b2;3b74a794(History)Implementation::RerouteRequestfiles dirty while committed code called them; committed by hand.reroutegate reads the router handoff, but that handoff does not exist at gate time. Implementation 4 waits atneeds-orchestrator. Re-opened once before that: the session's worktree-isolation guard refused the agent's long--jsonstop command and it sent a thin handoff.Hand-finishes: #868, #883.
Waiting tickets: #873 (ruling question posted). The tracker has no
waitinglabel, so it could not be added (unknown label "waiting"); the os-backlog CLI also has no label-add command (#867). #874 is blocked by #873.Captured follow-ups: #887 (
code_changesomits staged changes; skeptic CREATE), #888 (diff-test required YAML fixtures; created and shipped).Dropped by the skeptic: "Commit every path the suite gate tested" — ADR-0171 decision 2 makes the listed-path commit deliberate; changing it needs a ruling. Root is agents not listing every changed file.
Observed, not captured:
.sdlc/pipeline.dband replaces the symlink with a local file (known: memory worktree-runner-schema-bump-wipes-shared-db). #870, #888 and #872 run 1 ran in worktree-local DBs. Workaround used: connect once from the main checkout right after each merge.os-sdlc-subagent-stop < file.json; long--jsonstrings trip the worktree-isolation guard.reference/pipeline-stages.md:36still says "shipped coding map".Main after slice 1 (HEAD
3b74a794):bin/test: 9 suites passed (os, os-adr, os-aidd-lint, os-backlog, os-context, os-doc-hygiene, os-sdlc).lib tests: 808 files inspected, 21 offenses; session start2c66c747had 22; none introduced.bundle exec rubocopfails because rubocop is not in its Gemfile (same at2c66c747);rubocop -c .rubocop.yml lib tests binwithout bundler: 162 files, 47 offenses.map-routeragent type exists but needs a session restart before a live dispatch.Slice 1 complete
Closed: #868, #884, #869, #883, #871, #870, #872, #885, #886, #873, #874.
d3f4888fvia the pipeline. Implementation 5 escalated on a test-helper defect. The helper was hand-fixed and the ticket reopened as implementation 6, which ran clean in 10 dispatches. ADR-0260 (user ruling): the map-update CLI writes a draft reroute and the gate confirms it.83f95bbc, hand-finished (a prose-only ticket has no red path; see #892).New tickets this session: #889 (entry-agent handoff after reroute), #890 (test-reviewer gap), #891 (lens: move Reroute::Draft to command/), #892 (prose-only tickets have no red path).
Next, from each "Blocked by:" line:
#859 stays open.
Slices 2-4 progress (2026-10-01, session 8cb89545)
Main is at
454deadd.bin/test: 9 suites passed. Rubocop for plugins/os-sdlc: 21 offenses, the same as before; no new offenses (the 12 Ruby files changed this session are clean).461ff366(+5b49309eHistory)a10b547d(+9046a307)1e6a5fc6(+be79af75)unexpected_passat test-writer (prose-only, #892)5125c6b5test hand-fix,a99c06fb(+3e5d131d)stop_change_auditornever callednext, so the run could not route (#890); test-reviewer passed it; 2 programmer-repair dispatches spent. Hand-fixed the test, set the map diff aside on a side branch (deleted after merge), reopened as implementation 12, which completed10bf6277(+454deadd)unexpected_passat test-writer (prose-only, #892)verdict: fail).reroutes.drafthas two meanings (ADR-0258 drafted map vs ADR-0260 / #873 pending reroute). Decision memo on #880. Implementation 14 waits atneeds-orchestratorHand-finishes: #877, #879 (prose-only, #892). Hand-fixed test: #878 (
5125c6b5).Waiting tickets: #880 (ruling on the
draftcolumn; memo on the ticket), #881 and #882 (blocked).Captured follow-ups:
No LENS lines appeared in any report.
Slice 4 complete 2026-10-02 (main
494861a8). #898 ruled B1 -> ADR-0264 (drafts in XDG data dir, promotion by mv + git add). #904 Map.drafts_dir(env) + Boot-installed catalog (two passes; lens A6 found an ENV read in the model). #881 re-scoped: validator feedback at map-update per ADR-0260, (drafted) label, map-router fail edge loops at bound 2. #882 docs for drafting and promotion (hand-finished, prose-only). Filed #907 (Runner auto-commit vs staged deletions). Remaining under #859: the guard/characterization path itself — no new work queued from this slice. Left open for the owner to judge.Resolution
Done: Mechanism: the red-first map cannot handle non-test-shaped or already-green work. Occurrence: #593 "Ticket map escalates on a documentation-only case: behavior-verifier fails, test-writer unexpected_pass".
Evidence: #593 adds #587 impl 17: a prose edit to SKILL.md led test-writer to write a raw-file-content test that passed at once (unexpected_pass:test-writer/diff-test) and tripped Sdlc/Structural/RawFileContentAssertion; the orchestrator deleted it by hand.
Follow-ups: none
Occurrence: Red round loops without bound when an acceptance criterion is green before the change
Seen: plugins/os-sdlc poodr-ticket-implementation test-writer/test-reviewer edge; os-sdlc-reroute-request
Run: implementation 205 (#1380), session 9f415790-a6bd-4850-8d70-3dd45004ce2b, dispatches 1820-1827
Adds: four identical test-reviewer fails (must-fire ACs the cop already satisfied could not be red) with no escalation from the Runner; os-sdlc-reroute-request refused with 'implementation 205 is active at "test-writer"; reroute-request needs an active run at a waiting node', so a corrected ticket could not be rerouted. Recovery was an AC rewrite on the tracker plus a prompt note to the next test-writer.
Occurrence: Let a boundary test stay green in a red round
Seen: plugins/os-sdlc/agents/test-reviewer.md
Run: implementation 229 (#1543), escalation 103, session 914a3148-8417-4934-9c2d-748527da22e6
Adds: a limit boundary test (20 changed files print no + line) is green on code with no cap; test-reviewer failed it four rounds until bound_exhausted, and the run was hand-finished.