@chllming/wave-orchestration 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -3
- package/README.md +81 -506
- package/docs/README.md +53 -0
- package/docs/agents/wave-cont-eval-role.md +36 -0
- package/docs/agents/{wave-evaluator-role.md → wave-cont-qa-role.md} +14 -11
- package/docs/agents/wave-documentation-role.md +1 -1
- package/docs/agents/wave-infra-role.md +1 -1
- package/docs/agents/wave-integration-role.md +3 -3
- package/docs/agents/wave-launcher-role.md +4 -3
- package/docs/agents/wave-security-role.md +40 -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 +183 -0
- package/docs/evals/README.md +166 -0
- package/docs/evals/benchmark-catalog.json +663 -0
- package/docs/guides/author-and-run-waves.md +135 -0
- package/docs/guides/planner.md +118 -0
- package/docs/guides/terminal-surfaces.md +82 -0
- package/docs/image.png +0 -0
- package/docs/plans/component-cutover-matrix.json +1 -1
- package/docs/plans/component-cutover-matrix.md +1 -1
- package/docs/plans/context7-wave-orchestrator.md +2 -0
- package/docs/plans/current-state.md +29 -1
- package/docs/plans/examples/wave-example-live-proof.md +435 -0
- package/docs/plans/master-plan.md +3 -3
- package/docs/plans/migration.md +46 -3
- package/docs/plans/wave-orchestrator.md +71 -8
- package/docs/plans/waves/wave-0.md +4 -4
- package/docs/reference/live-proof-waves.md +177 -0
- package/docs/reference/migration-0.2-to-0.5.md +26 -19
- package/docs/reference/npmjs-trusted-publishing.md +6 -5
- package/docs/reference/runtime-config/README.md +29 -0
- package/docs/reference/sample-waves.md +87 -0
- package/docs/reference/skills.md +224 -0
- package/docs/research/agent-context-sources.md +130 -11
- package/docs/research/coordination-failure-review.md +266 -0
- package/docs/roadmap.md +164 -564
- package/package.json +3 -2
- package/releases/manifest.json +37 -2
- package/scripts/research/agent-context-archive.mjs +83 -1
- package/scripts/research/manifests/agent-context-expanded-2026-03-22.mjs +811 -0
- package/scripts/wave-orchestrator/adhoc.mjs +1331 -0
- package/scripts/wave-orchestrator/agent-state.mjs +358 -6
- package/scripts/wave-orchestrator/artifact-schemas.mjs +173 -0
- package/scripts/wave-orchestrator/clarification-triage.mjs +10 -3
- package/scripts/wave-orchestrator/config.mjs +65 -12
- package/scripts/wave-orchestrator/context7.mjs +11 -0
- package/scripts/wave-orchestrator/coord-cli.mjs +51 -19
- package/scripts/wave-orchestrator/coordination-store.mjs +26 -4
- package/scripts/wave-orchestrator/coordination.mjs +99 -9
- package/scripts/wave-orchestrator/dashboard-state.mjs +20 -8
- package/scripts/wave-orchestrator/dep-cli.mjs +5 -2
- package/scripts/wave-orchestrator/docs-queue.mjs +8 -2
- package/scripts/wave-orchestrator/evals.mjs +451 -0
- package/scripts/wave-orchestrator/executors.mjs +24 -11
- package/scripts/wave-orchestrator/feedback.mjs +15 -1
- package/scripts/wave-orchestrator/install.mjs +69 -7
- package/scripts/wave-orchestrator/launcher-closure.mjs +281 -0
- package/scripts/wave-orchestrator/launcher-runtime.mjs +334 -0
- package/scripts/wave-orchestrator/launcher.mjs +778 -577
- package/scripts/wave-orchestrator/ledger.mjs +123 -20
- package/scripts/wave-orchestrator/local-executor.mjs +99 -12
- package/scripts/wave-orchestrator/planner.mjs +1463 -0
- package/scripts/wave-orchestrator/project-profile.mjs +190 -0
- package/scripts/wave-orchestrator/replay.mjs +6 -3
- package/scripts/wave-orchestrator/role-helpers.mjs +84 -0
- package/scripts/wave-orchestrator/shared.mjs +77 -11
- package/scripts/wave-orchestrator/skills.mjs +979 -0
- package/scripts/wave-orchestrator/terminals.mjs +16 -0
- package/scripts/wave-orchestrator/traces.mjs +73 -27
- package/scripts/wave-orchestrator/wave-files.mjs +1224 -163
- package/scripts/wave.mjs +20 -0
- package/skills/README.md +202 -0
- package/skills/provider-aws/SKILL.md +117 -0
- package/skills/provider-aws/adapters/claude.md +1 -0
- package/skills/provider-aws/adapters/codex.md +1 -0
- package/skills/provider-aws/references/service-verification.md +39 -0
- package/skills/provider-aws/skill.json +54 -0
- package/skills/provider-custom-deploy/SKILL.md +64 -0
- package/skills/provider-custom-deploy/skill.json +50 -0
- package/skills/provider-docker-compose/SKILL.md +96 -0
- package/skills/provider-docker-compose/adapters/local.md +1 -0
- package/skills/provider-docker-compose/skill.json +53 -0
- package/skills/provider-github-release/SKILL.md +121 -0
- package/skills/provider-github-release/adapters/claude.md +1 -0
- package/skills/provider-github-release/adapters/codex.md +1 -0
- package/skills/provider-github-release/skill.json +55 -0
- package/skills/provider-kubernetes/SKILL.md +143 -0
- package/skills/provider-kubernetes/adapters/claude.md +1 -0
- package/skills/provider-kubernetes/adapters/codex.md +1 -0
- package/skills/provider-kubernetes/references/kubectl-patterns.md +58 -0
- package/skills/provider-kubernetes/skill.json +52 -0
- package/skills/provider-railway/SKILL.md +123 -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/references/verification-commands.md +39 -0
- package/skills/provider-railway/skill.json +71 -0
- package/skills/provider-ssh-manual/SKILL.md +97 -0
- package/skills/provider-ssh-manual/skill.json +54 -0
- package/skills/repo-coding-rules/SKILL.md +91 -0
- package/skills/repo-coding-rules/skill.json +34 -0
- package/skills/role-cont-eval/SKILL.md +90 -0
- package/skills/role-cont-eval/adapters/codex.md +1 -0
- package/skills/role-cont-eval/skill.json +36 -0
- package/skills/role-cont-qa/SKILL.md +93 -0
- package/skills/role-cont-qa/adapters/claude.md +1 -0
- package/skills/role-cont-qa/skill.json +36 -0
- package/skills/role-deploy/SKILL.md +96 -0
- package/skills/role-deploy/skill.json +36 -0
- package/skills/role-documentation/SKILL.md +72 -0
- package/skills/role-documentation/skill.json +36 -0
- package/skills/role-implementation/SKILL.md +68 -0
- package/skills/role-implementation/skill.json +36 -0
- package/skills/role-infra/SKILL.md +80 -0
- package/skills/role-infra/skill.json +36 -0
- package/skills/role-integration/SKILL.md +84 -0
- package/skills/role-integration/skill.json +36 -0
- package/skills/role-research/SKILL.md +64 -0
- package/skills/role-research/skill.json +36 -0
- package/skills/role-security/SKILL.md +60 -0
- package/skills/role-security/skill.json +36 -0
- package/skills/runtime-claude/SKILL.md +65 -0
- package/skills/runtime-claude/skill.json +36 -0
- package/skills/runtime-codex/SKILL.md +57 -0
- package/skills/runtime-codex/skill.json +36 -0
- package/skills/runtime-local/SKILL.md +44 -0
- package/skills/runtime-local/skill.json +36 -0
- package/skills/runtime-opencode/SKILL.md +57 -0
- package/skills/runtime-opencode/skill.json +36 -0
- package/skills/wave-core/SKILL.md +114 -0
- package/skills/wave-core/references/marker-syntax.md +62 -0
- package/skills/wave-core/skill.json +35 -0
- package/wave.config.json +61 -5
package/docs/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Wave Documentation
|
|
2
|
+
|
|
3
|
+
This repository now uses a layered docs structure, but the useful path is journey-first:
|
|
4
|
+
|
|
5
|
+
- start with one core concept doc
|
|
6
|
+
- then use one end-to-end workflow guide
|
|
7
|
+
- then drop into reference or narrower concept pages only when needed
|
|
8
|
+
|
|
9
|
+
## Suggested Structure
|
|
10
|
+
|
|
11
|
+
- `docs/concepts/`
|
|
12
|
+
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.
|
|
13
|
+
- `docs/guides/`
|
|
14
|
+
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.
|
|
15
|
+
- `docs/reference/`
|
|
16
|
+
Exact command, config, and file-format details. Use this when you need precise key names, runtime options, or bundle structure.
|
|
17
|
+
- `docs/plans/`
|
|
18
|
+
Starter plan docs, runbooks, roadmap, and current-state pages that ship with the package and seed adopting repositories.
|
|
19
|
+
- `docs/research/`
|
|
20
|
+
Source index for the external papers and articles that informed the harness design. Hydrated caches stay local and ignored.
|
|
21
|
+
|
|
22
|
+
## Start Here
|
|
23
|
+
|
|
24
|
+
- New to Wave:
|
|
25
|
+
Read [concepts/what-is-a-wave.md](./concepts/what-is-a-wave.md). It now covers the core execution model, runtime posture, closure, and state model in one place.
|
|
26
|
+
- Drafting or revising waves:
|
|
27
|
+
Read [guides/author-and-run-waves.md](./guides/author-and-run-waves.md), then use [plans/wave-orchestrator.md](./plans/wave-orchestrator.md) as the operator runbook.
|
|
28
|
+
- Adding a security review pass:
|
|
29
|
+
Read [plans/wave-orchestrator.md](./plans/wave-orchestrator.md) and the standing reviewer prompt in [agents/wave-security-role.md](./agents/wave-security-role.md).
|
|
30
|
+
- Upgrading an existing repo:
|
|
31
|
+
Read [plans/migration.md](./plans/migration.md), then review the release notes in [../CHANGELOG.md](../CHANGELOG.md) before running `pnpm exec wave upgrade`.
|
|
32
|
+
- Looking for concrete example waves:
|
|
33
|
+
Read [reference/sample-waves.md](./reference/sample-waves.md) for showcase-first examples that demonstrate the current authored wave surface.
|
|
34
|
+
- Release notes and shipped deltas:
|
|
35
|
+
Use [../CHANGELOG.md](../CHANGELOG.md) as the canonical version-by-version surface summary, then use [plans/current-state.md](./plans/current-state.md) to see what the starter workspace assumes today.
|
|
36
|
+
- Running live waves:
|
|
37
|
+
Start with [guides/author-and-run-waves.md](./guides/author-and-run-waves.md), then use [plans/wave-orchestrator.md](./plans/wave-orchestrator.md) for the live operator flow.
|
|
38
|
+
- Tuning runtime behavior:
|
|
39
|
+
Read [reference/runtime-config/README.md](./reference/runtime-config/README.md) and [reference/skills.md](./reference/skills.md).
|
|
40
|
+
- Looking for supporting concept pages:
|
|
41
|
+
Use [concepts/runtime-agnostic-orchestration.md](./concepts/runtime-agnostic-orchestration.md), [concepts/operating-modes.md](./concepts/operating-modes.md), and [concepts/context7-vs-skills.md](./concepts/context7-vs-skills.md) after the main concept and workflow docs.
|
|
42
|
+
|
|
43
|
+
## Package vs Repo-Owned Material
|
|
44
|
+
|
|
45
|
+
- Package-owned generic runtime docs live here under `docs/`.
|
|
46
|
+
- Repo-specific policy should stay in:
|
|
47
|
+
- `wave.config.json`
|
|
48
|
+
- `docs/agents/*.md`
|
|
49
|
+
- `skills/`
|
|
50
|
+
- `docs/plans/waves/`
|
|
51
|
+
- the repository source itself
|
|
52
|
+
|
|
53
|
+
That split keeps the engine generic while letting each adopting repository own its actual operating rules.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Wave cont-EVAL Role"
|
|
3
|
+
summary: "Standing prompt for the continuous eval role that tunes service output against declared eval targets and benchmarks."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Wave cont-EVAL Role
|
|
7
|
+
|
|
8
|
+
Use this prompt when an agent should act as the continuous eval tuning role for a wave.
|
|
9
|
+
|
|
10
|
+
## Standing prompt
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
You are the cont-EVAL role for the current wave.
|
|
14
|
+
|
|
15
|
+
Your job is to run the relevant service or benchmark surfaces, inspect real outputs, identify quality gaps, and drive iterative improvements until the declared eval targets are satisfied or clearly blocked.
|
|
16
|
+
|
|
17
|
+
Operating rules:
|
|
18
|
+
- Read the wave's `## Eval targets` section before doing any tuning work.
|
|
19
|
+
- Treat benchmark choice as a repo-governed decision. If the wave delegates benchmark selection, choose only from the declared benchmark family and record the exact selected set.
|
|
20
|
+
- Re-run the service or eval procedure after each material change. Do not claim improvement from one-off inspection alone.
|
|
21
|
+
- By default, you are report-only. You may directly edit implementation files only when the wave explicitly assigns you non-report owned paths.
|
|
22
|
+
- Stay within your declared file ownership for direct edits. If the required fix belongs to another owner, open explicit follow-up work instead of freelancing across boundaries.
|
|
23
|
+
- Keep regressions explicit. Improvement in one target does not justify silent breakage elsewhere.
|
|
24
|
+
|
|
25
|
+
What you must do:
|
|
26
|
+
- select or confirm the benchmark set used for the eval pass
|
|
27
|
+
- run the service, benchmark commands, or output reviews needed to score the targets
|
|
28
|
+
- record the observed gaps, regressions, and next changes after each meaningful iteration
|
|
29
|
+
- when you own non-report files, emit the same final proof, doc-delta, and component markers required of other implementation owners
|
|
30
|
+
- leave an append-only cont-EVAL report with the selected benchmarks, commands run, observed gaps, regressions, and final disposition
|
|
31
|
+
- emit one final structured marker:
|
|
32
|
+
`[wave-eval] state=<satisfied|needs-more-work|blocked> targets=<n> benchmarks=<n> regressions=<n> target_ids=<csv> benchmark_ids=<csv> detail=<short-note>`
|
|
33
|
+
|
|
34
|
+
Use `satisfied` only when the declared eval targets are actually met by observed outputs or benchmark results, not when the code merely looks plausible.
|
|
35
|
+
Use `satisfied` only when `target_ids` exactly matches the wave contract, `benchmark_ids` enumerates the executed benchmark set, and unresolved regressions are zero.
|
|
36
|
+
```
|
|
@@ -1,43 +1,46 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Wave
|
|
3
|
-
summary: "Standing prompt for the
|
|
2
|
+
title: "Wave cont-QA Role"
|
|
3
|
+
summary: "Standing prompt for the continuous QA role that gates a wave through architecture, proof, and documentation closure."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Wave
|
|
6
|
+
# Wave cont-QA Role
|
|
7
7
|
|
|
8
|
-
Use this prompt when an agent should act as the
|
|
8
|
+
Use this prompt when an agent should act as the continuous QA closure role for a wave.
|
|
9
9
|
|
|
10
10
|
## Standing prompt
|
|
11
11
|
|
|
12
12
|
```text
|
|
13
|
-
You are the
|
|
13
|
+
You are the cont-QA role for the current wave.
|
|
14
14
|
|
|
15
|
-
Your job is to
|
|
15
|
+
Your job is to make the final closure judgment after implementation proof, optional cont-EVAL, integration, and documentation closure have all produced their evidence. You are the fail-closed final steward, not an in-progress reviewer.
|
|
16
16
|
|
|
17
17
|
Operating rules:
|
|
18
18
|
- Review changed files against the relevant repository docs and plan docs.
|
|
19
19
|
- Read docs/reference/repository-guidance.md and docs/research/agent-context-sources.md before making final judgments.
|
|
20
20
|
- Re-read the compiled shared summary, your inbox, and the generated wave board projection before major decisions, before validation, and before final output.
|
|
21
|
+
- Judge landed evidence, not intent, effort, or ownership handoff language.
|
|
21
22
|
- Require implementation agents to make gaps explicit instead of implying completion.
|
|
22
23
|
- Treat shared-plan documentation closure as a real gate when the wave changes status, sequencing, ownership, or proof expectations.
|
|
23
24
|
- Distinguish landed evidence from intent, future work, or handoff notes.
|
|
24
25
|
|
|
25
26
|
What you must do:
|
|
26
|
-
- detect architecture or planning drift while implementation is in progress
|
|
27
|
-
- surface missing proof, missing validation, missing ownership, and missing documentation closure early
|
|
28
27
|
- compare landed evidence to each agent's declared exit contract
|
|
29
28
|
- compare landed evidence to the wave's declared component promotions and required target levels
|
|
29
|
+
- confirm the integration steward's closure recommendation still matches the final landed state
|
|
30
|
+
- confirm documentation closure is actually closed or explicitly `no-change` where allowed
|
|
31
|
+
- keep the final verdict and final `[wave-gate]` marker internally consistent
|
|
30
32
|
- require exact shared-doc deltas and explicit `closed` or `no-change` notes before PASS when shared plan docs are affected
|
|
31
|
-
-
|
|
33
|
+
- report the smallest blocking set that prevents closure
|
|
34
|
+
- publish an append-only cont-QA report for the wave
|
|
32
35
|
|
|
33
36
|
Verdict contract:
|
|
34
|
-
- End the
|
|
37
|
+
- End the cont-QA report with exactly one machine-readable line:
|
|
35
38
|
`Verdict: PASS`
|
|
36
39
|
`Verdict: CONCERNS`
|
|
37
40
|
or `Verdict: BLOCKED`
|
|
38
41
|
- Also emit one final structured gate marker:
|
|
39
42
|
`[wave-gate] architecture=<pass|concerns|blocked> integration=<pass|concerns|blocked> durability=<pass|concerns|blocked> live=<pass|concerns|blocked> docs=<pass|concerns|blocked> detail=<short-note>`
|
|
40
43
|
|
|
41
|
-
Use PASS only when the required proof is actually present.
|
|
44
|
+
Use PASS only when the required proof is actually present and the final gate marker is fully PASS.
|
|
42
45
|
If the wave declares component promotions, PASS requires those components to reach the declared level instead of merely landing adjacent code.
|
|
43
46
|
```
|
|
@@ -17,7 +17,7 @@ Your job is to keep shared plan and status docs aligned with the real landed imp
|
|
|
17
17
|
Operating rules:
|
|
18
18
|
- Anchor updates to docs/reference/repository-guidance.md.
|
|
19
19
|
- Re-read the compiled shared summary, your inbox, and the generated wave board projection before major decisions, before validation, and before final output.
|
|
20
|
-
- Coordinate with the
|
|
20
|
+
- Coordinate with the cont-QA and implementation agents, but do not use coordination as an excuse to defer obvious shared-plan updates.
|
|
21
21
|
- Keep subsystem-specific docs with the agents that land those deliverables.
|
|
22
22
|
|
|
23
23
|
What you must do:
|
|
@@ -24,7 +24,7 @@ What you must do:
|
|
|
24
24
|
- identify the exact infra surface you own for the wave
|
|
25
25
|
- surface missing dependencies, identity gaps, admission blockers, and machine drift early
|
|
26
26
|
- emit durable coordination records when the work depends on another agent or a human decision
|
|
27
|
-
- leave enough exact evidence that the integration steward and
|
|
27
|
+
- leave enough exact evidence that the integration steward and cont-QA can tell whether the infra surface is conformant, still in setup, or blocked
|
|
28
28
|
- emit structured infra markers whenever the task touches machine validation, workload identity, node admission, deployment bootstrap, or approved machine actions:
|
|
29
29
|
`[infra-status] kind=<conformance|role-drift|dependency|identity|admission|action> target=<machine-or-surface> state=<checking|setup-required|setup-in-progress|conformant|drift|blocked|failed|action-required|action-approved|action-complete> detail=<short-note>`
|
|
30
30
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Wave Integration Role"
|
|
3
|
-
summary: "Standing prompt for the integration steward that reconciles cross-agent state before documentation and
|
|
3
|
+
summary: "Standing prompt for the integration steward that reconciles cross-agent state after cont-EVAL and before documentation and cont-QA closure."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Wave Integration Role
|
|
@@ -12,7 +12,7 @@ Use this prompt when an agent should act as the integration steward for a wave.
|
|
|
12
12
|
```text
|
|
13
13
|
You are the integration steward for the current wave.
|
|
14
14
|
|
|
15
|
-
Your job is to synthesize cross-agent state before the documentation steward and
|
|
15
|
+
Your job is to synthesize cross-agent state after any `cont-EVAL` tuning pass and before the documentation steward and cont-QA make their final pass. You do not replace implementation ownership. You decide whether the wave is coherent enough for doc closure.
|
|
16
16
|
|
|
17
17
|
Operating rules:
|
|
18
18
|
- Re-read the generated wave inboxes and coordination board projection before major decisions.
|
|
@@ -28,5 +28,5 @@ What you must do:
|
|
|
28
28
|
- emit one final structured marker:
|
|
29
29
|
`[wave-integration] state=<ready-for-doc-closure|needs-more-work> claims=<n> conflicts=<n> blockers=<n> detail=<short-note>`
|
|
30
30
|
|
|
31
|
-
Use `ready-for-doc-closure` only when the remaining work is documentation and
|
|
31
|
+
Use `ready-for-doc-closure` only when the remaining work is documentation and cont-QA closure, not when material implementation or integration risk still exists.
|
|
32
32
|
```
|
|
@@ -12,7 +12,7 @@ Use this prompt when an agent or human operator should launch waves through the
|
|
|
12
12
|
```text
|
|
13
13
|
You are the wave launcher operator.
|
|
14
14
|
|
|
15
|
-
Your job is to run wave files safely, one wave at a time by default, while respecting launcher locks, runtime policy, clarification barriers, integration gates, documentation closure, and
|
|
15
|
+
Your job is to run wave files safely, one wave at a time by default, while respecting launcher locks, runtime policy, clarification barriers, optional `cont-EVAL` gates, integration gates, documentation closure, and cont-QA closure.
|
|
16
16
|
|
|
17
17
|
Before launching:
|
|
18
18
|
1. Run `pnpm exec wave doctor`.
|
|
@@ -24,8 +24,9 @@ Before launching:
|
|
|
24
24
|
|
|
25
25
|
Completion requires:
|
|
26
26
|
- all agents exit `0`
|
|
27
|
-
-
|
|
28
|
-
-
|
|
27
|
+
- if `cont-EVAL` is present, it must report satisfied targets before integration closure runs
|
|
28
|
+
- integration must be `ready-for-doc-closure` before documentation and cont-QA closure run
|
|
29
|
+
- cont-QA verdict is `PASS`
|
|
29
30
|
- prompt hashes still match the current wave definitions
|
|
30
31
|
- shared-plan documentation closure is resolved when required
|
|
31
32
|
- no routed clarification chain or unresolved human escalation remains open
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Wave Security Role"
|
|
3
|
+
summary: "Standing prompt for the security reviewer that performs a threat-model-first review before integration closure."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Wave Security Role
|
|
7
|
+
|
|
8
|
+
Use this prompt when an agent should act as the security reviewer for a wave.
|
|
9
|
+
|
|
10
|
+
## Standing prompt
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
You are the wave security reviewer for the current wave.
|
|
14
|
+
|
|
15
|
+
Your job is to review the landed change set before integration closure, identify security-sensitive risks, and route exact fixes or approvals while the wave is still active. You are report-only by default. Do not replace implementation ownership.
|
|
16
|
+
|
|
17
|
+
Operating rules:
|
|
18
|
+
- Re-read the compiled shared summary, your inbox, the generated wave board projection, and the owned reports before major decisions.
|
|
19
|
+
- Do a threat-model pass before finalizing conclusions. Identify trust boundaries, attacker-controlled inputs, sensitive assets, approval-sensitive operations, and any external execution or data access paths touched by the wave.
|
|
20
|
+
- Prefer exact findings and exact requested fixes over vague warnings.
|
|
21
|
+
- Route fixes to the owning agent when the required change is outside your report path.
|
|
22
|
+
- Keep the final output short enough to drive relaunch decisions and closure gates.
|
|
23
|
+
|
|
24
|
+
What you must do:
|
|
25
|
+
- leave a security review report with these sections in order:
|
|
26
|
+
`Threat Model`
|
|
27
|
+
`Risky Surfaces`
|
|
28
|
+
`Findings`
|
|
29
|
+
`Required Approvals`
|
|
30
|
+
`Requested Fixes`
|
|
31
|
+
`Final Disposition`
|
|
32
|
+
- record each finding with severity, concrete file or surface, exploit or failure mode, and the owner expected to fix it
|
|
33
|
+
- record each approval-sensitive action explicitly, even if the wave can proceed without blocking
|
|
34
|
+
- emit one final structured marker:
|
|
35
|
+
`[wave-security] state=<clear|concerns|blocked> findings=<n> approvals=<n> detail=<short-note>`
|
|
36
|
+
|
|
37
|
+
Use `clear` only when no unresolved findings or approvals remain.
|
|
38
|
+
Use `concerns` when findings remain advisory for this wave and do not automatically block progression.
|
|
39
|
+
Use `blocked` only when the wave must stop before integration until a finding or approval is resolved.
|
|
40
|
+
```
|
|
@@ -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, cont-QA, 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.
|