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.
@@ -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 computes the report comparison as an observation only — it
46
- never parks on it. The parent ignores the applied report entirely when
47
- deciding whether to stamp: an `applied:[]` or mismatched report with a
48
- matching independent read-back stamps normally.
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, the
53
- applied-report observation (logged, never a park), the build-completion
54
- poll, post-deploy cleanup, recording the Publish session completed, and
55
- parking with `publish: verification-requested <commit>` instead of
56
- stamping. The workflow does NOT trigger the read-back inspection — an
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). Two mechanisms close this gap.
322
-
323
- **1. Workflow-side durable evidence.** Before the rebuild trigger, the
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). On a
326
- structured-output failure with no in-flight build observed, it re-lists and
327
- diffs: a timestamped directory that appeared during the trigger window is
328
- positive evidence the edit went through and the build completed. The
329
- fallback never re-issues the edit, never stamps provenance, and only routes
330
- to the parent's independent content read-back. No new directory still parks
331
- `unknown` fail-closed. The ledger distinguishes the two confirmations: `edit
332
- confirmed via durable audit evidence …` vs `edit confirmed via build-state
333
- poll …`.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "muse-crew",
3
- "version": "0.7.18",
3
+ "version": "0.7.19",
4
4
  "description": "Opinionated orchestration for Muse — workflows, identities, and tooling for autonomous software development.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,