Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ All notable changes to this project are documented here. The format follows
[Semantic Versioning](https://semver.org/). Entries record what actually
happened, not what was planned; superseded entries are kept.

## [Unreleased]

### Release infrastructure

- The release's Open VSX check reads the universal package at its own
address. Once a version has packages for each platform, Open VSX's
plain version address can name any one of them, and 0.19.0's check
compared the universal package with another platform's (every package
was published and matched when checked by its own address).

## [0.19.0] - 2026-10-21

### Highlights
Expand Down
67 changes: 26 additions & 41 deletions PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34521,50 +34521,11 @@ remain with the lead under the shared lane rules. Follow-up receipts are in

- **Archived.** The record that stood here is in [docs/plan-archive/gates.md](docs/plan-archive/gates.md).

**M121A rounds 3–4 gate ownership (2026-10-09, kubuntu).** The rig brief and
shared lane rules forbid aggregate quality in this worktree; the lead owns
that gate before integration. This lane runs the owning usage/money/schedule
files at repository timeouts, typecheck, changed-file lint/format, localization
and the remaining scoped static checks. Full production build retains the
inherited What's New content-budget refusal; measure current production
options/plugins in memory without editing the build or raising a cap. Byte
counts and exact failure receipts are in `docs/certification/m121.md`.
The unchanged zero-clone duplication gate also retains one six-line clone in
`test/unit/windowsTrustedPath.test.ts`; that file matches `1494fbf87` byte for
byte and is outside this lane's money scope. The touched migration test's
duplicate setup is consolidated without dropping assertions. The lead owns
the remaining Windows-test repair and the full artifact size/split replay:
the refused build removes stale browser chunks before stopping, so those
artifact checks cannot certify a complete current build. No gate is weakened.
Round 4 replays the owning usage/money files, one unit-project typecheck and
the scoped static checks and production measurements at the unchanged caps.
- **Archived.** The record that stood here is in [docs/plan-archive/gates.md](docs/plan-archive/gates.md).

- **Archived.** The record that stood here is in [docs/plan-archive/gates.md](docs/plan-archive/gates.md).

**CIFIXV hosted visual repair (2026-10-09, linuxlt).** Own only the three
visual failures at `f5e0760c3`: reconstruct schedules under the served source
root, review any intended pixel changes before regenerating goldens, and
refresh current-source classification hashes without changing coverage.
Keep all thresholds and repository deadlines. Full quality remains the lead's
gate under the shared lane rules; no merge, push or live/paid calls.

- [x] Prove historical schedule loading fails before the repair and passes after.
- [x] Resolve visual comparisons and identify the aggregate's actual failure.
- [x] Refresh source receipts and pass the owning audit suite.
- [x] Pass full visual, six-theme accessibility and default-timeout stability gates.
- [x] Record evidence and local hooks-on commits in `docs/certification/cifixv.md`.

Reviewed full baseline: `CIFIXV-integrated-accessibility-review-2026-10-09`,
9,792 images / 447,310,229 bytes; all 884 distinct changed images reviewed,
27 named scenes. Full pixel gate passed; six-theme scoped axe passed on
1,632 pages with zero violations, retaining all 315 incomplete findings.
All 43 owning tests passed at repository defaults; production build passed.
The artifact action's `digest-mismatch: error` is an input;
the aggregate requires successful schedule shards and complete receipts.
Bounded external gate deferral: full `jscpd` still reports the inherited
51-token clone in `test/unit/modelApiLoopGuarantees.test.ts:741` and `:890`.
That suite is another lane's scope; leave code and duplication limits intact
for the lead's integration gate. Receipt: `docs/certification/cifixv.md`.
- **Archived.** The record that stood here is in [docs/plan-archive/gates.md](docs/plan-archive/gates.md).

- **Archived.** The record that stood here is in [docs/plan-archive/gates.md](docs/plan-archive/gates.md).

Expand Down Expand Up @@ -39926,6 +39887,30 @@ Unresolved items remain delivery/security gaps, not accepted legal conclusions:

