@voybio/ace-swarm 0.2.5 → 2.4.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.
Files changed (144) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/README.md +21 -13
  3. package/assets/.agents/ACE/agent-qa/instructions.md +11 -0
  4. package/assets/agent-state/EVIDENCE_LOG.md +1 -1
  5. package/assets/agent-state/MODULES/roles/capability-framework.json +41 -0
  6. package/assets/agent-state/MODULES/roles/capability-git.json +33 -0
  7. package/assets/agent-state/MODULES/roles/capability-safety.json +37 -0
  8. package/assets/agent-state/MODULES/schemas/ACE_RUNTIME_PROFILE.schema.json +21 -0
  9. package/assets/agent-state/MODULES/schemas/RUNTIME_EXECUTOR_SESSION_REGISTRY.schema.json +43 -0
  10. package/assets/agent-state/MODULES/schemas/RUNTIME_TOOL_SPEC_REGISTRY.schema.json +43 -0
  11. package/assets/agent-state/MODULES/schemas/WORKSPACE_SESSION_REGISTRY.schema.json +11 -0
  12. package/assets/agent-state/STATUS.md +2 -2
  13. package/assets/agent-state/runtime-tool-specs.json +70 -2
  14. package/assets/instructions/ACE_Coder.instructions.md +13 -0
  15. package/assets/instructions/ACE_UI.instructions.md +11 -0
  16. package/assets/scripts/ace-hook-dispatch.mjs +70 -6
  17. package/assets/scripts/render-mcp-configs.sh +19 -5
  18. package/dist/ace-context.js +91 -11
  19. package/dist/ace-internal-tools.d.ts +3 -1
  20. package/dist/ace-internal-tools.js +10 -2
  21. package/dist/ace-server-instructions.js +3 -3
  22. package/dist/ace-state-resolver.js +5 -3
  23. package/dist/agent-runtime/role-adapters.d.ts +18 -1
  24. package/dist/agent-runtime/role-adapters.js +49 -5
  25. package/dist/astgrep-index.d.ts +57 -1
  26. package/dist/astgrep-index.js +140 -4
  27. package/dist/cli.js +232 -35
  28. package/dist/discovery-runtime-wrappers.d.ts +108 -0
  29. package/dist/discovery-runtime-wrappers.js +615 -0
  30. package/dist/handoff-registry.js +5 -5
  31. package/dist/helpers/artifacts.d.ts +19 -0
  32. package/dist/helpers/artifacts.js +152 -0
  33. package/dist/helpers/bootstrap.d.ts +24 -0
  34. package/dist/helpers/bootstrap.js +894 -0
  35. package/dist/helpers/constants.d.ts +53 -0
  36. package/dist/helpers/constants.js +295 -0
  37. package/dist/helpers/drift.d.ts +13 -0
  38. package/dist/helpers/drift.js +45 -0
  39. package/dist/helpers/path-utils.d.ts +24 -0
  40. package/dist/helpers/path-utils.js +123 -0
  41. package/dist/helpers/store-resolution.d.ts +19 -0
  42. package/dist/helpers/store-resolution.js +305 -0
  43. package/dist/helpers/workspace-root.d.ts +3 -0
  44. package/dist/helpers/workspace-root.js +80 -0
  45. package/dist/helpers.d.ts +8 -125
  46. package/dist/helpers.js +8 -1768
  47. package/dist/job-scheduler.js +33 -7
  48. package/dist/json-sanitizer.d.ts +16 -0
  49. package/dist/json-sanitizer.js +26 -0
  50. package/dist/local-model-policy.d.ts +27 -0
  51. package/dist/local-model-policy.js +84 -0
  52. package/dist/local-model-runtime.d.ts +6 -0
  53. package/dist/local-model-runtime.js +33 -21
  54. package/dist/model-bridge.d.ts +13 -1
  55. package/dist/model-bridge.js +410 -23
  56. package/dist/orchestrator-supervisor.d.ts +56 -0
  57. package/dist/orchestrator-supervisor.js +179 -1
  58. package/dist/plan-proposal.d.ts +115 -0
  59. package/dist/plan-proposal.js +1073 -0
  60. package/dist/run-ledger.js +3 -3
  61. package/dist/runtime-command.d.ts +8 -0
  62. package/dist/runtime-command.js +38 -6
  63. package/dist/runtime-executor.d.ts +20 -1
  64. package/dist/runtime-executor.js +737 -172
  65. package/dist/runtime-profile.d.ts +32 -0
  66. package/dist/runtime-profile.js +89 -13
  67. package/dist/runtime-tool-specs.d.ts +39 -0
  68. package/dist/runtime-tool-specs.js +144 -28
  69. package/dist/safe-edit.d.ts +7 -0
  70. package/dist/safe-edit.js +163 -37
  71. package/dist/schemas.js +48 -1
  72. package/dist/server.js +51 -0
  73. package/dist/shared.d.ts +3 -2
  74. package/dist/shared.js +2 -0
  75. package/dist/status-events.js +9 -6
  76. package/dist/store/ace-packed-store.d.ts +3 -2
  77. package/dist/store/ace-packed-store.js +188 -110
  78. package/dist/store/bootstrap-store.d.ts +2 -1
  79. package/dist/store/bootstrap-store.js +102 -83
  80. package/dist/store/cache-workspace.js +11 -5
  81. package/dist/store/materializers/context-snapshot-materializer.js +6 -2
  82. package/dist/store/materializers/hook-context-materializer.d.ts +6 -9
  83. package/dist/store/materializers/hook-context-materializer.js +11 -21
  84. package/dist/store/materializers/host-file-materializer.js +6 -0
  85. package/dist/store/materializers/projection-manager.d.ts +0 -1
  86. package/dist/store/materializers/projection-manager.js +5 -13
  87. package/dist/store/materializers/scheduler-projection-materializer.js +1 -1
  88. package/dist/store/materializers/vericify-projector.d.ts +7 -7
  89. package/dist/store/materializers/vericify-projector.js +11 -11
  90. package/dist/store/repositories/local-model-runtime-repository.d.ts +120 -3
  91. package/dist/store/repositories/local-model-runtime-repository.js +242 -6
  92. package/dist/store/repositories/vericify-repository.d.ts +1 -1
  93. package/dist/store/skills-install.d.ts +4 -0
  94. package/dist/store/skills-install.js +21 -12
  95. package/dist/store/state-reader.d.ts +2 -0
  96. package/dist/store/state-reader.js +20 -0
  97. package/dist/store/store-artifacts.d.ts +7 -0
  98. package/dist/store/store-artifacts.js +27 -1
  99. package/dist/store/store-authority-audit.d.ts +18 -1
  100. package/dist/store/store-authority-audit.js +115 -5
  101. package/dist/store/store-snapshot.d.ts +3 -0
  102. package/dist/store/store-snapshot.js +22 -2
  103. package/dist/store/workspace-store-paths.d.ts +39 -0
  104. package/dist/store/workspace-store-paths.js +94 -0
  105. package/dist/store/write-coordinator.d.ts +65 -0
  106. package/dist/store/write-coordinator.js +386 -0
  107. package/dist/todo-state.js +5 -5
  108. package/dist/tools-agent.d.ts +20 -0
  109. package/dist/tools-agent.js +789 -25
  110. package/dist/tools-discovery.js +136 -1
  111. package/dist/tools-files.d.ts +7 -0
  112. package/dist/tools-files.js +1002 -11
  113. package/dist/tools-framework.js +105 -66
  114. package/dist/tools-handoff.js +2 -2
  115. package/dist/tools-lifecycle.js +4 -4
  116. package/dist/tools-memory.js +6 -6
  117. package/dist/tools-todo.js +2 -2
  118. package/dist/tracker-adapters.d.ts +1 -1
  119. package/dist/tracker-adapters.js +13 -18
  120. package/dist/tracker-sync.js +5 -3
  121. package/dist/tui/agent-runner.js +3 -1
  122. package/dist/tui/chat.js +103 -7
  123. package/dist/tui/dashboard.d.ts +1 -0
  124. package/dist/tui/dashboard.js +43 -0
  125. package/dist/tui/index.js +10 -1
  126. package/dist/tui/layout.d.ts +20 -0
  127. package/dist/tui/layout.js +31 -1
  128. package/dist/tui/local-model-contract.d.ts +6 -2
  129. package/dist/tui/local-model-contract.js +16 -3
  130. package/dist/tui/ollama.d.ts +8 -1
  131. package/dist/tui/ollama.js +53 -12
  132. package/dist/tui/openai-compatible.d.ts +13 -0
  133. package/dist/tui/openai-compatible.js +305 -5
  134. package/dist/tui/provider-discovery.d.ts +1 -0
  135. package/dist/tui/provider-discovery.js +35 -11
  136. package/dist/vericify-bridge.d.ts +6 -1
  137. package/dist/vericify-bridge.js +27 -3
  138. package/dist/workspace-manager.d.ts +30 -3
  139. package/dist/workspace-manager.js +257 -27
  140. package/package.json +1 -2
  141. package/dist/internal-tool-runtime.d.ts +0 -21
  142. package/dist/internal-tool-runtime.js +0 -136
  143. package/dist/store/workspace-snapshot.d.ts +0 -26
  144. package/dist/store/workspace-snapshot.js +0 -107
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.4.0] - 2026-05-02
4
+
5
+ ### Changed
6
+
7
+ - Added `ace connect` so users can register an explicit local or hosted runtime profile without ACE inventing a local model preset.
8
+ - Updated local runtime bootstrap and doctor guidance to avoid hardcoded `llama.cpp` model defaults when the user has not supplied one.
9
+ - Added a Copilot CLI `.mcp.json` projection to `ace preconfig` while preserving the existing `.vscode/mcp.json` bridge.
10
+
3
11
  ## [2.3.0] - 2026-03-28
