@chllming/wave-orchestration 0.5.3 → 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.
Files changed (79) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +56 -509
  3. package/docs/README.md +39 -0
  4. package/docs/concepts/context7-vs-skills.md +94 -0
  5. package/docs/concepts/operating-modes.md +91 -0
  6. package/docs/concepts/runtime-agnostic-orchestration.md +95 -0
  7. package/docs/concepts/what-is-a-wave.md +133 -0
  8. package/docs/guides/planner.md +113 -0
  9. package/docs/guides/terminal-surfaces.md +80 -0
  10. package/docs/image.png +0 -0
  11. package/docs/plans/context7-wave-orchestrator.md +2 -0
  12. package/docs/plans/current-state.md +10 -0
  13. package/docs/plans/master-plan.md +3 -3
  14. package/docs/plans/migration.md +4 -3
  15. package/docs/plans/wave-orchestrator.md +27 -3
  16. package/docs/reference/runtime-config/README.md +19 -0
  17. package/docs/reference/skills.md +156 -0
  18. package/docs/roadmap.md +160 -564
  19. package/package.json +2 -1
  20. package/releases/manifest.json +17 -0
  21. package/scripts/wave-orchestrator/config.mjs +17 -0
  22. package/scripts/wave-orchestrator/context7.mjs +9 -0
  23. package/scripts/wave-orchestrator/coordination.mjs +16 -0
  24. package/scripts/wave-orchestrator/executors.mjs +24 -11
  25. package/scripts/wave-orchestrator/install.mjs +41 -2
  26. package/scripts/wave-orchestrator/launcher.mjs +113 -20
  27. package/scripts/wave-orchestrator/planner.mjs +1328 -0
  28. package/scripts/wave-orchestrator/project-profile.mjs +190 -0
  29. package/scripts/wave-orchestrator/shared.mjs +2 -0
  30. package/scripts/wave-orchestrator/skills.mjs +448 -0
  31. package/scripts/wave-orchestrator/terminals.mjs +16 -0
  32. package/scripts/wave-orchestrator/traces.mjs +23 -0
  33. package/scripts/wave-orchestrator/wave-files.mjs +299 -84
  34. package/scripts/wave.mjs +11 -0
  35. package/skills/provider-aws/SKILL.md +6 -0
  36. package/skills/provider-aws/skill.json +5 -0
  37. package/skills/provider-custom-deploy/SKILL.md +5 -0
  38. package/skills/provider-custom-deploy/skill.json +5 -0
  39. package/skills/provider-docker-compose/SKILL.md +6 -0
  40. package/skills/provider-docker-compose/skill.json +5 -0
  41. package/skills/provider-github-release/SKILL.md +6 -0
  42. package/skills/provider-github-release/skill.json +5 -0
  43. package/skills/provider-kubernetes/SKILL.md +6 -0
  44. package/skills/provider-kubernetes/skill.json +5 -0
  45. package/skills/provider-railway/SKILL.md +6 -0
  46. package/skills/provider-railway/adapters/claude.md +1 -0
  47. package/skills/provider-railway/adapters/codex.md +1 -0
  48. package/skills/provider-railway/adapters/local.md +1 -0
  49. package/skills/provider-railway/adapters/opencode.md +1 -0
  50. package/skills/provider-railway/skill.json +5 -0
  51. package/skills/provider-ssh-manual/SKILL.md +6 -0
  52. package/skills/provider-ssh-manual/skill.json +5 -0
  53. package/skills/repo-coding-rules/SKILL.md +7 -0
  54. package/skills/repo-coding-rules/skill.json +5 -0
  55. package/skills/role-deploy/SKILL.md +6 -0
  56. package/skills/role-deploy/skill.json +5 -0
  57. package/skills/role-documentation/SKILL.md +6 -0
  58. package/skills/role-documentation/skill.json +5 -0
  59. package/skills/role-evaluator/SKILL.md +6 -0
  60. package/skills/role-evaluator/skill.json +5 -0
  61. package/skills/role-implementation/SKILL.md +6 -0
  62. package/skills/role-implementation/skill.json +5 -0
  63. package/skills/role-infra/SKILL.md +6 -0
  64. package/skills/role-infra/skill.json +5 -0
  65. package/skills/role-integration/SKILL.md +6 -0
  66. package/skills/role-integration/skill.json +5 -0
  67. package/skills/role-research/SKILL.md +6 -0
  68. package/skills/role-research/skill.json +5 -0
  69. package/skills/runtime-claude/SKILL.md +6 -0
  70. package/skills/runtime-claude/skill.json +5 -0
  71. package/skills/runtime-codex/SKILL.md +6 -0
  72. package/skills/runtime-codex/skill.json +5 -0
  73. package/skills/runtime-local/SKILL.md +5 -0
  74. package/skills/runtime-local/skill.json +5 -0
  75. package/skills/runtime-opencode/SKILL.md +6 -0
  76. package/skills/runtime-opencode/skill.json +5 -0
  77. package/skills/wave-core/SKILL.md +7 -0
  78. package/skills/wave-core/skill.json +5 -0
  79. 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