@chllming/wave-orchestration 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +56 -501
- package/docs/README.md +39 -0
- package/docs/concepts/context7-vs-skills.md +94 -0
- package/docs/concepts/operating-modes.md +91 -0
- package/docs/concepts/runtime-agnostic-orchestration.md +95 -0
- package/docs/concepts/what-is-a-wave.md +133 -0
- package/docs/guides/planner.md +113 -0
- package/docs/guides/terminal-surfaces.md +80 -0
- package/docs/image.png +0 -0
- package/docs/plans/context7-wave-orchestrator.md +2 -0
- package/docs/plans/current-state.md +10 -0
- package/docs/plans/master-plan.md +3 -3
- package/docs/plans/migration.md +4 -3
- package/docs/plans/wave-orchestrator.md +27 -3
- package/docs/reference/runtime-config/README.md +19 -0
- package/docs/reference/skills.md +156 -0
- package/docs/roadmap.md +160 -564
- package/package.json +2 -1
- package/releases/manifest.json +32 -0
- package/scripts/wave-orchestrator/config.mjs +17 -0
- package/scripts/wave-orchestrator/context7.mjs +9 -0
- package/scripts/wave-orchestrator/coordination.mjs +16 -0
- package/scripts/wave-orchestrator/executors.mjs +24 -11
- package/scripts/wave-orchestrator/install.mjs +41 -2
- package/scripts/wave-orchestrator/launcher.mjs +131 -25
- package/scripts/wave-orchestrator/planner.mjs +1328 -0
- package/scripts/wave-orchestrator/project-profile.mjs +190 -0
- package/scripts/wave-orchestrator/shared.mjs +2 -0
- package/scripts/wave-orchestrator/skills.mjs +448 -0
- package/scripts/wave-orchestrator/terminals.mjs +16 -0
- package/scripts/wave-orchestrator/traces.mjs +23 -0
- package/scripts/wave-orchestrator/wave-files.mjs +299 -84
- package/scripts/wave.mjs +11 -0
- package/skills/provider-aws/SKILL.md +6 -0
- package/skills/provider-aws/skill.json +5 -0
- package/skills/provider-custom-deploy/SKILL.md +5 -0
- package/skills/provider-custom-deploy/skill.json +5 -0
- package/skills/provider-docker-compose/SKILL.md +6 -0
- package/skills/provider-docker-compose/skill.json +5 -0
- package/skills/provider-github-release/SKILL.md +6 -0
- package/skills/provider-github-release/skill.json +5 -0
- package/skills/provider-kubernetes/SKILL.md +6 -0
- package/skills/provider-kubernetes/skill.json +5 -0
- package/skills/provider-railway/SKILL.md +6 -0
- package/skills/provider-railway/adapters/claude.md +1 -0
- package/skills/provider-railway/adapters/codex.md +1 -0
- package/skills/provider-railway/adapters/local.md +1 -0
- package/skills/provider-railway/adapters/opencode.md +1 -0
- package/skills/provider-railway/skill.json +5 -0
- package/skills/provider-ssh-manual/SKILL.md +6 -0
- package/skills/provider-ssh-manual/skill.json +5 -0
- package/skills/repo-coding-rules/SKILL.md +7 -0
- package/skills/repo-coding-rules/skill.json +5 -0
- package/skills/role-deploy/SKILL.md +6 -0
- package/skills/role-deploy/skill.json +5 -0
- package/skills/role-documentation/SKILL.md +6 -0
- package/skills/role-documentation/skill.json +5 -0
- package/skills/role-evaluator/SKILL.md +6 -0
- package/skills/role-evaluator/skill.json +5 -0
- package/skills/role-implementation/SKILL.md +6 -0
- package/skills/role-implementation/skill.json +5 -0
- package/skills/role-infra/SKILL.md +6 -0
- package/skills/role-infra/skill.json +5 -0
- package/skills/role-integration/SKILL.md +6 -0
- package/skills/role-integration/skill.json +5 -0
- package/skills/role-research/SKILL.md +6 -0
- package/skills/role-research/skill.json +5 -0
- package/skills/runtime-claude/SKILL.md +6 -0
- package/skills/runtime-claude/skill.json +5 -0
- package/skills/runtime-codex/SKILL.md +6 -0
- package/skills/runtime-codex/skill.json +5 -0
- package/skills/runtime-local/SKILL.md +5 -0
- package/skills/runtime-local/skill.json +5 -0
- package/skills/runtime-opencode/SKILL.md +6 -0
- package/skills/runtime-opencode/skill.json +5 -0
- package/skills/wave-core/SKILL.md +7 -0
- package/skills/wave-core/skill.json +5 -0
- package/wave.config.json +27 -0
package/docs/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Wave Documentation
|
|
2
|
+
|
|
3
|
+
This repository now uses a layered docs structure so operators, maintainers, and adopting repos can find the right level of detail quickly.
|
|
4
|
+
|
|
5
|
+
## Suggested Structure
|
|
6
|
+
|
|
7
|
+
- `docs/concepts/`
|
|
8
|
+
Mental models and architecture. Read these first if you want to understand what a wave is, how runtime-agnostic execution works, or how Context7 differs from skills.
|
|
9
|
+
- `docs/guides/`
|
|
10
|
+
Task-oriented workflows. Use these when you need to set up the planner, choose an operating mode, or decide how to run tmux and terminal surfaces.
|
|
11
|
+
- `docs/reference/`
|
|
12
|
+
Exact command, config, and file-format details. Use this when you need precise key names, runtime options, or bundle structure.
|
|
13
|
+
- `docs/plans/`
|
|
14
|
+
Starter plan docs, runbooks, roadmap, and current-state pages that ship with the package and seed adopting repositories.
|
|
15
|
+
- `docs/research/`
|
|
16
|
+
Source index for the external papers and articles that informed the harness design. Hydrated caches stay local and ignored.
|
|
17
|
+
|
|
18
|
+
## Start Here
|
|
19
|
+
|
|
20
|
+
- New to Wave:
|
|
21
|
+
Read [concepts/what-is-a-wave.md](./concepts/what-is-a-wave.md), [concepts/runtime-agnostic-orchestration.md](./concepts/runtime-agnostic-orchestration.md), and [concepts/context7-vs-skills.md](./concepts/context7-vs-skills.md).
|
|
22
|
+
- Drafting or revising waves:
|
|
23
|
+
Read [guides/planner.md](./guides/planner.md) and then the operator runbook in [plans/wave-orchestrator.md](./plans/wave-orchestrator.md).
|
|
24
|
+
- Running live waves:
|
|
25
|
+
Read [guides/terminal-surfaces.md](./guides/terminal-surfaces.md), [concepts/operating-modes.md](./concepts/operating-modes.md), and [plans/wave-orchestrator.md](./plans/wave-orchestrator.md).
|
|
26
|
+
- Tuning runtime behavior:
|
|
27
|
+
Read [reference/runtime-config/README.md](./reference/runtime-config/README.md) and [reference/skills.md](./reference/skills.md).
|
|
28
|
+
|
|
29
|
+
## Package vs Repo-Owned Material
|
|
30
|
+
|
|
31
|
+
- Package-owned generic runtime docs live here under `docs/`.
|
|
32
|
+
- Repo-specific policy should stay in:
|
|
33
|
+
- `wave.config.json`
|
|
34
|
+
- `docs/agents/*.md`
|
|
35
|
+
- `skills/`
|
|
36
|
+
- `docs/plans/waves/`
|
|
37
|
+
- the repository source itself
|
|
38
|
+
|
|
39
|
+
That split keeps the engine generic while letting each adopting repository own its actual operating rules.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Context7 vs Skills
|
|
2
|
+
|
|
3
|
+
Context7 and skills solve different problems.
|
|
4
|
+
|
|
5
|
+
Use Context7 for external library truth. Use skills for repo-owned, reusable operating knowledge.
|
|
6
|
+
|
|
7
|
+
## Short Version
|
|
8
|
+
|
|
9
|
+
- Context7
|
|
10
|
+
Up-to-date third-party library or API context.
|
|
11
|
+
- Skills
|
|
12
|
+
Reusable guidance tailored to your repository, environments, roles, and runtime choices.
|
|
13
|
+
|
|
14
|
+
## Comparison
|
|
15
|
+
|
|
16
|
+
| Surface | Context7 | Skills |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| Primary purpose | External docs and SDK truth | Internal reusable operating guidance |
|
|
19
|
+
| Typical source | `docs/context7/bundles.json` and fetched snippets | `skills/<skill-id>/skill.json` and `SKILL.md` |
|
|
20
|
+
| Ownership | Package or repo operator config | Repository maintainers |
|
|
21
|
+
| Scope | Library versions, APIs, setup syntax | Coding rules, deploy norms, repo conventions, workflow rules |
|
|
22
|
+
| Selection | Wave defaults plus per-agent `### Context7` | Base plus role, runtime, deploy-kind, and per-agent `### Skills` |
|
|
23
|
+
| Change rate | Often changes with external libraries | Changes when your repo or environment changes |
|
|
24
|
+
| Projection | Injected as prompt context | Projected into runtime-specific overlays and prompt context |
|
|
25
|
+
|
|
26
|
+
## When To Use Context7
|
|
27
|
+
|
|
28
|
+
Use Context7 when the agent needs information that lives outside the repo and can change over time, such as:
|
|
29
|
+
|
|
30
|
+
- framework APIs
|
|
31
|
+
- SDK method signatures
|
|
32
|
+
- library setup syntax
|
|
33
|
+
- version-specific behavior
|
|
34
|
+
- hosted service docs
|
|
35
|
+
|
|
36
|
+
Context7 is intentionally narrow. It is for third-party truth, not for your repo's own architecture or policies.
|
|
37
|
+
|
|
38
|
+
## When To Use Skills
|
|
39
|
+
|
|
40
|
+
Use skills when the guidance is reusable, repo-owned, and should survive across waves, roles, or runtimes, such as:
|
|
41
|
+
|
|
42
|
+
- coding norms
|
|
43
|
+
- review expectations
|
|
44
|
+
- environment-specific rules
|
|
45
|
+
- Railway, Kubernetes, or GitHub release procedures
|
|
46
|
+
- runtime-specific instructions for Codex, Claude, or OpenCode
|
|
47
|
+
- role-oriented heuristics for implementation, deploy, evaluator, or research agents
|
|
48
|
+
|
|
49
|
+
## What Remains Authoritative
|
|
50
|
+
|
|
51
|
+
Neither Context7 nor skills replace the actual repo.
|
|
52
|
+
|
|
53
|
+
The highest-authority sources are still:
|
|
54
|
+
|
|
55
|
+
- repository source
|
|
56
|
+
- `wave.config.json`
|
|
57
|
+
- wave markdown
|
|
58
|
+
- role prompts in `docs/agents/*.md`
|
|
59
|
+
- shared plan docs
|
|
60
|
+
- the generated shared summary and inboxes for the active run
|
|
61
|
+
|
|
62
|
+
Skills are additive guidance. Context7 is non-canonical external context. The repo and wave artifacts remain authoritative.
|
|
63
|
+
|
|
64
|
+
## How They Work Together
|
|
65
|
+
|
|
66
|
+
A typical deploy-focused wave might use both:
|
|
67
|
+
|
|
68
|
+
- Context7
|
|
69
|
+
For the latest official framework or platform docs.
|
|
70
|
+
- Skills
|
|
71
|
+
For repo-specific deploy rules, Railway conventions, and runtime-specific execution guidance.
|
|
72
|
+
|
|
73
|
+
That combination keeps the agent grounded in both external truth and local operating rules.
|
|
74
|
+
|
|
75
|
+
## Runtime Behavior
|
|
76
|
+
|
|
77
|
+
Both surfaces are runtime aware, but in different ways:
|
|
78
|
+
|
|
79
|
+
- Context7 is fetched and injected into the compiled prompt.
|
|
80
|
+
- Skills are resolved after executor selection and then projected into the runtime-specific overlay surface for that executor.
|
|
81
|
+
|
|
82
|
+
Because of that:
|
|
83
|
+
|
|
84
|
+
- changing Context7 selection changes the prompt fingerprint
|
|
85
|
+
- changing resolved skills also changes the prompt fingerprint and trace metadata
|
|
86
|
+
|
|
87
|
+
## Best Practice
|
|
88
|
+
|
|
89
|
+
- Put version-sensitive third-party docs into Context7.
|
|
90
|
+
- Put stable repo or environment playbooks into skills.
|
|
91
|
+
- Keep wave prompts focused on the specific assignment, not long-lived reusable rules.
|
|
92
|
+
- If the same guidance is repeated across waves, promote it into a skill.
|
|
93
|
+
|
|
94
|
+
For exact skill bundle layout and resolution order, see [reference/skills.md](../reference/skills.md).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Oversight, Dark-Factory, And Human Feedback
|
|
2
|
+
|
|
3
|
+
Wave now has an explicit planning vocabulary for execution posture.
|
|
4
|
+
|
|
5
|
+
Today that posture is captured in project profile memory and planner output. The deeper runtime policy attached to those modes is still roadmap work, so this page distinguishes what is already shipped from what is still a convention.
|
|
6
|
+
|
|
7
|
+
## The Two Postures
|
|
8
|
+
|
|
9
|
+
- `oversight`
|
|
10
|
+
Human review and intervention are expected parts of the operating model for risky work.
|
|
11
|
+
- `dark-factory`
|
|
12
|
+
The goal is end-to-end execution without routine human intervention.
|
|
13
|
+
|
|
14
|
+
These values are stored in `.wave/project-profile.json` and emitted into planner-generated specs and wave markdown.
|
|
15
|
+
|
|
16
|
+
## What Ships Today
|
|
17
|
+
|
|
18
|
+
Today the runtime ships:
|
|
19
|
+
|
|
20
|
+
- project-profile memory for default oversight mode
|
|
21
|
+
- planner prompts that ask for oversight mode
|
|
22
|
+
- generated specs and waves that record the chosen mode
|
|
23
|
+
- deploy-environment memory that helps infra and release planning
|
|
24
|
+
- orchestrator-first clarification handling and human feedback queueing
|
|
25
|
+
|
|
26
|
+
The runtime does not yet enforce a separate hard policy profile for `dark-factory` beyond what is already encoded in the wave itself.
|
|
27
|
+
|
|
28
|
+
## How To Interpret The Modes Right Now
|
|
29
|
+
|
|
30
|
+
Treat them as planning posture:
|
|
31
|
+
|
|
32
|
+
- `oversight`
|
|
33
|
+
Default when a human operator should expect to inspect progress, answer questions, or approve risky transitions.
|
|
34
|
+
- `dark-factory`
|
|
35
|
+
Use only when the wave already has explicit environment modeling, validation, rollback posture, and clear closure signals.
|
|
36
|
+
|
|
37
|
+
## Human Feedback Is Not The Same Thing
|
|
38
|
+
|
|
39
|
+
Human feedback is a runtime escalation mechanism, not an operating mode.
|
|
40
|
+
|
|
41
|
+
The launcher flow is:
|
|
42
|
+
|
|
43
|
+
1. agent emits a clarification request or blocker
|
|
44
|
+
2. the orchestrator tries to resolve it from repo state, policy, ownership, or targeted rerouting
|
|
45
|
+
3. only unresolved items become human feedback tickets
|
|
46
|
+
4. those tickets stay visible in ledgers, summaries, and traces until resolved
|
|
47
|
+
|
|
48
|
+
That means even `oversight` mode still tries to keep routine clarification inside the orchestration loop before escalating to a human.
|
|
49
|
+
|
|
50
|
+
## Oversight Mode Best Fit
|
|
51
|
+
|
|
52
|
+
Choose `oversight` when:
|
|
53
|
+
|
|
54
|
+
- deploy or infra mutation is live and risky
|
|
55
|
+
- the environment model is incomplete
|
|
56
|
+
- rollback steps are still implicit
|
|
57
|
+
- legal, compliance, or release decisions need explicit human sign-off
|
|
58
|
+
- the repo is still shaping its skills and closure rules
|
|
59
|
+
|
|
60
|
+
## Dark-Factory Best Fit
|
|
61
|
+
|
|
62
|
+
Choose `dark-factory` only when all of these are already true:
|
|
63
|
+
|
|
64
|
+
- deploy environments are typed and explicit
|
|
65
|
+
- runtime and credential expectations are known
|
|
66
|
+
- validation commands are concrete
|
|
67
|
+
- rollback or recovery posture is documented
|
|
68
|
+
- closure evidence is machine-checkable or strongly operator-visible
|
|
69
|
+
- missing context would be treated as a planning failure, not something to improvise live
|
|
70
|
+
|
|
71
|
+
## Best Practice
|
|
72
|
+
|
|
73
|
+
Default to `oversight` until the repo has earned `dark-factory`.
|
|
74
|
+
|
|
75
|
+
That usually means:
|
|
76
|
+
|
|
77
|
+
- stable skills for deploy and infra work
|
|
78
|
+
- consistent deploy-environment naming
|
|
79
|
+
- strong validation commands
|
|
80
|
+
- reliable docs and trace review habits
|
|
81
|
+
- low ambiguity about who owns live mutation
|
|
82
|
+
|
|
83
|
+
## Relationship To The Roadmap
|
|
84
|
+
|
|
85
|
+
The roadmap still includes stronger explicit oversight vs dark-factory workflows. What is shipped today is the planning foundation:
|
|
86
|
+
|
|
87
|
+
- stored project defaults
|
|
88
|
+
- typed values in planner output
|
|
89
|
+
- better environment modeling
|
|
90
|
+
|
|
91
|
+
The stricter execution semantics are the next step, not a hidden already-finished feature.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Runtime-Agnostic Orchestration
|
|
2
|
+
|
|
3
|
+
Wave is runtime agnostic at the orchestration layer.
|
|
4
|
+
|
|
5
|
+
That means planning, coordination, closure, and traces do not depend on whether the selected executor is Codex, Claude Code, OpenCode, or the local smoke executor.
|
|
6
|
+
|
|
7
|
+
## What Stays The Same Across Runtimes
|
|
8
|
+
|
|
9
|
+
These layers are runtime-neutral:
|
|
10
|
+
|
|
11
|
+
- wave parsing and validation
|
|
12
|
+
- component and closure gates
|
|
13
|
+
- compiled shared summaries and per-agent inboxes
|
|
14
|
+
- coordination log and rendered message board
|
|
15
|
+
- helper assignments and dependency handling
|
|
16
|
+
- integration summaries, docs queues, and ledgers
|
|
17
|
+
- dry-run previews
|
|
18
|
+
- trace bundles and replay metadata
|
|
19
|
+
|
|
20
|
+
The runtime only changes at the last step, when the launcher translates the resolved assignment into an executor-specific invocation.
|
|
21
|
+
|
|
22
|
+
## Where Runtime-Specific Logic Lives
|
|
23
|
+
|
|
24
|
+
Runtime-specific behavior is isolated to the executor adapter layer:
|
|
25
|
+
|
|
26
|
+
- Codex
|
|
27
|
+
`codex exec` invocation, sandbox flags, `--add-dir`, JSON mode, search, images, and other `exec` flags.
|
|
28
|
+
- Claude
|
|
29
|
+
`claude -p` plus system-prompt overlay, settings merge, hooks, and permission surface.
|
|
30
|
+
- OpenCode
|
|
31
|
+
`opencode run` plus generated `opencode.json`, attached files, and runtime instruction overlays.
|
|
32
|
+
- Local
|
|
33
|
+
A smoke executor used for prompt and closure verification without a real hosted runtime.
|
|
34
|
+
|
|
35
|
+
The orchestration substrate above those adapters does not need to know how the runtime transports prompts.
|
|
36
|
+
|
|
37
|
+
## Why This Matters
|
|
38
|
+
|
|
39
|
+
Runtime agnosticism gives you:
|
|
40
|
+
|
|
41
|
+
- the same plan and closure model across vendors
|
|
42
|
+
- replay and audit surfaces that do not care which runtime produced the work
|
|
43
|
+
- per-role runtime choice without rewriting authoring conventions
|
|
44
|
+
- retry-time fallback without inventing a second planning model
|
|
45
|
+
|
|
46
|
+
## Runtime Resolution
|
|
47
|
+
|
|
48
|
+
Executor choice resolves in a fixed order:
|
|
49
|
+
|
|
50
|
+
1. explicit agent `### Executor` id
|
|
51
|
+
2. executor profile id
|
|
52
|
+
3. lane role default
|
|
53
|
+
4. CLI `--executor`
|
|
54
|
+
5. global default
|
|
55
|
+
|
|
56
|
+
After that choice is final, the launcher resolves runtime-specific overlays and any runtime-attached skill packs.
|
|
57
|
+
|
|
58
|
+
## Fallback And Mix Policy
|
|
59
|
+
|
|
60
|
+
Wave is not runtime blind. It is runtime agnostic, but still runtime aware.
|
|
61
|
+
|
|
62
|
+
- runtime mix targets can cap how many agents use a given executor
|
|
63
|
+
- executor profiles can declare fallbacks
|
|
64
|
+
- lane policy can supply default executor choices by role
|
|
65
|
+
- retries can reassign an agent to a policy-safe fallback runtime
|
|
66
|
+
|
|
67
|
+
The important part is that fallback does not change the higher-level wave contract. The runtime changes, but the ownership, closure, and trace model remain the same.
|
|
68
|
+
|
|
69
|
+
## Skills Across Runtimes
|
|
70
|
+
|
|
71
|
+
The skill system follows the same pattern:
|
|
72
|
+
|
|
73
|
+
- `skills/` is the canonical repo-owned source
|
|
74
|
+
- the launcher resolves skill ids without caring which runtime will consume them
|
|
75
|
+
- the executor adapter projects those skills into the surface each runtime understands
|
|
76
|
+
|
|
77
|
+
Examples:
|
|
78
|
+
|
|
79
|
+
- Codex receives skill bundle directories through `--add-dir`
|
|
80
|
+
- Claude receives merged skill text through the generated system prompt overlay
|
|
81
|
+
- OpenCode receives skill instructions and attached files through `opencode.json` and `--file`
|
|
82
|
+
- Local receives prompt-only projections
|
|
83
|
+
|
|
84
|
+
The bundle is shared. The projection is runtime specific.
|
|
85
|
+
|
|
86
|
+
## Best Practice
|
|
87
|
+
|
|
88
|
+
Keep planning, ownership, and proof requirements runtime neutral whenever possible. Use runtime-specific settings only for:
|
|
89
|
+
|
|
90
|
+
- transport details
|
|
91
|
+
- model or budget selection
|
|
92
|
+
- safety and permission settings
|
|
93
|
+
- runtime-native adapter instructions
|
|
94
|
+
|
|
95
|
+
That separation is what keeps the orchestrator portable instead of turning it into a Codex-only or Claude-only harness.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# What Is A Wave?
|
|
2
|
+
|
|
3
|
+
A wave is the main planning and execution unit in Wave Orchestration.
|
|
4
|
+
|
|
5
|
+
It is not just a prompt file. A wave is a bounded slice of repository work with:
|
|
6
|
+
|
|
7
|
+
- explicit scope
|
|
8
|
+
- named owners
|
|
9
|
+
- runtime and context requirements
|
|
10
|
+
- proof and closure rules
|
|
11
|
+
- durable coordination state
|
|
12
|
+
- replayable execution artifacts
|
|
13
|
+
|
|
14
|
+
## Core Terms
|
|
15
|
+
|
|
16
|
+
- Lane
|
|
17
|
+
An ordered sequence of waves. The default lane in this repo is `main`.
|
|
18
|
+
- Wave
|
|
19
|
+
One numbered work package inside a lane, usually stored as `docs/plans/waves/wave-<n>.md`.
|
|
20
|
+
- Agent
|
|
21
|
+
One role inside the wave, such as implementation, integration, documentation, evaluator, infra, or deploy.
|
|
22
|
+
- Attempt
|
|
23
|
+
One execution pass of a wave. A wave can have multiple attempts due to retries or fallback.
|
|
24
|
+
- Closure
|
|
25
|
+
The final proof pass that decides whether the wave is actually done, not just partially implemented.
|
|
26
|
+
|
|
27
|
+
## Why Waves Exist
|
|
28
|
+
|
|
29
|
+
Waves force a higher planning bar than ad hoc prompts. A good wave answers:
|
|
30
|
+
|
|
31
|
+
- What is changing now, and why now?
|
|
32
|
+
- Which components or docs are in scope?
|
|
33
|
+
- Which agent owns each slice?
|
|
34
|
+
- What evidence closes the wave?
|
|
35
|
+
- Which dependencies, helper requests, or escalations can still block completion?
|
|
36
|
+
|
|
37
|
+
## Wave Anatomy
|
|
38
|
+
|
|
39
|
+
Wave markdown is the authored execution surface today. A typical wave can include:
|
|
40
|
+
|
|
41
|
+
- title and commit message
|
|
42
|
+
- project profile details such as oversight mode and lane
|
|
43
|
+
- sequencing note
|
|
44
|
+
- reference rule
|
|
45
|
+
- deploy environments
|
|
46
|
+
- component promotions
|
|
47
|
+
- Context7 defaults
|
|
48
|
+
- one `## Agent ...` block per role
|
|
49
|
+
|
|
50
|
+
Inside each agent block, the important sections are:
|
|
51
|
+
|
|
52
|
+
- `### Role prompts`
|
|
53
|
+
Standing role identity imported from `docs/agents/*.md`.
|
|
54
|
+
- `### Executor`
|
|
55
|
+
Runtime selection, profile, model, fallbacks, and budgets.
|
|
56
|
+
- `### Context7`
|
|
57
|
+
External library truth to prefetch and inject.
|
|
58
|
+
- `### Skills`
|
|
59
|
+
Reusable repo-owned environment or workflow guidance resolved after runtime selection.
|
|
60
|
+
- `### Components`
|
|
61
|
+
The components that agent is responsible for proving or promoting.
|
|
62
|
+
- `### Capabilities`
|
|
63
|
+
Optional routing hints for follow-up work.
|
|
64
|
+
- `### Deliverables`
|
|
65
|
+
Exact repo-relative outputs that must exist before closure can pass.
|
|
66
|
+
- `### Prompt`
|
|
67
|
+
The specific task, file ownership, requirements, and validation instructions.
|
|
68
|
+
- `### Exit contract`
|
|
69
|
+
The completion, durability, proof, and documentation expectations that gate closure.
|
|
70
|
+
|
|
71
|
+
## Standard Roles
|
|
72
|
+
|
|
73
|
+
The starter runtime expects three closure roles:
|
|
74
|
+
|
|
75
|
+
- `A8`
|
|
76
|
+
Integration steward
|
|
77
|
+
- `A9`
|
|
78
|
+
Documentation steward
|
|
79
|
+
- `A0`
|
|
80
|
+
Evaluator
|
|
81
|
+
|
|
82
|
+
Implementation or specialist agents own the actual work slices. Closure roles do not replace implementation ownership; they decide whether the combined result is closure-ready.
|
|
83
|
+
|
|
84
|
+
## Lifecycle Of A Wave
|
|
85
|
+
|
|
86
|
+
1. Author or draft the wave.
|
|
87
|
+
2. Run `wave launch --dry-run --no-dashboard`.
|
|
88
|
+
3. The launcher validates the wave, resolves executors and skills, builds prompts, and materializes operator surfaces.
|
|
89
|
+
4. A live run launches implementation agents first when implementation work remains.
|
|
90
|
+
5. Agents write structured coordination events instead of relying on ad hoc terminal output.
|
|
91
|
+
6. The launcher checks implementation contracts, promoted-component proof, helper assignments, dependencies, and clarification state.
|
|
92
|
+
7. If implementation is ready, closure runs in order: integration, documentation, evaluator.
|
|
93
|
+
8. The attempt is captured in per-wave traces, ledgers, inboxes, summaries, and copied artifacts.
|
|
94
|
+
|
|
95
|
+
## What Makes A Wave "Done"
|
|
96
|
+
|
|
97
|
+
A wave is not done because an agent said so. It is done only when the runtime surfaces agree:
|
|
98
|
+
|
|
99
|
+
- implementation exit contracts pass
|
|
100
|
+
- required deliverables exist and stay within ownership boundaries
|
|
101
|
+
- required component proof and promotions pass
|
|
102
|
+
- helper assignments are resolved
|
|
103
|
+
- required dependency tickets are resolved
|
|
104
|
+
- clarification follow-ups or escalations are resolved
|
|
105
|
+
- integration recommends closure
|
|
106
|
+
- documentation and evaluator closure pass
|
|
107
|
+
|
|
108
|
+
## Where The State Lives
|
|
109
|
+
|
|
110
|
+
The wave file is only part of the story. The runtime writes durable state under `.tmp/<lane>-wave-launcher/`, including:
|
|
111
|
+
|
|
112
|
+
- prompts and logs
|
|
113
|
+
- status summaries
|
|
114
|
+
- coordination logs
|
|
115
|
+
- rendered message boards
|
|
116
|
+
- compiled inboxes
|
|
117
|
+
- ledger and docs queue
|
|
118
|
+
- integration summaries
|
|
119
|
+
- dependency snapshots
|
|
120
|
+
- executor overlays
|
|
121
|
+
- trace bundles
|
|
122
|
+
|
|
123
|
+
That is why a wave is better understood as a bounded execution record, not just a markdown file.
|
|
124
|
+
|
|
125
|
+
## Planner Specs vs Markdown
|
|
126
|
+
|
|
127
|
+
The planner foundation adds a JSON draft spec at `docs/plans/waves/specs/wave-<n>.json`.
|
|
128
|
+
|
|
129
|
+
- The JSON spec is the canonical planner artifact.
|
|
130
|
+
- The rendered markdown stays compatible with the launcher and parser.
|
|
131
|
+
- The launcher still executes the markdown wave file today.
|
|
132
|
+
|
|
133
|
+
This split keeps authoring structured while preserving the established execution surface.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Planner Guide
|
|
2
|
+
|
|
3
|
+
The planner foundation is the first structured authoring layer on top of the existing wave runtime.
|
|
4
|
+
|
|
5
|
+
It reduces repeated setup questions, stores project defaults, and generates wave specs plus markdown that already fit the launcher.
|
|
6
|
+
|
|
7
|
+
## What Ships Today
|
|
8
|
+
|
|
9
|
+
- `wave project setup`
|
|
10
|
+
- `wave project show`
|
|
11
|
+
- `wave draft`
|
|
12
|
+
- persistent project memory in `.wave/project-profile.json`
|
|
13
|
+
- JSON specs in `docs/plans/waves/specs/wave-<n>.json`
|
|
14
|
+
- rendered markdown waves in `docs/plans/waves/wave-<n>.md`
|
|
15
|
+
- component matrix updates for promoted components
|
|
16
|
+
|
|
17
|
+
## What The Planner Does Not Yet Ship
|
|
18
|
+
|
|
19
|
+
- ad hoc transient runs
|
|
20
|
+
- forward replanning of later waves
|
|
21
|
+
- separate runtime enforcement for oversight vs dark-factory
|
|
22
|
+
|
|
23
|
+
Those remain roadmap work. The planner foundation is about better structured authoring, not a second execution engine.
|
|
24
|
+
|
|
25
|
+
## Project Profile
|
|
26
|
+
|
|
27
|
+
Run:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm exec wave project setup
|
|
31
|
+
pnpm exec wave project show --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The saved profile remembers:
|
|
35
|
+
|
|
36
|
+
- whether the repo is a new project
|
|
37
|
+
- default oversight mode
|
|
38
|
+
- default terminal surface for live runs (`vscode` or `tmux`; `none` remains dry-run only)
|
|
39
|
+
- default draft template
|
|
40
|
+
- default lane
|
|
41
|
+
- typed deploy environments
|
|
42
|
+
|
|
43
|
+
This lets later drafts inherit repo-specific defaults instead of asking the same bootstrap questions every time.
|
|
44
|
+
|
|
45
|
+
## Drafting A Wave
|
|
46
|
+
|
|
47
|
+
Run:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pnpm exec wave draft --wave 1 --template implementation
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Supported templates today:
|
|
54
|
+
|
|
55
|
+
- `implementation`
|
|
56
|
+
- `qa`
|
|
57
|
+
- `infra`
|
|
58
|
+
- `release`
|
|
59
|
+
|
|
60
|
+
The planner writes:
|
|
61
|
+
|
|
62
|
+
- `docs/plans/waves/specs/wave-<n>.json`
|
|
63
|
+
- `docs/plans/waves/wave-<n>.md`
|
|
64
|
+
|
|
65
|
+
The JSON spec is the canonical planner artifact. The markdown wave remains the launcher-compatible execution surface.
|
|
66
|
+
|
|
67
|
+
## What The Planner Asks For
|
|
68
|
+
|
|
69
|
+
The draft flow asks for structured inputs such as:
|
|
70
|
+
|
|
71
|
+
- wave title and commit message
|
|
72
|
+
- sequencing notes and reference rules
|
|
73
|
+
- oversight mode
|
|
74
|
+
- deploy environments in scope
|
|
75
|
+
- component promotions and target levels
|
|
76
|
+
- worker count and worker roles
|
|
77
|
+
- executor profiles
|
|
78
|
+
- file ownership
|
|
79
|
+
- Context7 defaults and per-agent bundles
|
|
80
|
+
- validation commands
|
|
81
|
+
- exit contracts
|
|
82
|
+
|
|
83
|
+
That gives you a wave that is much closer to launch-ready than a blank markdown template.
|
|
84
|
+
|
|
85
|
+
## Planner And Skills
|
|
86
|
+
|
|
87
|
+
The planner does not auto-discover every possible skill bundle yet, but it supports explicit per-agent `### Skills` in the rendered output.
|
|
88
|
+
|
|
89
|
+
The more important interaction is indirect:
|
|
90
|
+
|
|
91
|
+
- project profile remembers deploy environments
|
|
92
|
+
- planner-generated waves carry `## Deploy environments`
|
|
93
|
+
- deploy-kind skill attachment uses the wave's default deploy environment kind
|
|
94
|
+
|
|
95
|
+
So planner structure and skill resolution already reinforce each other.
|
|
96
|
+
|
|
97
|
+
## Recommended Workflow
|
|
98
|
+
|
|
99
|
+
1. Run `pnpm exec wave project setup` once for the repo.
|
|
100
|
+
2. Use `pnpm exec wave draft --wave <n> --template <template>`.
|
|
101
|
+
3. Review the generated JSON spec and markdown wave.
|
|
102
|
+
4. Adjust repo-specific prompts, file ownership, skills, and validation commands.
|
|
103
|
+
5. Run `pnpm exec wave launch --lane <lane> --start-wave <n> --end-wave <n> --dry-run --no-dashboard`.
|
|
104
|
+
6. Only launch live once the dry-run artifacts look correct.
|
|
105
|
+
|
|
106
|
+
## Best Practices
|
|
107
|
+
|
|
108
|
+
- Treat the generated draft as a strong starting point, not untouchable output.
|
|
109
|
+
- Tighten validation commands before launch.
|
|
110
|
+
- Keep file ownership narrow and explicit.
|
|
111
|
+
- Add explicit `### Skills` only when the lane, role, runtime, and deploy-kind defaults are not enough.
|
|
112
|
+
- Use the component matrix as a planning contract, not just a reporting surface.
|
|
113
|
+
- Prefer updating the project profile when the same answers recur across waves.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Terminal Surfaces And Dashboards
|
|
2
|
+
|
|
3
|
+
Wave has separate concepts for execution substrate and operator surface.
|
|
4
|
+
|
|
5
|
+
The important detail is:
|
|
6
|
+
|
|
7
|
+
- live runs use `tmux` sessions
|
|
8
|
+
- terminal surfaces control how operators attach to those sessions
|
|
9
|
+
|
|
10
|
+
## The Three Terminal Surfaces
|
|
11
|
+
|
|
12
|
+
- `vscode`
|
|
13
|
+
The launcher writes temporary entries to `.vscode/terminals.json` so VS Code can attach to the tmux sessions.
|
|
14
|
+
- `tmux`
|
|
15
|
+
The launcher uses tmux only and never touches `.vscode/terminals.json`.
|
|
16
|
+
- `none`
|
|
17
|
+
Dry-run only. No live terminal surface is allowed in this mode.
|
|
18
|
+
|
|
19
|
+
## What `vscode` Really Means
|
|
20
|
+
|
|
21
|
+
`vscode` is not a second process host. It is a convenience attachment surface.
|
|
22
|
+
|
|
23
|
+
The actual live sessions still run in tmux. The VS Code terminal registry just exposes stable attach commands for those tmux sessions.
|
|
24
|
+
|
|
25
|
+
Use `vscode` when:
|
|
26
|
+
|
|
27
|
+
- your main operator flow is inside VS Code
|
|
28
|
+
- you want one-click attach behavior for agent sessions and dashboards
|
|
29
|
+
- touching `.vscode/terminals.json` is acceptable in the repo
|
|
30
|
+
|
|
31
|
+
## What `tmux` Really Means
|
|
32
|
+
|
|
33
|
+
`tmux` is the cleanest fully terminal-native operator surface.
|
|
34
|
+
|
|
35
|
+
Use `tmux` when:
|
|
36
|
+
|
|
37
|
+
- you are on a remote shell or devbox
|
|
38
|
+
- you want zero VS Code coupling
|
|
39
|
+
- you want a headless or low-friction terminal operator workflow
|
|
40
|
+
- the repo should never be mutated with temporary VS Code terminal entries
|
|
41
|
+
|
|
42
|
+
## Dashboard Behavior
|
|
43
|
+
|
|
44
|
+
By default the launcher can start per-wave dashboard sessions in tmux.
|
|
45
|
+
|
|
46
|
+
Important flags:
|
|
47
|
+
|
|
48
|
+
- `--no-dashboard`
|
|
49
|
+
Disable the per-wave tmux dashboard session.
|
|
50
|
+
- `--cleanup-sessions`
|
|
51
|
+
Kill lane tmux sessions after each wave. This is the default.
|
|
52
|
+
- `--keep-sessions`
|
|
53
|
+
Preserve tmux sessions after the wave for inspection.
|
|
54
|
+
- `--keep-terminals`
|
|
55
|
+
Keep temporary VS Code terminal entries instead of cleaning them up.
|
|
56
|
+
|
|
57
|
+
## Best Practices
|
|
58
|
+
|
|
59
|
+
- Use `vscode` for local interactive operator work when the temporary terminal registry is useful.
|
|
60
|
+
- Use `tmux` for remote, CI-like, or editor-independent operation.
|
|
61
|
+
- Use `none` only with `--dry-run`.
|
|
62
|
+
- Pair `--keep-sessions` with incident review or deep debugging, not as a default steady-state mode.
|
|
63
|
+
- Pair `--no-dashboard` with scripted dry-runs or when the board and summaries are sufficient.
|
|
64
|
+
|
|
65
|
+
## Suggested Defaults
|
|
66
|
+
|
|
67
|
+
- Local development:
|
|
68
|
+
`vscode`
|
|
69
|
+
- Remote shell or devbox:
|
|
70
|
+
`tmux`
|
|
71
|
+
- CI validation:
|
|
72
|
+
`none` with `--dry-run`
|
|
73
|
+
|
|
74
|
+
## Example Commands
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
pnpm exec wave launch --lane main --start-wave 2 --end-wave 2 --terminal-surface vscode
|
|
78
|
+
pnpm exec wave launch --lane main --start-wave 2 --end-wave 2 --terminal-surface tmux --keep-sessions
|
|
79
|
+
pnpm exec wave launch --lane main --start-wave 2 --end-wave 2 --dry-run --no-dashboard --terminal-surface none
|
|
80
|
+
```
|
package/docs/image.png
ADDED
|
Binary file
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Context7 and Wave Orchestrator
|
|
2
2
|
|
|
3
|
+
See also [concepts/context7-vs-skills.md](../concepts/context7-vs-skills.md) for how Context7 differs from the repo-owned skill system.
|
|
4
|
+
|
|
3
5
|
Context7 is for external library truth. Repository docs and source are for repository truth.
|
|
4
6
|
|
|
5
7
|
## Rules
|
|
@@ -4,7 +4,16 @@
|
|
|
4
4
|
- The runtime is package-first and non-destructive for adopting repos: `wave init --adopt-existing` records existing repo-owned plans, waves, prompts, and config without overwriting them, and `wave upgrade` writes only `.wave/install-state.json` plus `.wave/upgrade-history/`.
|
|
5
5
|
- This source repo is itself kept as an adopted Wave workspace, so `node scripts/wave.mjs doctor --json` should pass from the repo root.
|
|
6
6
|
- The default lane is `main`.
|
|
7
|
+
- Planner foundation is now shipped:
|
|
8
|
+
- `.wave/project-profile.json` stores default oversight mode, terminal surface, draft template, lane, and deploy-environment memory
|
|
9
|
+
- `wave project setup|show` manage that profile
|
|
10
|
+
- `wave draft` writes planner JSON specs plus launcher-compatible markdown waves
|
|
7
11
|
- The harness supports `codex`, `claude`, `opencode`, and `local` executors.
|
|
12
|
+
- Cross-runtime skills are now first-class:
|
|
13
|
+
- canonical bundles live under `skills/`
|
|
14
|
+
- lane config can attach skills by base, role, runtime, and deploy kind
|
|
15
|
+
- wave agents can add explicit `### Skills`
|
|
16
|
+
- runtime projections are generated for Codex, Claude, OpenCode, and local execution
|
|
8
17
|
- The runtime now includes:
|
|
9
18
|
- a canonical coordination JSONL log
|
|
10
19
|
- a generated markdown board projection
|
|
@@ -20,6 +29,7 @@
|
|
|
20
29
|
- Claude settings overlay merging for inline settings and hooks
|
|
21
30
|
- OpenCode merged config overlays plus multi-file attachments
|
|
22
31
|
- dry-run prompt and executor-preview materialization under `.tmp/<lane>-wave-launcher/dry-run/`
|
|
32
|
+
- operator-selectable terminal surfaces: `vscode`, `tmux`, or `none` for dry-run only
|
|
23
33
|
- Full runtime configuration reference pages now ship under `docs/reference/runtime-config/`.
|
|
24
34
|
- Lane runtime policy is active through `wave.config.json`:
|
|
25
35
|
- role-based default executors
|