agentic-engineering-harness 0.5.1 → 0.6.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 (69) hide show
  1. package/README.md +161 -215
  2. package/dist/agents/config.js +2 -0
  3. package/dist/agents/config.js.map +1 -1
  4. package/dist/audit/intent.d.ts +20 -0
  5. package/dist/audit/intent.js +42 -0
  6. package/dist/audit/intent.js.map +1 -0
  7. package/dist/audit/run.d.ts +46 -0
  8. package/dist/audit/run.js +147 -0
  9. package/dist/audit/run.js.map +1 -0
  10. package/dist/cli.js +2 -1
  11. package/dist/cli.js.map +1 -1
  12. package/dist/core/assets.d.ts +13 -0
  13. package/dist/core/assets.js +115 -0
  14. package/dist/core/assets.js.map +1 -0
  15. package/dist/core/config.js +6 -2
  16. package/dist/core/config.js.map +1 -1
  17. package/dist/core/controlPlane.js +1 -1
  18. package/dist/core/controlPlane.js.map +1 -1
  19. package/dist/core/init.js +7 -13
  20. package/dist/core/init.js.map +1 -1
  21. package/dist/core/types.d.ts +20 -0
  22. package/dist/entry.js +144 -3
  23. package/dist/entry.js.map +1 -1
  24. package/dist/issues/intake.d.ts +1 -1
  25. package/dist/paseo/capabilities.d.ts +24 -0
  26. package/dist/paseo/capabilities.js +104 -0
  27. package/dist/paseo/capabilities.js.map +1 -0
  28. package/dist/paseo/context.d.ts +45 -0
  29. package/dist/paseo/context.js +153 -0
  30. package/dist/paseo/context.js.map +1 -0
  31. package/dist/paseo/runtime.d.ts +31 -0
  32. package/dist/paseo/runtime.js +158 -0
  33. package/dist/paseo/runtime.js.map +1 -0
  34. package/dist/paseo/sdk.d.ts +79 -0
  35. package/dist/paseo/sdk.js +165 -0
  36. package/dist/paseo/sdk.js.map +1 -0
  37. package/dist/paseo/start.d.ts +16 -2
  38. package/dist/paseo/start.js +58 -77
  39. package/dist/paseo/start.js.map +1 -1
  40. package/dist/spec/openspec.d.ts +28 -0
  41. package/dist/spec/openspec.js +179 -0
  42. package/dist/spec/openspec.js.map +1 -0
  43. package/dist/toolchain/resolve.js +3 -0
  44. package/dist/toolchain/resolve.js.map +1 -1
  45. package/dist/toolchain/setup.js +2 -0
  46. package/dist/toolchain/setup.js.map +1 -1
  47. package/dist/version.d.ts +2 -0
  48. package/dist/version.js +6 -0
  49. package/dist/version.js.map +1 -0
  50. package/dist/workers/agentPrompt.js +24 -29
  51. package/dist/workers/agentPrompt.js.map +1 -1
  52. package/dist/workers/paseo.d.ts +0 -1
  53. package/dist/workers/paseo.js +67 -21
  54. package/dist/workers/paseo.js.map +1 -1
  55. package/docs/PASEO.md +87 -4
  56. package/docs/PUBLISHING.md +53 -44
  57. package/docs/V0.5.2.md +180 -0
  58. package/docs/V0.6.md +148 -0
  59. package/package.json +87 -12
  60. package/presets/agents/orchestration.jsonc +37 -0
  61. package/schemas/project.schema.json +13 -2
  62. package/skills/engineering-workflow/SKILL.md +110 -86
  63. package/skills/openspec-authoring/SKILL.md +26 -0
  64. package/skills/paseo-orchestration/SKILL.md +38 -0
  65. package/templates/AGENTS.md +36 -17
  66. package/templates/agents.source.jsonc +1 -1
  67. package/templates/openspec-config.yaml +24 -0
  68. package/templates/project.yaml +11 -2
  69. package/templates/toolchain.yaml +11 -1
