@chllming/wave-orchestration 0.7.2 → 0.7.3
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 +7 -7
- package/docs/plans/current-state.md +1 -1
- package/docs/plans/examples/wave-example-live-proof.md +1 -1
- package/docs/plans/migration.md +2 -2
- package/docs/reference/npmjs-trusted-publishing.md +2 -2
- package/docs/reference/sample-waves.md +4 -4
- package/package.json +1 -1
- package/releases/manifest.json +17 -0
- package/scripts/wave-orchestrator/agent-state.mjs +29 -16
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.7.3 - 2026-03-23
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Updated the shipped package metadata, release manifest, README, migration guide, sample-wave docs, and npm publishing runbook to advertise `0.7.3` as the current release surface.
|
|
10
|
+
|
|
11
|
+
### Fixed And Hardened
|
|
12
|
+
|
|
13
|
+
- Implementation summary parsing now falls back to normal line-by-line structured-marker extraction when a log tail ends inside an unmatched fenced block, so malformed prompt or transcript tails cannot hide later final implementation markers.
|
|
14
|
+
- Proof-centric summary repair now refreshes stale `.summary.json` files when required proof/doc/component fields are missing, even if a prior run already wrote a `structuredSignalDiagnostics` object with incorrect zero-count data.
|
|
15
|
+
|
|
16
|
+
### Testing And Validation
|
|
17
|
+
|
|
18
|
+
- Added regression coverage for unmatched end-of-tail fenced logs and stale diagnostics-backed implementation summaries.
|
|
19
|
+
|
|
5
20
|
## 0.7.2 - 2026-03-23
|
|
6
21
|
|
|
7
22
|
### Changed
|
package/README.md
CHANGED
|
@@ -79,18 +79,18 @@ Wave is built to mitigate those failures with canonical shared state, generated
|
|
|
79
79
|
|
|
80
80
|
Current release:
|
|
81
81
|
|
|
82
|
-
- `@chllming/wave-orchestration@0.7.
|
|
83
|
-
- Release tag: [`v0.7.
|
|
82
|
+
- `@chllming/wave-orchestration@0.7.3`
|
|
83
|
+
- Release tag: [`v0.7.3`](https://github.com/chllming/agent-wave-orchestrator/releases/tag/v0.7.3)
|
|
84
84
|
- Public install path: npmjs
|
|
85
85
|
- Authenticated fallback: GitHub Packages
|
|
86
86
|
|
|
87
|
-
Highlights in `0.7.
|
|
87
|
+
Highlights in `0.7.3`:
|
|
88
88
|
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
89
|
+
- Malformed end-of-tail fenced blocks no longer hide later final `[wave-proof]`, `[wave-doc-delta]`, and `[wave-component]` markers from the structured-signal collector.
|
|
90
|
+
- Legacy proof-centric summaries now rebuild from source logs when required proof/doc/component fields are missing, even if a stale `structuredSignalDiagnostics` object already exists.
|
|
91
|
+
- Final implementation marker diagnostics still distinguish truly missing markers from malformed marker syntax, so proof-centric failures stay actionable instead of collapsing into generic missing-marker noise.
|
|
92
92
|
- Implementation prompts now keep incomplete work inside the required final markers with `state=gap` and route unresolved issues through `wave coord post`.
|
|
93
|
-
- Upgrade and operator docs now cover the full `0.7.
|
|
93
|
+
- Upgrade and operator docs now cover the full `0.7.3` package surface end to end.
|
|
94
94
|
|
|
95
95
|
Requirements:
|
|
96
96
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Current State
|
|
2
2
|
|
|
3
|
-
- The starter workspace in this source repo reflects the `0.7.
|
|
3
|
+
- The starter workspace in this source repo reflects the `0.7.3` package release surface.
|
|
4
4
|
- The repository contains the published `@chllming/wave-orchestration` package plus the starter scaffold used by `wave init`.
|
|
5
5
|
- 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/`.
|
|
6
6
|
- Runtime launch entrypoints now perform a best-effort npmjs version check, cache the result under `.wave/package-update-check.json`, and point operators at `pnpm exec wave self-update` when a newer published package exists.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This is a showcase-first sample wave.
|
|
4
4
|
|
|
5
|
-
Use it as the single reference example for the current `0.7.
|
|
5
|
+
Use it as the single reference example for the current `0.7.3` Wave surface.
|
|
6
6
|
|
|
7
7
|
It intentionally combines more sections than a normal production wave so one file can demonstrate:
|
|
8
8
|
|
package/docs/plans/migration.md
CHANGED
|
@@ -22,13 +22,13 @@ GitHub Packages remains available as an authenticated fallback path, and maintai
|
|
|
22
22
|
- Fresh `wave init` seeds the starter `skills/` library. `wave init --adopt-existing` records existing repo-owned skill bundles when they are already present, but does not replace or rewrite them.
|
|
23
23
|
- The current runtime expects the post-roadmap model: typed coordination, compiled inboxes, `A8` integration, staged closure, orchestrator-first clarification, and operational runtime policy.
|
|
24
24
|
|
|
25
|
-
## Upgrading From 0.6.x To 0.7.
|
|
25
|
+
## Upgrading From 0.6.x To 0.7.3
|
|
26
26
|
|
|
27
27
|
Read `CHANGELOG.md` first, then treat this section as the repo-owned migration checklist for adopted `0.6.x` workspaces.
|
|
28
28
|
|
|
29
29
|
`wave upgrade` updates the installed runtime only. It does not copy planner starter files into a repo that already owns its docs, skills, and Context7 bundles.
|
|
30
30
|
|
|
31
|
-
`0.7.
|
|
31
|
+
`0.7.3` keeps the proof-centric closure hardening from `0.7.2` and closes the remaining parser hole: malformed unmatched end-of-tail fenced blocks no longer hide later final implementation markers, stale summaries rebuild when required proof/doc/component fields are still missing even if diagnostics already exist, malformed marker syntax still surfaces explicit parse errors, and incomplete implementation work should stay inside the required final markers with `state=gap` instead of trailing `[wave-gap]` lines.
|
|
32
32
|
|
|
33
33
|
### Required Repo Changes
|
|
34
34
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This repo now includes a dedicated npmjs publish workflow at [publish-npm.yml](../../.github/workflows/publish-npm.yml).
|
|
4
4
|
|
|
5
|
-
The current `0.7.
|
|
5
|
+
The current `0.7.3` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
|
|
6
6
|
|
|
7
7
|
## What This Repo Already Does
|
|
8
8
|
|
|
@@ -47,6 +47,6 @@ If this repo later needs private npm dependencies during CI, consider a separate
|
|
|
47
47
|
1. Confirm [publish-npm.yml](../../.github/workflows/publish-npm.yml) is on the default branch.
|
|
48
48
|
2. Confirm `NPM_TOKEN` exists in the GitHub repo secrets.
|
|
49
49
|
3. Confirm the package version has been bumped and committed.
|
|
50
|
-
4. Push the release commit and release tag, for example `v0.7.
|
|
50
|
+
4. Push the release commit and release tag, for example `v0.7.3`.
|
|
51
51
|
5. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
|
|
52
52
|
6. Verify the npmjs publish completes successfully for the tagged source.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Sample Waves"
|
|
3
|
-
summary: "Showcase-first sample waves that demonstrate the current 0.7.
|
|
3
|
+
summary: "Showcase-first sample waves that demonstrate the current 0.7.3 Wave surface."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Sample Waves
|
|
7
7
|
|
|
8
|
-
This guide points to showcase-first sample waves that demonstrate the current `0.7.
|
|
8
|
+
This guide points to showcase-first sample waves that demonstrate the current `0.7.3` authored Wave surface.
|
|
9
9
|
|
|
10
10
|
The examples are intentionally denser than typical production waves. Their job is to teach the current authoring and runtime surface quickly, not to be the smallest possible launch-ready files.
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ The examples are intentionally denser than typical production waves. Their job i
|
|
|
15
15
|
Shows what a good `repo-landed` outcome looks like when one promoted component only closes honestly if desired-state records, reconcile-loop substrate, and cluster-view surfaces land together. It emphasizes maturity discipline, explicit deliverables, and shared-plan closure without drifting into `pilot-live` claims.
|
|
16
16
|
|
|
17
17
|
- [Full modern sample wave](../plans/examples/wave-example-live-proof.md)
|
|
18
|
-
Shows the combined `0.7.
|
|
18
|
+
Shows the combined `0.7.3` authored surface in one file: closure roles, `E0`, optional security review, delegated and pinned benchmark targets, richer executor config, `### Skills`, `### Capabilities`, `### Deliverables`, `### Exit contract`, `### Proof artifacts`, sticky retry, deploy environments, and proof-first live-wave structure.
|
|
19
19
|
|
|
20
20
|
## What These Examples Teach
|
|
21
21
|
|
|
@@ -38,7 +38,7 @@ The examples are intentionally denser than typical production waves. Their job i
|
|
|
38
38
|
|
|
39
39
|
## Feature Coverage Map
|
|
40
40
|
|
|
41
|
-
Together these samples cover the main surfaces added or hardened for `0.7.
|
|
41
|
+
Together these samples cover the main surfaces added or hardened for `0.7.3`:
|
|
42
42
|
|
|
43
43
|
- repo-landed maturity discipline and anti-overclaim framing
|
|
44
44
|
- explicit shared-plan closure for future-wave safety
|
package/package.json
CHANGED
package/releases/manifest.json
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "@chllming/wave-orchestration",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"version": "0.7.3",
|
|
7
|
+
"date": "2026-03-23",
|
|
8
|
+
"summary": "Unmatched-fence structured-signal recovery, stale-summary rebuild hardening, and 0.7.3 release-surface alignment.",
|
|
9
|
+
"features": [
|
|
10
|
+
"Implementation summaries now recover final `[wave-proof]`, `[wave-doc-delta]`, and `[wave-component]` markers even when the log tail ends inside a malformed unmatched fenced block.",
|
|
11
|
+
"Legacy proof-centric summaries now refresh from source logs when required proof, doc-delta, or owned-component fields are still missing, even if stale `structuredSignalDiagnostics` data already exists.",
|
|
12
|
+
"Regression coverage now exercises unmatched end-of-tail fence handling and stale diagnostics-backed summary refresh directly.",
|
|
13
|
+
"Shipped package metadata, README, migration guidance, sample-wave docs, and npm publishing instructions now point at the `0.7.3` release surface."
|
|
14
|
+
],
|
|
15
|
+
"manualSteps": [
|
|
16
|
+
"If an older lane still contains proof-centric `.summary.json` files with missing proof/doc/component fields, rerun the relevant launcher or status surface once after upgrading so the summaries can self-refresh from the source logs.",
|
|
17
|
+
"If an adopted `0.6.x` repo fails `wave doctor` after the `0.7.x` upgrade, sync the repo-owned planner starter surface (`docs/agents/wave-planner-role.md`, `skills/role-planner/`, `docs/context7/planner-agent/`, `docs/reference/wave-planning-lessons.md`, and the `planner-agentic` bundle entry) before relying on planner-aware validation.",
|
|
18
|
+
"Run `pnpm exec wave doctor` and `pnpm exec wave launch --lane main --dry-run --no-dashboard` after upgrading once your repo-owned wave files satisfy the current validation contract."
|
|
19
|
+
],
|
|
20
|
+
"breaking": false
|
|
21
|
+
},
|
|
5
22
|
{
|
|
6
23
|
"version": "0.7.2",
|
|
7
24
|
"date": "2026-03-23",
|
|
@@ -140,6 +140,21 @@ function parseStructuredSignalCandidate(line) {
|
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
function appendParsedStructuredSignalCandidates(lines, candidates, { requireAll = false } = {}) {
|
|
144
|
+
const parsedCandidates = [];
|
|
145
|
+
for (const line of lines || []) {
|
|
146
|
+
const candidate = parseStructuredSignalCandidate(line);
|
|
147
|
+
if (candidate) {
|
|
148
|
+
parsedCandidates.push(candidate);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (requireAll) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
candidates.push(...parsedCandidates);
|
|
156
|
+
}
|
|
157
|
+
|
|
143
158
|
function collectStructuredSignalCandidates(text) {
|
|
144
159
|
if (!text) {
|
|
145
160
|
return [];
|
|
@@ -153,12 +168,7 @@ function collectStructuredSignalCandidates(text) {
|
|
|
153
168
|
fenceLines = [];
|
|
154
169
|
continue;
|
|
155
170
|
}
|
|
156
|
-
|
|
157
|
-
.map((line) => parseStructuredSignalCandidate(line))
|
|
158
|
-
.filter(Boolean);
|
|
159
|
-
if (fenceCandidates.length > 0 && fenceCandidates.length === fenceLines.length) {
|
|
160
|
-
candidates.push(...fenceCandidates);
|
|
161
|
-
}
|
|
171
|
+
appendParsedStructuredSignalCandidates(fenceLines, candidates, { requireAll: true });
|
|
162
172
|
fenceLines = null;
|
|
163
173
|
continue;
|
|
164
174
|
}
|
|
@@ -174,6 +184,9 @@ function collectStructuredSignalCandidates(text) {
|
|
|
174
184
|
candidates.push(candidate);
|
|
175
185
|
}
|
|
176
186
|
}
|
|
187
|
+
if (fenceLines !== null) {
|
|
188
|
+
appendParsedStructuredSignalCandidates(fenceLines, candidates);
|
|
189
|
+
}
|
|
177
190
|
return candidates;
|
|
178
191
|
}
|
|
179
192
|
|
|
@@ -576,27 +589,27 @@ function summaryNeedsStructuredSignalRefresh(payload, options = {}) {
|
|
|
576
589
|
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
577
590
|
return false;
|
|
578
591
|
}
|
|
579
|
-
if (payload.structuredSignalDiagnostics && typeof payload.structuredSignalDiagnostics === "object") {
|
|
580
|
-
return false;
|
|
581
|
-
}
|
|
582
592
|
const agent = options.agent;
|
|
583
593
|
const contract = normalizeExitContract(agent?.exitContract);
|
|
584
594
|
if (!contract) {
|
|
585
595
|
return false;
|
|
586
596
|
}
|
|
587
|
-
|
|
588
|
-
return true;
|
|
589
|
-
}
|
|
597
|
+
const missingProofOrDocDelta = !payload.proof || !payload.docDelta;
|
|
590
598
|
const ownedComponents = Array.isArray(agent?.components) ? agent.components : [];
|
|
591
|
-
if (ownedComponents.length === 0) {
|
|
592
|
-
return false;
|
|
593
|
-
}
|
|
594
599
|
const componentMarkers = new Map(
|
|
595
600
|
Array.isArray(payload.components)
|
|
596
601
|
? payload.components.map((component) => [component.componentId, component])
|
|
597
602
|
: [],
|
|
598
603
|
);
|
|
599
|
-
|
|
604
|
+
const missingOwnedComponents =
|
|
605
|
+
ownedComponents.length > 0 && ownedComponents.some((componentId) => !componentMarkers.has(componentId));
|
|
606
|
+
if (missingProofOrDocDelta || missingOwnedComponents) {
|
|
607
|
+
return true;
|
|
608
|
+
}
|
|
609
|
+
if (payload.structuredSignalDiagnostics && typeof payload.structuredSignalDiagnostics === "object") {
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
612
|
+
return false;
|
|
600
613
|
}
|
|
601
614
|
|
|
602
615
|
function refreshExecutionSummaryIfStale(summaryPathOrStatusPath, payload, options = {}) {
|