@voybio/ace-swarm 0.2.4 → 2.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.
Files changed (125) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +20 -13
  3. package/assets/.agents/skills/eval-harness/SKILL.md +14 -0
  4. package/assets/.agents/skills/handoff-lint/SKILL.md +14 -0
  5. package/assets/.agents/skills/incident-commander/SKILL.md +14 -0
  6. package/assets/.agents/skills/memory-curator/SKILL.md +14 -0
  7. package/assets/.agents/skills/release-sentry/SKILL.md +14 -0
  8. package/assets/.agents/skills/risk-quant/SKILL.md +14 -0
  9. package/assets/.agents/skills/schema-forge/SKILL.md +14 -0
  10. package/assets/.agents/skills/state-auditor/SKILL.md +14 -0
  11. package/assets/agent-state/EVIDENCE_LOG.md +1 -1
  12. package/assets/agent-state/MODULES/gates/gate-correctness.json +1 -1
  13. package/assets/agent-state/MODULES/roles/capability-framework.json +41 -0
  14. package/assets/agent-state/MODULES/roles/capability-git.json +33 -0
  15. package/assets/agent-state/MODULES/roles/capability-safety.json +37 -0
  16. package/assets/agent-state/MODULES/schemas/ACE_RUNTIME_PROFILE.schema.json +21 -0
  17. package/assets/agent-state/MODULES/schemas/RUNTIME_EXECUTOR_SESSION_REGISTRY.schema.json +43 -0
  18. package/assets/agent-state/MODULES/schemas/WORKSPACE_SESSION_REGISTRY.schema.json +11 -0
  19. package/assets/agent-state/STATUS.md +2 -2
  20. package/assets/scripts/ace-hook-dispatch.mjs +70 -6
  21. package/assets/scripts/render-mcp-configs.sh +19 -5
  22. package/dist/ace-context.js +22 -1
  23. package/dist/ace-server-instructions.js +3 -3
  24. package/dist/ace-state-resolver.js +5 -3
  25. package/dist/astgrep-index.d.ts +9 -1
  26. package/dist/astgrep-index.js +14 -3
  27. package/dist/cli.js +52 -20
  28. package/dist/handoff-registry.js +5 -5
  29. package/dist/helpers/artifacts.d.ts +19 -0
  30. package/dist/helpers/artifacts.js +152 -0
  31. package/dist/helpers/bootstrap.d.ts +24 -0
  32. package/dist/helpers/bootstrap.js +894 -0
  33. package/dist/helpers/constants.d.ts +53 -0
  34. package/dist/helpers/constants.js +288 -0
  35. package/dist/helpers/drift.d.ts +13 -0
  36. package/dist/helpers/drift.js +45 -0
  37. package/dist/helpers/path-utils.d.ts +17 -0
  38. package/dist/helpers/path-utils.js +104 -0
  39. package/dist/helpers/store-resolution.d.ts +19 -0
  40. package/dist/helpers/store-resolution.js +301 -0
  41. package/dist/helpers/workspace-root.d.ts +3 -0
  42. package/dist/helpers/workspace-root.js +80 -0
  43. package/dist/helpers.d.ts +8 -123
  44. package/dist/helpers.js +8 -1747
  45. package/dist/job-scheduler.js +3 -3
  46. package/dist/local-model-runtime.js +12 -1
  47. package/dist/model-bridge.d.ts +7 -0
  48. package/dist/model-bridge.js +75 -5
  49. package/dist/orchestrator-supervisor.d.ts +14 -0
  50. package/dist/orchestrator-supervisor.js +72 -1
  51. package/dist/run-ledger.js +3 -3
  52. package/dist/runtime-command.d.ts +8 -0
  53. package/dist/runtime-command.js +38 -6
  54. package/dist/runtime-executor.d.ts +14 -0
  55. package/dist/runtime-executor.js +669 -171
  56. package/dist/runtime-profile.d.ts +32 -0
  57. package/dist/runtime-profile.js +89 -13
  58. package/dist/runtime-tool-specs.d.ts +21 -0
  59. package/dist/runtime-tool-specs.js +78 -3
  60. package/dist/safe-edit.d.ts +7 -0
  61. package/dist/safe-edit.js +163 -37
  62. package/dist/schemas.js +19 -0
  63. package/dist/shared.d.ts +2 -2
  64. package/dist/status-events.js +9 -6
  65. package/dist/store/ace-packed-store.d.ts +3 -2
  66. package/dist/store/ace-packed-store.js +188 -110
  67. package/dist/store/bootstrap-store.d.ts +1 -1
  68. package/dist/store/bootstrap-store.js +94 -81
  69. package/dist/store/cache-workspace.d.ts +22 -0
  70. package/dist/store/cache-workspace.js +149 -0
  71. package/dist/store/materializers/context-snapshot-materializer.js +6 -7
  72. package/dist/store/materializers/hook-context-materializer.d.ts +6 -9
  73. package/dist/store/materializers/hook-context-materializer.js +11 -21
  74. package/dist/store/materializers/host-file-materializer.js +6 -0
  75. package/dist/store/materializers/projection-manager.d.ts +0 -1
  76. package/dist/store/materializers/projection-manager.js +5 -13
  77. package/dist/store/materializers/scheduler-projection-materializer.js +1 -1
  78. package/dist/store/materializers/vericify-projector.d.ts +7 -7
  79. package/dist/store/materializers/vericify-projector.js +11 -11
  80. package/dist/store/repositories/local-model-runtime-repository.d.ts +120 -3
  81. package/dist/store/repositories/local-model-runtime-repository.js +242 -6
  82. package/dist/store/skills-install.d.ts +4 -0
  83. package/dist/store/skills-install.js +21 -12
  84. package/dist/store/state-reader.d.ts +2 -0
  85. package/dist/store/state-reader.js +20 -0
  86. package/dist/store/store-artifacts.d.ts +7 -0
  87. package/dist/store/store-artifacts.js +27 -1
  88. package/dist/store/store-authority-audit.d.ts +18 -1
  89. package/dist/store/store-authority-audit.js +115 -5
  90. package/dist/store/store-snapshot.d.ts +3 -0
  91. package/dist/store/store-snapshot.js +22 -2
  92. package/dist/store/workspace-store-paths.d.ts +39 -0
  93. package/dist/store/workspace-store-paths.js +94 -0
  94. package/dist/store/write-coordinator.d.ts +65 -0
  95. package/dist/store/write-coordinator.js +386 -0
  96. package/dist/todo-state.js +5 -5
  97. package/dist/tools-agent.js +319 -34
  98. package/dist/tools-discovery.js +1 -1
  99. package/dist/tools-files.d.ts +7 -0
  100. package/dist/tools-files.js +299 -10
  101. package/dist/tools-framework.js +107 -27
  102. package/dist/tools-handoff.js +2 -2
  103. package/dist/tools-lifecycle.js +4 -4
  104. package/dist/tools-memory.js +6 -6
  105. package/dist/tools-todo.js +2 -2
  106. package/dist/tracker-adapters.d.ts +1 -1
  107. package/dist/tracker-adapters.js +13 -18
  108. package/dist/tracker-sync.js +5 -3
  109. package/dist/tui/agent-runner.js +3 -1
  110. package/dist/tui/chat.js +103 -7
  111. package/dist/tui/dashboard.d.ts +1 -0
  112. package/dist/tui/dashboard.js +43 -0
  113. package/dist/tui/layout.d.ts +20 -0
  114. package/dist/tui/layout.js +31 -1
  115. package/dist/tui/local-model-contract.d.ts +6 -2
  116. package/dist/tui/local-model-contract.js +16 -3
  117. package/dist/vericify-bridge.d.ts +5 -0
  118. package/dist/vericify-bridge.js +27 -3
  119. package/dist/workspace-manager.d.ts +30 -3
  120. package/dist/workspace-manager.js +257 -27
  121. package/package.json +1 -2
  122. package/dist/internal-tool-runtime.d.ts +0 -21
  123. package/dist/internal-tool-runtime.js +0 -136
  124. package/dist/store/workspace-snapshot.d.ts +0 -26
  125. package/dist/store/workspace-snapshot.js +0 -107
