dev-flow-codex 0.3.0 → 0.4.0
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 +150 -197
- package/package.json +3 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/skills/dev-flow/SKILL.md +293 -150
- package/plugin/skills/dev-flow/references/method-profiles.md +153 -0
- package/plugin/skills/dev-flow/references/node-payloads.md +305 -0
- package/runtime/darwin-arm64/dev-flow +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Codex Method Profile Rendering Reference
|
|
2
|
+
|
|
3
|
+
This is the closed Codex Host-rendering reference for Core Contract 0.2 semantic method steps. Read
|
|
4
|
+
it only after Core returns a complete current Action. It explains how Codex may perform the work; it
|
|
5
|
+
is not a process definition or a second task cursor.
|
|
6
|
+
|
|
7
|
+
## Authority boundary
|
|
8
|
+
|
|
9
|
+
Core owns task and process identity, the current node and Action, node obligations, semantic step
|
|
10
|
+
IDs and order, legal transitions and guards, problem-class validation, destination, evidence
|
|
11
|
+
validity, recovery, blockers, and terminal outcome. The Adapter owns capability visibility checks,
|
|
12
|
+
rendered instructions, expected artifact descriptions, plain-equivalent work, and honest bounded
|
|
13
|
+
method evidence.
|
|
14
|
+
|
|
15
|
+
The Adapter must not derive or select a transition or destination outside the complete current
|
|
16
|
+
Action. A command result, artifact checkbox, proposal status, verification status, or archive status
|
|
17
|
+
does not advance or mutate Core. Only a valid Core apply using one returned transition can do that.
|
|
18
|
+
The Adapter keeps no independent current node, baseline, profile cursor, or completion state.
|
|
19
|
+
|
|
20
|
+
## Profiles and rendered operation
|
|
21
|
+
|
|
22
|
+
The immutable task profile is exactly one of `plain`, `spec-kit`, or `openspec`. `plain` uses no
|
|
23
|
+
external method capability. The other profiles map only capabilities actually visible in the
|
|
24
|
+
current Host; listing a capability here does not prove that it is installed.
|
|
25
|
+
|
|
26
|
+
Present each Core-returned step with this closed shape:
|
|
27
|
+
|
|
28
|
+
<!-- rendered-operation-example:start -->
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"step_id": "requirements.clarify",
|
|
32
|
+
"purpose": "Resolve material requirement ambiguity.",
|
|
33
|
+
"required": true,
|
|
34
|
+
"profile": "spec-kit",
|
|
35
|
+
"capability_id": "speckit-clarify",
|
|
36
|
+
"rendered_instruction": "Use the installed Spec Kit clarify capability for the active feature.",
|
|
37
|
+
"expected_artifacts": ["active feature specification clarification"],
|
|
38
|
+
"availability": "available"
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
<!-- rendered-operation-example:end -->
|
|
42
|
+
|
|
43
|
+
`availability` is closed and ordered as:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
available
|
|
47
|
+
unavailable
|
|
48
|
+
not_applicable
|
|
49
|
+
unknown
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This shape is presentation and admission guidance only. It is never persisted as Core task state.
|
|
53
|
+
|
|
54
|
+
## Semantic step rendering catalog
|
|
55
|
+
|
|
56
|
+
Capability cells name preferred stable capability IDs. A slash-command spelling is not part of the
|
|
57
|
+
contract. “Direct” means the profile has no mandatory external capability for that step; render
|
|
58
|
+
`not_applicable` and perform the listed plain-equivalent work. Conditional capabilities are rendered
|
|
59
|
+
only when actually visible and appropriate to the current authorized artifacts.
|
|
60
|
+
|
|
61
|
+
<!-- semantic-step-table:start -->
|
|
62
|
+
| Step ID | Developer-readable purpose | Plain-equivalent work | Spec Kit capability guidance | OpenSpec capability guidance | Expected artifacts or result |
|
|
63
|
+
| --- | --- | --- | --- | --- | --- |
|
|
64
|
+
| `requirements.capture` | Capture a bounded goal, scope, exclusions, acceptance criteria, constraints, and assumptions. | Write or revise those bounded requirements. | `speckit-specify` only when no prepared feature exists; otherwise review and revise the current specification. | Use visible `openspec-explore` when intent is unclear, then visible `openspec-propose` when a proposal is needed. | Current requirements specification or proposal/delta specification. |
|
|
65
|
+
| `requirements.clarify` | Resolve material requirement questions with the developer. | Ask only material questions and record the answers. | `speckit-clarify`. | Direct proposal/specification revision; visible `openspec-explore` may support exploration. | Recorded material clarifications. |
|
|
66
|
+
| `requirements.validate` | Verify that requirements are observable, bounded, and free of material ambiguity. | Review acceptance and confirm that no material question remains. | `speckit-checklist` or direct checklist review. | `openspec-validate` plus human review. | Requirements-quality review or structurally valid current change. |
|
|
67
|
+
| `design.choose_approach` | Select the simplest viable approach for the current requirements. | Choose a direct bounded design. | `speckit-plan`. | Revise the proposal/design through visible `openspec-propose`. | Current design artifact. |
|
|
68
|
+
| `design.review_complexity` | Identify unnecessary abstractions and justify retained complexity. | Review the design and justify every retained abstraction. | `speckit-plan` plus direct design review. | Direct review; visible `openspec-explore` may support comparison. | Complexity rationale and rejected alternatives. |
|
|
69
|
+
| `design.record_decisions` | Record components, decisions, rejected alternatives, and risks. | Record the current decisions and affected components. | `speckit-plan` artifact updates. | Update the proposal/design through visible `openspec-propose`. | Current decisions, risks, and design references. |
|
|
70
|
+
| `tasks.decompose` | Decompose the current design into bounded, ordered work items. | Create bounded items with dependencies and expected paths. | `speckit-tasks`. | Revise proposal task artifacts through visible `openspec-propose`. | Current bounded task plan. |
|
|
71
|
+
| `tasks.map_acceptance` | Map every current acceptance criterion to work and verification. | Record acceptance-to-work and verification traceability. | `speckit-tasks`. | Review delta specifications and tasks through visible `openspec-propose`. | Acceptance traceability. |
|
|
72
|
+
| `tasks.analyze_consistency` | Check requirements, design, and tasks for gaps or contradictions. | Perform a direct cross-artifact consistency review. | `speckit-analyze`. | `openspec-validate` plus direct consistency review. | No unresolved blocking consistency gap, or exact findings. |
|
|
73
|
+
| `implementation.execute_plan` | Execute only the work authorized by the current task plan. | Implement the current authorized slice. | `speckit-implement`. | `openspec-apply`. | Implemented current work slice. |
|
|
74
|
+
| `implementation.record_surface` | Record exact changed paths or the no-change state and deviations. | Observe and record the exact changed surface. | Direct implementation result; no mandatory capability. | Direct apply result; no mandatory capability. | Changed paths or explicit no-change result. |
|
|
75
|
+
| `implementation.classify_deviations` | Classify deviations as requirement, design, or complexity concerns. | Record the exact concern and route it through Core facts. | Direct classification; amend active artifacts before continuing when semantics change. | Direct classification and current change-artifact update. | Exact deviations and findings. |
|
|
76
|
+
| `test.run_budgeted_checks` | Run only verification authorized by the current verification budget. | Run the current bounded verification steps. | Direct plan-defined checks; no mandatory Spec Kit capability. | Use `openspec-verify` only when visible; otherwise run plan-defined checks. | Actual current verification result. |
|
|
77
|
+
| `test.record_evidence` | Record actual evidence sources, outcomes, and unverified or manual items. | Record actual sources and statuses without relabeling. | Direct evidence recording; no mandatory capability. | Direct evidence recording; no mandatory capability. | Current bounded evidence summary. |
|
|
78
|
+
| `test.classify_failure` | Classify failures as implementation, design, or requirement problems. | Classify current failures from observed facts. | Direct classification; no mandatory capability. | Direct classification; no mandatory capability. | Exact failure class and findings. |
|
|
79
|
+
| `comprehension.explain` | Explain current behavior, design, and code paths in developer-readable terms. | Present a bounded explanation to the developer. | Direct review; no Spec Kit command owns the verdict. | Direct review; no OpenSpec command owns the verdict. | Developer-readable explanation. |
|
|
80
|
+
| `comprehension.identify_complexity` | Identify unnecessary abstractions and maintenance risks. | List concrete complexity and maintenance concerns. | Direct review; no mandatory capability. | Direct review; no mandatory capability. | Exact abstraction and risk findings. |
|
|
81
|
+
| `comprehension.obtain_user_verdict` | Obtain the developer's explicit understanding or remediation verdict. | Ask the developer and wait for an explicit answer. | Direct user interaction; no Spec Kit capability can answer. | Direct user interaction; no OpenSpec capability can answer. | Explicit current user verdict. |
|
|
82
|
+
| `refactor.simplify` | Remove unnecessary complexity within the approved behavior boundary. | Perform the bounded simplification. | `speckit-implement` only after affected artifacts and tasks are current. | Update change artifacts as needed, then use visible `openspec-apply`. | Bounded simplification. |
|
|
83
|
+
| `refactor.reconcile_artifacts` | Reconcile affected process artifacts with the simplification. | Amend only artifacts affected by the simplification. | Use visible `speckit-clarify`, `speckit-plan`, `speckit-tasks`, or `speckit-analyze` only as needed. | Revise proposal/design/spec/task artifacts through visible `openspec-propose` as needed. | Current affected artifacts. |
|
|
84
|
+
| `refactor.record_surface` | Record exact simplifications and the changed surface. | Record simplifications and exact changed paths. | Direct refactor result; no mandatory capability. | Direct apply result; no mandatory capability. | Refactor summary and changed surface. |
|
|
85
|
+
| `delivery.reconcile_acceptance` | Map the latest acceptance criteria to current test and comprehension evidence. | Reconcile every current criterion with current evidence. | `speckit-analyze` or direct final consistency review. | Use visible `openspec-verify` and/or `openspec-validate` as appropriate. | Current acceptance/evidence mapping. |
|
|
86
|
+
| `delivery.reconcile_method_artifacts` | Reconcile method artifacts with delivered behavior. | Ensure current process artifacts describe the delivered behavior. | Direct status reconciliation; `speckit-converge` may be used only when available and appropriate. | Use visible `openspec-sync` and/or `openspec-archive` only when appropriate. | Current reconciled or archived change artifacts. |
|
|
87
|
+
| `delivery.prepare_summary` | Prepare a bounded delivery summary and remaining risks. | Write the final bounded summary and risks. | Direct summary; no mandatory capability. | Direct summary; no mandatory capability. | Delivery summary and remaining risks. |
|
|
88
|
+
<!-- semantic-step-table:end -->
|
|
89
|
+
|
|
90
|
+
The recognized Spec Kit capability IDs are `speckit-specify`, `speckit-clarify`, `speckit-plan`,
|
|
91
|
+
`speckit-checklist`, `speckit-tasks`, `speckit-analyze`, and `speckit-implement`.
|
|
92
|
+
`speckit-converge` is an optional repository capability and is never a Core required step.
|
|
93
|
+
|
|
94
|
+
The recognized OpenSpec capability IDs are `openspec-explore`, `openspec-propose`, `openspec-apply`,
|
|
95
|
+
`openspec-verify`, `openspec-sync`, `openspec-archive`, and `openspec-validate`. Some integrations do
|
|
96
|
+
not expose verify, sync, or archive. Render only a capability actually visible to the Host. The
|
|
97
|
+
presence of an ID in this reference does not prove installation, and OpenSpec installation or
|
|
98
|
+
initialization is never automatic Core behavior.
|
|
99
|
+
|
|
100
|
+
## Availability and fallback
|
|
101
|
+
|
|
102
|
+
For each step returned by Core:
|
|
103
|
+
|
|
104
|
+
1. Check only the Host's actual capability surface.
|
|
105
|
+
2. When the preferred capability is visible and appropriate, render its exact ID and expected result.
|
|
106
|
+
3. When visibility is absent or cannot be confirmed, report `unavailable` or `unknown` honestly.
|
|
107
|
+
4. Always show the catalog's plain-equivalent work.
|
|
108
|
+
5. Do not automatically install a tool, silently run another tool, or treat invocation as completion.
|
|
109
|
+
6. Record completion only after the semantic work actually completes.
|
|
110
|
+
|
|
111
|
+
For `plain`, render external capability availability as `not_applicable`. When the ordinary work
|
|
112
|
+
actually completes, evidence uses `status="plain_fallback"` and an empty `capability`; plain work is
|
|
113
|
+
never labeled as an external capability completion. The same `plain_fallback` rule applies when a
|
|
114
|
+
selected external capability is unavailable but the equivalent work actually completes.
|
|
115
|
+
|
|
116
|
+
When equivalent work remains incomplete, record `unavailable` or `not_run` honestly. Neither status
|
|
117
|
+
can satisfy a required semantic step, so the Adapter must not call apply for that Action.
|
|
118
|
+
|
|
119
|
+
## MethodEvidence
|
|
120
|
+
|
|
121
|
+
A normal mutation supplies exactly one `MethodEvidence` item for every current Action method step,
|
|
122
|
+
in Action order. Each item contains only `step_id`, `status`, `capability`, and `summary`.
|
|
123
|
+
|
|
124
|
+
- `completed` requires the non-empty ID of the actual capability that completed the work.
|
|
125
|
+
- `plain_fallback` requires an empty `capability` and completed plain-equivalent work.
|
|
126
|
+
- `unavailable` and `not_run` do not satisfy a required step.
|
|
127
|
+
- Unknown, duplicate, previous-node, reordered, or omitted steps are invalid.
|
|
128
|
+
- Capability output cannot substitute for the typed `node_result` or any current Core evidence gate.
|
|
129
|
+
|
|
130
|
+
## Artifact references
|
|
131
|
+
|
|
132
|
+
Submit artifact evidence only as `role`, repository-relative `path`, `digest`, and `summary`. Refer
|
|
133
|
+
only to a file actually observed by the Host. Never submit full contents, command output, prompts,
|
|
134
|
+
token data, runtime configuration, or private locations. An artifact digest does not replace the
|
|
135
|
+
repository binding. File existence, checkboxes, validation, sync, or archive status never advances
|
|
136
|
+
Core by itself.
|
|
137
|
+
|
|
138
|
+
For Spec Kit, determine the exact active Feature from explicit repository context. Never infer it
|
|
139
|
+
only from the branch name. Existing specification, design, and task artifacts should be reviewed and
|
|
140
|
+
amended intentionally; step names do not require rerunning specify, plan, or tasks. Checklist marks
|
|
141
|
+
are reviewer evidence, not implementation progress. Analyze findings become typed node facts, and
|
|
142
|
+
implement work produces repository changes, but neither selects a Core transition.
|
|
143
|
+
|
|
144
|
+
For OpenSpec, propose, apply, verify, sync, and archive results remain method evidence only. Archive
|
|
145
|
+
cannot replace DELIVERY acceptance, current test, comprehension, or evidence gates.
|
|
146
|
+
|
|
147
|
+
## Comprehension verdict
|
|
148
|
+
|
|
149
|
+
All profiles present a bounded requirements/design/code-path explanation, list unnecessary
|
|
150
|
+
abstractions and maintenance risks, ask whether the developer can explain and maintain the result,
|
|
151
|
+
and wait for an explicit user verdict. No AI statement or Spec Kit/OpenSpec capability may provide
|
|
152
|
+
that confirmation. The Adapter then considers only the matching transition that Core returned; Core
|
|
153
|
+
still validates the typed result and derives the destination.
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Core Contract 0.2 Node Payload Construction
|
|
2
|
+
|
|
3
|
+
This reference helps the Codex Adapter construct the one closed payload branch returned by the
|
|
4
|
+
current Core Action. It is not a process definition, transition table, cursor, or authority. The
|
|
5
|
+
fresh Action, the live `dev_flow_apply_action` `inputSchema`, and Core validation remain authoritative.
|
|
6
|
+
|
|
7
|
+
## Construction rules
|
|
8
|
+
|
|
9
|
+
Before every ordinary apply:
|
|
10
|
+
|
|
11
|
+
1. Bind one complete fresh Action and read `action_kind`, `current_node`, `payload_contract`,
|
|
12
|
+
`method_steps`, and every `available_transition`.
|
|
13
|
+
2. Select only a transition returned by that Action. Never submit `destination`, `next_node`,
|
|
14
|
+
`next_cursor`, resume node, guard result, or caller classification.
|
|
15
|
+
3. Select the matching `dev_flow_apply_action` `inputSchema` branch and use exactly the six common
|
|
16
|
+
payload members: `transition_id`, `summary`, `reason`, `artifacts`, `method_evidence`, and
|
|
17
|
+
`node_result`.
|
|
18
|
+
4. `required_evidence` and `artifacts` are different concepts. `repository_observation` is a Core evidence requirement, not an ArtifactReference role. When no real repository-relative process
|
|
19
|
+
artifact exists, submit `"artifacts": []`.
|
|
20
|
+
5. Allowed ArtifactReference roles are only `requirements`, `design`, `task_plan`,
|
|
21
|
+
`implementation`, `test`, `comprehension`, `refactor`, `delivery`, and `other_process`.
|
|
22
|
+
6. Preserve the complete `node_result` branch wrapper. Never flatten baseline fields or encode an
|
|
23
|
+
array as prose.
|
|
24
|
+
7. Submit exactly one MethodEvidence item for every current Action method step, in Action order.
|
|
25
|
+
For completed `plain` work use `"status": "plain_fallback"` and `"capability": ""`.
|
|
26
|
+
8. Replace every value beginning `placeholder-` and every exemplar revision/ID with the current
|
|
27
|
+
normalized value read from the current Task/Action. Delivery acceptance, record IDs, and exact
|
|
28
|
+
evidence sets always come from the latest Task projection and are never guessed.
|
|
29
|
+
9. Do not include repository facts, payload digests, raw command/output/environment data, or
|
|
30
|
+
unknown members.
|
|
31
|
+
10. `INVALID_ARGUMENT` is a completed Core domain rejection: stop, report a payload-contract error,
|
|
32
|
+
and do not probe with another payload or treat it as transport uncertainty.
|
|
33
|
+
|
|
34
|
+
<!-- node-payload-template:requirements:start -->
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"transition_id": "requirements_ready",
|
|
38
|
+
"summary": "placeholder-normalized-summary",
|
|
39
|
+
"reason": "",
|
|
40
|
+
"artifacts": [],
|
|
41
|
+
"method_evidence": [
|
|
42
|
+
{"step_id": "requirements.capture", "status": "plain_fallback", "capability": "", "summary": "placeholder-capture-summary"},
|
|
43
|
+
{"step_id": "requirements.clarify", "status": "plain_fallback", "capability": "", "summary": "placeholder-clarify-summary"},
|
|
44
|
+
{"step_id": "requirements.validate", "status": "plain_fallback", "capability": "", "summary": "placeholder-validation-summary"}
|
|
45
|
+
],
|
|
46
|
+
"node_result": {
|
|
47
|
+
"problem_class": "none",
|
|
48
|
+
"baseline": {
|
|
49
|
+
"goal": "placeholder-goal",
|
|
50
|
+
"scope": ["placeholder-scope"],
|
|
51
|
+
"out_of_scope": ["placeholder-exclusion"],
|
|
52
|
+
"acceptance_criteria": ["placeholder-acceptance-criterion"],
|
|
53
|
+
"constraints": ["placeholder-constraint"],
|
|
54
|
+
"assumptions": []
|
|
55
|
+
},
|
|
56
|
+
"unresolved_questions": []
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
<!-- node-payload-template:requirements:end -->
|
|
61
|
+
|
|
62
|
+
Never use `repository_observation` as an artifact role, place goal/scope beside `node_result`, or
|
|
63
|
+
omit `problem_class`, `baseline`, or `unresolved_questions`.
|
|
64
|
+
|
|
65
|
+
<!-- node-payload-template:design:start -->
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"transition_id": "design_ready",
|
|
69
|
+
"summary": "placeholder-normalized-summary",
|
|
70
|
+
"reason": "",
|
|
71
|
+
"artifacts": [],
|
|
72
|
+
"method_evidence": [
|
|
73
|
+
{"step_id": "design.choose_approach", "status": "plain_fallback", "capability": "", "summary": "placeholder-approach-summary"},
|
|
74
|
+
{"step_id": "design.review_complexity", "status": "plain_fallback", "capability": "", "summary": "placeholder-complexity-summary"},
|
|
75
|
+
{"step_id": "design.record_decisions", "status": "plain_fallback", "capability": "", "summary": "placeholder-decision-summary"}
|
|
76
|
+
],
|
|
77
|
+
"node_result": {
|
|
78
|
+
"problem_class": "none",
|
|
79
|
+
"baseline": {
|
|
80
|
+
"requirements_revision": 1,
|
|
81
|
+
"approach": "placeholder-approach",
|
|
82
|
+
"components": ["placeholder-component"],
|
|
83
|
+
"decisions": ["placeholder-decision"],
|
|
84
|
+
"rejected_alternatives": ["placeholder-rejected-alternative"],
|
|
85
|
+
"complexity_justification": [],
|
|
86
|
+
"risks": []
|
|
87
|
+
},
|
|
88
|
+
"findings": []
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
<!-- node-payload-template:design:end -->
|
|
93
|
+
|
|
94
|
+
Use the current requirements revision. The field `complexity` is forbidden; the required field is
|
|
95
|
+
`complexity_justification`, even when its value is an empty array.
|
|
96
|
+
|
|
97
|
+
<!-- node-payload-template:tasks:start -->
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"transition_id": "tasks_ready",
|
|
101
|
+
"summary": "placeholder-normalized-summary",
|
|
102
|
+
"reason": "",
|
|
103
|
+
"artifacts": [],
|
|
104
|
+
"method_evidence": [
|
|
105
|
+
{"step_id": "tasks.decompose", "status": "plain_fallback", "capability": "", "summary": "placeholder-decomposition-summary"},
|
|
106
|
+
{"step_id": "tasks.map_acceptance", "status": "plain_fallback", "capability": "", "summary": "placeholder-acceptance-map-summary"},
|
|
107
|
+
{"step_id": "tasks.analyze_consistency", "status": "plain_fallback", "capability": "", "summary": "placeholder-consistency-summary"}
|
|
108
|
+
],
|
|
109
|
+
"node_result": {
|
|
110
|
+
"problem_class": "none",
|
|
111
|
+
"baseline": {
|
|
112
|
+
"design_revision": 1,
|
|
113
|
+
"work_items": [
|
|
114
|
+
{
|
|
115
|
+
"work_item_id": "placeholder-work-item-id",
|
|
116
|
+
"summary": "placeholder-work-item-summary",
|
|
117
|
+
"expected_paths": ["src/placeholder.mjs"],
|
|
118
|
+
"acceptance_indexes": [0],
|
|
119
|
+
"verification_steps": ["placeholder-targeted-verification"],
|
|
120
|
+
"dependencies": []
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"findings": []
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
<!-- node-payload-template:tasks:end -->
|
|
129
|
+
|
|
130
|
+
<!-- node-payload-template:implement:start -->
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"transition_id": "implementation_ready_for_test",
|
|
134
|
+
"summary": "placeholder-normalized-summary",
|
|
135
|
+
"reason": "",
|
|
136
|
+
"artifacts": [],
|
|
137
|
+
"method_evidence": [
|
|
138
|
+
{"step_id": "implementation.execute_plan", "status": "plain_fallback", "capability": "", "summary": "placeholder-execution-summary"},
|
|
139
|
+
{"step_id": "implementation.record_surface", "status": "plain_fallback", "capability": "", "summary": "placeholder-surface-summary"},
|
|
140
|
+
{"step_id": "implementation.classify_deviations", "status": "plain_fallback", "capability": "", "summary": "placeholder-deviation-summary"}
|
|
141
|
+
],
|
|
142
|
+
"node_result": {
|
|
143
|
+
"problem_class": "none",
|
|
144
|
+
"task_plan_revision": 1,
|
|
145
|
+
"completed_work_item_ids": ["placeholder-work-item-id"],
|
|
146
|
+
"changed_paths": ["src/placeholder.mjs"],
|
|
147
|
+
"no_file_changes": false,
|
|
148
|
+
"deviations": [],
|
|
149
|
+
"findings": []
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
<!-- node-payload-template:implement:end -->
|
|
154
|
+
|
|
155
|
+
Exactly one of a nonempty `changed_paths` list or `no_file_changes=true` describes the current
|
|
156
|
+
implementation result.
|
|
157
|
+
|
|
158
|
+
<!-- node-payload-template:test:start -->
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"transition_id": "tests_passed",
|
|
162
|
+
"summary": "placeholder-normalized-summary",
|
|
163
|
+
"reason": "",
|
|
164
|
+
"artifacts": [],
|
|
165
|
+
"method_evidence": [
|
|
166
|
+
{"step_id": "test.run_budgeted_checks", "status": "plain_fallback", "capability": "", "summary": "placeholder-check-summary"},
|
|
167
|
+
{"step_id": "test.record_evidence", "status": "plain_fallback", "capability": "", "summary": "placeholder-evidence-summary"},
|
|
168
|
+
{"step_id": "test.classify_failure", "status": "plain_fallback", "capability": "", "summary": "placeholder-classification-summary"}
|
|
169
|
+
],
|
|
170
|
+
"node_result": {
|
|
171
|
+
"problem_class": "none",
|
|
172
|
+
"checks": [
|
|
173
|
+
{"source": "automated", "name": "placeholder-check-name", "status": "passed", "summary": "placeholder-check-result", "command_count": 1, "full_suite": false}
|
|
174
|
+
],
|
|
175
|
+
"failed_items": [],
|
|
176
|
+
"unverified_items": [],
|
|
177
|
+
"manual_handoff_items": [],
|
|
178
|
+
"findings": []
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
<!-- node-payload-template:test:end -->
|
|
183
|
+
|
|
184
|
+
<!-- node-payload-template:comprehension-complexity:start -->
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"transition_id": "code_too_complex",
|
|
188
|
+
"summary": "placeholder-normalized-summary",
|
|
189
|
+
"reason": "placeholder-required-complexity-reason",
|
|
190
|
+
"artifacts": [],
|
|
191
|
+
"method_evidence": [
|
|
192
|
+
{"step_id": "comprehension.explain", "status": "plain_fallback", "capability": "", "summary": "placeholder-explanation-summary"},
|
|
193
|
+
{"step_id": "comprehension.identify_complexity", "status": "plain_fallback", "capability": "", "summary": "placeholder-complexity-summary"},
|
|
194
|
+
{"step_id": "comprehension.obtain_user_verdict", "status": "plain_fallback", "capability": "", "summary": "placeholder-user-verdict-summary"}
|
|
195
|
+
],
|
|
196
|
+
"node_result": {
|
|
197
|
+
"problem_class": "code_complexity",
|
|
198
|
+
"explained_components": ["placeholder-component"],
|
|
199
|
+
"unresolved_questions": [],
|
|
200
|
+
"unnecessary_abstractions": ["placeholder-unnecessary-abstraction"],
|
|
201
|
+
"maintenance_risks": [],
|
|
202
|
+
"user_confirmation": null,
|
|
203
|
+
"findings": ["placeholder-matching-complexity-fact"]
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
<!-- node-payload-template:comprehension-complexity:end -->
|
|
208
|
+
|
|
209
|
+
<!-- node-payload-template:comprehension-passed:start -->
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"transition_id": "comprehension_passed",
|
|
213
|
+
"summary": "placeholder-normalized-summary",
|
|
214
|
+
"reason": "",
|
|
215
|
+
"artifacts": [],
|
|
216
|
+
"method_evidence": [
|
|
217
|
+
{"step_id": "comprehension.explain", "status": "plain_fallback", "capability": "", "summary": "placeholder-explanation-summary"},
|
|
218
|
+
{"step_id": "comprehension.identify_complexity", "status": "plain_fallback", "capability": "", "summary": "placeholder-complexity-summary"},
|
|
219
|
+
{"step_id": "comprehension.obtain_user_verdict", "status": "plain_fallback", "capability": "", "summary": "placeholder-user-verdict-summary"}
|
|
220
|
+
],
|
|
221
|
+
"node_result": {
|
|
222
|
+
"problem_class": "none",
|
|
223
|
+
"explained_components": ["placeholder-component"],
|
|
224
|
+
"unresolved_questions": [],
|
|
225
|
+
"unnecessary_abstractions": [],
|
|
226
|
+
"maintenance_risks": [],
|
|
227
|
+
"user_confirmation": {"source": "user", "status": "passed", "summary": "placeholder-explicit-user-verdict-summary"},
|
|
228
|
+
"findings": []
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
<!-- node-payload-template:comprehension-passed:end -->
|
|
233
|
+
|
|
234
|
+
No AI or method capability may create the passing user confirmation.
|
|
235
|
+
|
|
236
|
+
<!-- node-payload-template:refactor:start -->
|
|
237
|
+
```json
|
|
238
|
+
{
|
|
239
|
+
"transition_id": "refactor_ready_for_test",
|
|
240
|
+
"summary": "placeholder-normalized-summary",
|
|
241
|
+
"reason": "",
|
|
242
|
+
"artifacts": [],
|
|
243
|
+
"method_evidence": [
|
|
244
|
+
{"step_id": "refactor.simplify", "status": "plain_fallback", "capability": "", "summary": "placeholder-simplification-summary"},
|
|
245
|
+
{"step_id": "refactor.reconcile_artifacts", "status": "plain_fallback", "capability": "", "summary": "placeholder-reconciliation-summary"},
|
|
246
|
+
{"step_id": "refactor.record_surface", "status": "plain_fallback", "capability": "", "summary": "placeholder-surface-summary"}
|
|
247
|
+
],
|
|
248
|
+
"node_result": {
|
|
249
|
+
"problem_class": "none",
|
|
250
|
+
"changed_paths": ["src/placeholder.mjs"],
|
|
251
|
+
"no_file_changes": false,
|
|
252
|
+
"simplifications": ["placeholder-simplification"],
|
|
253
|
+
"behavior_change_intended": false,
|
|
254
|
+
"findings": []
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
<!-- node-payload-template:refactor:end -->
|
|
259
|
+
|
|
260
|
+
<!-- node-payload-template:delivery:start -->
|
|
261
|
+
```json
|
|
262
|
+
{
|
|
263
|
+
"transition_id": "delivery_complete",
|
|
264
|
+
"summary": "placeholder-normalized-summary",
|
|
265
|
+
"reason": "",
|
|
266
|
+
"artifacts": [],
|
|
267
|
+
"method_evidence": [
|
|
268
|
+
{"step_id": "delivery.reconcile_acceptance", "status": "plain_fallback", "capability": "", "summary": "placeholder-acceptance-summary"},
|
|
269
|
+
{"step_id": "delivery.reconcile_method_artifacts", "status": "plain_fallback", "capability": "", "summary": "placeholder-artifact-summary"},
|
|
270
|
+
{"step_id": "delivery.prepare_summary", "status": "plain_fallback", "capability": "", "summary": "placeholder-delivery-summary"}
|
|
271
|
+
],
|
|
272
|
+
"node_result": {
|
|
273
|
+
"problem_class": "none",
|
|
274
|
+
"acceptance": [{"criterion": "placeholder-current-criterion", "status": "satisfied"}],
|
|
275
|
+
"automated_evidence_ids": ["placeholder-current-automated-evidence-id"],
|
|
276
|
+
"manual_evidence_ids": ["placeholder-current-comprehension-evidence-id"],
|
|
277
|
+
"test_record_id": "placeholder-current-test-record-id",
|
|
278
|
+
"comprehension_record_id": "placeholder-current-comprehension-record-id",
|
|
279
|
+
"unverified_items": [],
|
|
280
|
+
"risks": [],
|
|
281
|
+
"findings": []
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
<!-- node-payload-template:delivery:end -->
|
|
286
|
+
|
|
287
|
+
Acceptance order/text and the automated/manual evidence lists must exactly equal the latest Core
|
|
288
|
+
projection. Use only current TestRecord and ComprehensionAssessment IDs; stale or guessed IDs are
|
|
289
|
+
forbidden.
|
|
290
|
+
|
|
291
|
+
<!-- node-payload-template:blocked:start -->
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"blocker_id": "placeholder-current-blocker-id",
|
|
295
|
+
"condition": {
|
|
296
|
+
"kind": "restore_issuance_binding",
|
|
297
|
+
"expected_binding_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
298
|
+
},
|
|
299
|
+
"observed_binding_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
<!-- node-payload-template:blocked:end -->
|
|
303
|
+
|
|
304
|
+
For `RESOLVE_BLOCKER`, use the exact current blocker ID, stored condition, and freshly observed
|
|
305
|
+
binding digest required by Core. Never submit a resume node or destination.
|
|
Binary file
|