## 10. Definition of done and release records

**0.19.0 released (2026-10-21, tag `v0.19.0` on main's release merge `4e09cab6ea`, PR #257, release run 39720213044).**
PR #257 (`release/0.19.2`, head `915f409fe4`) merged after first-attempt
green CI (39716712837) and Hosts (39716712802) runs; the merge commit's Hosts
run (39719522423) was green and `rule2-gate.mjs release --sha 4e09cab6ea`
read three green first runs; the annotated tag was pushed at 9:04 PM PT. The
release run reused the CI run's verified packages (its lookup found
39716712837 for the tag tree `f77cd9d93f`). Tag checks, reuse, the GitHub
Release (46 assets: seven VSIX packages, the agent tarball, both
inventories, `SHA256SUMS` and the Linux helper assets), Marketplace and npm
succeeded. Open VSX failed at its own check, not at publishing: once a
version has targeted packages, Open VSX's untargeted `/<version>` answer
names whichever package it picks (`win32-arm64` to the script), so the
universal package was compared with another target's bytes. Every package
was uploaded; Open VSX activated the last ones by 04:15 UTC. Checked after
the run, each of the seven packages on the Marketplace and on Open VSX
(through each target's own address) is byte-identical to the release asset,
npm's `muse-spark-code-acp@0.19.0` integrity equals the release tarball's,
and every downloaded asset passes `SHA256SUMS`. The summary job is red for
the Open VSX job; the badge refresh it skipped was run locally (exit 0). The
check now reads `/universal/<version>` (`scripts/publish-registry.mjs`;
`docs/certification/cifinal0190.md` §21). Real use before the tag:
`docs/real-life/release-0.19.0-limits-W.md` (Windows, 5 model calls, every
one `muse-spark-1.3-contributor`, $0.00).

**0.19.0 preparation (2026-10-17; tagged again 2026-10-21).** `release/0.19.0` cut from `main-now` at
`81dacaf5a7`, merging in order PR #185 (`fix/sandbox-say`: the Linux sandbox
cannot-start notice), PR #189 (`ms/msm112`: the production build runs through
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<!-- Generated by scripts/gen-roadmap.mjs from PLAN.md, CHANGELOG.md and docs/roadmap/entries.json. Edit those, then run npm run roadmap:generate; npm run check:roadmap fails when this file is stale. -->

<!-- Source fingerprint: fa463c377ffa0b203110cd4dd8e4ba5848de578ebb4ac852da0dbab0563bf424 -->
<!-- Source fingerprint: 5eaf63720bb04dcccac8c90bcb17b65362690505a3f3bcaf733fcc34d43226c1 -->

What Muse Spark Code has shipped, what is in the next release, what is being built and what is planned. Plans change: an item can move, shrink or be dropped, and no date is promised. Versions stay below 1.0; there is no 1.0 promise or date.