package/CHANGELOG.md CHANGED
@@ -35,9 +35,19 @@
35
35
  - Expanded hook dispatch context to emit role-aware ACE tool hints from session, subagent, and tool lifecycle events.
36
36
  - Updated bootstrap and config rendering to generate multi-host hook artifacts under `.vscode`, `.cursor`, and `.mcp-config`.
37
37
 
38
+ **Store-Unity Migration:**
39
+ - Added `src/store/workspace-store-paths.ts` as the canonical resolver for the canonical/legacy ACE store transition. Every command that opens ACEPACK now uses this shared module; no command assembles `.agents/ACE/ace-state.ace` by hand.
40
+ - `agent-state/ace-state.ace` is the canonical store for new and adopted workspaces. `.agents/ACE/ace-state.ace` is retained as a supported legacy input and fallback — not a second active write target.
41
+ - Added `ensureCanonicalWorkspaceStore()`: legacy-only workspaces are atomically adopted into the canonical path on the first mutating operation (bootstrap, install, repair, compact, preconfig). The legacy file is preserved as a fallback after adoption.
42
+ - Dual-store conflicts (both files exist with different content) surface an explicit warning and halt mutating commands rather than silently merging or overwriting.
43
+ - Added `resolveWorkspaceStorePath()` for read-only resolution: returns the active path and mode without writing anything.
44
+ - Bootstrap, skill install/list, repair, compact, and preconfig all updated to use the shared resolver.
45
+ - CLI help text, doctor messages, and run-ledger artifacts updated to describe `agent-state/ace-state.ace` as canonical.
46
+ - Added `test/store-unity-release.test.mjs` as a dedicated release gate covering legacy adoption, dual-store conflict, canonical-only skill install/repair/compact, and a source-scan guard that fails on new hard-coded legacy path references outside the resolver module.
47
+
38
48
  ### Validation