4
12
 
5
13
  ### Added
@@ -35,9 +43,19 @@
35
43
  - Expanded hook dispatch context to emit role-aware ACE tool hints from session, subagent, and tool lifecycle events.
36
44
  - Updated bootstrap and config rendering to generate multi-host hook artifacts under `.vscode`, `.cursor`, and `.mcp-config`.
37
45
 
46
+ **Store-Unity Migration:**
47
+ - 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.
48
+ - `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.
49
+ - 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.
50
+ - Dual-store conflicts (both files exist with different content) surface an explicit warning and halt mutating commands rather than silently merging or overwriting.
51
+ - Added `resolveWorkspaceStorePath()` for read-only resolution: returns the active path and mode without writing anything.
52
+ - Bootstrap, skill install/list, repair, compact, and preconfig all updated to use the shared resolver.
53
+ - CLI help text, doctor messages, and run-ledger artifacts updated to describe `agent-state/ace-state.ace` as canonical.
54
+ - 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.
55
+
38
56
  ### Validation
39
57
 
40
- - Verified `208/208` tests passing (up from 202) with full orchestrator supervisor, model bridge, and compliance enforcement coverage.
58
+ - Verified `319/319` tests passing (up from 208) with full orchestrator supervisor, model bridge, compliance enforcement, and store-unity migration coverage.
41
59
 
42
60
  ## [2.2.0] - 2026-03-26
43
61
 
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,14 +13,17 @@ 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
 
20
20
  ACE provides model providers with the context they cannot infer on their own: task state, tool surfaces, status events, evidence trails, and the next move in the loop.
21
21
 
22
22
  - `ace init --llm <provider>` records the selected runtime profile in the store.
23
+ - `ace connect` records an explicit runtime profile from a user-chosen local runtime endpoint or hosted provider without inventing a local model preset.
23
24
  - `ace doctor` validates local or hosted runtime wiring, checks the selected model when the provider exposes listings, and keeps the runtime honest.
25
+ - `ace doctor --scan` probes common Ollama and llama.cpp endpoints and writes the selected profile back into the store.
26
+ - `ace tui` is provider-aware for `ollama`, `llama.cpp`, `codex`, `claude`, `gemini`, and `copilot` when credentials or base URLs are configured.
24
27
  - `ace mcp` and `ace tui` expose the same workspace truth to the host, the terminal, and the model.
25
28
 
26
29
  ## Why This Exists Now
@@ -38,7 +41,7 @@ ACE also provides scheduler primitives for queued work, dependency gates, leases
38
41
 
39
42
  ## ACEPACK State Model
40
43
 
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:
44
+ 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
45
 
43
46
  ```
