Commit Graph
13 Commits
Author SHA1 Message Date
Jason WoltjeandClaude Fable 5 1cc41f9813 fix(quality): enumeration guard sees naming, not comments — F1/F2/F3 from 20155
ci/woodpecker/pr/ci Pipeline was successful
F1 (demonstrated defect): surface 2 was a regex over raw YAML text, so a
commented-out ci.yml invocation still counted as enumerated — #1017's own
failure mode reproduced inside the fix, in the most common disable path
there is. Comment lines are now skipped before matching; needles n8/c4
pin both polarities (a comment is not enumeration; a comment naming an
absent path raises no false stale-enumeration). The residual trailing-
comment limit is documented where the grep lives.

F2 (structural): the guard was link [0] of the six-hop pnpm chain it
guards, so severing that chain silenced guard and guarded together.
ci.yml now invokes it directly from the sanitization step too — reachable
from both surfaces it audits, so either path alone keeps one instrument
running.

F3 (vocabulary): failure line and header said 'reachable'; F1/F2 prove
the guard measures NAMING. It now says 'enumerated' everywhere, matching
the success line.

Needles: 14 passed / 0 failed. Real tree: population 44, enumerated 25,
excluded (signed) 19, surfaces 38, unchanged — F2's line adds redundancy,
not membership. F1 demo replayed against the fix: commenting out
test-install-migration.sh now fails loud (UNENUMERATED, rc=1).

Written-by: pepper (sb-it-1-dt)
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NsKce8iZuSuRnu3gVMCBKB
2026-07-31 08:18:56 -05:00
Jason WoltjeandClaude Fable 5 f7dd57bc10 feat(quality): CI test-membership guard — the enumeration can no longer silently under-run the disk (#1017)
ci/woodpecker/pr/ci Pipeline was successful
CI reaches shell suites through two hand-enumerated surfaces (package.json
test:framework-shell; direct ci.yml commands), and a hand-enumerated allowlist
re-arms its own gap: a new suite never auto-joins, which is how 17 of 39
suite-shaped files under framework/tools were invisible to every CI run.

check-test-enumeration.sh, now the first link of test:framework-shell:
- parses BOTH surfaces (JSON + chain tokenization; ci.yml token extraction) —
  never hand-written line ranges, which three seats independently mis-scoped;
- checks BOTH directions: on-disk-but-unreachable fails, surface-named-but-
  absent fails (a rename manufactures a stale entry silently);
- population pattern is basename *test*.sh, deliberately broad and applied
  IDENTICALLY to both sides: the strict test-*.sh prefix cannot even name
  three real boundary files, one of which three independent censuses handled
  three different ways with no recorded judgement;
- the exclusions file gets the same rigor: no reason, stale path, contradictory
  entry, or out-of-population entry each FAIL. An exclusion is a recorded
  decision someone signed, not an omission nobody made.

The 17 previously-invisible suites enter as signed exclusions with honest
per-entry reasons (the #1007 five cite credential non-hermeticity; the push
guards cite one-run-green local measurements plus an unverified setsid
dependency; the unmeasured say unmeasured) — converting the silent gap into
attributable entries without trading it for a red seam. Burndown = make a
suite CI-reachable, delete its line; the guard enforces the bookkeeping.

Needle suite: 12 passed / 0 failed, both polarities per failure mode, asserted
on the guard's own words. Real-tree run at 826a8b3b: population 44 =
25 enumerated + 19 excluded, zero unsigned, all 38 surface-named paths present.

Written-by: pepper (sb-it-1-dt)
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NsKce8iZuSuRnu3gVMCBKB
2026-07-31 08:07:02 -05:00
jason.woltje 31607a4af6 feat(mosaic): durable pre-update snapshot + verify net + restore CLI (#791 PR2) (#811)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-17 00:43:18 +00:00
jason.woltje 32a0ffba13 feat(mosaic): manifest-owned upgrade guard so updates never wipe operator config (#791) (#802)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-16 23:01:26 +00:00
jason.woltje adad486b6f fix(fleet): enforce exact comms authority (#787)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-16 00:32:23 +00:00
jason.woltje 94e5cd7a81 ci: eliminate cold pnpm install via pre-baked CI base image (Phase 1) (#635)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-06-22 22:50:21 +00:00
jason.woltje bf2a6745c8 fix(install): preserve user fleet data on re-seed + refresh active units (CRITICAL) (#632)
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected]>
Co-committed-by: Jason Woltje <[email protected]>
2026-06-22 21:38:09 +00:00
jason.woltje 528700ceea feat(framework): P6 — docs + compliance matrix + resident-budget CI (#607)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/tag/publish Pipeline was successful
Co-authored-by: Jason Woltje <[email protected]>
Co-committed-by: Jason Woltje <[email protected]>
2026-06-22 02:20:35 +00:00
jason.woltje bb7d549080 feat(framework): P4 — upgrade-safe Constitution migration (both installers) (#590)
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/push/publish Pipeline is pending
Co-authored-by: Jason Woltje <[email protected]>
Co-committed-by: Jason Woltje <[email protected]>
2026-06-21 23:03:48 +00:00
jason.woltje c9cfe36204 docs(framework): P3.1 fast-follow — governance wording + gate scope + bare-launch note (#577)
ci/woodpecker/push/ci Pipeline was canceled
ci/woodpecker/push/publish Pipeline was canceled
Co-authored-by: Jason Woltje <[email protected]>
Co-committed-by: Jason Woltje <[email protected]>
2026-06-21 18:56:50 +00:00
jason.woltje 5118be74cb feat(framework): P3 — extract Constitution (L0) + gut AGENTS dispatcher (#575)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Co-authored-by: Jason Woltje <[email protected]>
Co-committed-by: Jason Woltje <[email protected]>
2026-06-21 03:20:32 +00:00
jason.woltje bf24066a49 feat(framework): P1+P2 — public sanitization + blocking CI gate (#572)
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Co-authored-by: Jason Woltje <[email protected]>
Co-committed-by: Jason Woltje <[email protected]>
2026-06-21 02:40:11 +00:00
Jason Woltje b38cfac760 feat: integrate framework files into monorepo under packages/mosaic/framework/
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Moves all Mosaic framework runtime files from the separate bootstrap repo
into the monorepo as canonical source. The @mosaic/mosaic npm package now
ships the complete framework — bin scripts, runtime configs, tools, and
templates — enabling standalone installation via npm install.

Structure:
  packages/mosaic/framework/
  ├── bin/          28 CLI scripts (mosaic, mosaic-doctor, mosaic-sync-skills, etc.)
  ├── runtime/      Runtime adapters (claude, codex, opencode, pi, mcp)
  ├── tools/        Shell tooling (git, prdy, orchestrator, quality, etc.)
  ├── templates/    Agent and repo templates
  ├── defaults/     Default identity files (AGENTS.md, STANDARDS.md, SOUL.md, etc.)
  ├── install.sh    Legacy bash installer
  └── remote-install.sh  One-liner remote installer

Key files with Pi support and recent fixes:
- bin/mosaic: launch_pi() with skills-local loop
- bin/mosaic-doctor: --fix auto-wiring for all 4 harnesses
- bin/mosaic-sync-skills: Pi as 4th link target, symlink-aware find
- bin/mosaic-link-runtime-assets: Pi settings.json patching
- bin/mosaic-migrate-local-skills: Pi skill roots, symlink find
- runtime/pi/RUNTIME.md + mosaic-extension.ts

Package ships 251 framework files in the npm tarball (278KB compressed).
2026-04-01 21:19:21 -05:00