ennodia 0.3.0-rc.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/CONTRIBUTING.md +2 -19
  2. package/README.md +6 -7
  3. package/docs/comparisons/agent-frameworks.md +5 -5
  4. package/docs/comparisons/autogen.md +4 -4
  5. package/docs/comparisons/chathub.md +4 -4
  6. package/docs/comparisons/index.md +4 -4
  7. package/docs/comparisons/langgraph.md +4 -4
  8. package/docs/comparisons/mixture-of-agents.md +5 -5
  9. package/docs/comparisons/model-merging.md +5 -5
  10. package/docs/comparisons/openrouter.md +4 -4
  11. package/docs/concepts/compositional-audits.md +8 -6
  12. package/docs/concepts/data-governance.md +5 -9
  13. package/docs/concepts/how-ennodia-works.md +2 -2
  14. package/docs/concepts/interfaces-and-core.md +1 -1
  15. package/docs/concepts/second-opinions.md +5 -5
  16. package/docs/evidence/index.md +6 -13
  17. package/docs/evidence/measurement.md +6 -5
  18. package/docs/getting-started.md +37 -34
  19. package/docs/guides/agent-skills.md +7 -6
  20. package/docs/guides/budgets-and-limits.md +8 -6
  21. package/docs/guides/pragmatic-mode.md +65 -26
  22. package/docs/guides/recipes.md +1 -4
  23. package/docs/guides/running-better-audits.md +7 -7
  24. package/docs/guides/troubleshooting.md +0 -2
  25. package/docs/guides/understand-results.md +0 -2
  26. package/docs/index.md +2 -4
  27. package/docs/install.md +11 -9
  28. package/docs/reference/controlled-english.md +1 -3
  29. package/docs/reference/ennodia-io.md +7 -7
  30. package/docs/reference/mcp-tools.md +176 -18
  31. package/docs/reference/supported-harnesses.md +9 -4
  32. package/docs/roadmap.md +0 -2
  33. package/package.json +3 -10
  34. package/skills/pragmatic/SKILL.md +32 -13
  35. package/src/advisor.ts +1 -0
  36. package/src/budget.ts +8 -6
  37. package/src/cli.ts +31 -15
  38. package/src/compare.ts +42 -1
  39. package/src/compositional.ts +13 -1
  40. package/src/core.ts +22 -0
  41. package/src/diagnosis.ts +76 -6
  42. package/src/harnesses.ts +233 -10
  43. package/src/index.ts +6 -0
  44. package/src/pragmatic.ts +3 -10
  45. package/src/runs.ts +79 -13
  46. package/src/server.ts +87 -8
  47. package/src/tasks.ts +221 -35
  48. package/src/version.ts +1 -1
  49. package/bench/README.md +0 -34
  50. package/bench/bug-recall/run.ts +0 -339
  51. package/bench/bug-recall/scorer.ts +0 -424
  52. package/bench/fixtures/bug-recall/001-missing-await/input.ts +0 -33
  53. package/bench/fixtures/bug-recall/001-missing-await/oracle.json +0 -28
  54. package/bench/fixtures/bug-recall/001-missing-await/responses/claude-code-solo.md +0 -1
  55. package/bench/fixtures/bug-recall/001-missing-await/responses/codex-solo.md +0 -1
  56. package/bench/fixtures/bug-recall/001-missing-await/responses/ennodia-parallel-compare.md +0 -1
  57. package/bench/fixtures/bug-recall/002-timeout-drain/input.ts +0 -40
  58. package/bench/fixtures/bug-recall/002-timeout-drain/oracle.json +0 -28
  59. package/bench/fixtures/bug-recall/002-timeout-drain/responses/claude-code-solo.md +0 -1
  60. package/bench/fixtures/bug-recall/002-timeout-drain/responses/codex-solo.md +0 -1
  61. package/bench/fixtures/bug-recall/002-timeout-drain/responses/ennodia-parallel-compare.md +0 -1
  62. package/bench/fixtures/bug-recall/003-schema-contract/input.ts +0 -22
  63. package/bench/fixtures/bug-recall/003-schema-contract/oracle.json +0 -28
  64. package/bench/fixtures/bug-recall/003-schema-contract/responses/claude-code-solo.md +0 -1
  65. package/bench/fixtures/bug-recall/003-schema-contract/responses/codex-solo.md +0 -1
  66. package/bench/fixtures/bug-recall/003-schema-contract/responses/ennodia-parallel-compare.md +0 -1
  67. package/bench/fixtures/bug-recall/004-cancel-propagation/input.ts +0 -28
  68. package/bench/fixtures/bug-recall/004-cancel-propagation/oracle.json +0 -28
  69. package/bench/fixtures/bug-recall/004-cancel-propagation/responses/claude-code-solo.md +0 -1
  70. package/bench/fixtures/bug-recall/004-cancel-propagation/responses/codex-solo.md +0 -1
  71. package/bench/fixtures/bug-recall/004-cancel-propagation/responses/ennodia-parallel-compare.md +0 -1
  72. package/bench/results/.gitkeep +0 -1
  73. package/docs/evidence/building-ennodia.md +0 -66
  74. package/docs/evidence/docs-drift.md +0 -73
  75. package/docs/evidence/skill-trial.md +0 -68
  76. package/docs/reference/benchmarks.md +0 -64
  77. package/examples/docs-drift/README.md +0 -8
  78. package/examples/docs-drift/archive/migration.md +0 -4
  79. package/examples/docs-drift/check.ts +0 -7
  80. package/examples/docs-drift/config.ts +0 -8
  81. package/examples/docs-drift/demo.ts +0 -54
  82. package/examples/docs-drift/recorded-run.json +0 -16
  83. package/examples/skill-trial/README.md +0 -8
  84. package/examples/skill-trial/check.ts +0 -15
  85. package/examples/skill-trial/contract.md +0 -7
  86. package/examples/skill-trial/recorded-trial.json +0 -42
  87. package/examples/skill-trial/retry.ts +0 -4