44
47
  ace-state.ace
@@ -80,7 +83,7 @@ Every `appendEntry()` call — handoffs, status events, ledger entries, session
80
83
  - Per-event overhead is ~19 bytes fixed vs ~150 bytes for equivalent JSON.
81
84
  - At 100,000 events, the fixed columns are ~1.9 MB; a full JSON log would be ~15 MB.
82
85
 
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.
86
+ Events accumulate for the workspace lifetime and survive `compact()`. Full historical replay is always available.
84
87
 
85
88
  ### Why one state file
86
89
 
@@ -98,7 +101,7 @@ The store holds runtime state, agent instructions, skills, topology, schemas, an
98
101
  Bootstrap a workspace:
99
102
 
100
103
  ```bash
101
- npx -y ace-swarm turnkey --project "My Project"
104
+ npx -y @voybio/ace-swarm turnkey --project "My Project"
102
105
  ace mcp
103
106
  ```
104
107
 
@@ -111,7 +114,7 @@ initiate ACE
111
114
  Local-model path with Ollama:
112
115
 
113
116
  ```bash
114
- npx -y ace-swarm turnkey --project "My Project" --llm ollama --model llama3.1:8b --base-url http://localhost:11434
117
+ npx -y @voybio/ace-swarm turnkey --project "My Project" --llm ollama --model llama3.1:8b --base-url http://localhost:11434
115
118
  ollama serve
116
119
  ollama pull llama3.1:8b
117
120
  ace doctor --llm ollama --model llama3.1:8b --base-url http://localhost:11434
@@ -121,7 +124,7 @@ ace mcp
121
124
  Local-model path with llama.cpp:
122
125
 
123
126
  ```bash
