Closed gates: four definition values that read as working and are not - #468
Conversation
The meta orchestrator records reaching the end of its client activity loop, so close-out can tell a completed run from one that stopped at the iteration bound. The flag that gate reads defaults to false and its only writer — the checkpoint option that returns to the workflow — also sets it false, so the session-metrics revision the terminal activity binds never executed. Three files document a mid-run write of the trace and usage artifacts as a draft that revision rewrites; both shipped as drafts in every run. The branch-name prefix has a total mapping and a producer. The issue-type enum declares five categories; the table mapped four, left task and enhancement to be chosen between two prefixes with no rule, and named none for epic — so an epic-typed work package reached branch composition and the prefix was invented, which is a value two runs on the same epic disagree about. Each category now maps to one prefix the repository already uses, with the reason stated per row, and the prefix itself is a step-local the composition step reads rather than an unanchored reference no declared input resolves. The complex-problem path into the analysis workflow dispatches it. It was an action step with an empty action list, so a complex work package ran the structural-analysis technique inline on the simple path and nothing at all on its own. It now declares the trigger and binds handle-sub-workflow, following the prism-audit activity that already dispatches the same child. The workflow-design audit technique names arguments that exist. One step instructed a re-snapshot flag the binding guard does not have and has never had — classification there is a human verdict in the triage register — and two guard invocations passed no corpus root, so an authoring run reviewing a worktree measured the server checkout instead and reported a clean pass on definitions it never read. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The guard sweep here fails until #467 lands, and that is the ordering rather than a defect
That entry is in #467, where the same sweep passes because the guard reads the scripts from that branch. So:
The alternative — binding the input on the step — is the shape the two prism callers deliberately do not use, because the session index is the caller's own argument rather than a workflow variable. Following them keeps one treatment for one operation across all three callers. Worth noting as a finding in its own right: a corpus change that introduces a new binding finding cannot be verified before the server change that classifies it, and nothing says so. The evaluation this branch comes from records the same shape elsewhere — a record whose authority outlives its checker. |
Summary
Four definition defects an evaluation of the meta and work-package workflows found. Each is a gate or a value that reads as working and is not: a flag whose only writer sets the value it already defaults to, a lookup table missing a member of its own enum, a step that cannot act, and an audit technique naming arguments that do not exist.
The server side of the same work is #467, which adopts this corpus commit.
What happens today
A session-metrics revision that never runs. In meta, the terminal activity revises the session metrics when a flag says the client workflow completed. That flag defaults to false, and its only writer — the checkpoint option that sends the run back into the workflow — also sets it false. So the revision has never executed. Three separate files describe the session-trace and token-usage artifacts as drafts that revision rewrites; both have shipped as drafts in every run, and the activity's own stated outcome says otherwise.
A branch prefix two runs disagree about. The issue-type enum declares five categories: feature, bug, task, enhancement, epic. The prefix table maps four of them, leaves task and enhancement to be chosen between two prefixes with no rule for choosing, and names none for an epic. Separately, the prefix the composition step reads is not one of the technique's five declared inputs, nor a declared output, nor a step-local — it resolves to nothing. So an epic-typed work package reaches branch composition with no prefix, and whatever the agent supplies becomes part of the branch and pull-request identity, which the corpus itself states is expensive to change once a pull request is open.
A complex-problem path that cannot act. In work-package's post-implementation review, a simple problem binds the analysis workflow's structural-analysis technique inline. A complex one reaches a step declaring an empty action list, so nothing happens at all — the whole integration with the analysis workflow is inert, and the variable declared to carry its output has neither a producer nor a reader anywhere in the corpus.
An audit technique that would propagate a broken form. The workflow-design audit technique is the one place in the corpus that runs repository guards from protocol prose, so it is the example any convention would be built on. One step instructs a re-snapshot flag the binding guard does not have and has never had — classification there is a human verdict recorded in the triage register. Two more run guards with no corpus root, and a guard resolves its corpus as the explicit root, then an environment variable, then the server checkout's own copy. So an authoring run reviewing a worktree measured the server checkout instead, and reported a clean pass on the definitions under review.
The fix
Record reaching the end of the loop. The meta orchestrator sets the completion flag on a trailing control step gated on the pointer the activity loop exits by, so close-out can tell a completed run from one that stopped at the iteration bound. The checkpoint option that returns to the workflow still clears it, which now carries information.
Make the prefix table total, and give it a producer. Each of the five categories maps to one prefix the repository already uses —
featfor feature, enhancement and an epic's own delivery branch,fixfor a bug,chorefor a task — with the reason stated per row. The prefix is a step-local the composition step reads. An unset category stops the step and reports, rather than being guessed, which is what the detection technique already says should happen.Dispatch the child workflow. The complex path declares its trigger and binds the child-workflow dispatch, following the prism-audit activity that already dispatches the same child. The shared meta operation's caller-supplied session index is classified in the triage register against the rationale that operation's two other callers already use.
Name arguments that exist. The audit technique passes a corpus root to both guard invocations and says what an omitted one measures. The re-snapshot instruction is replaced by the triage register's three verdicts and the note that classification is a human judgement with no flag that bypasses it.
Scope of change
Four files: one meta activity, two work-package definitions, one workflow-design technique. 42 lines added, 12 removed. No new technique, no new variable, no schema change.
Acceptance criteria
Non-goals
The evaluation found 52 findings; this carries four of them. The definition work it deliberately leaves includes the four ordering defects in the two heaviest activities, batching the per-iteration checkpoint gates, giving the validation activity a language-neutral path, and completing the review-mode ambiguity assertion — the last being the largest definition blast radius in the set, at 85 references across 11 of 15 activities.
Investigation detail
Evaluation report and per-dimension analysis
🤖 Generated with Claude Code