39
49
 
40
- - Verified `208/208` tests passing (up from 202) with full orchestrator supervisor, model bridge, and compliance enforcement coverage.
50
+ - Verified `319/319` tests passing (up from 208) with full orchestrator supervisor, model bridge, compliance enforcement, and store-unity migration coverage.
41
51
 
42
52
  ## [2.2.0] - 2026-03-26
43
53
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Autonomous Coding Entity (ACE) is a local MCP server and CLI for agent-assisted coding.
4
4
 
5
- `ace-swarm` provides Claude Code, Codex, Cursor, VS Code, and provider-backed workflows with a shared runtime: durable workspace state, typed handoffs, scheduler support, change intelligence, and operator tooling. All state lives in a single binary file — `.agents/ACE/ace-state.ace` so the workspace keeps one source of truth instead of a forest of generated state files.
5
+ `ace-swarm` provides Claude Code, Codex, Cursor, GitHub Copilot CLI, VS Code, and provider-backed workflows with a shared runtime: durable workspace state, typed handoffs, scheduler support, change intelligence, and operator tooling. All state lives in a single binary file — `agent-state/ace-state.ace` — with `.agents/ACE/ace-state.ace` kept only as a legacy fallback for older workspaces.
6
6
 
7
7
  Modern coding agents can already read files, write code, run commands, and call tools. The missing layer is coordination that survives restarts, model switches, and multi-agent work. ACE keeps the workflow in the store and projects only the files external clients still need. For provider-backed runs, ACE provides task context, tool surfaces, status events, evidence trails, and resumable state.
8
8
 
@@ -13,7 +13,7 @@ Modern coding agents can already read files, write code, run commands, and call
13
13
  - Shared workflow state should live in the workspace, not only in chat history.
14
14
  - ACE-Orchestrator is the default entrypoint, and every provider can delegate through the full agent set.
15
15
  - Provider-backed runs should get the same structure and observability.
16
- - Bootstrap should be contained and reversible: ACE writes into `.agents/ACE/ace-state.ace`.
16
+ - Bootstrap should be contained and reversible: ACE writes into `agent-state/ace-state.ace`, with legacy fallback reads from `.agents/ACE/ace-state.ace` where needed.
17
17
 
18
18
  ### Serving model providers
19
19
 
@@ -21,6 +21,8 @@ ACE provides model providers with the context they cannot infer on their own: ta
21
21
 
22
22
  - `ace init --llm <provider>` records the selected runtime profile in the store.
23
23
  - `ace doctor` validates local or hosted runtime wiring, checks the selected model when the provider exposes listings, and keeps the runtime honest.
24
+ - `ace doctor --scan` probes common Ollama and llama.cpp endpoints and writes the selected profile back into the store.
25
+ - `ace tui` is provider-aware for `ollama`, `llama.cpp`, `codex`, `claude`, `gemini`, and `copilot` when credentials or base URLs are configured.
24
26
  - `ace mcp` and `ace tui` expose the same workspace truth to the host, the terminal, and the model.