124
- npx -y ace-swarm turnkey --project "My Project" --llm llama.cpp --model local-model --base-url http://localhost:8080
127
+ npx -y @voybio/ace-swarm turnkey --project "My Project" --llm llama.cpp --model local-model --base-url http://localhost:8080
125
128
  llama-server -m /path/to/model.gguf --port 8080
126
129
  ace doctor --llm llama.cpp --model local-model --base-url http://localhost:8080
127
130
  ace mcp
@@ -132,7 +135,7 @@ If you already have a local runtime running, `ace doctor --scan` will probe comm
132
135
  Hosted provider path with Codex:
133
136
 
134
137
  ```bash
135
- npx -y ace-swarm turnkey --project "My Project" --llm codex --model gpt-5
138
+ npx -y @voybio/ace-swarm turnkey --project "My Project" --llm codex --model gpt-5
136
139
  export OPENAI_API_KEY=...
137
140
  ace doctor --llm codex --model gpt-5
138
141
  ace mcp
@@ -140,9 +143,10 @@ ace mcp
140
143
 
141
144
  ## What Bootstrap Writes
142
145
 
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.
146
+ 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
147
 
145
- - `.agents/ACE/ace-state.ace` — runtime state, agent instructions, skills, topology, schemas, and the event log
148
+ - `agent-state/ace-state.ace` — runtime state, agent instructions, skills, topology, schemas, and the event log
149
+ - `.agents/ACE/ace-state.ace` — legacy fallback for existing workspaces
146
150
  - `.agents/ACE/ace-hook-context.json` — compact hook snapshot for external clients
147
151
  - `.agents/ACE/tasks/todo.md` — human-facing todo surface
148
152
  - Optional workspace-root stubs — `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `.github/copilot-instructions.md`, and `.vscode/mcp.json`
@@ -159,6 +163,11 @@ Developer or MCP host
159
163
  | |
160
164
  | `-- calls ace-swarm over MCP
161
165
  |
166
+ +-- agent-state/
167
+ | |
168
+ | +-- ace-state.ace
169
+ | +-- STATUS.md / TASK.md / HANDOFF.json projections
170
+ |
162
171
  +-- ace mcp
163
172
  | |
164
173
  | +-- tools, prompts, resources
@@ -168,7 +177,6 @@ Developer or MCP host
168
177
  |
169
178
  +-- .agents/ACE/
170
179
  | |
171
- | +-- ace-state.ace
172
180
  | +-- ace-hook-context.json
173
181
  | +-- tasks/todo.md
174
182
  | `-- host config bundles