Expand Down
53 changes: 53 additions & 0 deletions docs/certification/cifinal0190.md
Original file line number Diff line number Diff line change
Expand Up @@ -765,3 +765,56 @@ function (title) { context.test(title); }`), and `.timeout(0)` was
refused by this PC's account), and no vault path reaches the process
helpers whose deadlines changed. The toast check printed no log; it now
prints the panel's log with the toasts, so a repeat names its cause.

## 21. The 0.19.0 release run: Open VSX's check read another package

Release run 39720213044 (`v0.19.0` on `4e09cab6ea`): tag checks, reuse of
CI run 39716712837, GitHub Release, Marketplace and npm succeeded; the Open
VSX job ended "openvsx: the published artifact does not match the release".

- Cause: `verifyPublished` read `/api/RandyNorthrup/muse-spark-code/0.19.0`
for the untargeted package. With targeted packages present, that answer
named `win32-arm64` (three of three reads from Node; curl got
`universal`), so the universal VSIX was compared with the win32-arm64
bytes. `/api/RandyNorthrup/muse-spark-code/universal/0.19.0` names the
universal package for 0.19.0 and for 0.18.2 (universal only).
- Open VSX state: all seven packages uploaded. `darwin-arm64`,
`linux-arm64` and `linux-x64` answered "Extension not found" for a few
minutes after the job (activated by 04:15 UTC), the other four at once.
- After the run, with the fixed check, each of the seven VSIX packages on
the Marketplace and on Open VSX matches the release asset (14 of 14), npm's
integrity for `muse-spark-code-acp@0.19.0` equals the release tarball's
sha512, and the downloaded assets pass `SHA256SUMS` (8 of 8).
- Drill, against the real Open VSX: the tag's `verifyPublished` on the
universal VSIX failed three of three ("openvsx published SHA-256 differs
from the release VSIX"), exit 1; the fixed one matched three of three,
exit 0, and still matches the win32-x64 package three of three.

## 22. PR #258's first run: the macOS vault panel flow never unlocked

PR #258 head `c7bdd3e943` (CI run 39722505089, capacity run 39722575285):
macOS shard 15 only, `posixVaultPanelFlow`: after Unlock the panel still
read `locked` when the step's 60 s wait ended, with no toast and no log. The
product code is PR #257's final head's, green on every macOS shard there,
and no path the macOS unlock takes reaches the process helpers whose
deadlines changed (`runTreeSync` serves the playbook only; the identity
probe passes its own timeout). With PR #257's third run (Windows, first
open, two failure toasts) it is the second hosted-runner vault flow failure
with an empty log. The step message now also names how many frames the
panel published and its last states, so the next one shows whether the
step ever ran; the defect is a recovery lane's to find and fix.

PR #258's second run, head `d0a39a70ed` (CI run 39724540034, capacity run
39724610207): macOS shard 8 ended "The runner has received a shutdown
signal. This can happen when the runner service is stopped, or a manually
started runner is canceled." and "The operation was canceled." No test
failed; every other job passed. A rerun on the same commit is refused
(AGENTS.md rule 2), so this record is the new commit.

PR #258's third run, head `a6f4767c97` (CI run 39725758843, capacity run
39725813062): Windows shard 9 only, `windowsBrokerClient.test.ts`: "Hook
timed out in 30000ms" in the `beforeAll` that builds the native helpers with
the person's own C# compiler, another time limit of ours on a slow hosted
Windows runner. The seven vault suites whose setup builds or stages native
helpers or starts a broker now run that setup with no time limit (owner
2026-10-16); here the five Windows ones pass (14 tests, 59.7 s).
27 changes: 27 additions & 0 deletions docs/certification/plan-archive.md
Original file line number Diff line number Diff line change
Expand Up @@ -784,3 +784,30 @@ docs/plan-archive/milestones.md`: clean.
`sharingArtifacts` + `estimatorPlanSnapshot` (79 passed),
`estimatorPlanSnapshotRealPlan` + `estimatorPlanSnapshotSource` +
`estimatorSnapshotStrict` (73 passed), `planDocument` (19 passed).

## 2026-10-21: room for the 0.19.0 release record

The 0.19.0 release record put `PLAN.md` at 3,566,310 bytes, 1,152 over the
`check:plan` gate (85% of the 4 MiB bound, 3,565,158). Two §7 gate records
of closed lanes moved to `docs/plan-archive/gates.md` with a pointer each;
no test, script or open branch cites or touches them (PR #252 changes §3 and
§6 only), and both milestones shipped:

| Block | Lines (at `4e09cab6e`) | Bytes | SHA-256 |
| -------------------------------------------- | ---------------------- | ----- | ----------- |
| CIFIXV hosted visual repair (2026-10-09) | 34544–34567 | 1,646 | `3b0e0461…` |
| M121A rounds 3–4 gate ownership (2026-10-09) | 34524–34540 | 1,287 | `66f4036a…` |

After: 3,563,591 bytes, 1,567 bytes under the gate.

### Proofs