@@ -19,7 +19,35 @@ Your agent will identify any client restart or reload needed to make the new too
19
19
  After setup, [try your first useful result](#your-first-useful-result).
20
20
  For manual setup, follow the instructions below.
21
21
 
22
- ## Manual Setup
22
+ ## Your first useful result
23
+
24
+ After installation, give your primary agent a small request:
25
+
26
+ ```text
27
+ Use Ennodia MCP to get one additional opinion on this function.
28
+ Choose an available agent. Keep the review read-only.
29
+ Return one concrete issue or explain that no issue was established.
30
+ Bring the findings back to this conversation.
31
+ ```
32
+
33
+ Start with one worker and a small set of files.
34
+ Discovery checks installed commands, not authentication, model access, or provider quota.
35
+ A live task establishes which configuration works in your environment.
36
+
37
+ Your agent can call `ennodia_list_harnesses`, then `ennodia_run` with a selected `harnessId`, `mode: "single"`, and `compare: false`.
38
+ Poll `ennodia_get_run` with the returned run identifier (ID).
39
+ Stop when the status is `succeeded`, `failed`, or `cancelled`.
40
+
41
+ Inspect the result before starting more work.
42
+ Use the [recipes](/docs/guides/recipes/) for a stuck task, a skill trial, or conflicting answers.
43
+ See [Understand Results](/docs/guides/understand-results/) when the attempt is incomplete or unhelpful.
44
+
45
+ Expect live runs to take time. A timeout budget is not a completion prediction.
46
+ Compare adds a Judge pass and a Result Advisor pass after child agents finish.
47
+
48
+ For a local development checkout, run `bun run verify` before relying on changes.
49
+
50
+ ## Manual setup
23
51
 
24
52
  ### Requirements
25
53
 
@@ -44,7 +72,7 @@ To use Bun directly, run `bunx ennodia`.
44
72
  The JSR package `@cherninlab/ennodia` exposes TypeScript modules for import.
45
73
  Use the npm package for the stdio MCP executable.
46
74
 
47
- ### Local Checkout
75
+ ### Local checkout
48
76
 
49
77
  Use a checkout to modify Ennodia:
50
78
 
@@ -55,7 +83,7 @@ bun install
55
83
  bun run verify
56
84
  ```
57
85
 
58
- ### MCP Client Config
86
+ ### MCP client config
59
87
 
60
88
  ```json
61
89
  {
@@ -83,40 +111,15 @@ For a local checkout, use the source file:
83
111
 
84
112
  Replace `/absolute/path/to/ennodia` with your local repository path.
85
113
 
114
+ Ennodia loads six core tools by default. For Plan Advisor, compositional slices, raw tasks, and skill installation, add `"--tools", "all"` to `args`. See [tool sets](/docs/reference/mcp-tools/#tool-sets).
115
+
86
116
  Use your client's supported configuration method.
87
117
  Preserve existing server entries.
88
118
  Reload the tools or restart the client if its setup instructions require this step.
89
119
 
90
- ## Your first useful result
91
-
92
- After installation, give your primary agent a small request:
93
-
94
- ```text
95
- Use Ennodia MCP to get one additional opinion on this function.
96
- Choose an available agent. Keep the review read-only.
97
- Return one concrete issue or explain that no issue was established.
98
- Bring the findings back to this conversation.
99
- ```
100
-
101
- Start with one worker and a small set of files.
102
- Discovery checks installed commands, not authentication, model access, or provider quota.
103
- A live task establishes which configuration works in your environment.
104
-
105
- Your agent can call `ennodia_list_harnesses`, then `ennodia_run` with a selected `harnessId`, `mode: "single"`, and `compare: false`.
106
- Poll `ennodia_get_run` with the returned run identifier (ID).
107
- Stop when the status is `succeeded`, `failed`, or `cancelled`.
108
-
109
- Inspect the result before starting more work.
110
- Use the [recipes](/docs/guides/recipes/) for a stuck task, a skill trial, or conflicting answers.
111
- See [Understand Results](/docs/guides/understand-results/) when the attempt is incomplete or unhelpful.
112
-
113
- Expect live runs to take time. A timeout budget is not a completion prediction.
114
- Compare adds a Judge pass and a Result Advisor pass after child agents finish.
115
-
116
- For a local development checkout, run `bun run verify` before relying on changes.
117
-
118
- ## Optional Team Advice
120
+ ## Optional team advice
119
121
 
122
+ Team advice uses the [full tool set](/docs/reference/mcp-tools/#tool-sets).
120
123
  For a proposed work split, call `ennodia_start_plan_advice`. The Plan Advisor
121
124
  proposes explicit harness, model, and skill assignments. It cannot execute them.
122
125
 
@@ -138,7 +141,7 @@ completed answers. Then the Result Advisor recommends one answer.
138
141
  If Judge analysis is not available, the Result Advisor can use only the
139
142
  candidate outputs. The Compare result shows this condition.
140
143
 
141
- ## Next Pages
144
+ ## Next pages
142
145
 
143
146
  - [Budgets and Limits](/docs/guides/budgets-and-limits/) explains
144
147
  `ennodia_estimate_budget` and run limits.
@@ -148,7 +151,7 @@ candidate outputs. The Compare result shows this condition.
148
151
  and installation notes.
149
152
  - [MCP Tools](/docs/reference/mcp-tools/) is the full parameter reference.
150
153
 
151
- ## Expected Behavior
154
+ ## Expected behavior
152
155
 
153
156
  An Ennodia run is visible. You can inspect:
154
157
 
@@ -3,6 +3,8 @@ title: Agent Skills
3
3
  description: Install bundled Ennodia skills in native harness locations and tell child agents to use them during a run.
4
4
  ---
5
5
 
6
+ Listing skills is in the core tool set. Installing them needs the [full tool set](/docs/reference/mcp-tools/#tool-sets).
7
+
6
8
  A new Agent Skill can help a task, add irrelevant advice, or make no difference.
7
9
  Try the skill in a separate Ennodia task and bring useful findings back to your main conversation.
8
10
 
@@ -11,9 +13,8 @@ Ennodia discovers that folder and requests the selected skill by name.
11
13
  It does not inline the full instructions into each delegated prompt.
12
14
 
13
15
  The primary agent can keep useful partial findings without adopting every recommendation.
14
- The [skill trial example](/docs/evidence/skill-trial/) shows a controlled small exercise.
15
16
 
16
- ## List Available Skills
17
+ ## List available skills
17
18
 
18
19
  ```json
19
20
  {
@@ -27,7 +28,7 @@ The [skill trial example](/docs/evidence/skill-trial/) shows a controlled small
27
28
  The response includes bundled skills, installed native skills, searched
28
29
  directories, and load warnings.
29
30
 
30
- ## Preview Installation
31
+ ## Preview installation
31
32
 
32
33
  Bundled skills use dry-run installation by default. The caller can inspect the
33
34
  planned writes before any change:
@@ -47,7 +48,7 @@ planned writes before any change:
47
48
 
48
49
  Review the planned paths. If they are correct, repeat with `dryRun: false`.
49
50
 
50
- ## Use a Skill in a Run
51
+ ## Use a skill in a run
51
52
 
52
53
  ```json
53
54
  {
@@ -81,7 +82,7 @@ Bundled skills include:
81
82
  | `release-readiness` | Public release candidate checks. |
82
83
  | `benchmark-critic` | Benchmark credibility and reproducibility review. |
83
84
 
84
- ## Native Install Locations
85
+ ## Native install locations
85
86
 
86
87
  | Harness | Project path | User path |
87
88
  | --- | --- | --- |
@@ -96,5 +97,5 @@ exact tool parameters.
96
97
  ## Main-agent delegation skill
97
98
 
98
99
  The bundled `pragmatic` skill guides the main agent through bounded delegation and result verification.
99
- Install it using `skillIds: ["pragmatic"]`. Do not pass it to workers through run `skillIds`.
100
+ Install it using `skillIds: ["pragmatic"]`. A delegated coordinator can use it when orchestration is part of its assignment.
100
101
  See [Pragmatic mode](/docs/guides/pragmatic-mode/) for the experimental recipes.
@@ -1,8 +1,10 @@
1
1
  ---
2
- title: Budgets and Limits
2
+ title: Budgets and limits
3
3
  description: How Ennodia estimates preflight input-token budgets and enforces local run limits before child agents start.
4
4
  ---
5
5
 
6
+ The tools on this page are in the [full tool set](/docs/reference/mcp-tools/#tool-sets). Add `--tools all` to the Ennodia server arguments to load them.
7
+
6
8
  Ennodia can estimate the input-token budget before a costly run starts. The
7
9
  estimate is a budget limit check, not a provider invoice. Child-task estimates
8
10
  are lower bounds.
@@ -13,7 +15,7 @@ not visible before the run.
13
15
  Use it before parallel work or long reviews. Also use it when the user limits
14
16
  cost, subscription use, or child-task count.
15
17
 
16
- ## What the Estimate Includes
18
+ ## What the estimate includes
17
19
 
18
20
  `ennodia_estimate_budget` reports:
19
21
 
@@ -29,7 +31,7 @@ cost, subscription use, or child-task count.
29
31
  The estimate does not claim to know provider billing, output tokens, tool-call
30
32
  cost, cache behavior, harness-internal context, or private subscription quota.
31
33
 
32
- ## Estimate Before a Run
34
+ ## Estimate before a run
33
35
 
34
36
  ```json
35
37
  {
@@ -54,7 +56,7 @@ If the estimate is too high, use one or more of these changes:
54
56
  - Decrease `maxOutputChars`.
55
57
  - Use a narrower first pass.
56
58
 
57
- ## Enforce Limits on a Run
59
+ ## Enforce limits on a run
58
60
 
59
61
  The same budget object can be passed to `ennodia_run`:
60
62
 
@@ -78,7 +80,7 @@ Ennodia checks these local limits before child tasks start. The run fails early
78
80
  if estimated input tokens or the child-task count exceed a cap. Ennodia does
79
81
  not start the excess model work.
80
82
 
81
- ## Subscription Limits
83
+ ## Subscription limits
82
84
 
83
85
  Subscription quota checks are conservative by design. Ennodia uses only
84
86
  supported local command-line interface (CLI) and application programming
@@ -93,7 +95,7 @@ supported local surface exposes a reliable account limit. An older fail-closed
93
95
  quota gate has been retired until at least one current harness exposes a real
94
96
  supported quota surface.
95
97
 
96
- ## Practical Defaults
98
+ ## Practical defaults
97
99
 
98
100
  - Start with one agent and a narrow task. Add attempts when they address a specific uncertainty.
99
101
  - Use `maxOutputChars` to keep Compare input bounded.
@@ -1,47 +1,76 @@
1
1
  ---
2
2
  title: Pragmatic mode
3
- description: Delegate bounded investigation and patch proposals to one explicitly selected model.
3
+ description: Organize independent model attempts and compare evidence against complete acceptance criteria.
4
4
  ---
5
5
 
6
- Pragmatic mode is experimental in `0.3.0-rc.2`, available through `ennodia@next`.
6
+ The tools on this page are in the [full tool set](/docs/reference/mcp-tools/#tool-sets). Add `--tools all` to the Ennodia server arguments to load them.
7
+
8
+ Pragmatic mode is an opt-in beta in `0.3.0`, available through `ennodia`.
7
9
  It helps your main agent delegate bounded work without loading entire logs or files into the main conversation.
8
10
  It does not guarantee lower costs or select the cheapest model automatically.
9
11
 
10
- ## Start a bounded task
12
+ ## Organize independent attempts
11
13
 
12
14
  Use this prompt in your main agent:
13
15
 
14
16
  ```text
15
- Use Ennodia MCP in Pragmatic mode to investigate the failing requests in /absolute/path/to/server.log.
16
- Select a supported lower-cost model from my configured harnesses.
17
- Return the affected timestamps, exact errors, likely cause, and evidence locations.
18
- Keep the full log outside this conversation. Verify the decisive evidence before recommending a fix.
17
+ Use Ennodia MCP in Pragmatic mode to solve this task.
18
+ Organize independent model attempts and tailor questions where useful.
19
+ Discover relevant skills and compare a skill trial with a matched trial without requested skills.
20
+ Compare the evidence with Judge and Result Advisor, then verify the complete acceptance criteria.
21
+ Count planning, all attempts, retries, comparison and verification in the total cost.
19
22
  ```
20
23
 
21
- The main agent can call the existing run tool:
24
+ Ennodia supports one main agent coordinating N independent workers.
25
+ N=1 remains useful for a specialist or handoff.
26
+ The main agent can delegate planning through Plan Advisor. It does not need to design every specialist question or locate every skill manually.
27
+
28
+ 1. Discover harnesses, supported model IDs and native skills.
29
+ 2. Start Plan Advisor with the full objective, model allowlists and explained limits.
30
+ 3. Inspect the validated plan and launch it with its exact digest.
31
+ 4. Inspect terminal task evidence and compare useful results with Judge and Result Advisor.
32
+ 5. Verify the complete task locally and include all attempts in the measurement.
33
+
34
+ For caller-defined assignments, compositional tasks support a separate prompt, model and skill list per slice.
35
+ A slice with `skillIds: []` requests no skills but can still discover native skills.
36
+ A controlled skill trial requires matching environments and evidence of actual skill loading.
37
+
38
+ ## Finish difficult work in chunks
39
+
40
+ Workers do not need to occupy a session for the full timeout.
41
+ Use bounded chunks for investigation, implementation and integrated verification.
42
+ Each chunk returns its artifacts, executed checks, remaining work and next step.
43
+ A completed chunk is distinct from an accepted complete task.
44
+
45
+ Independent workers can explore alternatives within a stage.
46
+ Compare evidence at useful decision points and continue with owned sessions or compact handoffs.
47
+ Count every chunk and handoff in the total cost.
48
+ A deadline is a maximum allowance, not a target duration.
49
+
50
+ ## Evidence contracts in version 0.3.0
51
+
52
+ `ennodia_run`, `ennodia_estimate_budget`, `ennodia_start_compositional` and `ennodia_estimate_compositional_budget` accept:
22
53
 
23
54
  ```json
24
55
  {
25
- "tool": "ennodia_run",
26
- "arguments": {
27
- "harnessId": "claude-code",
28
- "model": "<supported-model-from-your-configuration>",
29
- "cwd": "/absolute/path/to/project",
30
- "prompt": "Find the cause of failed requests in /absolute/path/to/server.log between 10:00 and 10:10. Do not modify files.",
31
- "pragmatic": {
32
- "recipe": "investigate",
33
- "acceptanceCriteria": "Cite exact errors and timestamps. Distinguish confirmed causes from hypotheses. Report any unread ranges."
34
- },
35
- "timeoutMs": 120000,
36
- "budget": { "maxChildTasks": 1 }
56
+ "pragmatic": {
57
+ "recipe": "investigate",
58
+ "acceptanceCriteria": "Cite decisive source evidence and executed checks. Report unresolved requirements."
37
59
  }
38
60
  }
39
61
  ```
40
62
 
41
- Replace the model placeholder with a supported identifier before calling the tool.
42
- The caller supplies both `harnessId` and `model`.
43
- The run uses `mode: single` and `compare: false`, including when these fields are omitted or set to `auto`.
44
- Explicit parallel execution or comparison is rejected before workers start.
63
+ The contract preserves routing and comparison choices. It does not force one worker.
64
+ Explicit models are optional. Omitted models use native harness defaults.
65
+
66
+ Use discovered model IDs for reproducible comparisons. Use compositional slices for different models on the same harness.
67
+ Version 0.3.0 preserves independent workers and comparison.
68
+
69
+ ### Select reasoning effort
70
+
71
+ Source builds accept `reasoningEffort` on `ennodia_run` and `ennodia_start` for Codex workers. For example, select `model: "gpt-5.6-luna"` with `reasoningEffort: "max"`, or `model: "gpt-6-astra"` with `reasoningEffort: "low"`, when supported by your installed Codex and account. Ennodia forwards the setting to the native CLI. It does not infer the cheapest setting. Other adapters reject explicit effort settings. Omit the field to preserve native defaults.
72
+
73
+ This setting applies to workers, not the Judge or Result Advisor. Run and task records preserve the requested setting. That does not prove the provider used it or establish its price.
45
74
 
46
75
  ## Get findings or a patch
47
76
 
@@ -50,7 +79,8 @@ Explicit parallel execution or comparison is rejected before workers start.
50
79
  | `investigate` | Return cited findings, small excerpts, coverage limits, and unresolved questions | Verify decisive evidence |
51
80
  | `patch` | Return a complete unified diff proposal without applying it | Review, apply, and test the patch |
52
81
 
53
- Both recipes instruct workers to avoid file changes, side effects, recursive delegation, and repeated failed approaches.
82
+ Both recipes instruct workers to avoid file changes, side effects and repeated failed approaches.
83
+ Additional delegation stays within caller-authorized scope and allowance and must be counted.
54
84
  These are worker instructions, not an enforced permission sandbox.
55
85
  Native harness permissions remain authoritative.
56
86
  A worker can fail to follow instructions, so use appropriate native permissions for sensitive work.
@@ -75,6 +105,7 @@ Use `ennodia_estimate_budget` with the same `pragmatic` settings and model to in
75
105
  Estimates do not measure total task spend, internal tool reads, or subscription quota consumption.
76
106
 
77
107
  The foundation does not retry automatically or track retries across separate runs.
108
+ Plan Advisor, independent workers, Judge and Result Advisor all contribute to total task cost.
78
109
  Escalate unresolved work in a separate run after inspecting its evidence.
79
110
  Compare total elapsed time, verified outcomes, and all reported usage across attempts before claiming savings.
80
111
 
@@ -82,4 +113,12 @@ Compare total elapsed time, verified outcomes, and all reported usage across att
82
113
 
83
114
  The bundled `pragmatic` skill guides delegation from your main conversation.
84
115
  Install it through [Agent Skills](/docs/guides/agent-skills/) using `skillIds: ["pragmatic"]`.
85
- Do not request this skill on workers through run `skillIds`.
116
+ A delegated coordinator can use this skill when its assignment includes orchestration.
117
+
118
+ In version 0.3.0, wait for the worker with `ennodia_get_run`, `waitMs: 30000`, and `includeEvents: false`. A nonterminal response means the worker is still running. Read its terminal answer and verify the acceptance criteria before reporting completion. The wait itself never cancels the run.
119
+
120
+ ## Deadlines, permissions and continuation
121
+
122
+ Workers receive an execution deadline and their configured permissions. Inspect partial findings before continuing. Use a normal authorized run for file edits.
123
+
124
+ See [execution deadlines and session continuation](/docs/reference/mcp-tools/#execution-deadlines), [Troubleshooting](/docs/guides/troubleshooting/) and [Budgets and Limits](/docs/guides/budgets-and-limits/) for details.
@@ -3,9 +3,7 @@ title: Recipes
3
3
  description: Three small ways to get useful help from Ennodia.
4
4
  ---
5
5
 
6
- # Start with one useful attempt
7
-
8
- A focused request is easier to check and integrate.
6
+ Start with one useful attempt. A focused request is easier to check and integrate.
9
7
  Give your primary agent the relevant files, attempted fixes, and the result you need.
10
8
 
11
9
  ## A task is stuck
@@ -30,7 +28,6 @@ Show which skill and model were requested and what remains unverified.
30
28
 
31
29
  Check native installation with your agent before the task starts.
32
30
  A requested skill is not proof that the worker loaded it.
33
- Use the [small skill trial](/docs/evidence/skill-trial/) to practice comparing two attempts.
34
31
 
35
32
  ## Two answers disagree
36
33
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Better Audits
2
+ title: Better audits
3
3
  description: How Ennodia audits can detect product problems that users see, not only consistency issues.
4
4
  ---
5
5
 
@@ -11,7 +11,7 @@ This pass can find broken links, mismatched documentation, release metadata erro
11
11
  errors, and copy drift. It does not prove that the page is clear to a first-time
12
12
  visitor.
13
13
 
14
- ## Quick Recipe
14
+ ## Quick recipe
15
15
 
16
16
  Use a source-grounded audit for answers that depend on documentation,
17
17
  standards, package behavior, or another product's public surface:
@@ -31,7 +31,7 @@ standards, package behavior, or another product's public surface:
31
31
  Install the skill first if the harness does not have it. See
32
32
  [Agent Skills](/docs/guides/agent-skills/).
33
33
 
34
- ## Pick the Audit Mode
34
+ ## Pick the audit mode
35
35
 
36
36
  Name the failure mode you want reviewers to catch.
37
37
 
@@ -50,7 +50,7 @@ For a large review, split the work into focused slices. Do not send the entire
50
50
  prompt to each reviewer. See
51
51
  [Compositional Audits](/docs/concepts/compositional-audits/).
52
52
 
53
- ## Landing Page Rubric
53
+ ## Landing page rubric
54
54
 
55
55
  For landing pages, require each reviewer to answer these questions:
56
56
 
@@ -64,7 +64,7 @@ For landing pages, require each reviewer to answer these questions:
64
64
  For Ennodia, use `mode: "parallel"` and `compare: true` for this type of review.
65
65
  A single source-only answer is not sufficient for product pages.
66
66
 
67
- ## Include Rendered Evidence
67
+ ## Include rendered evidence
68
68
 
69
69
  Source-only review misses visual problems. Before an Ennodia website review,
70
70
  include desktop and mobile screenshots. You can also use a harness with browser
@@ -79,7 +79,7 @@ Then inspect the child outputs for access errors.
79
79
  If a harness cannot read the files, put them in an accessible location and run
80
80
  the task again. Do not treat that failure as a normal design review.
81
81
 
82
- ## Ground Standards in Sources
82
+ ## Ground standards in sources
83
83
 
84
84
  Include primary sources when an audit depends on an external standard, registry
85
85
  convention, or product behavior. Require reviewers to separate facts from
@@ -99,7 +99,7 @@ The bundled `source-grounded-audit` skill supports this case. Install it in the
99
99
  harnesses that perform standards-sensitive audits. Then tell Ennodia to use the
100
100
  skill when the answer depends on external documentation.
101
101
 
102
- ## Good Prompt Shape
102
+ ## Good prompt shape
103
103
 
104
104
  ```text
105
105
  Audit this landing page as a first-time visitor, not as a code consistency
@@ -3,8 +3,6 @@ title: Troubleshooting
3
3
  description: Resolve failed starts without confusing configuration errors with model quality.
4
4
  ---
5
5
 
6
- # When an attempt cannot finish
7
-
8
6
  Start with the task’s failure reason and captured output.
9
7
  Use `ennodia_get_task` for details and `ennodia_list_harnesses` to inspect supported commands.
10
8
 
@@ -3,8 +3,6 @@ title: Understand results
3
3
  description: Distinguish useful findings, disagreement, missing evidence, and failed execution.
4
4
  ---
5
5
 
6
- # Understand the result
7
-
8
6
  Process completion is one signal. A useful answer also needs evidence that fits your task.
9
7
 
10
8
  | Result | Meaning | Next step |
package/docs/index.md CHANGED
@@ -3,8 +3,6 @@ title: What is Ennodia?
3
3
  description: Try other agents, models, and skills while staying in your familiar conversation.
4
4
  ---
5
5
 
6
- # Keep your agent. Get another way forward.
7
-
8
6
  Ennodia lets your primary artificial intelligence (AI) agent try another agent, model, or skill on a focused task.
9
7
  The findings return to your existing conversation.
10
8
 
@@ -17,7 +15,7 @@ Even an unsuccessful attempt can show which approach was tested under the record
17
15
  - [Get your first result](/docs/getting-started/).
18
16
  - [Choose a recipe](/docs/guides/recipes/).
19
17
  - [Understand the result](/docs/guides/understand-results/).
20
- - [Read a development case](/docs/evidence/building-ennodia/).
18
+ - [Read a recorded run](/articles/can-gemini-hear-this-file/).
21
19
 
22
20
  ## Your existing tools
23
21
 
@@ -33,7 +31,7 @@ A native agent can also choose unrequested skills from its environment.
33
31
  - [Agent skills](/docs/guides/agent-skills/)
34
32
  - [Troubleshooting](/docs/guides/troubleshooting/)
35
33
  - [Data movement and history](/docs/concepts/data-governance/)
36
- - [Examples and evidence](/docs/evidence/)
34
+ - [Evidence](/docs/evidence/)
37
35
  - [Roadmap](/docs/roadmap/)
38
36
  - [Technical reference](/docs/reference/mcp-tools/)
39
37
 
package/docs/install.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Installation for Agents
2
+ title: Installation for agents
3
3
  description: A copy-paste installation page for agents that install Ennodia in Codex, Claude Code, OpenCode, Antigravity, and other Model Context Protocol (MCP) clients.
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ This page gives setup instructions to the user's agent.
7
7
  Install Ennodia as a local Model Context Protocol (MCP) server.
8
8
  Then connect it to the user's preferred compatible client.
9
9
 
10
- ## Copy-Paste Prompt
10
+ ## Copy-Paste prompt
11
11
 
12
12
  ```text
13
13
  try-ennodia.cherninlab.com
@@ -16,7 +16,7 @@ try-ennodia.cherninlab.com
16
16
  The user can send this address in a new or existing agent conversation.
17
17
  The agent handles the setup steps below.
18
18
 
19
- ## Check the Environment
19
+ ## Check the environment
20
20
 
21
21
  1. Identify the user's client and the machine where Ennodia will run.
22
22
  2. Check that the client can launch a local standard input/output (stdio) MCP server.
@@ -31,7 +31,7 @@ If the current client cannot launch a local MCP server, explain the missing capa
31
31
  Use a compatible local client for Ennodia.
32
32
  See [Supported Harnesses](/docs/reference/supported-harnesses/) for the worker agents Ennodia can call.
33
33
 
34
- ## Install Command
34
+ ## Install command
35
35
 
36
36
  Use the npm package for normal MCP client installation:
37
37
 
@@ -42,7 +42,7 @@ npx -y ennodia
42
42
  Ennodia requires Bun `1.3.14` or newer. `npx` downloads Ennodia. Bun runs it.
43
43
  If the client supports Bun directly, use `bunx ennodia`.
44
44
 
45
- ## MCP Configuration
45
+ ## MCP configuration
46
46
 
47
47
  Add this server to the user's MCP client configuration:
48
48
 
@@ -70,12 +70,14 @@ For a local Ennodia checkout, use:
70
70
  }
71
71
  ```
72
72
 
73
+ Ennodia loads six core tools by default. For Plan Advisor, compositional slices, raw tasks, and skill installation, add `"--tools", "all"` to `args`. See [tool sets](/docs/reference/mcp-tools/#tool-sets).
74
+
73
75
  The configuration above shows the server command and arguments.
74
76
  Adapt its format to the client's documented configuration method.
75
77
  Reload the tools or restart the client only when its setup instructions require this step.
76
78
  Tell the user which step is needed before trying to call Ennodia.
77
79
 
78
- ## Get One Useful Result
80
+ ## Get one useful result
79
81
 
80
82
  After the client exposes Ennodia's tools, start with one small task:
81
83
 
@@ -98,7 +100,7 @@ The first run does not require separate planning, budget estimation, or Compare
98
100
  These tools remain available for larger tasks.
99
101
  See [MCP Tools](/docs/reference/mcp-tools/) for exact parameters and identifiers (IDs).
100
102
 
101
- ## Installed Components
103
+ ## Installed components
102
104
 
103
105
  Ennodia is a local MCP server. It lets the user's main agent request help from
104
106
  other installed agent CLI programs during the same task.
@@ -123,7 +125,7 @@ answer.
123
125
  Tell the user a real run can take minutes. Compare adds two serial model passes
124
126
  after the selected child agents finish.
125
127
 
126
- ## Example Requests
128
+ ## Example requests
127
129
 
128
130
  Use Ennodia when the user permits more model work to get a better answer than
129
131
  one agent usually gives.
@@ -148,7 +150,7 @@ Compare the results before you recommend the final documentation edit.
148
150
  Compare is model-led. The user does not normally need to judge the parallel
149
151
  answers. The trace remains available for inspection.
150
152
 
151
- ## Optional Next Steps
153
+ ## Optional next steps
152
154
 
153
155
  - Use [Budgets and Limits](/docs/guides/budgets-and-limits/) before costly
154
156
  parallel runs.
@@ -3,15 +3,13 @@ title: Controlled English
3
3
  description: Ennodia terminology and writing rules for ASD-STE100 Issue 9.
4
4
  ---
5
5
 
6
- # Controlled English
7
-
8
6
  Ennodia documentation uses ASD-STE100 Issue 9 as its writing standard.
9
7
  This policy applies to the README, documentation, website text, and visible asset text.
10
8
 
11
9
  Commands, API fields, status values, model IDs, and quoted interface text are data.
12
10
  Keep this data exact, even when its text does not use controlled English.
13
11
 
14
- ## Writing Rules
12
+ ## Writing rules
15
13
 
16
14
  - Use American English.
17
15
  - Use active voice when the agent is known.
@@ -57,7 +57,7 @@ Environment variables:
57
57
  | `ENNODIA_IO_MAX_REQUEST_BODY_SIZE` | Default request body byte cap. |
58
58
  | `ENNODIA_IO_MAX_CONCURRENT_CHAT_COMPLETIONS` | Default in-flight chat completion cap. |
59
59
 
60
- ## Security and Browser Access
60
+ ## Security and browser access
61
61
 
62
62
  IO binds to loopback by default and refuses non-loopback hosts unless an API key
63
63
  is configured. Bearer tokens are compared with a timing-safe comparison.
@@ -94,7 +94,7 @@ boundary.
94
94
  | `GET /v1/models` | Supported | Returns local virtual model IDs for compatible clients. |
95
95
  | `POST /v1/chat/completions` | Supported subset | Non-streaming text messages only. Requires a JSON media type. |
96
96
 
97
- ## Provider Options
97
+ ## Provider options
98
98
 
99
99
  Use provider options when building a settings screen:
100
100
 
@@ -135,7 +135,7 @@ Option statuses:
135
135
 
136
136
  Add `?includeUnavailable=false` to return only ready options.
137
137
 
138
- ## Virtual Models
138
+ ## Virtual models
139
139
 
140
140
  `GET /v1/models` returns local virtual models for OpenAI-compatible clients:
141
141
 
@@ -148,7 +148,7 @@ Add `?includeUnavailable=false` to return only ready options.
148
148
  Older aliases `ennodia-auto`, `ennodia/auto`, and `ennodia/compare` are accepted
149
149
  for compatibility. Prefer `local/*` IDs in new app integrations.
150
150
 
151
- ## Chat Completions
151
+ ## Chat completions
152
152
 
153
153
  Minimal request:
154
154
 
@@ -234,7 +234,7 @@ HTTP error response:
234
234
  - timeout, disappeared run, or start failure -> `502 ennodia_run_error`
235
235
  - failed run or run with `cancelled` status -> `502 ennodia_run_failed` plus run metadata
236
236
 
237
- ## Library Use
237
+ ## Library use
238
238
 
239
239
  Apps can import the same primitives without running the HTTP server:
240
240
 
@@ -249,7 +249,7 @@ const providerOptions = await listAppProviderOptions(core);
249
249
  The app stays in control of its settings UI, labels, persistence, and consent
250
250
  flow. Ennodia supplies local discovery and execution primitives.
251
251
 
252
- ## Smoke Test
252
+ ## Smoke test
253
253
 
254
254
  From a checkout:
255
255
 
@@ -260,7 +260,7 @@ bun run io:smoke
260
260
  The smoke test starts a local IO server and checks `/health`,
261
261
  `/v1/provider-options`, and `/v1/models` without launching child agents.
262
262
 
263
- ## Not Implemented
263
+ ## Not implemented
264
264
 
265
265
  IO deliberately rejects or omits:
266
266