@@ -1 +1 @@
1
- {"version":3,"file":"paseo.js","sourceRoot":"","sources":["../../src/workers/paseo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paseo.js","sourceRoot":"","sources":["../../src/workers/paseo.ts"],"names":[],"mappings":"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"}
package/docs/PASEO.md CHANGED
@@ -1,9 +1,92 @@
1
1
  # Paseo Integration
2
2
 
3
- Paseo is the default orchestration control plane because an existing lead agent can spawn an OpenCode subagent in the same workspace and keep controlling it remotely.
3
+ Paseo is AEH's default interactive orchestration surface. The integration separates **Paseo communication/session lifecycle** from **AEH deterministic workflow ownership**.
4
4
 
5
- The executor uses the scriptable flow `paseo run --background --quiet`, `paseo wait`, `paseo logs`, and `paseo send` for repairs. When the lead itself is a Paseo agent, Paseo supplies parent/workspace defaults automatically.
5
+ ## SDK-first control plane
6
6
 
7
- The lead remains responsible for architecture and final semantic review. Paseo is an execution/control primitive, not the source of engineering truth.
7
+ AEH uses the official TypeScript SDK, `@getpaseo/client`, as the primary control surface for agent creation, follow-up turns, status lookup and directory queries. The SDK is resolved directly when available and otherwise from the managed `@getpaseo/cli` installation. Paseo CLI already ships the matching client package, so AEH does not independently pin a second Paseo SDK version.
8
8
 
9
- For a directly container-isolated worker, configure `orchestration.provider: podman`. This trades Paseo child-session visibility for stronger process isolation. Advanced setups can instead configure a Paseo custom provider binary/wrapper around a containerized OpenCode CLI.
9
+ The CLI remains responsible for daemon bootstrap/recovery and is retained as a compatibility fallback when the SDK cannot be resolved or connected:
10
+
11
+ ```text
12
+ AEH
13
+ ├── daemon/bootstrap/recovery -> Paseo CLI
14
+ └── normal agent lifecycle -> @getpaseo/client
15
+ ```
16
+
17
+ Set `AEH_PASEO_FORCE_CLI=1` only when the compatibility path is deliberately required. `PASEO_DAEMON_URL` overrides the default SDK endpoint `ws://127.0.0.1:6767/ws`; `PASEO_DAEMON_PASSWORD` supplies daemon authentication when configured.
18
+
19
+ A system-prompt-only idle agent is an SDK-only invariant. If the SDK is unavailable, AEH refuses to degrade that lead creation into a CLI user turn because doing so would expose the bootstrap as conversational input.
20
+
21
+ ## Conversational lead
22
+
23
+ `aeh start` creates the lead as an idle Paseo agent. The AEH bootstrap is passed through the SDK's `systemPrompt`; it is no longer sent as the first user message and there is no synthetic `AEH READY` turn.
24
+
25
+ The bootstrap is intentionally thin. `AGENTS.md`, `.harness/skills/engineering-workflow/SKILL.md`, and the resolved AEH agent topology are authoritative for roles, charters, permissions and delegation. This avoids duplicating a role map inside every Paseo conversation and prevents prompt/configuration drift.
26
+
27
+ When the lead is running inside Paseo and Paseo exposes its orchestration tools, it may still use the native/MCP conversational surface and `/paseo-handoff`. Deterministic Harness-owned work, however, is created externally by AEH through the SDK.
28
+
29
+ ## Independent AEH agents
30
+
31
+ AEH-managed workers are created without the Paseo SDK `parent` option. A worker may be placed in a delivery workspace, but workspace placement does not establish parentage. This makes each worker a top-level Paseo agent rather than a child whose lifecycle belongs to the current lead conversation.
32
+
33
+ Workflow ownership is represented by labels instead:
34
+
35
+ ```text
36
+ aeh.project=<project>
37
+ aeh.kind=lead|worker
38
+ aeh.role=<logical-agent>
39
+ aeh.task=<task-id> # workers
40
+ aeh.profile=<profile> # when selected
41
+ aeh.generation=<n> # leads
42
+ ```
43
+
44
+ The shared Paseo runtime exposes list/inspect primitives over those labels. This lets AEH determine which logical agent is active for a task without scraping assistant prose or relying on parent/child nesting. The same labels survive lead context rotation, so a fresh lead can correlate existing workers with durable AEH run state.
45
+
46
+ ### Observe active agents
47
+
48
+ Use the top-level AEH command to inspect the live Paseo directory. The project label is applied automatically; filters are additive:
49
+
50
+ ```bash
51
+ aeh paseo agents
52
+ aeh paseo agents --status working
53
+ aeh paseo agents --kind worker --role backend-implementer
54
+ aeh paseo agents --task TASK-123 --json
55
+ ```
56
+
57
+ The tabular view reports status, logical role, task, kind, stable Paseo agent ID and title. `--json` returns the same normalized fields plus the complete AEH label set. This is the preferred way to answer which AEH agent is currently working without depending on Paseo parent/subagent nesting.
58
+
59
+ ## Runtime consolidation
60
+
61
+ Lead startup, `PaseoWorkerExecutor`, and generic `agentPrompt` execution all use the same managed Paseo runtime. That runtime owns SDK-first create/run/probe/list behavior and the CLI fallback. Individual worker paths should not add new hand-written `paseo run/send/wait/logs` loops.
62
+
63
+ Structured output is passed through the SDK `outputSchema` field. The compatibility CLI path continues to negotiate `--output-schema` and background capabilities dynamically.
64
+
65
+ ## Session policy
66
+
67
+ Default:
68
+
69
+ ```yaml
70
+ orchestration:
71
+ interactive:
72
+ sessionPolicy: fresh-on-start
73
+ ```
74
+
75
+ ```bash
76
+ aeh start # fresh idle lead
77
+ aeh start --resume # explicit compatible reuse
78
+ ```
79
+
80
+ Workspaces and durable AEH state remain reusable even though normal conversational context starts clean.
81
+
82
+ ## Context rotation
83
+
84
+ Default pressure policy is 70/80/90 percent. `aeh context guard` consumes a context ratio only when Paseo exposes a usable field; AEH does not guess.
85
+
86
+ At the handoff threshold it writes a deterministic `.harness/paseo/handoffs/*.json` artifact. From a managed Paseo lead it also creates the replacement lead automatically and bootstraps it from the handoff artifact and referenced sealed/run/audit/delivery state. Workers remain independent top-level agents associated through AEH labels and durable task/run state rather than lead parentage.
87
+
88
+ ## Trust boundary
89
+
90
+ Paseo owns communication, process and session lifecycle. It is not normative engineering truth. AEH TaskContracts, seals, deterministic reports, evidence graphs and quality gates continue to decide acceptance.
91
+
92
+ For stronger direct process isolation configure Podman sandboxing where appropriate; Paseo orchestration and worker sandboxing remain separate policy axes.
@@ -2,41 +2,62 @@
2
2
 
3
3
  The package name is `agentic-engineering-harness` and the public CLI commands are `aeh` and `engineering-harness`.
4
4
 
5
- The repository is prepared for npm Trusted Publishing through GitHub Actions OIDC. No long-lived npm publish token is stored in the repository workflow.
5
+ `package.json` is the single source of truth for the AEH version. Runtime CLI version output imports that package metadata; source files and CI must not maintain separate hard-coded version strings.
6
6
 
7
7
  ## Preflight
8
8
 
9
- Before any publication:
9
+ Every release candidate must pass:
10
10
 
11
11
  ```bash
12
12
  npm run release:check
13
13
  ```
14
14
 
15
- This must pass typecheck, tests, build and `npm pack --dry-run`.
15
+ This runs typecheck, the complete test suite, build and `npm pack --dry-run`.
16
16
 
17
- Check whether the desired package name already exists:
17
+ ## Automatic releases from `main`
18
18
 
19
- ```bash
20
- npm view agentic-engineering-harness version
19
+ `.github/workflows/publish.yml` is the single npm publishing workflow. A push to `main` starts an idempotent release pipeline unless the repository variable below is set:
20
+
21
+ ```text
22
+ AEH_AUTO_PUBLISH=false
21
23
  ```
22
24
 
23
- An npm `E404` means the name is not currently published. If another owner controls the name, choose a scoped package name before publishing rather than changing package identity after adoption.
25
+ The workflow performs the following steps:
24
26
 
25
- ## One-time first publication
27
+ 1. installs dependencies with `npm ci`;
28
+ 2. checks whether the current `package.json` version is already present on npm;
29
+ 3. if the current version is unpublished, it publishes that exact version first;
30
+ 4. otherwise it derives the next semantic version from commits since the latest `v*` tag:
31
+ - a breaking Conventional Commit (`type!:` or `BREAKING CHANGE:`) -> major;
32
+ - `feat:` -> minor;
33
+ - every other change -> patch;
34
+ 5. synchronizes `package.json` and `package-lock.json` with `npm version --no-git-tag-version`;
35
+ 6. runs `npm run release:check` on the exact candidate;
36
+ 7. commits the version metadata as `chore(release): vX.Y.Z [skip ci]` and creates the matching Git tag;
37
+ 8. publishes the package to npm with provenance;
38
+ 9. creates the GitHub Release for the tag.
26
39
 
27
- npm Trusted Publisher configuration requires an npm package to exist first. The first release therefore needs one deliberate maintainer-authenticated publish.
40
+ The release commit/tag is pushed with GitHub's repository token. GitHub does not recursively trigger ordinary push workflows for pushes created with that `GITHUB_TOKEN`, so the version commit does not create an infinite publish loop.
28
41
 
29
- From a clean checkout of the exact release commit:
42
+ The repository must allow the workflow identity to write the release metadata commit/tag. If branch rules forbid direct writes to `main`, grant the GitHub Actions identity the appropriate bypass/write permission or set `AEH_AUTO_PUBLISH=false` until the repository rule is adjusted. Source validation remains independent of publication.
30
43
 
31
- ```bash
32
- npm login
33
- npm run release:check
34
- npm publish --access public
44
+ ## Manual release control
45
+
46
+ `publish-npm` also supports `workflow_dispatch`. The `bump` input can be:
47
+
48
+ ```text
49
+ auto # Conventional Commit-derived bump
50
+ current # publish current version only if it is not already published
51
+ patch
52
+ minor
53
+ major
35
54
  ```
36
55
 
37
- Complete the npm account's required 2FA/interactive authentication. Do not create a persistent automation token solely for this bootstrap.
56
+ Manual dispatch is useful for retrying an external npm/OIDC failure or deliberately overriding the automatic bump classification. A `current` retry is also able to recreate a missing GitHub Release when the npm version and matching Git tag already exist; it will not fabricate a missing tag for an already-published package.
38
57
 
39
- After the first package exists, open the package settings on npmjs.com and configure a Trusted Publisher with:
58
+ ## npm authentication
59
+
60
+ The preferred steady-state path is npm Trusted Publishing with GitHub Actions OIDC. Configure the npm package Trusted Publisher with:
40
61
 
41
62
  ```text
42
63
  Provider: GitHub Actions
@@ -46,39 +67,21 @@ Workflow filename: publish.yml
46
67
  Allowed action: npm publish
47
68
  ```
48
69
 
49
- The workflow file lives at `.github/workflows/publish.yml`; npm expects only the filename in the Trusted Publisher configuration.
50
-
51
- For the strongest steady-state posture, after the OIDC flow has been proven once, disallow traditional publish tokens for the package and retain 2FA on the maintainer account.
70
+ The workflow grants `id-token: write`, which is required for OIDC. Modern npm clients can exchange the GitHub OIDC identity for short-lived publish authorization, avoiding a long-lived npm write token.
52
71
 
53
- ## Steady-state release
72
+ For bootstrap or compatibility, the workflow also accepts an optional GitHub Actions secret named `NPM_TOKEN`. If present, it is exported only for the `npm publish` step. Once Trusted Publishing is verified, prefer removing the long-lived token.
54
73
 
55
- 1. Change `package.json` to the intended semantic version.
56
- 2. Ensure the CLI dispatcher reports the same version.
57
- 3. Merge only after CI `release:check` passes.
58
- 4. Create/publish a GitHub Release tagged exactly:
74
+ If the package has never been published and npm does not permit Trusted Publisher configuration before first publication, perform one maintainer-authenticated bootstrap publish, then configure the Trusted Publisher above. The automatic workflow will subsequently see that version as published and continue normal semantic versioning.
59
75
 
60
- ```text
61
- v<package.json version>
62
- ```
63
-
64
- For example:
65
-
66
- ```text
67
- v0.4.16
68
- ```
76
+ ## Version policy
69
77
 
70
- 5. The `publish-npm` workflow will:
71
- - check out the release commit;
72
- - use Node 24 on a GitHub-hosted runner;
73
- - verify that the release tag exactly matches `package.json`;
74
- - run `npm run release:check` again;
75
- - execute `npm publish` using npm Trusted Publishing/OIDC.
78
+ The repository currently starts this release line at `0.6.1`. After that, normal merges do not require a human to edit the version manually. The release workflow owns the release metadata bump.
76
79
 
77
- If the tag/version check fails, no publish is attempted.
80
+ If a PR intentionally changes the package version to a version that is not yet on npm, that repository version wins: the next `main` publication ships it before any further automatic increment. This makes explicit release corrections and recovery deterministic.
78
81
 
79
82
  ## What enters the npm tarball
80
83
 
81
- The `files` allowlist in `package.json` publishes only:
84
+ The `files` allowlist in `package.json` publishes:
82
85
 
83
86
  ```text
84
87
  dist/
@@ -92,7 +95,7 @@ docs/
92
95
 
93
96
  plus npm-required package metadata such as `package.json`, README and LICENSE.
94
97
 
95
- This is why CI runs `npm pack --dry-run`: bootstrap templates, default agents, skills and toolchain schemas are runtime assets for `aeh init`, not merely repository documentation.
98
+ Packaged `skills/` and core `policies/` are runtime control-plane assets. `aeh init`, `aeh setup`, and `aeh start` reconcile those package assets into the consumer repository's `.harness` directory. `.harness/managed-assets.json` is versioned project state: it records hashes so missing or untouched files can be restored/upgraded, retired untouched assets can be removed, and project-local modifications remain protected as overrides.
96
99
 
97
100
  ## Consumer installation
98
101
 
@@ -103,8 +106,14 @@ npm install --save-dev agentic-engineering-harness
103
106
  npm exec aeh -- init --setup
104
107
  ```
105
108
 
106
- AEH should not be imported into the product runtime merely to use the engineering workflow.
109
+ After the repository has been initialized, a normal:
110
+
111
+ ```bash
112
+ npm exec aeh -- start
113
+ ```
114
+
115
+ reconciles managed Harness assets before loading the agent topology and starting Paseo.
107
116
 
108
117
  ## Failure policy
109
118
 
110
- Publication is a delivery operation, not an engineering-quality gate. A registry/OIDC/permission failure must not cause the source commit to be rewritten or force-pushed. Fix the external publishing configuration and re-run/recreate the release process as appropriate while preserving the already-validated source commit.
119
+ A registry/OIDC/permission failure is an external delivery failure, not a reason to rewrite validated engineering history. The release workflow is retry-safe: if the version commit/tag exists but npm publication failed, a manual rerun with `current` will attempt the same unpublished version rather than incrementing it again. If npm publication succeeded but GitHub Release creation failed, a `current` rerun can repair the release from the existing matching tag.
package/docs/V0.5.2.md ADDED
@@ -0,0 +1,180 @@
1
+ # v0.5.2 — Harness-governed engineering audits
2
+
3
+ v0.5.2 closes the read-only escape that existed in v0.5.1. A request no longer bypasses AEH merely because it does not mutate files. The interactive entrypoint now distinguishes a purely informational question from a read-only engineering operation.
4
+
5
+ ## Intent model
6
+
7
+ Every conversational request is classified at the top level as:
8
+
9
+ ```text
10
+ prompt
11
+ |
12
+ v
13
+ engineering intent
14
+ |-- INFORMATIONAL -> direct answer, no mutation
15
+ |-- AUDIT -> Harness read-only audit pipeline
16
+ `-- CHANGE -> deterministic QUICK | SPEC triage
17
+ ```
18
+
19
+ `AUDIT` is deliberately not a subtype of QUICK. A repository-wide review is valid audit scope even though it would be invalid QUICK scope, and it does not need artificial SDD artifacts merely to run a code review.
20
+
21
+ Examples:
22
+
23
+ ```text
24
+ "What does src/core/run.ts do?"
25
+ -> INFORMATIONAL
26
+
27
+ "review the repo and validate the code for improvements"
28
+ -> AUDIT
29
+
30
+ "find bugs and security risks"
31
+ -> AUDIT
32
+
33
+ "review this module and fix every bug you find"
34
+ -> CHANGE -> QUICK | SPEC
35
+ ```
36
+
37
+ The public classifier is:
38
+
39
+ ```bash
40
+ aeh intent "review the repo and validate the code for improvements"
41
+ ```
42
+
43
+ ## Audit workflow
44
+
45
+ Run an audit explicitly with:
46
+
47
+ ```bash
48
+ aeh audit "review the repo and validate the code for improvements"
49
+ ```
50
+
51
+ Optional hints include repeated `--file`, `--domain`, `--reviewer` and `--risk low|medium|high` values.
52
+
53
+ The pipeline is:
54
+
55
+ ```text
56
+ AUDIT request
57
+ |
58
+ v
59
+ worktree checkpoint
60
+ |
61
+ v
62
+ transient TaskContract + SHA-256 seal
63
+ |
64
+ v
65
+ hard-frozen control plane
66
+ |
67
+ v
68
+ configured deterministic validators
69
+ |
70
+ v
71
+ failure classification
72
+ |
73
+ v
74
+ read-only reviewer wave
75
+ |
76
+ v
77
+ finding normalization + deduplication
78
+ |
79
+ v
80
+ severity counts + DebtScore + Quality Gate evaluation
81
+ |
82
+ v
83
+ AuditReport
84
+ ```
85
+
86
+ Reviewer sessions are clamped to `write=deny`, `gitWrite=deny` and `delegate=deny`. The worktree is also checkpointed before the audit and rolled back afterward, so an accidental tracked mutation by a reviewer or tool does not survive. Any dirty paths that existed before the audit are restored to their exact prior contents.
87
+
88
+ The transient contract and seal make the audit compatible with the same direct, Paseo and supported Podman execution boundaries used elsewhere in AEH.
89
+
90
+ ## Deterministic failures are evidence
91
+
92
+ The lead must not silently reinterpret a failing validator as harmless environment noise. Audit reports classify failed checks when possible as:
93
+
94
+ ```text
95
+ ASSERTION_FAILURE
96
+ ENVIRONMENT_FAILURE
97
+ SANDBOX_DENIAL
98
+ MISSING_DEPENDENCY
99
+ TOOL_FAILURE
100
+ ```
101
+
102
+ For example:
103
+
104
+ ```text
105
+ spawnSync git EPERM: operation not permitted
106
+ -> SANDBOX_DENIAL
107
+ ```
108
+
109
+ That classification does not pretend the affected test passed. The audit remains `DEGRADED` and `productionSafe=false` when a deterministic failure prevents establishing correctness.
110
+
111
+ ## AuditReport
112
+
113
+ Reports are machine-readable local artifacts:
114
+
115
+ ```text
116
+ .harness/audits/<auditId>.json
117
+ .harness/audits/latest.json
118
+ ```
119
+
120
+ An AuditReport contains:
121
+
122
+ - frozen controller SHA;
123
+ - audited commit/base ref and pre-existing dirty paths;
124
+ - deterministic checks plus failure classes;
125
+ - reviewer sessions;
126
+ - normalized/deduplicated findings;
127
+ - severity counts;
128
+ - integer DebtPoints and displayed DebtScore;
129
+ - Final Quality Gate evaluation;
130
+ - conservative `productionSafe` status;
131
+ - any paths restored by the read-only rollback boundary.
132
+
133
+ Audit artifacts are generated state and are gitignored by `aeh init`.
134
+
135
+ ## Audit to remediation
136
+
137
+ AUDIT itself does not edit files or auto-remediate. If the user later says:
138
+
139
+ ```text
140
+ fix these
141
+ fix all findings
142
+ implement the audit recommendations
143
+ ```
144
+
145
+ the persistent lead reads `.harness/audits/latest.json` and the referenced report, reuses the normalized findings as evidence for a new `CHANGE`, and performs normal deterministic change triage.
146
+
147
+ ```text
148
+ AuditReport
149
+ |
150
+ v
151
+ new CHANGE request
152
+ |
153
+ v
154
+ QUICK | SPEC
155
+ |
156
+ v
157
+ sealed implementation workflow
158
+ ```
159
+
160
+ The audit result does not override safety policy. Security, architecture, schema, public API, cross-module or otherwise unsafe findings still force SPEC when normal change triage requires it.
161
+
162
+ ## Paseo behavior
163
+
164
+ `aeh start` now writes bootstrap version 2. Existing v0.5.1 lead sessions are intentionally incompatible and are recreated/replaced on the next start so the old broad read-only bypass cannot persist.
165
+
166
+ The standing interactive invariant is now:
167
+
168
+ > Every engineering operation must enter through the Harness, whether read-only or mutating. Only purely informational questions may bypass AEH.
169
+
170
+ Consequently this prompt:
171
+
172
+ ```text
173
+ review the repo and validate the code for improvements
174
+ ```
175
+
176
+ must route to `aeh audit`; the lead must not answer that it skipped AEH because the work is read-only.
177
+
178
+ ## Control-plane freeze
179
+
180
+ Self-hosted AEH snapshots now explicitly include `src/audit` and `src/paseo` in the controller trust boundary. Audit policy and the interactive routing code therefore cannot modify themselves and take effect inside the same active audit/run; changes govern only a later invocation after validation.
package/docs/V0.6.md ADDED
@@ -0,0 +1,148 @@
1
+ # v0.6 — Orchestration & Context Architecture
2
+
3
+ v0.6 changes the interactive model from a persistent lead that personally performs setup, discovery and specification authoring into a thin semantic orchestrator backed by bounded agents and durable Harness state.
4
+
5
+ ## Thin lead
6
+
7
+ The interactive lead owns user intent, high-level routing, true ambiguity and final semantic acceptance. It delegates operational work:
8
+
9
+ ```text
10
+ User
11
+ |
12
+ v
13
+ AEH Lead
14
+ |-- explorer repository discovery
15
+ |-- environment-manager doctor/setup/Paseo recovery
16
+ |-- planner decomposition + triage evidence
17
+ |-- spec-manager OpenSpec authoring
18
+ `-- AEH implementation/validation/review/delivery
19
+ ```
20
+
21
+ The lead should receive compact structured outcomes instead of retaining raw shell logs, full source files or long environment-repair transcripts.
22
+
23
+ ## Paseo-native orchestration first
24
+
25
+ When the current Paseo agent exposes its orchestration tools, the lead prefers `create_agent`, `send_agent_prompt`, `get_agent_status`, `get_agent_activity` and lifecycle controls, and uses `/paseo-handoff` for responsibility transfer. `/paseo-committee` and `/paseo-advisor` may provide advisory reasoning but never override deterministic AEH gates.
26
+
27
+ AEH still contains a CLI-based Paseo adapter because an external Node control-plane process cannot invoke tools local to the conversational agent. That adapter is now a compatibility fallback rather than the lead's normal orchestration mechanism.
28
+
29
+ The fallback negotiates the installed Paseo surface at runtime with `paseo --version` and help output. It does not assume `--quiet`, JSON output or daemon JSON support. This specifically avoids the failure mode where an older Paseo such as 0.3.1 rejects a flag expected by a newer CLI.
30
+
31
+ Recoverable daemon states such as stale PID, unreachable daemon or connection refused are stopped/restarted and verified before lead/worker launch.
32
+
33
+ ## Fresh lead sessions
34
+
35
+ `aeh start` now creates a fresh lead by default:
36
+
37
+ ```bash
38
+ aeh start
39
+ ```
40
+
41
+ Explicit reuse is:
42
+
43
+ ```bash
44
+ aeh start --resume
45
+ ```
46
+
47
+ This prevents a new invocation from inheriting stale conversational assumptions, obsolete bootstrap instructions or unnecessary historical context. Durable Git/TaskContract/seal/run/audit/delivery state remains reusable even when the conversation is fresh.
48
+
49
+ ## Context pressure and automatic lead rotation
50
+
51
+ Default policy:
52
+
53
+ ```text
54
+ <70% normal
55
+ 70-80% PRESSURE: stop exploratory work and increase delegation
56
+ >=80% HANDOFF_REQUIRED: write handoff and rotate to a fresh lead
57
+ >=90% HARD_HANDOFF: no further engineering work in the old lead
58
+ ```
59
+
60
+ The public check is:
61
+
62
+ ```bash
63
+ aeh context guard --agent "$PASEO_AGENT_ID"
64
+ ```
65
+
66
+ When Paseo exposes a usable context ratio and the guard runs inside a managed Paseo lead, AEH writes:
67
+
68
+ ```text
69
+ .harness/paseo/handoffs/lead-<timestamp>.json
70
+ ```
71
+
72
+ and automatically creates a fresh lead. The artifact records prior/new lead IDs, context usage, branch, latest run/audit/delivery references, and an optional semantic brief. The fresh lead is bootstrapped from this deterministic artifact and its referenced sealed state. Normal compaction-and-continue is not the preferred path once the handoff threshold is crossed.
73
+
74
+ If the installed Paseo version does not expose a stable context ratio, AEH returns `UNKNOWN`; it does not fabricate token usage. Fresh-on-start and delegation-first behavior still reduce accumulation.
75
+
76
+ ## OpenSpec as SPEC authoring backend
77
+
78
+ For non-QUICK changes, the lead no longer writes proposal/spec/design/tasks itself. `spec-manager` owns SPEC authoring with OpenSpec.
79
+
80
+ ```text
81
+ CHANGE
82
+ |
83
+ v
84
+ SPEC
85
+ |
86
+ v
87
+ spec-manager
88
+ |
89
+ |-- aeh spec prepare
90
+ |-- openspec status / instructions
91
+ |-- proposal/specs/design/tasks
92
+ |-- openspec validate --strict
93
+ `-- aeh spec compile
94
+ |
95
+ v
96
+ AEH proposal/spec/design/tasks/Gherkin
97
+ + TaskContract
98
+ + stable requirement IDs
99
+ + validator traceability
100
+ |
101
+ v
102
+ seal
103
+ ```
104
+
105
+ Commands:
106
+
107
+ ```bash
108
+ aeh spec prepare READABILITY-001 --title "Improve readability"
109
+ aeh spec compile READABILITY-001 --title "Improve readability"
110
+ aeh sdd validate READABILITY-001
111
+ aeh seal READABILITY-001
112
+ aeh run READABILITY-001
113
+ ```
114
+
115
+ OpenSpec is an **authoring source before freeze**. The compiled native AEH SDD/TaskContract and seal remain normative during implementation. OpenSpec apply commands do not replace AEH's worker, validation, review-convergence or delivery lifecycle.
116
+
117
+ The compiler records `authoring.provider=openspec`, change name and SHA-256 provenance. It maps OpenSpec `### Requirement:` / `#### Scenario:` content into stable AEH requirement IDs and Gherkin acceptance. Refactor/tooling changes without a delta spec receive an explicit behavior-preservation requirement.
118
+
119
+ A requirement validator may not be invented. AEH uses configured deterministic validators first, otherwise derives a project test/typecheck/build command from known project metadata. If it cannot establish executable requirement evidence, SPEC compilation fails instead of emitting a phantom validator.
120
+
121
+ ## Built-in orchestration preset
122
+
123
+ New projects extend:
124
+
125
+ ```jsonc
126
+ {
127
+ "extends": ["aeh:orchestration"]
128
+ }
129
+ ```
130
+
131
+ This extends `aeh:default`, makes lead/planner delegation-first, and adds:
132
+
133
+ - `environment-manager`;
134
+ - `spec-manager`.
135
+
136
+ OpenSpec is included in the declarative toolchain and automatically selected when `sdd.authoring.provider: openspec` is active.
137
+
138
+ ## Trust boundary
139
+
140
+ The authority order remains unchanged:
141
+
142
+ 1. user intent / true product decisions;
143
+ 2. sealed compiled AEH SDD + TaskContract;
144
+ 3. deterministic validators/evidence;
145
+ 4. quality/review gates;
146
+ 5. LLM summaries and advisory tools.
147
+
148
+ Paseo skills improve communication and lifecycle control; they do not become gate authority. OpenSpec improves specification authoring; it does not become mutable execution truth after the AEH seal.