Ticket map escalates on a documentation-only case: behavior-verifier fails, test-writer unexpected_pass #593
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#593
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?
Problem
Implementation 17 on ticket #587 ran the poodr-ticket-implementation.yaml map.
Case 5 of the ticket's
## Casessection asked for a prose change to SKILL.md.The programmer made that edit in round 1, together with the code change.
Observed
behavior-verifier (dispatch 230, 25 s, 2 tool uses) returned fail. It named outstanding tasks.
The map routed the run to test-writer (dispatch 232).
test-writer wrote
tests/skills/implement_skill_default_map_test.rb. The test asserts on the raw SKILL.md text.Its diff-test gate exited 0 at once.
Rubocop then flagged that test three times with
Sdlc/Structural/RawFileContentAssertion.The orchestrator finished the case by hand. It deleted the prose test, committed, and closed the run.
Reproduce
n/a: pipeline-behavior defect, not a single reproducible command
Expected
A documentation-only case must not sit under
## Cases. Per ADR-0190, that section holds one observable given/when/then per line.The
TicketShapecheck must flag a documentation-only line under## Cases.As an alternative or additional fix, the behavior-verifier charter should gain a rule: an outstanding task whose only evidence is a text-file diff is verified by reading, not by routing to test-writer.
Triage picks between these two candidates.
Origin
## Cases)## Cases## Cases; root candidate itself, no in-session duplicate)## Retired testsand## Approach#612Second manifestation, from hyperthrive-websites #55 (session 593440fa): after a hand-fix re-entry on an already-green tree, test-writer escalate/unexpected_pass leaves the Runner in await_completion with no dispatch and no failure; there is no re-entry path.
Observed, in order:
## Retired testsasserted the old behavior; the programmer cannot edit tests, so the gate could not go green.harness error: OsSdlc::HarnessError: ticket body missing: Retired tests (not found: ...)for all five retired tests, because implementation 2 had already deleted them. Workaround: retitle the heading to## Retired tests (removed in implementation 2).os-sdlc-runner gate 14: verdictescalate, classificationunexpected_pass(34 runs, 87 assertions, 0 failures). subagent-stop recorded verdictescalate. next_step:{"type":"await_completion","implementation_id":3}.os-sdlc-runner nextreturns the same await_completion indefinitely. No dispatch, no escalation payload, no implementation_failed.Consequence: the escalation procedure's documented recovery (hand-fix, re-enter) cannot be executed: the map has no edge from test-writer
escalate/unexpected_passand the Runner stalls. The operator had to move the green work to a side branch, reset to main, and rerun the whole map (implementation 4) at full cost.Suggested fix for the maintainer to judge: either (a) give the map an edge for test-writer
unexpected_passthat proceeds to behavior-verifier when the tree is already green for the ticket's Cases, or (b) add a resume/re-enter command that opens at a named node against the current tree, and make implementation-open tolerate retired tests that are already absent.2026-09-24 blast-radius re-evaluation: the fix belongs in TicketShape as a doc-only-case rule with an ADR-0190 amendment. The ticket's candidate (b), "behavior-verifier verifies by reading," reverses ADR-0173 and is not allowed without a superseding ADR. Removed from the quick-win batch; needs design.
Resolution
Done: Folded into #859 as evidence
Evidence: Same mechanism; see occurrence comment on #859
Follow-ups: none