25
27
 
26
28
  ## Why This Exists Now
@@ -38,7 +40,7 @@ ACE also provides scheduler primitives for queued work, dependency gates, leases
38
40
 
39
41
  ## ACEPACK State Model
40
42
 
41
- ACE uses a custom binary format called ACEPACK to present `.agents/ACE/ace-state.ace` as a structured single-file store. The file has three regions:
43
+ ACE uses a custom binary format called ACEPACK to present `agent-state/ace-state.ace` as a structured single-file store. Existing workspaces that still carry `.agents/ACE/ace-state.ace` are read through the legacy fallback path. The file has three regions:
42
44
 
43
45
  ```
44
46
  ace-state.ace
@@ -80,7 +82,7 @@ Every `appendEntry()` call — handoffs, status events, ledger entries, session
80
82
  - Per-event overhead is ~19 bytes fixed vs ~150 bytes for equivalent JSON.
81
83
  - At 100,000 events, the fixed columns are ~1.9 MB; a full JSON log would be ~15 MB.
82
84
 
83
- Events accumulate for the workspace lifetime and survive `compact()`. Full historical replay is always available. See `HOT_COLD_EVENT_TIERING.md` for the future branch that adds compressed batch archiving for very long-lived workspaces.
85
+ Events accumulate for the workspace lifetime and survive `compact()`. Full historical replay is always available.
84
86
 
85
87
  ### Why one state file
86
88
 
@@ -98,7 +100,7 @@ The store holds runtime state, agent instructions, skills, topology, schemas, an
98
100
  Bootstrap a workspace:
99
101
 
100
102
  ```bash
101
- npx -y ace-swarm turnkey --project "My Project"
103
+ npx -y @voybio/ace-swarm turnkey --project "My Project"
102
104
  ace mcp
103
105
  ```
104
106
 
@@ -111,7 +113,7 @@ initiate ACE
111
113
  Local-model path with Ollama:
112
114
 
113
115
  ```bash
114
- npx -y ace-swarm turnkey --project "My Project" --llm ollama --model llama3.1:8b --base-url http://localhost:11434
116
+ npx -y @voybio/ace-swarm turnkey --project "My Project" --llm ollama --model llama3.1:8b --base-url http://localhost:11434
115
117
  ollama serve
116
118
  ollama pull llama3.1:8b
117
119
  ace doctor --llm ollama --model llama3.1:8b --base-url http://localhost:11434
@@ -121,7 +123,7 @@ ace mcp
121
123
  Local-model path with llama.cpp:
122
124
 
123
125
  ```bash
124
- npx -y ace-swarm turnkey --project "My Project" --llm llama.cpp --model local-model --base-url http://localhost:8080
126
+ npx -y @voybio/ace-swarm turnkey --project "My Project" --llm llama.cpp --model local-model --base-url http://localhost:8080
125
127
  llama-server -m /path/to/model.gguf --port 8080
126
128
  ace doctor --llm llama.cpp --model local-model --base-url http://localhost:8080
127
129
  ace mcp
@@ -132,7 +134,7 @@ If you already have a local runtime running, `ace doctor --scan` will probe comm
132
134
  Hosted provider path with Codex:
133
135
 
134
136
  ```bash
135
- npx -y ace-swarm turnkey --project "My Project" --llm codex --model gpt-5
137
+ npx -y @voybio/ace-swarm turnkey --project "My Project" --llm codex --model gpt-5
136
138
  export OPENAI_API_KEY=...
137
139
  ace doctor --llm codex --model gpt-5
138
140
  ace mcp
@@ -140,9 +142,10 @@ ace mcp
140
142
 
141
143
  ## What Bootstrap Writes
142
144
 
143
- ACE bootstrap is intentionally contained. The store is authoritative at `.agents/ACE/ace-state.ace`; only a few host-facing files land in the workspace when requested.
145
+ ACE bootstrap is intentionally contained. The store is authoritative at `agent-state/ace-state.ace`; only a few host-facing files land in the workspace when requested.
144
146
 
145
- - `.agents/ACE/ace-state.ace` — runtime state, agent instructions, skills, topology, schemas, and the event log
147
+ - `agent-state/ace-state.ace` — runtime state, agent instructions, skills, topology, schemas, and the event log
148
+ - `.agents/ACE/ace-state.ace` — legacy fallback for existing workspaces
146
149
  - `.agents/ACE/ace-hook-context.json` — compact hook snapshot for external clients