- Reassembly: the command rebuilt the old `PLAN.md` before each write,
SHA-256 `8bc0b6ef…` and `6719195b…`.
- Parsed facts: identical; format drift after: 0.
- `npx prettier --check PLAN.md docs/plan-archive/gates.md`: clean.
- `npm run check:plan`: `plan-format-v1; 222 milestones; 0 drift`.
- `npm run roadmap:generate`: `ROADMAP.md` unchanged.
- `npm run check:reference`: exit 0.
- `planReader` + `planCitation` + `autoCompact` + `paidMoneyStructure`: 135
passed.
55 changes: 55 additions & 0 deletions docs/plan-archive/gates.md
Original file line number Diff line number Diff line change
Expand Up @@ -5355,3 +5355,58 @@ quality is not claimed green; the rig brief delegates it to the lead.
risk; see `docs/certification/m95-s.md`.

<!-- plan-archive:end id="gates-5cf2e1004-35453" -->

## CIFIXV hosted visual repair (2026-10-09)

<!-- plan-archive:begin id="gates-4e09cab6e-34544" lines="34544-34567" at="4e09cab6e" bytes="1646" sha256="3b0e04618dda8b1104c9fcd7a7fe7569c5c5de4cd2c5291d7ad9efed44eea5aa" -->

**CIFIXV hosted visual repair (2026-10-09, linuxlt).** Own only the three
visual failures at `f5e0760c3`: reconstruct schedules under the served source
root, review any intended pixel changes before regenerating goldens, and
refresh current-source classification hashes without changing coverage.
Keep all thresholds and repository deadlines. Full quality remains the lead's
gate under the shared lane rules; no merge, push or live/paid calls.

- [x] Prove historical schedule loading fails before the repair and passes after.
- [x] Resolve visual comparisons and identify the aggregate's actual failure.
- [x] Refresh source receipts and pass the owning audit suite.
- [x] Pass full visual, six-theme accessibility and default-timeout stability gates.
- [x] Record evidence and local hooks-on commits in `docs/certification/cifixv.md`.

Reviewed full baseline: `CIFIXV-integrated-accessibility-review-2026-10-09`,
9,792 images / 447,310,229 bytes; all 884 distinct changed images reviewed,
27 named scenes. Full pixel gate passed; six-theme scoped axe passed on
1,632 pages with zero violations, retaining all 315 incomplete findings.
All 43 owning tests passed at repository defaults; production build passed.
The artifact action's `digest-mismatch: error` is an input;
the aggregate requires successful schedule shards and complete receipts.
Bounded external gate deferral: full `jscpd` still reports the inherited
51-token clone in `test/unit/modelApiLoopGuarantees.test.ts:741` and `:890`.
That suite is another lane's scope; leave code and duplication limits intact
for the lead's integration gate. Receipt: `docs/certification/cifixv.md`.

<!-- plan-archive:end id="gates-4e09cab6e-34544" -->

## M121A rounds 3–4 gate ownership (2026-10-09)

<!-- plan-archive:begin id="gates-4e09cab6e-34524" lines="34524-34540" at="4e09cab6e" bytes="1287" sha256="66f4036ae37945ea9033f935e396eadba65e147b940bb4afeb6547cf873023e8" -->

**M121A rounds 3–4 gate ownership (2026-10-09, kubuntu).** The rig brief and
shared lane rules forbid aggregate quality in this worktree; the lead owns
that gate before integration. This lane runs the owning usage/money/schedule
files at repository timeouts, typecheck, changed-file lint/format, localization
and the remaining scoped static checks. Full production build retains the
inherited What's New content-budget refusal; measure current production
options/plugins in memory without editing the build or raising a cap. Byte
counts and exact failure receipts are in `docs/certification/m121.md`.
The unchanged zero-clone duplication gate also retains one six-line clone in
`test/unit/windowsTrustedPath.test.ts`; that file matches `1494fbf87` byte for
byte and is outside this lane's money scope. The touched migration test's
duplicate setup is consolidated without dropping assertions. The lead owns
the remaining Windows-test repair and the full artifact size/split replay:
the refused build removes stale browser chunks before stopping, so those
artifact checks cannot certify a complete current build. No gate is weakened.
Round 4 replays the owning usage/money files, one unit-project typecheck and
the scoped static checks and production measurements at the unchanged caps.