@@ -190,7 +198,7 @@ Developer or MCP host
190
198
  | Runtime roles | swarm and composable runtime roles |
191
199
  | Skills | packaged skills |
192
200
  | 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 |
201
+ | Durable state | single `agent-state/ace-state.ace` authority for handoffs, status events, todos, run ledger, job queue, and discovery |
194
202
  | Projections | hook context, todo surface, and host config bundles |
195
203
  | Coordination | scheduler queues, dependency gates, leases, and resource locks |
196
204
  | Change intelligence | delta scan, semantic snapshots, drift reports, rewrite hints |
@@ -215,7 +223,7 @@ In that setup, the host remains the interface. ACE becomes the state contract un
215
223
 
216
224
  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
225
 
218
- - `ace init --llm <provider>` seeds the profile inside `.agents/ACE/ace-state.ace`.
226
+ - `ace init --llm <provider>` seeds the profile inside `agent-state/ace-state.ace`.
219
227
  - `ace doctor` verifies that the selected runtime is configured and, when possible, reachable.
220
228
  - `ace tui` can talk to either local runtime and surface the same workspace state the MCP server sees.
221
229
  - The ACE model bridge gives local runs tool selection, execution flow, and persisted state instead of a fragile one-shot chat loop.
@@ -1,6 +1,17 @@
1
1
  ---
2
2
  applyTo: 'agent-qa'
3
3
  ---
4
+ <!-- ACE Bridge Contract — high salience: this block takes precedence over all directives below -->
5
+ ## ACE Bridge Contract (Non-Negotiable)
6
+
7
+ **Short structured verdict:** Your completion summary must be a concise structured verdict — pass/fail counts, gate status, and failure classification. Do NOT reproduce file content, rewrite artifacts, or include large code blocks.
8
+
9
+ **Read-only enforcement:** Do not modify, rewrite, or improve the artifacts you inspect. If an artifact has a bug, classify it and route it — do not fix it inline.
10
+
11
+ **No artifact drift:** If you find yourself generating large code blocks or reproducing the full content of an inspected file, stop immediately and restate as a short verdict summary instead.
12
+
13
+ ---
14
+
4
15
  # agent-qa Execution Instructions
5
16
 
6
17
  ## Operating Objective