147
150
  - `.agents/ACE/tasks/todo.md` — human-facing todo surface
148
151
  - Optional workspace-root stubs — `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `.github/copilot-instructions.md`, and `.vscode/mcp.json`
@@ -159,6 +162,11 @@ Developer or MCP host
159
162
  | |
160
163
  | `-- calls ace-swarm over MCP
161
164
  |
165
+ +-- agent-state/
166
+ | |
167
+ | +-- ace-state.ace
168
+ | +-- STATUS.md / TASK.md / HANDOFF.json projections
169
+ |
162
170
  +-- ace mcp
163
171
  | |
164
172
  | +-- tools, prompts, resources
@@ -168,7 +176,6 @@ Developer or MCP host
168
176
  |
169
177
  +-- .agents/ACE/
170
178
  | |
171
- | +-- ace-state.ace
172
179
  | +-- ace-hook-context.json
173
180
  | +-- tasks/todo.md
174
181
  | `-- host config bundles
@@ -190,7 +197,7 @@ Developer or MCP host
190
197
  | Runtime roles | swarm and composable runtime roles |
191
198
  | Skills | packaged skills |
192
199
  | MCP server | stdio surface for tools, prompts, resources, and workflows |
193
- | Durable state | single .ace authority for handoffs, status events, todos, run ledger, job queue, and discovery |
200
+ | Durable state | single `agent-state/ace-state.ace` authority for handoffs, status events, todos, run ledger, job queue, and discovery |
194
201
  | Projections | hook context, todo surface, and host config bundles |
195
202
  | Coordination | scheduler queues, dependency gates, leases, and resource locks |
196
203
  | Change intelligence | delta scan, semantic snapshots, drift reports, rewrite hints |
@@ -215,7 +222,7 @@ In that setup, the host remains the interface. ACE becomes the state contract un
215
222
 
216
223
  Local models are good at generating text. They usually need help seeing the workspace, hearing the handoff trail, and remembering what changed two turns ago. ACE closes that gap.
217
224
 
218
- - `ace init --llm <provider>` seeds the profile inside `.agents/ACE/ace-state.ace`.
225
+ - `ace init --llm <provider>` seeds the profile inside `agent-state/ace-state.ace`.
219
226
  - `ace doctor` verifies that the selected runtime is configured and, when possible, reachable.
220
227
  - `ace tui` can talk to either local runtime and surface the same workspace state the MCP server sees.
221
228
  - The ACE model bridge gives local runs tool selection, execution flow, and persisted state instead of a fragile one-shot chat loop.
@@ -173,6 +173,20 @@ Confidence: <score>% (<label>)
173
173
 
174
174
  ---
175
175
 
176
+ ## Validation Surface
177
+
178
+ - Run this skill against at least one known-pass baseline and one known-fail fixture before trusting a promotion decision.
179
+ - Validation command example: execute the configured eval harness runner and confirm deterministic suite counts in `agent-state/EVAL_REPORT.md`.
180
+
181
+ ---
182
+
183
+ ## Portability Notes
184
+
185
+ - Keep this skill vendor-neutral: it should work across Codex, Claude, Cursor, and Antigravity runtimes.
186
+ - Avoid provider-specific assumptions in suite execution or report parsing; rely on ACE artifacts as the source of truth.
187
+
188
+ ---
189
+
176
190
  ## Anti-Patterns
177
191
 
178
192
  | Anti-Pattern | Correct Behavior |
@@ -132,6 +132,20 @@ Also use when:
132
132
 
133
133
  ---
134
134
 
135
+ ## Validation Surface
136
+
137
+ - Run this check with one valid and one intentionally broken handoff payload to verify deterministic PASS/FAIL behavior.
138
+ - Validation command example: execute the handoff lint path used by the runtime and confirm schema, route, and evidence checks all emit rule-level outcomes.
139
+
140
+ ---
141
+
142
+ ## Portability Notes
143
+
144
+ - Keep lint output schema and rule IDs stable so different clients can consume results uniformly.
145
+ - Do not depend on provider-specific behavior; handoff validation must rely only on ACE artifacts and schemas.
146
+
147
+ ---
148
+
135
149
  ## Anti-Patterns
136
150
 
137
151
  | Anti-Pattern | Correct Behavior |
@@ -156,6 +156,20 @@ No incident closure without ALL of:
156
156
 
157
157
  ---
158
158
 
159
+ ## Validation Surface
160
+
161
+ - Run an incident simulation with synthetic `GATE_FAILED` events and verify severity classification, owner assignment, and timeline reconstruction are deterministic.
162
+ - Validation command example: replay a known event stream and confirm `global-state/INCIDENTS.md` and `agent-state/INCIDENT_TIMELINE.md` contain matching evidence-linked rows.
163
+
164
+ ---
165
+
166
+ ## Portability Notes
167
+
168
+ - Incident lifecycle states and emitted event names must remain stable across clients.
169
+ - Keep the protocol provider-agnostic: all decisions should be derivable from ACE state artifacts and event logs.
170
+
171
+ ---
172
+
159
173
  ## Anti-Patterns
160
174
 
161
175
  | Anti-Pattern | Correct Behavior |
@@ -161,6 +161,20 @@ Generated: <ISO8601>
161
161
 
162
162
  ---
163
163
 
164
+ ## Validation Surface
165
+
166
+ - Run this skill on a fixture with known duplicates and contradictions, then verify the reconciliation report counts match expected values.
167
+ - Validation command example: execute memory curation and confirm no source logs are modified while `MEMORY_INDEX.md` updates with provenance links.
168
+
169
+ ---
170
+
171
+ ## Portability Notes
172
+
173
+ - Preserve schema and section labels so downstream consumers can parse curated memory artifacts consistently.
174
+ - Keep curation logic independent of model/provider specifics; evidence linkage is the portable contract.
175
+
176
+ ---
177
+
164
178
  ## Anti-Patterns
165
179
 
166
180
  | Anti-Pattern | Correct Behavior |
@@ -160,6 +160,20 @@ Reason: <one sentence>
160
160
 
161
161
  ---
162
162
 
163
+ ## Validation Surface
164
+
165
+ - Validate this skill with one known-pass and one known-fail release packet to confirm gate outcomes are deterministic.
166
+ - Validation command example: run release sentry checks and verify `RELEASE_DECISION.md` always includes explicit gate evidence rows.
167
+
168
+ ---
169
+
170
+ ## Portability Notes
171
+
172
+ - Keep decision enums and gate names stable so any client can consume release outputs consistently.
173
+ - Avoid provider-specific assumptions; release readiness must be computed from ACE artifacts only.
174
+
175
+ ---
176
+
163
177
  ## Anti-Patterns
164
178
 
165
179
  | Anti-Pattern | Correct Behavior |
@@ -158,6 +158,20 @@ Every risk in `RISKS.md` must contain these fields:
158
158
 
159
159
  ---
160
160
 
161
+ ## Validation Surface
162
+
163
+ - Run this skill against a fixture risk set with expected probability-impact scores and verify computed tiers match exactly.
164
+ - Validation command example: execute risk quantification and confirm HIGH/CRITICAL entries always include owner, mitigation, and verification condition.
165
+
166
+ ---
167
+
168
+ ## Portability Notes
169
+
170
+ - Keep scoring scales and tier thresholds explicit and stable across clients.
171
+ - Quantification must remain vendor-neutral and based on ACE state artifacts, not model-specific behavior.
172
+
173
+ ---
174
+
161
175
  ## Anti-Patterns
162
176
 
163
177
  | Anti-Pattern | Correct Behavior |
@@ -151,6 +151,20 @@ Use when:
151
151
 
152
152
  ---
153
153
 
154
+ ## Validation Surface
155
+
156
+ - Validate schema updates against both old and new sample payload fixtures before promoting contract changes.
157
+ - Validation command example: run JSON-schema validation for backward and forward compatibility samples and record results in `EVIDENCE_LOG.md`.
158
+
159
+ ---
160
+
161
+ ## Portability Notes
162
+
163
+ - Preserve stable schema IDs, version fields, and migration metadata so any ACE client can consume updates.
164
+ - Keep evolution rules provider-agnostic; compatibility decisions must be artifact-driven, not model-driven.
165
+
166
+ ---
167
+
154
168
  ## Anti-Patterns
155
169
 
156
170
  | Anti-Pattern | Correct Behavior |
@@ -161,6 +161,20 @@ Overall: <PASS | WARN | CRITICAL>
161
161
 
162
162
  ---
163
163
 
164
+ ## Validation Surface
165
+
166
+ - Run audits against fixtures with known contradictions to verify deterministic CRITICAL/WARN classification.
167
+ - Validation command example: execute the state audit flow and confirm every checklist row maps to a concrete pass/fail artifact reference.
168
+
169
+ ---
170
+
171
+ ## Portability Notes
172
+
173
+ - Keep report structure and checklist IDs stable so multiple clients can parse outputs consistently.
174
+ - State drift checks must remain independent of model/provider implementation details.
175
+
176
+ ---
177
+
164
178
  ## Anti-Patterns
165
179
 
166
180
  | Anti-Pattern | Correct Behavior |
@@ -4,4 +4,4 @@ Append-only chain-of-custody for checks, decisions, and execution proofs.
4
4
 
5
5
  ## Entries
6
6
 
7
- - {{BOOTSTRAP_TIMESTAMP}} | bootstrap initialized | evidence_ref: `EVIDENCE_LOG.md#ts:{{BOOTSTRAP_TIMESTAMP}}`
7
+ - 2026-03-03T00:00:00Z | bootstrap initialized | evidence_ref: `EVIDENCE_LOG.md#ts:2026-03-03T00:00:00Z`
@@ -2,6 +2,6 @@
2
2
  "id": "gate-correctness",