<!-- plan-archive:end id="gates-4e09cab6e-34524" -->
69 changes: 69 additions & 0 deletions docs/real-life/release-0.19.0-limits-W.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Real use: 0.19.0 after the time limits came out, Windows (the lead, this PC)

Version: **0.19.0**, the agent package CI built from PR #257's final head
`915f409fe4` (CI run 39716712837, artifact `muse-spark-code-acp`,
`muse-spark-code-acp-0.19.0.tgz`, 3,485,063 bytes), installed with npm into
its own folder outside any workspace; `--version` → `0.19.0`. The release
reuses this run's packages. Platform: Windows 11 Pro 10.0.26200, x64.
Backend: Muse Code 1.4.11 (the person's own install), contributor mode on in
the person's own settings; the product started
`muse-bin-1.4.11-R6667.1.exe serve --disable-sandbox --contributor-mode on
--trust-workspace`. No API key was read or stored.

What changed and is used here: no deadline of ours on report source reads
(5 s before), on Windows PowerShell, `taskkill` and process-table reads, or
on the stops after a turn's cancel (20 s before).

Expected before the run: **5 model calls**, cap 40 calls and **$2.00**, every
request on **`muse-spark-1.3-contributor`** by name, in an empty workspace.

## Reports read the network with no deadline of ours — PASS

`muse-spark-code-acp report project --network --format json --out <file>`
against this repository: exit 0 in 12 s, no model call. Against the
published 0.18.2 agent on the same repository at the same time:

- `stores` reads `partial` (channels-unavailable: 0.19.0 is not yet on the
stores) where 0.18.2 read `unavailable`; `usage` reads `partial` (it names
the journal entries it excludes) where 0.18.2 read `unavailable`.
- Every other source reads the same, except `planRevision`: `ok` on 0.18.2,
`unavailable` now. Not from this change: it compares PLAN.md with PLAN.md
at the latest release tag (`v0.18.2`), and today's PLAN reader finds six
format drifts in that older file (duplicate question ids such as
`Q-M95INT2`), so it refuses the comparison and says so. Recorded for the
recovery work, with `github` (`pulls-page-1: pull-response-invalid`,
`default-branch-page-1: http-422`) and `git` ("The source exceeds the
report read limit"), which read the same on 0.18.2.

## A command runs through Windows PowerShell — PASS

ACP session `01a161bf`, put on `muse-spark-1.3-contributor` by
`session/set_config_option` before any prompt. "Run this exact PowerShell
command once … `(Get-Process -Id $PID).ProcessName`" → the client was asked
"PowerShell: (Get-Process -Id $PID).ProcessName", allowed once; the answer
was `powershell`; `end_turn` in 20.5 s.

## Stop ends a long command and everything it started — PASS

"Run this exact PowerShell command once … `Start-Sleep -Seconds 300;
'slept'`", allowed; the client sent `session/cancel` 5 s after the tool call
started, as an editor's Stop does. The turn ended `cancelled` 90 ms after
the cancel (8.6 s in all). Afterwards no process on this PC had
`Start-Sleep -Seconds 300` in its command line.

## Notes

- The first attempt (session `01a161bd`) sent no prompt: the driver was
started without `--allow-contributor-models`, so the agent offered no
contributor model and refused the switch ("Invalid params"), and the
driver stops before any prompt when the session is not on the
contributor model. Muse Code's records show no call for it.
- `session/delete` answered "Muse Code 1.4.11 cannot delete conversations.",
as the product documents.

## Model calls

Counted from `model_completed` events in Muse Code's own session records
(`~/.local/share/muse/sessions/…/<id>/session.jsonl`, main sessions and
subagents) for sessions `01a161bd` and `01a161bf`: **5 calls**, every one
**`muse-spark-1.3-contributor`**, **$0.00** of the $2.00 cap.
Loading
Loading