@@ -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`
@@ -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": {
@@ -108,6 +108,46 @@
108
108
  }
109
109
  }
110
110
  },
111
+ "mcp_server": {
112
+ "type": "object",
113
+ "additionalProperties": false,
114
+ "required": [
115
+ "transport"
116
+ ],
117
+ "properties": {
118
+ "transport": {
119
+ "type": "string",
120
+ "enum": [
121
+ "stdio",
122
+ "http"
123
+ ]
124
+ },
125
+ "command": {
126
+ "type": "string"
127
+ },
128
+ "args": {
129
+ "type": "array",
130
+ "items": {
131
+ "type": "string"
132
+ }
133
+ },
134
+ "url": {
135
+ "type": "string"
136
+ },
137
+ "env": {
138
+ "type": "object",
139
+ "additionalProperties": {
140
+ "type": "string"
141
+ }
142
+ },
143
+ "tool_allowlist": {
144
+ "type": "array",
145
+ "items": {
146
+ "type": "string"
147
+ }
148
+ }
149
+ }
150
+ },
111
151
  "tool_spec": {
112
152
  "type": "object",
113
153
  "additionalProperties": false,
@@ -137,6 +177,9 @@
137
177
  },
138
178
  "executor": {
139
179
  "$ref": "#/$defs/executor"
180
+ },
181
+ "mcp_server": {
182
+ "$ref": "#/$defs/mcp_server"
140
183
  }
141
184
  }
142
185
  }
@@ -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`
@@ -1,5 +1,73 @@
1
1
  {
2
2
  "version": 1,
3
- "updated_at": "1970-01-01T00:00:00.000Z",
4
- "tools": []
3
+ "updated_at": "2026-05-06T00:00:00.000Z",
4
+ "tools": [
5
+ {
6
+ "name": "duckduckgo_search_fetch_mcp_example",
7
+ "description": "Example configurable DuckDuckGo-style search/fetch MCP server class. Cost: moderate. This is a registry template; provider command/env must be supplied by workspace policy before use.",
8
+ "input_schema": {
9
+ "type": "object",
10
+ "required": [
11
+ "query"
12
+ ],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "query": {
16
+ "type": "string",
17
+ "description": "Search query"
18
+ },
19
+ "fetch_urls": {
20
+ "type": "array",
21
+ "items": {
22
+ "type": "string"
23
+ },
24
+ "description": "Optional URLs to fetch after search"
25
+ }
26
+ }
27
+ },
28
+ "success_schema": {
29
+ "type": "object",
30
+ "additionalProperties": true,
31
+ "properties": {
32
+ "citations": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "object",
36
+ "additionalProperties": true
37
+ }
38
+ },
39
+ "fetches": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "object",
43
+ "additionalProperties": true
44
+ }
45
+ }
46
+ }
47
+ },
48
+ "failure_schema": {
49
+ "type": "object",
50
+ "additionalProperties": true
51
+ },
52
+ "executor": {
53
+ "command": "node -e \"const fs=require('node:fs'); fs.writeFileSync(process.env.ACE_RUNTIME_TOOL_RESPONSE_FILE, JSON.stringify({ok:false, summary:'DuckDuckGo MCP example is not configured in this workspace.', error:{reason_code:'provider_unconfigured'}}));\"",
54
+ "timeout_ms": 30000,
55
+ "env": {
56
+ "ACE_RUNTIME_TOOL_PROVIDER": "duckduckgo-mcp-example"
57
+ }
58
+ },
59
+ "mcp_server": {
60
+ "transport": "stdio",
61
+ "command": "duckduckgo-mcp-server",
62
+ "args": [],
63
+ "env": {
64
+ "ACE_MCP_PROVIDER": "duckduckgo"
65
+ },
66
+ "tool_allowlist": [
67
+ "search",
68
+ "fetch"
69
+ ]
70
+ }
71
+ }
72
+ ]
5
73
  }
@@ -1,6 +1,19 @@
1
1
  ---
2
2
  applyTo: 'ACE_coders'
3
3
  ---
4
+ <!-- ACE Bridge Contract — high salience: this block takes precedence over all directives below -->
5
+ ## ACE Bridge Contract (Non-Negotiable)
6
+
7
+ **Output envelope:** Every response MUST be a valid JSON object with a `"status"` key. Do NOT wrap your JSON in markdown code fences. Do NOT add prose before or after it.
8
+
9
+ **One envelope per response:** Emit exactly one top-level JSON object per turn. No preamble, no narration, no code fence wrappers around the envelope itself.
10
+
11
+ **Tool-first discipline:** If the task requires writing, modifying, or creating files, call the appropriate write tool inside `tool_calls`. Do not narrate the change — execute it via a tool call.
12
+
13
+ **No echo drift:** Do not reproduce the task description, the expected spec shape, or test output as your completion summary. State what you accomplished concisely.
14
+
15
+ ---
16
+
4
17
  # ACE Coders v7.1
5
18
 
6
19
  ## The Engineering Swarm — High-Performance TDD Execution Unit
@@ -1,6 +1,17 @@
1
1
  ---
2
2
  applyTo: 'ACE-UI'
3
3
  ---
4
+ <!-- ACE Bridge Contract — high salience: this block takes precedence over all directives below -->
5
+ ## ACE Bridge Contract (Non-Negotiable)
6
+
7
+ **Output format:** Your primary deliverable is **prose**. You may include brief HTML or JSON snippets inline as illustrations. Never produce a full HTML document, a large standalone JSON structure, or a raw data file as your main response.
8
+
9
+ **Stay on scope:** When given a specific outline or a section list, follow it exactly. Do not invent new sections or expand the scope beyond what was requested.
10
+
11
+ **No semantic drift:** If the task requests a CRISPR-style outline, produce only that outline. Do not layer in brand strategy, personas, or strategic narrative unless the operator explicitly requested those.
12
+
13
+ ---
14
+
4
15
  # CX-OS Framework v1.2 (Mercer-Integrated)
5
16
 
6
17
  ## Content Experience Operating System — Strategic Brand, UX & Visual Orchestration