muse-crew 0.7.18 → 0.7.19
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/docs/publish-verification.md +43 -22
- package/package.json +1 -1
- package/workflows/bugfix.js +225 -371
- package/workflows/chore.js +225 -371
- package/workflows/standard.js +225 -371
|
@@ -42,18 +42,23 @@ The rule: **the builder's applied report is never a verification signal, in
|
|
|
42
42
|
either direction.** A matching report certifies nothing (it is derived from
|
|
43
43
|
the carried diff — circular by construction, canary run 8). A mismatching or
|
|
44
44
|
empty report blocks nothing (false-negative mode demonstrated by `23ca8f3f`).
|
|
45
|
-
The workflow
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
The workflow dropped the report entirely on 2026-09-16 (clean-room task
|
|
46
|
+
`e2a8d9f8`): the trigger's JSON closeout contract traveled over the
|
|
47
|
+
stochastic text channel and the runtime's JSON-candidate heuristic misfired
|
|
48
|
+
on its prose ("workflow agent output was not JSON"), parking a task whose
|
|
49
|
+
edit may have gone through. The trigger is now fire-and-forget — no schema,
|
|
50
|
+
no consumed return value — and there is no builder report to observe:
|
|
51
|
+
`applied_report` is a constant `missing-report` on the ledger line. The
|
|
52
|
+
parent ignores the (absent) report entirely when deciding whether to stamp.
|
|
49
53
|
|
|
50
54
|
The contract is split on purpose:
|
|
51
55
|
|
|
52
|
-
- **Workflow-owned:** carrying the merged diff to the builder,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
- **Workflow-owned:** carrying the merged diff to the builder, attributing
|
|
57
|
+
the edit itself (fire-and-forget trigger — no builder report — via
|
|
58
|
+
pre-trigger toolcheck, pre-trigger build-state baseline, and post-trigger
|
|
59
|
+
build-state diff), the build-completion poll, post-deploy cleanup,
|
|
60
|
+
recording the Publish session completed, and parking with `publish:
|
|
61
|
+
verification-requested <commit>` instead of stamping. The workflow does NOT trigger the read-back inspection — an
|
|
57
62
|
async inspection triggered from inside a workflow run delivers its result
|
|
58
63
|
to the root agent, never back into the run, so a workflow-side trigger is
|
|
59
64
|
an orphan the verifier cannot consume. The parent triggers the one
|
|
@@ -313,24 +318,40 @@ For a task parked with `publish: verification-requested <commit>`:
|
|
|
313
318
|
second scan sees the unexpired `publish: verification-claimed` note and
|
|
314
319
|
skips. The lease expiry bounds the damage if a claimer dies.
|
|
315
320
|
|
|
316
|
-
## Unknown-outcome recovery (2026-09-14, Gate 1 Journey 3 attempt 7)
|
|
321
|
+
## Unknown-outcome recovery (2026-09-14, Gate 1 Journey 3 attempt 7; fire-and-forget 2026-09-16)
|
|
317
322
|
|
|
318
323
|
Attempt 7 parked at Publish with outcome `unknown`: the rebuild trigger's
|
|
319
324
|
child failed structured closeout and the in-flight-only build-state poll
|
|
320
325
|
could not see the completed build — even though the build HAD run (a fresh
|
|
321
|
-
platform audit directory existed).
|
|
322
|
-
|
|
323
|
-
|
|
326
|
+
platform audit directory existed). 2026-09-16 (clean-room task `e2a8d9f8`)
|
|
327
|
+
showed the failure is worse than a catchable throw: the runtime's
|
|
328
|
+
JSON-candidate heuristic rejects the trigger call itself ("workflow agent
|
|
329
|
+
output was not JSON") whenever the child returns prose, whether or not the
|
|
330
|
+
edit went through. The trigger is therefore fire-and-forget — no schema, no
|
|
331
|
+
consumed return value — and the workflow always attributes the edit itself.
|
|
332
|
+
Two mechanisms close the gap.
|
|
333
|
+
|
|
334
|
+
**1. Pre-trigger toolcheck + baseline.** Before the trigger, a tiny schema'd
|
|
335
|
+
child proves the artifact tool namespace is available (one bounded retry on
|
|
336
|
+
explicit negative evidence — the only safe retry on the publish path:
|
|
337
|
+
without the tools the edit provably did not go through) and captures a
|
|
338
|
+
pre-trigger build-state baseline. After the trigger, the workflow diffs the
|
|
339
|
+
post-trigger build state against the baseline: a build whose `agent_id` is
|
|
340
|
+
new relative to the baseline is this edit's receipt. The baseline build's
|
|
341
|
+
`agent_id` is never substituted — a build already in flight at baseline
|
|
342
|
+
predates the trigger and is never attributed to this edit.
|
|
343
|
+
|
|
344
|
+
**2. Workflow-side durable evidence.** Before the rebuild trigger, the
|
|
324
345
|
workflow snapshots the artifact's audit-directory listing
|
|
325
|
-
(`~/workspace/ts-spaces/<slug>/audits/` — best-effort, never a gate).
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
`
|
|
332
|
-
confirmed via durable audit evidence
|
|
333
|
-
|
|
346
|
+
(`~/workspace/ts-spaces/<slug>/audits/` — best-effort, never a gate). When
|
|
347
|
+
no in-flight receipt was observed, it re-lists and diffs: a timestamped
|
|
348
|
+
directory that appeared during the trigger window is positive evidence the
|
|
349
|
+
edit went through and the build completed. The fallback never re-issues the
|
|
350
|
+
edit, never stamps provenance, and only routes to the parent's independent
|
|
351
|
+
content read-back. No new directory still parks `unknown` fail-closed. The
|
|
352
|
+
ledger's `detail` line distinguishes the two confirmations: `… edit
|
|
353
|
+
confirmed via durable audit evidence (new audit dir …)` vs `… build receipt
|
|
354
|
+
captured by workflow-owned build-state observation (pre/post-trigger diff)`.
|
|
334
355
|
|
|
335
356
|
The fallback's known limitation: audit directories are not attributed to
|
|
336
357
|
tasks, so two concurrent publishes to the same artifact could cross-read.
|
package/package.json
CHANGED