3
3
  "type": "executable",
4
4
  "invariant": "All required tests pass",
5
- "command": "cd ace-mcp-server && npm test --silent",
5
+ "command": "if [ -f ace-mcp-server/package.json ]; then cd ace-mcp-server && npm test --silent; elif [ -f package.json ]; then npm test --silent; else echo 'package.json not found for gate-correctness' && exit 1; fi",
6
6
  "evidence_requirement": "Command output snippet with exit code 0"
7
7
  }
@@ -0,0 +1,41 @@
1
+ {
2
+ "id": "capability-framework",
3
+ "version": "1.0.0",
4
+ "objective": "Validate ACE framework contracts, execute gate bundles, and enforce state integrity checks",
5
+ "permissions": [
6
+ "allow_file_io",
7
+ "allow_shell_exec"
8
+ ],
9
+ "inputs": [
10
+ {
11
+ "file": "TEAL_CONFIG.md",
12
+ "critical": true
13
+ },
14
+ {
15
+ "file": "QUALITY_GATES.md",
16
+ "critical": true
17
+ },
18
+ {
19
+ "file": "HANDOFF.json",
20
+ "critical": true
21
+ },
22
+ {
23
+ "file": "MODULES/registry.json",
24
+ "critical": true
25
+ }
26
+ ],
27
+ "outputs": [
28
+ {
29
+ "file": "EVIDENCE_LOG.md",
30
+ "validation_gate": "gate-completeness"
31
+ },
32
+ {
33
+ "file": "STATUS_EVENTS.ndjson",
34
+ "validation_gate": "gate-autonomy"
35
+ }
36
+ ],
37
+ "failure_routing": {
38
+ "missing_input": "BLOCK_AND_REQUEST_INFO",
39
+ "gate_failure": "ESCALATE_TO_CAPABILITY_OPS"
40
+ }
41
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "capability-git",
3
+ "version": "1.0.0",
4
+ "objective": "Execute repository initialization and commit operations with traceable evidence",
5
+ "permissions": [
6
+ "allow_file_io",
7
+ "allow_shell_exec"
8
+ ],
9
+ "inputs": [
10
+ {
11
+ "file": "STATUS.md",
12
+ "critical": false
13
+ },
14
+ {
15
+ "file": "EVIDENCE_LOG.md",
16
+ "critical": true
17
+ }
18
+ ],
19
+ "outputs": [
20
+ {
21
+ "file": "EVIDENCE_LOG.md",
22
+ "validation_gate": "gate-completeness"
23
+ },
24
+ {
25
+ "file": "STATUS_EVENTS.ndjson",
26
+ "validation_gate": "gate-autonomy"
27
+ }
28
+ ],
29
+ "failure_routing": {
30
+ "missing_input": "BLOCK_AND_REQUEST_INFO",
31
+ "gate_failure": "ESCALATE_TO_CAPABILITY_OPS"
32
+ }
33
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "id": "capability-safety",
3
+ "version": "1.0.0",
4
+ "objective": "Apply safety checks and fail-closed validation before mutating critical ACE artifacts",
5
+ "permissions": [
6
+ "allow_file_io",
7
+ "allow_shell_exec"
8
+ ],
9
+ "inputs": [
10
+ {
11
+ "file": "HANDOFF.json",
12
+ "critical": false
13
+ },
14
+ {
15
+ "file": "QUALITY_GATES.md",
16
+ "critical": true
17
+ },
18
+ {
19
+ "file": "EVIDENCE_LOG.md",
20
+ "critical": true
21
+ }
22
+ ],
23
+ "outputs": [
24
+ {
25
+ "file": "EVIDENCE_LOG.md",
26
+ "validation_gate": "gate-completeness"
27
+ },
28
+ {
29
+ "file": "STATUS_EVENTS.ndjson",
30
+ "validation_gate": "gate-autonomy"
31
+ }
32
+ ],
33
+ "failure_routing": {
34
+ "missing_input": "BLOCK_AND_REQUEST_INFO",
35
+ "gate_failure": "BLOCK_AND_ESCALATE"
36
+ }
37
+ }
@@ -145,6 +145,27 @@
145
145
  "registry_path": {
146
146
  "type": "string",
147
147
  "minLength": 1
148
+ },
149
+ "surgical_read_budgets": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "properties": {
153
+ "small_local": {
154
+ "type": "integer",
155
+ "minimum": 1
156
+ },
157
+ "mid": {
158
+ "type": "integer",
159
+ "minimum": 1
160
+ },
161
+ "frontier": {
162
+ "type": [
163
+ "integer",
164
+ "null"
165
+ ],
166
+ "minimum": 1
167
+ }
168
+ }
148
169
  }
