@abelxiaoxing/cadence 1.8.4 → 2.0.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 +324 -117
- package/THIRD_PARTY_NOTICES.md +15 -0
- package/agents/design-explorer.md +14 -18
- package/agents/diagnosis-worker.md +14 -14
- package/agents/implementation-worker.md +16 -17
- package/config/workflow-task.example.json +7 -0
- package/docs/remote-access.md +60 -0
- package/docs/reuse-and-distribution.md +44 -0
- package/docs/service-management.md +108 -0
- package/licenses/bundled-web.txt +6245 -0
- package/licenses/pi-web-ui-MIT.txt +21 -0
- package/licenses/pi-web-ui-reuse.md +22 -0
- package/package.json +92 -20
- package/src/index.ts +21 -1802
- package/src/native-build.ts +6 -0
- package/src/native-client.ts +103 -0
- package/src/native-export.ts +58 -0
- package/src/native-history.ts +359 -0
- package/src/operator-cli.mjs +453 -1937
- package/src/plan-proposal.ts +87 -0
- package/src/sdk-worker.mjs +549 -0
- package/src/service/contracts/active.ts +82 -0
- package/src/service/contracts/budget.ts +148 -0
- package/src/service/contracts/build.ts +67 -0
- package/src/service/contracts/capture.ts +48 -0
- package/src/service/contracts/core.ts +33 -0
- package/src/service/contracts/current.ts +261 -0
- package/src/service/contracts/domain.ts +68 -0
- package/src/service/contracts/history.ts +2245 -0
- package/src/service/contracts/models.ts +139 -0
- package/src/service/coordination.ts +862 -0
- package/src/service/private-files.ts +204 -0
- package/src/service-cli.mjs +5592 -0
- package/src/service-client.ts +747 -0
- package/src/service-contract.ts +245 -0
- package/src/service-host.mjs +22382 -0
- package/src/service-http-client.ts +425 -0
- package/src/service-wire.ts +372 -0
- package/src/task-shell.ts +1045 -0
- package/src/task-store.ts +479 -0
- package/src/task-types.ts +184 -0
- package/src/verification-diagnostics.ts +29 -72
- package/src/worker-capture.mjs +1197 -0
- package/src/worker-public.mjs +1753 -0
- package/src/worker-redaction.mjs +608 -0
- package/src/worker-tools.mjs +202 -0
- package/web/dist/assets/KaTeX_AMS-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic.woff +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Italic.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Italic.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Italic.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic.woff +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/web/dist/assets/KaTeX_Math-Italic.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-Italic.woff +0 -0
- package/web/dist/assets/KaTeX_Math-Italic.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Script-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Script-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Script-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/web/dist/assets/cadence.css +2 -0
- package/web/dist/assets/cadence.js +7 -0
- package/web/dist/assets/markdown.js +296 -0
- package/web/dist/assets/react.js +9 -0
- package/web/dist/assets/rolldown-runtime.js +1 -0
- package/web/dist/assets/timeline-client.js +41 -0
- package/web/dist/assets/vis-timeline.css +1274 -0
- package/web/dist/assets/vis-timeline.js +32 -0
- package/web/dist/index.html +18 -0
- package/web/dist/manifest.json +505 -0
- package/config/plan-draft.example.json +0 -125
- package/config/plan-draft.multiple-tasks.example.json +0 -375
- package/config/plan-draft.quick.example.json +0 -78
- package/prompts/abel-design.md +0 -382
- package/prompts/abel-diagnose.md +0 -71
- package/prompts/abel-implement.md +0 -284
- package/prompts/abel-init.md +0 -52
- package/src/activation.ts +0 -44
- package/src/activity-contracts.ts +0 -82
- package/src/agent-registry.ts +0 -53
- package/src/apply-transaction.ts +0 -1437
- package/src/artifact-store.ts +0 -213
- package/src/build-windows-job.mjs +0 -95
- package/src/candidate-artifact.ts +0 -143
- package/src/candidate-context.ts +0 -289
- package/src/candidate-patch.ts +0 -271
- package/src/candidate-workspace.ts +0 -80
- package/src/canonical.ts +0 -16
- package/src/change-contract-schema.ts +0 -191
- package/src/change-contract.ts +0 -324
- package/src/change-verification.ts +0 -1617
- package/src/contracts.ts +0 -2466
- package/src/control-contracts.ts +0 -382
- package/src/delivery-compiler.ts +0 -1805
- package/src/delivery-revision.ts +0 -42
- package/src/design-control.ts +0 -1299
- package/src/design-diagnostics.ts +0 -181
- package/src/design-journal.ts +0 -1773
- package/src/directory-sync.ts +0 -36
- package/src/durable-contracts.ts +0 -227
- package/src/durable-workflow.ts +0 -822
- package/src/evidence-draft.ts +0 -122
- package/src/execution-profile.ts +0 -64
- package/src/execution-retention.ts +0 -77
- package/src/file-snapshot.ts +0 -163
- package/src/implement-continuation.ts +0 -559
- package/src/implement-graph.ts +0 -690
- package/src/implement-plan.ts +0 -72
- package/src/install-config.d.mts +0 -6
- package/src/isolation-backend.ts +0 -353
- package/src/model-source.ts +0 -22
- package/src/openspec-cli.ts +0 -494
- package/src/operator-cli-entry.mjs +0 -24
- package/src/operator-tools.ts +0 -309
- package/src/package-candidate-process.ts +0 -206
- package/src/package-candidate.ts +0 -24
- package/src/package-delivery.ts +0 -486
- package/src/package-state.ts +0 -320
- package/src/package-verification.ts +0 -635
- package/src/package-workflow.ts +0 -305
- package/src/packet-runtime.ts +0 -459
- package/src/phase-execution.ts +0 -2163
- package/src/pi-adapter.ts +0 -19
- package/src/plan-draft-summary.ts +0 -527
- package/src/plan-draft.ts +0 -502
- package/src/remove-path.ts +0 -32
- package/src/run-state.ts +0 -420
- package/src/run-store.ts +0 -1179
- package/src/safe-path.ts +0 -77
- package/src/scoped-grep-worker.mjs +0 -23
- package/src/scoped-tools.ts +0 -775
- package/src/single-task-draft.ts +0 -142
- package/src/sqlite-schema.ts +0 -171
- package/src/state-root.ts +0 -215
- package/src/storage-schema.ts +0 -360
- package/src/subagent-activity.ts +0 -1417
- package/src/subagent-process.ts +0 -476
- package/src/task-ledger.ts +0 -1338
- package/src/transport-budget.ts +0 -50
- package/src/verification-capability.ts +0 -1191
- package/src/verification-environment-io.ts +0 -389
- package/src/verification-environment.ts +0 -162
- package/src/verification-identity.ts +0 -77
- package/src/verification-scan.ts +0 -64
- package/src/windows-job-backend.ts +0 -419
- package/src/windows-job.c +0 -149
- package/src/workflow-engine.ts +0 -28
- package/src/workflow-policy.ts +0 -1670
- package/src/workflow-recovery-policy.ts +0 -97
- package/src/workflow-scheduling.ts +0 -105
- package/src/workflow-state-machine.ts +0 -4341
- package/src/workflow-status.ts +0 -576
- package/src/workspace-io-entry.mjs +0 -76
- package/src/workspace-io-worker.mjs +0 -1312
- package/src/workspace-io.ts +0 -89
- package/src/workspace-store.ts +0 -634
package/prompts/abel-design.md
DELETED
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: abel-design
|
|
3
|
-
description: Produce a validated, approved, directly executable OpenSpec delivery without implementing product code
|
|
4
|
-
category: abel
|
|
5
|
-
tags: [abel, design, openspec, PBT, evidence]
|
|
6
|
-
argument-hint: "<requirement> | --change <change_name>"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
This procedure applies only when the user explicitly invokes `/abel-design`.
|
|
10
|
-
Reading this file, mentioning the command, or finding OpenSpec artifacts does not activate it.
|
|
11
|
-
Read the complete value inside `<abel-request>` without tokenizing it a second time.
|
|
12
|
-
|
|
13
|
-
<abel-request>
|
|
14
|
-
$ARGUMENTS
|
|
15
|
-
</abel-request>
|
|
16
|
-
|
|
17
|
-
<!-- ABEL:PROMPT:abel-design -->
|
|
18
|
-
|
|
19
|
-
Before following this procedure, check that `abel_dispatch` is actually callable in this model request.
|
|
20
|
-
If it is missing, stop and report `Cadence configuration error: abel-stage-tools-unavailable`.
|
|
21
|
-
Do not substitute bash, subagent, or terminal tools, and do not claim the stage started.
|
|
22
|
-
Ask the operator to enable the Cadence extension together with its package prompts, inspect extension-load errors and tool filters, then resubmit the original slash command while the session is idle.
|
|
23
|
-
A prompt marker or historical active/inactive message is not evidence that the tool is available.
|
|
24
|
-
|
|
25
|
-
This stage is scoped to the invoked task.
|
|
26
|
-
Direct answers and same-task continuations stay in this stage.
|
|
27
|
-
If the user ends the workflow or requests an unrelated task, first send `{"action":"finish"}` to `abel_dispatch`, then handle the new task normally with the restored tools.
|
|
28
|
-
Exit preserves resumable work and never means completion or discard.
|
|
29
|
-
Never start another stage automatically.
|
|
30
|
-
<!-- ABEL:START -->
|
|
31
|
-
|
|
32
|
-
# Design outcome
|
|
33
|
-
|
|
34
|
-
Design resolves product and technical decisions, collects cited evidence, and compiles one trusted delivery.
|
|
35
|
-
It never launches an implementation Worker, creates a product-code candidate, applies a product diff, runs Red/Green/Refactor, or mutates the main workspace.
|
|
36
|
-
|
|
37
|
-
If no requirement can be identified or several changes cannot be distinguished, ask one focused question about the target.
|
|
38
|
-
Otherwise make Design `start` the first control call, before repository discovery.
|
|
39
|
-
It creates only private resumable identity and does not approve scope.
|
|
40
|
-
Then resolve discoverable unknowns from repository evidence and choose reversible defaults within existing authority; only unresolved substantive choices require a user decision.
|
|
41
|
-
An explicit `--change <name>` resumes only that existing change; never reinterpret a misspelling as a new requirement.
|
|
42
|
-
|
|
43
|
-
## Durable Design identity
|
|
44
|
-
|
|
45
|
-
Use the same `action: "design"` envelope from the first call through finalization.
|
|
46
|
-
Call `start` once with either the complete new requirement or an explicit existing change name, then use the returned `runId` for every later Design operation.
|
|
47
|
-
For a new requirement, the control plane normalizes and hashes the transient text itself; the raw requirement is not written to the durable journal.
|
|
48
|
-
After Gate A fixes its name, bind that same provisional run with `bind-change` rather than starting a second run.
|
|
49
|
-
Use `status` by `runId` to recover local lifecycle and Design facts without a model or endpoint request.
|
|
50
|
-
A completed Design run is immutable; an explicit later `--change <change>` starts the next durable Design revision for that change while preserving prior approval facts for receipt verification.
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{"action":"design","request":{"operation":"start","requirement":"<complete-requirement>","operationId":"<unique-operation>"}}
|
|
54
|
-
{"action":"design","request":{"operation":"start","change":"<existing-change>","operationId":"<unique-operation>"}}
|
|
55
|
-
{"action":"design","request":{"operation":"status","runId":"<run-id>"}}
|
|
56
|
-
{"action":"design","request":{"operation":"bind-change","runId":"<run-id>","operationId":"<unique-operation>","change":"<gate-a-approved-change>"}}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Focused evidence collection
|
|
60
|
-
|
|
61
|
-
For a local change with known paths, read applicable repository instructions, the package manifest, the affected implementation and existing tests in the same assistant turn when independent.
|
|
62
|
-
Expand to callers, fixtures or architecture only for a concrete unresolved impact or verification question.
|
|
63
|
-
Once observable behavior, authorized scope, existing-test impact and an executable verification command are established, proceed to the accepted contract and draft.
|
|
64
|
-
Do not continue broad directory traversal or read Cadence implementation sources to reconstruct its protocol; use the current tool schema, its installed example paths and returned field diagnostics.
|
|
65
|
-
The `start` / `status` response includes a current-step hint; it is guidance, not new approval authority.
|
|
66
|
-
Evidence packets are optional: use them only for independent evidence gaps that justify another model call.
|
|
67
|
-
|
|
68
|
-
## Write boundary
|
|
69
|
-
|
|
70
|
-
- During verified Design, the parent tool set is mechanically limited to the previously active `read`, `grep`, `find`, and `ls` tools plus `abel_dispatch`.
|
|
71
|
-
Shell, edit, write, and unknown tools are unavailable until Design exits; never try to recover them or write through another tool.
|
|
72
|
-
- Before explicit Gate A approval, all repository work is read-only.
|
|
73
|
-
A provisional Design run may exist only in the repository-external private run store.
|
|
74
|
-
- After Gate A, mutate only the canonical `openspec/changes/<change>/` root through the private `write-artifact` or `delete-artifact` Design operations.
|
|
75
|
-
Use a path relative to the active change root; it may be only `.openspec.yaml`, `proposal.md`, `design.md`, `tasks.md`, `plan-draft.json`, or `specs/<safe-segments>/spec.md`.
|
|
76
|
-
Content is exact bounded UTF-8 text; send it directly, never as Base64.
|
|
77
|
-
- Code-owned `gate-a.yaml` and `ready.yaml` receipts are forbidden targets.
|
|
78
|
-
Code-owned `implement-plan.json` is also unreachable through artifact mutation; only `compile-plan` may install it.
|
|
79
|
-
- Every repository `AGENTS.md` remains read-only throughout Design.
|
|
80
|
-
Audit it and seal any needed `none | update-existing | create-index | remove-index` operation into the implementation plan; never edit the index here.
|
|
81
|
-
- Never edit OpenSpec schemas, `openspec/config.yaml`, generated OpenSpec skills/commands, product code, tests, package manifests, or repository state outside the change root.
|
|
82
|
-
|
|
83
|
-
Write one artifact per operation and use a unique operation id.
|
|
84
|
-
Delete only an obsolete allowed artifact; no directory is ever removed.
|
|
85
|
-
Identical replay is idempotent and conflicting reuse of an operation id fails closed.
|
|
86
|
-
|
|
87
|
-
```json
|
|
88
|
-
{"action":"design","request":{"operation":"write-artifact","runId":"<run-id>","operationId":"<unique-operation>","path":"proposal.md","content":"<exact-utf8-content>"}}
|
|
89
|
-
{"action":"design","request":{"operation":"delete-artifact","runId":"<run-id>","operationId":"<unique-operation>","path":"specs/<capability>/spec.md"}}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Read-only evidence packets
|
|
93
|
-
|
|
94
|
-
Use `abel_dispatch` with `action: "run"` only for bounded Design evidence.
|
|
95
|
-
Each packet is one tool call, has `stage: "abel-design"`, role `design-explorer`, phase `evidence`, an exact read scope, an empty write set, and output `evidence`.
|
|
96
|
-
It must include the exact `runId` returned by Design `start`.
|
|
97
|
-
Never send an implementation phase to a Design packet.
|
|
98
|
-
|
|
99
|
-
```json
|
|
100
|
-
{
|
|
101
|
-
"action":"run",
|
|
102
|
-
"request":{
|
|
103
|
-
"stage":"abel-design",
|
|
104
|
-
"role":"design-explorer",
|
|
105
|
-
"runId":"<durable-design-run-id>",
|
|
106
|
-
"id":"<unique-packet-id>",
|
|
107
|
-
"phase":"evidence",
|
|
108
|
-
"objective":"<bounded evidence question>",
|
|
109
|
-
"roots":["."],
|
|
110
|
-
"context":{"agents":"<applicable index context>","contract":"<exact read-only contract>"},
|
|
111
|
-
"declared":{"read":["<safe relative path>"],"write":[],"conflicts":[],"resources":[]},
|
|
112
|
-
"output":"evidence"
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
When two or more independent packets are needed, issue all sibling calls in the same assistant turn.
|
|
118
|
-
Do not wrap them in a `requests` array.
|
|
119
|
-
The control plane validates the run before launch and records only a bounded normalized evidence fact after structural acceptance.
|
|
120
|
-
An identical packet/result replay is idempotent; a conflicting result for one packet id fails closed.
|
|
121
|
-
Validate packet id, scope, citations, and structure before synthesis; uncited, conflicting, or out-of-scope claims require a bounded follow-up or a minimal parent check.
|
|
122
|
-
|
|
123
|
-
Evidence packets may read code and tests but may not execute validation.
|
|
124
|
-
Design may inspect manifests and verification capability statically; it must not run product tests as a substitute for Implement evidence.
|
|
125
|
-
|
|
126
|
-
## Decision ledger and Gate A
|
|
127
|
-
|
|
128
|
-
Maintain the conversational decision presentation with id, `behavior | technical`, question, cited evidence, alternatives, recommendation, user decision, status, and affected artifacts.
|
|
129
|
-
After the user resolves a substantive decision, send its concise canonical contract text and artifact references through the private control operation.
|
|
130
|
-
The control plane normalizes and hashes that transient text and persists only the hash, identity, category, and refs:
|
|
131
|
-
|
|
132
|
-
```json
|
|
133
|
-
{"action":"design","request":{"operation":"record-decision","runId":"<run-id>","operationId":"<unique-operation>","decisionId":"<stable-id>","category":"behavior","contract":"<canonical-decision-contract>","refs":["<artifact-anchor>"]}}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Do not put prompts, transcripts, hidden reasoning, credentials, environment values, or raw model output in this request; `contract` is only the concise decision being bound.
|
|
137
|
-
|
|
138
|
-
Ask the user only for substantive choices: observable behavior, scope/non-goals, data/security/privacy/compatibility/migration policy, new dependencies, architecture/policy, irreversible changes, and technical choices with real trade-offs.
|
|
139
|
-
Resolve reversible details mechanically from one established repository convention and do not ask them repeatedly.
|
|
140
|
-
|
|
141
|
-
Aim for one consolidated user decision round for a clear requirement.
|
|
142
|
-
Investigate repository evidence before asking about implementation details.
|
|
143
|
-
Present the observable contract, any substantive technical trade-offs, and your recommended defaults together; include authorization to mechanically compile and seal the plan within those choices.
|
|
144
|
-
An explicit acceptance of that complete proposal covers both its behavior and the presented technical choices.
|
|
145
|
-
Do not ask a second time merely because the compiler has now produced the exact task DAG or receipt.
|
|
146
|
-
Ask a further focused question only when new evidence changes a substantive choice that was not covered by the accepted proposal.
|
|
147
|
-
Explain that difference, retain all other decisions, and group related unresolved choices into the same question.
|
|
148
|
-
Existing instructions and accepted same-task decisions are authorization evidence; do not require the user to restate them.
|
|
149
|
-
Design settles the goal, main decisions, explicit constraints, and non-goals.
|
|
150
|
-
Make the implementation delegation clear in the accepted proposal: the parent will choose its recommended solution for later implementation choices within those constraints, record material decisions, and continue to verified results without another selection or confirmation round.
|
|
151
|
-
Do not ask the user to approve this delegation separately or attempt to enumerate every future implementation detail.
|
|
152
|
-
|
|
153
|
-
Design owns the user decision boundary for this change.
|
|
154
|
-
Discuss the outcome and real constraints here, including likely repair scope, dependency choices, environment prerequisites that require the operator, and any irreversible operation.
|
|
155
|
-
Treat the task DAG as the initial execution strategy: the parent may revise its technical decomposition, supply context, repair failures, and recompile within the accepted contract during Implement.
|
|
156
|
-
Do not make incidental file lists or a guessed decomposition into product constraints.
|
|
157
|
-
Choose `policy.writeRoots` to cover the affected modules, their regression tests, and necessary integration repairs justified by repository evidence; keep initial phase writes precise.
|
|
158
|
-
An explicit user authorization for repository-wide work may be represented by `"."`; never infer it from convenience, and still name any authorized AGENTS target exactly.
|
|
159
|
-
Set dependency and verification-mode policy from the accepted choices, so known requirements do not become authorization requests during execution.
|
|
160
|
-
|
|
161
|
-
## Structured authority for new work
|
|
162
|
-
|
|
163
|
-
Use a structured `ChangeContract` as the Gate A `contract` for new designs: `goal`, `acceptance` (stable `id`, accepted `statement`, complete structured `verification`), `constraints` (stable `id` and `statement`), and `policy` (`writeRoots`, allowed dependency names in `dependencies`, and `verificationModes`).
|
|
164
|
-
Use `behavior` by default; explicitly permit `mechanical` or `refactor` only for suitable work.
|
|
165
|
-
Present the accepted goal, constraints and scope together with the recommended choices.
|
|
166
|
-
Do not include secrets or raw conversation in the contract.
|
|
167
|
-
|
|
168
|
-
Code normalizes and hashes the object.
|
|
169
|
-
The journal retains the normalized authority and injects it into compiled plans; callers do not compute hashes.
|
|
170
|
-
Keep acceptance IDs and statements stable when reshaping a plan.
|
|
171
|
-
Compilation rejects missing acceptance verification, outside-policy writes/dependencies, or substituted authority.
|
|
172
|
-
Historical prose approvals remain readable; their existence does not authorize new scope.
|
|
173
|
-
|
|
174
|
-
Gate A approves the complete WHAT: goal, observable scenarios, failures, scope/non-goals, compatibility/migration/security policy, and success criteria.
|
|
175
|
-
Before approval, present the unresolved behavior decisions together.
|
|
176
|
-
After explicit approval:
|
|
177
|
-
|
|
178
|
-
1. resolve the final kebab-case change name and schema;
|
|
179
|
-
2. approve the complete WHAT contract through the transient-text operation below;
|
|
180
|
-
3. bind the final change name to the same run with `bind-change`, creating the change root only through later artifact writes;
|
|
181
|
-
4. materialize schema-ready behavior artifacts one at a time.
|
|
182
|
-
|
|
183
|
-
```json
|
|
184
|
-
{"action":"design","request":{"operation":"approve-gate","runId":"<run-id>","operationId":"<unique-operation>","gate":"gate-a","contract":{"goal":"<accepted goal>","acceptance":[{"id":"<acceptance-id>","statement":"<accepted behavior>","verification":{"kind":"static-check","id":"<acceptance-verifier-id>","runner":{"kind":"node","script":"<observed-test-path>"},"args":[],"classification":"expected-green"}}],"constraints":[],"policy":{"writeRoots":["<approved-source-path>","<approved-test-path>"],"dependencies":[],"verificationModes":["behavior"]}}}}
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
The control plane generates the canonical behavior-contract hash; the returned proof contains its approval revision, contract hash, and owner-private record hash.
|
|
188
|
-
`gate-a.yaml` is installed later by code-owned finalization, not hand-authored here.
|
|
189
|
-
|
|
190
|
-
Gate A is not tool permission and carries no session/model/timestamp identity.
|
|
191
|
-
A later behavior decision invalidates both Gates; a later technical decision or changed plan compilation invalidates Gate B only.
|
|
192
|
-
Compiling identical canonical bytes after unchanged decisions preserves the existing plan revision and both Gates, even with a new operation id.
|
|
193
|
-
|
|
194
|
-
## Technical contract and ImplementPlan
|
|
195
|
-
|
|
196
|
-
Derive HOW from Gate A plus repository evidence.
|
|
197
|
-
Ask only unresolved substantive technical decisions, then build a complete task DAG with stable Requirement → Scenario → Verification → Task references.
|
|
198
|
-
|
|
199
|
-
For one local task with no new dependencies, deletes, outputs or scheduling conflicts, prefer the package's [quick single-task author example](../config/plan-draft.quick.example.json).
|
|
200
|
-
Write it to the same `plan-draft.json` artifact.
|
|
201
|
-
Its `singleTask` is expanded mechanically by the existing compiler; do not also supply `tasks` or duplicate verification bookkeeping.
|
|
202
|
-
Keep the observed full suite, impact evidence, AGENTS impact, phase writes and Red witness explicit.
|
|
203
|
-
Recovery defaults are two artifact corrections and one repair; override `recovery` only for an intentional resource choice.
|
|
204
|
-
Use the full draft for work outside those limits.
|
|
205
|
-
This shortcut does not infer acceptance evidence or change Gate approval.
|
|
206
|
-
|
|
207
|
-
Start from the package's [single-task PlanDraft example](../config/plan-draft.example.json), resolved relative to this prompt's installed path.
|
|
208
|
-
It describes a small Node consumer with `package.json`, `src/add.mjs` exporting `add`, and one existing `test/add.test.mjs` that uses Node assertions and currently covers `add(0, 0) === 0`.
|
|
209
|
-
The Red phase preserves that assertion and adds `add(2, 3) === 5` with the failure marker `[ADD:positive-integers]`; Green repairs the function.
|
|
210
|
-
The example's nested `changeContract` also shows the structured Gate A shape.
|
|
211
|
-
Replace its goal, acceptance, paths, context, impact evidence, and verification commands with observed repository facts before approval; its sample evidence is not evidence about the current project.
|
|
212
|
-
Use the project's actual full suite when adapting this single-test example.
|
|
213
|
-
The control plane inherits the approved `changeContract`, so the draft may omit that duplicate object.
|
|
214
|
-
Keep author input separate from the complete sealed execution plan; execution never reads author shorthand.
|
|
215
|
-
Reuse an atomic command through `verificationDefinitions` and `{ "use": "name" }`; place `expectedFailure` on its Red use.
|
|
216
|
-
Definitions contain an existing atomic verifier's command fields, without identity, classification, bindings, nested references, or arbitrary use-site overrides.
|
|
217
|
-
Inline atomic contracts may also omit `id` and `classification`; the compiler derives stable purpose identities and phase classifications.
|
|
218
|
-
In PlanDraft, omit a package-script `command` (including in a named definition or package-script runner) to bind the literal package.json script value before identity generation.
|
|
219
|
-
An explicit `command` must be that exact manifest value, never a launcher such as `npm run test`.
|
|
220
|
-
Gate A acceptance verifiers remain complete explicit contracts; use the observed literal script value there.
|
|
221
|
-
Explicit task `read` supplies common reads to its phases, unioned with any phase-local `read`; writes, deletes, roots, dependencies, and output producers remain explicit.
|
|
222
|
-
The compiler also supplies fixed baseline/repair boundary fields and `agents.managedOnly`; retain recovery attempt limits and observed AGENTS impact.
|
|
223
|
-
It supplies an empty AGENTS checkpoint only when every explicitly declared impact is `none`.
|
|
224
|
-
The [dependent-task example](../config/plan-draft.multiple-tasks.example.json) shows a Red-produced test consumed by another task's ordered verification, with an explicit dependency and producer.
|
|
225
|
-
Ordered `steps` remain complete inline contracts; reuse means separate verification executions, never reuse of a prior successful report.
|
|
226
|
-
Omit `tracking` to generate parent-owned `tasks.md` metadata from the task ids; an explicitly supplied block must match those ids and the fixed tracking policy.
|
|
227
|
-
In the author portion of `tasks.md`, write one checkbox with each backticked task ID, its objective and its owned backticked `specs/<capability>/spec.md#Requirement title/Scenario title` references.
|
|
228
|
-
Every Scenario must have exactly one reference.
|
|
229
|
-
Do not copy generated phase verifier IDs into this text.
|
|
230
|
-
Compilation installs their code-owned `ABEL:VERIFICATION-BINDINGS` region while preserving the author text.
|
|
231
|
-
Editing tasks afterward requires recompilation before finalization.
|
|
232
|
-
Omit phase `verificationInputs`: the compiler derives the exact paths from each verification contract and binds them to a unique declared output or an existing workspace file.
|
|
233
|
-
Keep supporting sources and fixtures in `read`; input derivation never adds read/write paths, outputs, or dependencies.
|
|
234
|
-
Omit each `relatedTests` entry's `disposition` and `regressionTaskId` to derive ownership from task writes; retain its observed `path` and `evidence`.
|
|
235
|
-
An ambiguous producer or test owner requires an explicit correction; explicitly supplied fields are checked, never silently replaced.
|
|
236
|
-
Scope, verification choices, recovery limits, and necessary AGENTS operations remain explicit.
|
|
237
|
-
|
|
238
|
-
Mechanical tasks may write document/data/config files (`.md`, `.txt`, `.json`, `.yaml`, `.yml`, `.toml`, `.lock`).
|
|
239
|
-
Refactor tasks preserve accepted verifier inputs.
|
|
240
|
-
Both must declare no public behavior change and require an explicitly allowed mode in Gate A. Specify task `verificationMode` and Green (plus optional Refactor); omit Red in the draft.
|
|
241
|
-
The compiler handles its internal compatibility representation.
|
|
242
|
-
Runtime captures baseline and executes Green with affected, cumulative and post-apply verification, without generating a Red candidate.
|
|
243
|
-
Behavior tasks continue to require Red/Green.
|
|
244
|
-
|
|
245
|
-
An AGENTS checkpoint additionally requires its exact target path in `policy.writeRoots`; a broad source root does not grant AGENTS authority.
|
|
246
|
-
|
|
247
|
-
Each task must seal:
|
|
248
|
-
|
|
249
|
-
- stable id, objective, exact dependencies and edge reasons;
|
|
250
|
-
- exact phase-local read/write/delete paths and output producers;
|
|
251
|
-
- Red, Green, optional Refactor structured verification and exact verification inputs;
|
|
252
|
-
- an original-revision `baselineVerification`, task-affected and repair verification contracts;
|
|
253
|
-
- conflicts, resources, verification locks, dependency changes, impact closure, and existing-test evidence;
|
|
254
|
-
- AGENTS impact/target and managed-only ownership;
|
|
255
|
-
- precise context sufficient for a fresh Worker without a conversation transcript.
|
|
256
|
-
|
|
257
|
-
Seal the supporting repository files needed by the whole task, including callers, types, fixtures, and conventions; Workers may read the union of that task's approved phase paths.
|
|
258
|
-
Writes and deletes remain phase-local.
|
|
259
|
-
This task-wide read authority is part of the proposal, not an ad hoc escalation during Implement.
|
|
260
|
-
Keep tasks small enough for one complete patch using compact exact replacements, and separate independent outputs during planning.
|
|
261
|
-
Give each dependency its reason in task context: a consumed producer output, an unresolved shared interface, or a concrete resource constraint.
|
|
262
|
-
Use `summary.parallelism.initiallyRunnableGroup` to inspect the bounded, conflict-free initial group, assuming shared slots are available.
|
|
263
|
-
The labelled static pairs describe eventual compatibility; inspect producer waits, all serialization causes, and global verification barriers before claiming concurrency.
|
|
264
|
-
Runtime capacity and capabilities still require Implement admission.
|
|
265
|
-
Keep reads precise so unrelated module tasks can run concurrently; shared interface or manifest changes need one explicit owner and dependent consumers.
|
|
266
|
-
|
|
267
|
-
For work spanning independent modules, plan independent tasks that can fill the four shared Worker slots, followed by dependent integration where necessary.
|
|
268
|
-
Do not chain tasks merely to prescribe an order or put every task behind the same resource label.
|
|
269
|
-
Do not split a small task solely to increase Worker count.
|
|
270
|
-
Use `summary.implementation` to inspect the accepted amendment policy and stable acceptance/constraint IDs alongside the initial phase permissions.
|
|
271
|
-
Its `review-only` authority and `runtimePrerequisites: "not-assessed"` are explicit: it neither grants broader scope nor certifies a working environment.
|
|
272
|
-
Before finalizing, resolve known missing runners, supported execution profile, required services, and credentials with the user in Design when repository evidence cannot resolve them.
|
|
273
|
-
Record the observed prerequisites and recovery approach in `design.md`; retain the existing prohibition on executing product tests during Design.
|
|
274
|
-
Do not describe a known unavailable prerequisite as ready for unattended execution.
|
|
275
|
-
|
|
276
|
-
Task `baselineVerification` may be omitted only when every affected input is a safe regular file in the original snapshot; the compiler then projects that exact affected contract.
|
|
277
|
-
For a new Red test, declare its output and keep it in the phase, affected, repair, cumulative and post-apply contracts.
|
|
278
|
-
Bind the original baseline to executable existing regression coverage or an existing full suite, without creating that future test in the baseline or dropping acceptance.
|
|
279
|
-
An existing file which is also a future modification output remains readable at its original bytes for baseline verification.
|
|
280
|
-
|
|
281
|
-
Impact closure must name affected existing tests and fixtures; a suite made only from newly added tests is insufficient.
|
|
282
|
-
In `impactClosure.relatedTests`, `current-task` means this task edits that test: its path must appear in a phase's `write` set.
|
|
283
|
-
Use `regression-task` with `regressionTaskId` when another planned task owns the edit; use `unaffected` with evidence when an existing test is preserved without edits, even if it remains in `affectedSuite`.
|
|
284
|
-
Do not expand write sets merely to satisfy a disposition label.
|
|
285
|
-
For public UI or API work, seal the relevant route authorization, page state, API response and contract, public HTML/template/theme behavior, and an approved browser E2E check when those surfaces are affected.
|
|
286
|
-
|
|
287
|
-
The plan admits only shell-free `vitest`, `package-script`, `static-check`, or ordered `steps` contracts.
|
|
288
|
-
Pin local runners, package scripts, arguments, `minTests`, and `noInstall` behavior; sealed classifications are derived from phase/purpose when omitted.
|
|
289
|
-
Reject shell operators, implicit downloads, absolute/escaping paths, missing local capability, and unsupported verification shapes during Design readiness.
|
|
290
|
-
|
|
291
|
-
After current Gate A approval, send the author draft through `write-artifact` only to the relative path `plan-draft.json`.
|
|
292
|
-
Before mutation-owning compilation, use the read-only typed preflight; it validates the same fixed draft and returns task/output counts plus hashes without installing canonical files or journaling a plan revision:
|
|
293
|
-
|
|
294
|
-
```json
|
|
295
|
-
{"action":"design","request":{"operation":"validate-plan-draft","runId":"<run-id>"}}
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
If preflight fails, correct the returned diagnostic batch using `field`, `path`, `expectedPaths`, `actualPaths`, and code-owned `hint` where available.
|
|
299
|
-
Path lists marked `pathsTruncated` are partial; inspect only the identified boundary when more detail is needed.
|
|
300
|
-
Do not bisect the draft blindly or repeat an unchanged validation/finalization request.
|
|
301
|
-
After preflight succeeds, invoke code-owned compilation:
|
|
302
|
-
|
|
303
|
-
```json
|
|
304
|
-
{"action":"design","request":{"operation":"compile-plan","runId":"<run-id>","operationId":"<unique-operation>"}}
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
The compiler reads only that fixed safe path, validates capability and graph closure again, installs the generated verification bindings into the existing `tasks.md` and canonical `implement-plan.json` under the same compilation lease, and records the plan only after both writes succeed.
|
|
308
|
-
It returns the plan’s raw and canonical hashes.
|
|
309
|
-
Do not hand-assemble canonical plan bytes, hashes, generated task Markdown, or receipts.
|
|
310
|
-
The canonical `ImplementPlan` contains:
|
|
311
|
-
|
|
312
|
-
- tasks and regular-file outputs;
|
|
313
|
-
- target-contract identities, task original-baseline contracts, full-suite baseline and normalized failure identity policy;
|
|
314
|
-
- change-level affected, full-suite, and post-apply verification;
|
|
315
|
-
- an explicit `artifactCorrection.maxAttempts` of 2-3 attempts for a verification obligation and phase, including the initial attempt; operation ids, rollback lineage, route changes, task renaming, and rewording do not replenish it;
|
|
316
|
-
- bounded in-boundary repair policy and attribution classes `pre-existing | introduced | unresolved | environment`;
|
|
317
|
-
- parent-owned `tasks.md` tracking;
|
|
318
|
-
- when required, one sealed managed-block AGENTS operation per approved target, including impact, owning task ids, complete marker-bounded content, and verification.
|
|
319
|
-
|
|
320
|
-
Use the code-owned readiness proof to require an executable static closure with no diagnostics.
|
|
321
|
-
A write set grants authority but never proves that an output exists.
|
|
322
|
-
Every absent future input must be a unique declared output available at its consumer's phase: the same task's current/prior phase, or a completed transitive dependency.
|
|
323
|
-
Affected/repair consume final task outputs; cumulative and post-apply consume outputs at their global barriers.
|
|
324
|
-
A deletion must have a causally later rewrite before consumption.
|
|
325
|
-
Original baseline contracts cannot consume future outputs.
|
|
326
|
-
|
|
327
|
-
## Gate B and trusted delivery
|
|
328
|
-
|
|
329
|
-
Gate B is a code-owned plan certificate, not a second user decision round.
|
|
330
|
-
The accepted proposal covers behavior, substantive technical choices, and authority to compile their realization.
|
|
331
|
-
Ask about any newly discovered substantive choice before recording that changed decision; preserve all existing decisions by id instead of restating their contract text.
|
|
332
|
-
`compile-plan` atomically records the validated plan and its Gate B proof after the current Gate A and substantive decisions.
|
|
333
|
-
Do not request a separate Gate B confirmation or an extra approve-gate call after successful compilation.
|
|
334
|
-
Finalization still validates strict OpenSpec artifacts, traceability, graph closure, and the current private proofs.
|
|
335
|
-
|
|
336
|
-
Request finalization:
|
|
337
|
-
|
|
338
|
-
```json
|
|
339
|
-
{"action":"design","request":{"operation":"finalize-delivery","runId":"<run-id>","operationId":"<unique-operation>"}}
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
Finalization revalidates both current private Gate proofs, the stored plan, strict/planning-complete OpenSpec state, artifact coverage, exact traceability, and executable verification closure.
|
|
343
|
-
It atomically installs canonical `gate-a.yaml`, writes `ready.yaml` last, rereads the installed delivery, removes `plan-draft.json`, marks the Design run completed, and returns `deliveryRevision` plus `receiptHash`.
|
|
344
|
-
Any failure leaves Design nonterminal and installs no new `ready.yaml`.
|
|
345
|
-
|
|
346
|
-
Finalization serializes artifact mutation through an expiring ownership lease; never bypass a lease conflict or manually repair code-owned receipt bytes.
|
|
347
|
-
|
|
348
|
-
The canonical receipts bind the Gate A and Gate B approval revisions, canonical contract hashes, and owner-private record hashes.
|
|
349
|
-
`ready.yaml` references the plan path, raw-byte hash, canonical plan hash, executable verification closure, Gate A hash, artifact hashes, and traceability hash.
|
|
350
|
-
It does not embed caller-owned runtime task state, completed/blocked arrays, snapshots, launch identities, or retry budgets.
|
|
351
|
-
|
|
352
|
-
Only the sealed task checkboxes may be normalized from `[x]`/`[X]` to `[ ]` when validating the tracked `tasks.md` hash.
|
|
353
|
-
Every other byte remains bound.
|
|
354
|
-
|
|
355
|
-
## Recovery without approval loops
|
|
356
|
-
|
|
357
|
-
On resume, validate current artifacts and receipts first.
|
|
358
|
-
Use Design `status` to recover bounded accepted-evidence identities/hashes, latest decision revisions, Gate currentness, and compiled-plan identity without relying on a prior child session.
|
|
359
|
-
A new revision of a completed change inherits decisions, Gate authority, and the canonical plan from the latest completed owner-private finalization for that same root and change.
|
|
360
|
-
Evidence packets are not inherited as current observations: recheck affected repository facts.
|
|
361
|
-
Technical-only changes keep Gate A; changed behavior invalidates both Gates.
|
|
362
|
-
Preserve decisions whose bound content did not change.
|
|
363
|
-
A mechanical hash, formatting, checkbox, stale path, or traceability repair regenerates only invalidated artifacts and does not reopen a user decision.
|
|
364
|
-
Reopen Gate A only for changed behavior authority; ask about changed substantive technical authority only when it is not already accepted.
|
|
365
|
-
The compiler regenerates Gate B as needed without a separate confirmation.
|
|
366
|
-
Report the exact invalidated decision/artifact instead of restarting the whole Design process.
|
|
367
|
-
|
|
368
|
-
Endpoint/transport failure in an evidence packet pauses that packet and retains other evidence.
|
|
369
|
-
Missing package scripts/runners or a non-executable verification contract must be corrected before Gate B; they must not be deferred as an Implement surprise.
|
|
370
|
-
|
|
371
|
-
Report `READY_TO_IMPLEMENT` only when strict validation passes, user decisions are resolved and both private proofs are current, all artifacts/hashes/traceability resolve, and the canonical plan is executable.
|
|
372
|
-
After successful code-owned finalization, return one brief readiness response with the change and delivery revision.
|
|
373
|
-
Do not reread receipts, survey directories or restate the full decision history after that success; finalization has already reread and validated the delivery.
|
|
374
|
-
Successful finalization deactivates private dispatch before an unrelated later request.
|
|
375
|
-
Gate waits remain active for direct follow-up; if the user explicitly ends an unfinished Design interaction, send `{"action":"finish"}`.
|
|
376
|
-
Otherwise report the current Design state, retained evidence, and the one unresolved decision or artifact that prevents readiness.
|
|
377
|
-
Design `status` exposes only Design `legalOperations`; explicit stage exit is separately exposed as top-level `packetActions: ["finish"]`.
|
|
378
|
-
Never send `operation: "finish"`; exit only with `{"action":"finish"}`.
|
|
379
|
-
|
|
380
|
-
Do not implement product code and do not archive, publish, release, stage, or commit implicitly.
|
|
381
|
-
|
|
382
|
-
<!-- ABEL:END -->
|
package/prompts/abel-diagnose.md
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Diagnose and minimally repair one or more existing bugs
|
|
3
|
-
argument-hint: "<problem-description>"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
This procedure applies only when the user explicitly invokes `/abel-diagnose`.
|
|
7
|
-
Reading this file, mentioning the command, or finding OpenSpec artifacts does not activate it.
|
|
8
|
-
Read the complete value inside `<abel-request>` without tokenizing it a second time.
|
|
9
|
-
|
|
10
|
-
<abel-request>
|
|
11
|
-
$ARGUMENTS
|
|
12
|
-
</abel-request>
|
|
13
|
-
|
|
14
|
-
<!-- ABEL:PROMPT:abel-diagnose -->
|
|
15
|
-
|
|
16
|
-
Before following this procedure, check that `abel_dispatch` is actually callable in this model request.
|
|
17
|
-
If it is missing, stop and report `Cadence configuration error: abel-stage-tools-unavailable`.
|
|
18
|
-
Do not substitute bash, subagent, or terminal tools, and do not claim the stage started.
|
|
19
|
-
Ask the operator to enable the Cadence extension together with its package prompts, inspect extension-load errors and tool filters, then resubmit the original slash command while the session is idle.
|
|
20
|
-
A prompt marker or historical active/inactive message is not evidence that the tool is available.
|
|
21
|
-
|
|
22
|
-
This stage is scoped to the invoked task.
|
|
23
|
-
Direct answers and same-task continuations stay in this stage.
|
|
24
|
-
If the user ends the workflow or requests an unrelated task, first send `{"action":"finish"}` to `abel_dispatch`, then handle the new task normally with the restored tools.
|
|
25
|
-
Exit preserves resumable work and never means completion or discard.
|
|
26
|
-
Never start another stage automatically.
|
|
27
|
-
|
|
28
|
-
The request must uniquely identify one or more existing defects.
|
|
29
|
-
If required input is missing or ambiguous, stop before work and ask one focused question.
|
|
30
|
-
|
|
31
|
-
## Independent Diagnose contract
|
|
32
|
-
|
|
33
|
-
Diagnose is not an Implement recovery route and does not inherit Implement task states, retry budgets, approval codes, delivery revisions, or Gate routing.
|
|
34
|
-
A transport, environment, artifact, or verification failure in Diagnose remains a typed Diagnose pause with retained evidence; it never becomes an instruction to change workflow stage.
|
|
35
|
-
|
|
36
|
-
Use bounded `abel_dispatch` packets with `action: "run"`, `stage: "abel-diagnose"`, and role `diagnosis-worker` only when evidence collection benefits from isolation.
|
|
37
|
-
Each packet covers one defect or one falsification question.
|
|
38
|
-
Do not send an Implement control command from Diagnose.
|
|
39
|
-
|
|
40
|
-
The parent runs reproduction and verification commands and owns any later implementation.
|
|
41
|
-
A diagnosis Worker is read-only and evidence-only: it returns cited evidence and minimum-repair guidance, never proposes or applies a diff, and never claims that it executed a command or observed a passing result.
|
|
42
|
-
|
|
43
|
-
## Evidence-first algorithm
|
|
44
|
-
|
|
45
|
-
For each defect, keep this order:
|
|
46
|
-
|
|
47
|
-
1. Record target, affected-suite, and full-suite baselines.
|
|
48
|
-
Keep unrelated and pre-existing failures separate.
|
|
49
|
-
2. Reproduce the reported symptom with exact inputs and an observable failure identity.
|
|
50
|
-
3. List plausible root causes and actively falsify each one.
|
|
51
|
-
Accept a root cause only when evidence rules out material alternatives.
|
|
52
|
-
4. Add the smallest executable regression verification and run it.
|
|
53
|
-
It must fail for the reproduced defect, not for syntax, setup, environment, or another reason.
|
|
54
|
-
5. Describe the minimum repair within the existing behavior and architecture contract, including its regression verification condition.
|
|
55
|
-
Do not edit files or claim that a repair was applied from Diagnose.
|
|
56
|
-
6. Compare the full suite with baseline and require no introduced failure.
|
|
57
|
-
Classify any AGENTS impact and apply only a verified managed-region update at a stable parent checkpoint.
|
|
58
|
-
Preserve every byte outside `<!-- ABEL:AGENTS-INDEX:START -->` and `<!-- ABEL:AGENTS-INDEX:END -->`; never give a Worker an AGENTS write path or put runtime/session ids, credentials, or approval state in the index.
|
|
59
|
-
|
|
60
|
-
If reproduction is unavailable, root-cause evidence is insufficient, the regression cannot witness the defect, or an external capability is unavailable, return `paused` with the exact safe evidence and a concrete resume condition.
|
|
61
|
-
Do not invent a repair.
|
|
62
|
-
|
|
63
|
-
If the requested result actually requires new observable behavior, a new dependency, wider paths, substantive architecture/policy, or another product decision, return `scope-decision-required` with the evidence and decision that the user must make.
|
|
64
|
-
Do not silently widen Diagnose and do not transform an ordinary repair failure into that result.
|
|
65
|
-
|
|
66
|
-
When an approved browser E2E check cannot run, pause only that check and provide executable remediation; continue independent non-browser evidence when safe.
|
|
67
|
-
|
|
68
|
-
Finish only when reproduction, falsification, failing-regression evidence, minimum-repair guidance, affected verification, and baseline comparison are all evidenced.
|
|
69
|
-
After presenting the final structural diagnosis/repair result, send `{"action":"finish"}` so private dispatch is deactivated.
|
|
70
|
-
A resumable evidence or capability pause remains active for direct follow-up and must not send finish.
|
|
71
|
-
Never archive, publish, or commit implicitly.
|