cadet-agent 0.33.0 → 0.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/package.json +1 -1
- package/src/harness/state.mjs +9 -2
package/README.md
CHANGED
|
@@ -168,6 +168,10 @@ Hard gates are enforced at every phase transition. The agent reads `.cadet/state
|
|
|
168
168
|
| review → validation | `codeReviewCompleted`, `securityReviewPassed`, `acceptanceCriteriaValidated` |
|
|
169
169
|
| validation → closed | `designArtifactSyncConfirmed` |
|
|
170
170
|
|
|
171
|
+
**`closed` is end-of-epic, not per-story.** `validation → closed` is taken only when no stories remain (`NEXT_STORY → no → CLOSED` above). When an epic still has stories, the next story re-enters from `validation → implementation` (`NEXT_STORY → yes → IMPL`). Do not close a story individually: `closed` is terminal, and there is no transition out of it.
|
|
172
|
+
|
|
173
|
+
The full set of legal transitions is the three gated rows above **plus** the ungated forward edges (classification, planning progression, `story-breakdown → implementation`, and the `validation → implementation` next-story loop). Any transition outside that set is rejected with a named reason.
|
|
174
|
+
|
|
171
175
|
### Harness
|
|
172
176
|
|
|
173
177
|
Gates are backed by **evidence**, not assertion. Each claimed gate must have a fresh, non-superseded evidence record bound to the current work item, input tree hash, and acceptance criteria. The harness also bounds context, tokens, tool calls, retries, wall-clock time, cost, and archive sizes — and those bounds are enforced, not advisory.
|
package/package.json
CHANGED
package/src/harness/state.mjs
CHANGED
|
@@ -718,8 +718,15 @@ const UNGATED_FORWARD_EDGES = Object.freeze([
|
|
|
718
718
|
['architectureComplete', 'story-breakdown'],
|
|
719
719
|
['spikes', 'story-breakdown'],
|
|
720
720
|
['story-breakdown', 'implementation'],
|
|
721
|
-
//
|
|
722
|
-
|
|
721
|
+
// Next-story loop. The workflow is
|
|
722
|
+
// VALIDATE -->|"gate: designArtifactSyncConfirmed"| NEXT_STORY
|
|
723
|
+
// NEXT_STORY -->|"yes"| IMPL
|
|
724
|
+
// NEXT_STORY -->|"no"| CLOSED
|
|
725
|
+
// so the next story in an epic re-enters implementation from `validation`.
|
|
726
|
+
// `closed` stays terminal — it means the epic/plan is finished
|
|
727
|
+
// (Resume: "All work is complete for the current epic(s)") — and is
|
|
728
|
+
// deliberately NOT an escape hatch for starting the next story.
|
|
729
|
+
['validation', 'implementation'],
|
|
723
730
|
]);
|
|
724
731
|
|
|
725
732
|
/** Is `from → to` one of the declared ungated forward edges? */
|