149
170
  }
150
171
  },
@@ -163,6 +163,46 @@
163
163
  "items": {
164
164
  "$ref": "#/$defs/tool_call"
165
165
  }
166
+ },
167
+ "turn_outcome": {
168
+ "type": "string",
169
+ "enum": [
170
+ "no_op_success",
171
+ "meaningful_completion",
172
+ "escalation_blocker"
173
+ ]
174
+ },
175
+ "outcome_reason": {
176
+ "type": "string"
177
+ }
178
+ }
179
+ },
180
+ "output_policy": {
181
+ "type": "object",
182
+ "additionalProperties": false,
183
+ "required": [
184
+ "emit_to",
185
+ "silent_unless_blocked",
186
+ "require_approval_before_emit"
187
+ ],
188
+ "properties": {
189
+ "emit_to": {
190
+ "type": "array",
191
+ "items": {
192
+ "type": "string",
193
+ "enum": [
194
+ "tui",
195
+ "tracker",
196
+ "handoff",
197
+ "vericify"
198
+ ]
199
+ }
200
+ },
201
+ "silent_unless_blocked": {
202
+ "type": "boolean"
203
+ },
204
+ "require_approval_before_emit": {
205
+ "type": "boolean"
166
206
  }
167
207
  }
168
208
  },
@@ -278,6 +318,9 @@
278
318
  "failed"
279
319
  ]
280
320
  },
321
+ "output_policy": {
322
+ "$ref": "#/$defs/output_policy"
323
+ },
281
324
  "turns": {
282
325
  "type": "array",
283
326
  "items": {
@@ -72,6 +72,17 @@
72
72
  "last_error": {
73
73
  "type": "string"
74
74
  },
75
+ "hook_health": {
76
+ "type": "string",
77
+ "enum": [
78
+ "ok",
79
+ "degraded",
80
+ "failed"
81
+ ]
82
+ },
83
+ "hook_summary": {
84
+ "type": "string"
85
+ },
75
86
  "created_at": {
76
87
  "type": "string",
77
88
  "format": "date-time"
@@ -1,8 +1,8 @@
1
1
  # STATUS
2
2
 
3
- - Current role: `ace-orchestrator`
3
+ - Current role: `capability-skeptic`
4
4
  - Current phase: `STATE_ANALYSIS`
5
5
  - Active pipeline: `standard`
6
6
  - Blockers: `none`
7
7
  - Current objective delta: `bootstrap complete, awaiting first scoped objective`
8
- - Last update: `{{BOOTSTRAP_TIMESTAMP}}`
8
+ - Last update: `2026-03-03T00:00:00Z`