@zerwiz/ymir 0.1.27 → 0.1.28
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/.agents/skills/groa-update/SKILL.md +30 -0
- package/CHANGELOG.md +27 -0
- package/README.md +47 -8
- package/bin/fixes-guard.sh +112 -0
- package/bin/fixes.sh +157 -0
- package/bin/ymir.js +35 -0
- package/docs/fixes/agents/unversioned-2026-09-11-chat-uses-the-root-pi-model-catalog.md +15 -0
- package/docs/fixes/agents/unversioned-2026-09-11-shared-well-for-every-harness-no-mock-clickable-memories.md +26 -0
- package/docs/fixes/agents/unversioned-2026-09-13-gleipnir-sees-when-an-agent-is-turned-off.md +26 -0
- package/docs/fixes/agents/unversioned-2026-09-14-the-eindri-brokk-wake-bridge-they-can-talk-back-now.md +23 -0
- package/docs/fixes/agents/unversioned-2026-09-16-a-sandboxed-worker-cannot-think-auto-stops-killing-agent.md +18 -0
- package/docs/fixes/agents/unversioned-2026-09-17-agents-md-states-the-one-law-no-private-data-in-the-publ.md +25 -0
- package/docs/fixes/agents/unversioned-2026-09-17-every-figure-loads-the-agent-directory-was-never-read.md +25 -0
- package/docs/fixes/agents/unversioned-2026-09-17-pi-gets-its-agents-and-a-dead-extension-comes-back.md +26 -0
- package/docs/fixes/agents/unversioned-2026-09-17-the-well-as-tools-ymir-s-first-custom-pi-extension.md +20 -0
- package/docs/fixes/gate/0.1.28-fixes-guard-replaces-the-changelog-gate.md +7 -0
- package/docs/fixes/gate/0.1.28-the-changelog-system-is-replaced-by-fix-notes.md +8 -0
- package/docs/fixes/gate/0.1.28-the-frozen-changelog-becomes-per-component-notes.md +9 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-11-automate-the-install-consent-gate-self-healing-prereqs-v.md +21 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-11-single-tenant-workspaces-shipped.md +15 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-13-the-cloth-reaches-all-three-halls-hlidskjalf-sm-ja-the-s.md +25 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-16-one-login-for-every-app-on-the-web-the-gate-fronts-them-.md +24 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-16-the-credential-reaches-the-gate-and-the-hall-stops-leaki.md +23 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-16-the-delivery-gates-install-themselves-rename-drift-mende.md +22 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-16-the-panels-that-crashed-the-gate-that-lied-and-the-well-.md +25 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-17-0-1-14-the-panels-reach-the-gate-and-the-fourth-window-s.md +9 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-17-models-providers-and-paths-are-the-user-s-and-the-gate-s.md +26 -0
- package/docs/fixes/hlidskjalf/unversioned-2026-09-17-the-northstar-gate-runs-nightly-the-platform-door-it-cau.md +16 -0
- package/docs/fixes/hoard/unversioned-2026-09-16-every-app-wears-its-own-rune.md +27 -0
- package/docs/fixes/hoard/unversioned-2026-09-16-hodd-lives-outside-the-repo-and-the-installer-makes-it-s.md +24 -0
- package/docs/fixes/hoard/unversioned-2026-09-16-the-icons-are-real-runes-now-eight-of-them-were-drawings.md +33 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-0-1-26-published-and-the-vault-door-named.md +8 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-one-well-in-the-hoard-every-reader-of-kaia-s-memory-reso.md +23 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-skrymir-opens-the-hoard-not-the-checkout.md +18 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-the-hoard-encrypts-its-secrets-at-rest.md +20 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-the-hoard-gets-a-guard-and-rule-04-stops-contradicting-t.md +19 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-the-home-s-re-laid-layout-taught-to-the-system.md +17 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-the-private-home-gets-the-ward-it-never-had.md +25 -0
- package/docs/fixes/hoard/unversioned-2026-09-17-the-schedule-is-the-user-s-cron-leaves-the-tree-lives-in.md +27 -0
- package/docs/fixes/install/0.1.28-a-stale-install-can-no-longer-hide.md +8 -0
- package/docs/fixes/install/unversioned-2026-09-11-desktop-shell-tunnel-and-temporary-auth.md +14 -0
- package/docs/fixes/install/unversioned-2026-09-11-smooth-install-provider-choice-no-forced-key-real-prereq.md +22 -0
- package/docs/fixes/install/unversioned-2026-09-16-apodex-joins-the-weave-research-planning-provider.md +27 -0
- package/docs/fixes/install/unversioned-2026-09-16-icons-the-operator-can-pin-and-one-pair-of-hands-for-the.md +29 -0
- package/docs/fixes/install/unversioned-2026-09-16-the-desktop-never-dials-out-cloudflare-stays-outside-ele.md +25 -0
- package/docs/fixes/install/unversioned-2026-09-17-0-1-12-the-icons-reach-the-live-tree-and-a-missing-surfa.md +10 -0
- package/docs/fixes/install/unversioned-2026-09-17-0-1-8-the-day-s-work-reaches-npm.md +25 -0
- package/docs/fixes/install/unversioned-2026-09-17-a-stale-install-cannot-hide-and-the-one-liner-cannot-be-.md +9 -0
- package/docs/fixes/install/unversioned-2026-09-17-both-shapes-a-clone-and-an-npm-install-and-the-patience-.md +26 -0
- package/docs/fixes/install/unversioned-2026-09-17-gr-a-knows-the-npm-half-how-to-renew-the-published-packa.md +9 -0
- package/docs/fixes/install/unversioned-2026-09-17-npm-only-the-hall-answers-on-its-own-port-and-the-marks-.md +27 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-apps-leave-the-monorepo-installation-pulls-them-from.md +23 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-doors-the-cloth-and-the-icons-that-were-not-there.md +27 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-editor-stops-being-banished-to-its-own-desktop.md +18 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-four-surfaces-arrive-by-npm-and-an-old-tree-gives-up.md +24 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-house-gains-an-unpublish-door.md +19 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-icons-reach-the-live-tree-and-a-missing-surface-is-a.md +26 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-install-asks-with-a-plan-and-the-operator-s-things-l.md +24 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-installer-actually-installs-the-whole-platform-then-.md +9 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-installer-has-a-design-of-its-own.md +9 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-npm-door-stands-the-surfaces.md +13 -0
- package/docs/fixes/install/unversioned-2026-09-17-the-one-liner-the-readme-promised-and-it-sets-the-path.md +9 -0
- package/docs/fixes/install/unversioned-2026-09-17-ymir-command-not-found-is-a-path-fault-and-here-is-the-c.md +8 -0
- package/docs/fixes/install/unversioned-2026-09-18-the-readme-leads-with-the-doors-that-work.md +13 -0
- package/docs/fixes/odrerir/unversioned-2026-09-14-rerir-forged-eindri-odrerir-pane-w3-p7.md +12 -0
- package/docs/fixes/odrerir/unversioned-2026-09-17-the-live-hall-s-board-becomes-true-the-snapshot-lands-on.md +18 -0
- package/docs/fixes/runtime/unversioned-2026-09-11-gleipnir-lock-pid-binding-fix.md +17 -0
- package/docs/fixes/runtime/unversioned-2026-09-11-hardcoded-per-page-feeds-header-stream.md +19 -0
- package/docs/fixes/runtime/unversioned-2026-09-11-per-page-rolling-40-message-feeds.md +13 -0
- package/docs/fixes/runtime/unversioned-2026-09-11-smi-ja-views-are-repo-local.md +17 -0
- package/docs/fixes/runtime/unversioned-2026-09-11-stats-1-1-kaia-chat-forge-prompts.md +23 -0
- package/docs/fixes/runtime/unversioned-2026-09-11-the-well-is-real-mimirsbrunn-engram.md +21 -0
- package/docs/fixes/runtime/unversioned-2026-09-12-fleet-preferences.md +11 -0
- package/docs/fixes/runtime/unversioned-2026-09-12-house-law-rules-and-the-grein-naming.md +11 -0
- package/docs/fixes/runtime/unversioned-2026-09-12-r-preference-moved-out-of-the-tracked-tree.md +10 -0
- package/docs/fixes/runtime/unversioned-2026-09-12-the-dashboards-stop-crash-looping-on-the-igpu.md +20 -0
- package/docs/fixes/runtime/unversioned-2026-09-12-the-well-actually-installs-it-never-did.md +23 -0
- package/docs/fixes/runtime/unversioned-2026-09-12-updater-forged-credential-moved-to-env.md +12 -0
- package/docs/fixes/runtime/unversioned-2026-09-14-a-vacant-helm-is-entered-not-punted-watcher-wake-repair.md +24 -0
- package/docs/fixes/runtime/unversioned-2026-09-14-the-echo-guard-no-wake-flood-through-gn-s-door.md +18 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-app-packaging-prepared-under-the-ymir-scope-amendment-c-.md +23 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-four-readers-that-still-pointed-at-the-pre-split-world.md +26 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-no-blue-the-forge-language-replaces-the-old-blue.md +26 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-omarchy-first-host-aware-windows-and-macos-get-a-door.md +25 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-smi-ja-moves-into-the-app-tree.md +17 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-the-changelog-guard-no-push-ships-untold.md +19 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-the-core-senses-the-real-host-not-omarchy-s-shadow.md +23 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-the-hearth-spreads-one-fire-three-more-surfaces.md +25 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-the-loader-stops-deleting-merge-never-overwrite.md +27 -0
- package/docs/fixes/runtime/unversioned-2026-09-16-the-mesh-reaches-teams-and-anchor-and-show-stops-guessin.md +24 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-0-1-10-the-hall-answers-on-its-port-and-the-marks-land.md +15 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-0-1-11-four-surfaces-their-marks-and-a-door-that-mends.md +18 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-glitnir-stops-hanging-and-one-process-is-one-row.md +15 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-main-is-repaired-and-the-report-wears-the-cloth.md +25 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-not-again-and-four-surfaces-in-one-raise.md +26 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-smoke-test-all-ui-two-checks-that-lied-about-their-own-s.md +20 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-changelog-stops-conflicting-fragments-folded-by-a-sc.md +25 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-doors-written-down-where-a-user-will-find-them.md +20 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-duplicate-extensions-removed-from-the-project-tree.md +17 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-extensions-deployed-without-their-modules.md +23 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-feed-follows-brokk-s-thinking-past-the-composer.md +17 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-fleet-stops-colliding-a-grid-fan-and-each-smith-s-ow.md +21 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-fork-stands-the-machine.md +12 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-fragment-convention-is-enforced-where-github-runs-it.md +26 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-layout-swept-every-reader-taught-the-new-doors.md +24 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-model-that-raised-itself-and-the-workhorse-that-repl.md +26 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-package-shipped-the-memory-well-one-version-now-excl.md +26 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-phantom-optional-pins-cut.md +9 -0
- package/docs/fixes/runtime/unversioned-2026-09-17-the-sweep-and-the-door-that-mends-itself.md +26 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-12-the-editor-keeps-its-own-seat.md +16 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-13-sessr-mnir-the-seat-hall.md +28 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-13-the-carved-cloth-reaches-the-seat-hall-sessr-mnir.md +27 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-13-the-new-tree-the-mesh-the-seat-hall.md +25 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-13-the-realm-seat-carved-wayof.md +24 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-16-apodex-seat-verified-the-weave-mended.md +27 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-16-the-visualizer-finds-its-db-and-the-seat-hall-actually-b.md +22 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-17-0-1-13-the-re-voiced-seat-arrives-and-the-packages-are-l.md +8 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-17-sessr-mnir-stops-wearing-pi-s-clothes.md +23 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-hearth-re-seeds-on-its-container-sessr-mnir-s-chat-f.md +23 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-packaged-seat-carries-the-watch.md +11 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-readme-lists-the-packages-and-the-pin-moves-to-the-r.md +16 -0
- package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-seat-s-name-and-the-visualizer-s-home.md +12 -0
- package/docs/fixes/skills/unversioned-2026-09-11-galdr-tyr-assets-symlink-not-copies.md +11 -0
- package/docs/fixes/skills/unversioned-2026-09-11-load-the-owning-asset-before-editing-a-governed-path-5-l.md +21 -0
- package/docs/fixes/skills/unversioned-2026-09-11-omarchy-first-host-skills-machine-learning-native-fixes.md +27 -0
- package/docs/fixes/skills/unversioned-2026-09-13-the-imported-names-leave-the-halls-norse-naming-purge.md +26 -0
- package/docs/fixes/skills/unversioned-2026-09-16-gunnl-joins-the-hall-skillopt-integration.md +17 -0
- package/docs/fixes/skills/unversioned-2026-09-16-one-skills-tree-every-harness-the-config-stomp-mended.md +25 -0
- package/docs/fixes/skills/unversioned-2026-09-16-the-skill-loading-audit-wrong-skills-unloaded-the-index-.md +26 -0
- package/docs/fixes/skills/unversioned-2026-09-17-0-1-9-both-shapes-reach-the-registry.md +17 -0
- package/docs/fixes/skills/unversioned-2026-09-17-midgard-holds-public-assets-only-the-company-wiki-is-gon.md +23 -0
- package/docs/fixes/skills/unversioned-2026-09-17-the-forge-speaks-each-skill-s-own-text-in-the-index.md +16 -0
- package/docs/fixes/skills/unversioned-2026-09-17-the-local-git-round-joins-the-loom-the-stack-s-doors-are.md +19 -0
- package/docs/fixes/skills/unversioned-2026-09-17-the-registry-says-where-a-repo-lives-and-what-it-is-for.md +20 -0
- package/docs/fixes/smidja/unversioned-2026-09-16-the-pane-bridge-keeps-its-quoting-phase-3-verified.md +22 -0
- package/docs/fixes/smidja/unversioned-2026-09-16-the-roster-can-finally-run-an-agent-on-pi.md +23 -0
- package/docs/fixes/smidja/unversioned-2026-09-16-the-roster-s-effect-lands-and-the-backend-pin-stops-bein.md +19 -0
- package/docs/fixes/smidja/unversioned-2026-09-16-the-validator-stops-calling-a-dead-visualizer-healthy.md +20 -0
- package/docs/fixes/smidja/unversioned-2026-09-17-the-fleet-was-a-rack-of-terminals-now-it-is-the-roster.md +18 -0
- package/docs/fixes/smidja/unversioned-2026-09-17-the-plan-learns-the-smithy-s-package-name-and-the-instal.md +25 -0
- package/docs/fixes/smidja/unversioned-2026-09-17-the-smithy-can-see-the-well.md +20 -0
- package/docs/fixes/smidja/unversioned-2026-09-17-the-smithy-s-dependency-names-the-package-npm-will-actua.md +20 -0
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the fork stands the machine
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **`config/app-repos.yaml` (public)** — the five app repos, the fork's road:
|
|
5
|
+
a fresh clone with no hoard registry falls back to this map in the installer's
|
|
6
|
+
`apps` step, so `git clone` + `bin/ymir-install.sh` pull the four surfaces as
|
|
7
|
+
they would on the author's seat. Verified on a clean clone (`ymir-plan.sh`:
|
|
8
|
+
hlidskjalf/odrerir/sessrumnir/smidja all `DO`). The hoard registry stays
|
|
9
|
+
authoritative when present.
|
|
10
|
+
|
|
11
|
+
### Files
|
|
12
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the fragment convention is enforced where GitHub runs it
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The gap, found by doing it.** The pre-push hook folds fragments before a
|
|
5
|
+
push — but a **GitHub merge bypasses the local hook entirely**. PR #43 merged
|
|
6
|
+
and left its own fragment unfolded on `main`, so the ledger silently fell
|
|
7
|
+
behind what the fragments already told. `bin/changelog-assemble.sh --check`
|
|
8
|
+
catches exactly that state; nothing was calling it.
|
|
9
|
+
- **The gate, at the layer that runs.** `.github/workflows/ymir-changelog-fragments.yml`:
|
|
10
|
+
- **on `push` to main** — `bin/changelog-assemble.sh --check` fails when any
|
|
11
|
+
fragment is unfolded, so the ledger can never fall behind a merge.
|
|
12
|
+
- **on a PR** — a change touching code or docs must add a fragment, edit
|
|
13
|
+
`CHANGELOG.md`, or carry the `no-changelog` label. The label records the
|
|
14
|
+
deliberate decision that no entry belongs, rather than letting it be
|
|
15
|
+
forgotten.
|
|
16
|
+
- **The pattern is the standard one.** This is the well-trodden "news fragments"
|
|
17
|
+
design (towncrier — Twisted, pytest, pip, attrs; changesets; CPython). The
|
|
18
|
+
zeroc-ice proposal states the root cause exactly: *"PRs edit one shared file.
|
|
19
|
+
Better merge discipline doesn't fix it; not editing the shared file does."*
|
|
20
|
+
- **`merge=union` was considered and rejected on evidence.** The Rigor ADR-105
|
|
21
|
+
tried it and measured it: *"GitHub's PR-mergeability and merge computation
|
|
22
|
+
ignore `.gitattributes` merge drivers, union included."* It works against local
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Files
|
|
26
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the layout swept: every reader taught the new doors
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **bin/nornir-job-observer.sh** — masterplan, runes ledger, and the well now
|
|
5
|
+
resolve to the hoard homes (`hodd/docs/masterplan.md`,
|
|
6
|
+
`hodd/memory/runes_audit.md`, `hodd/memory/well`), overridable via
|
|
7
|
+
`BROKK_MASTERPLAN`/`BROKK_WELL_DIR`.
|
|
8
|
+
- **bin/saga-session-start.sh** — the Sága digest's open-orders read follows
|
|
9
|
+
the home (`hodd/docs/masterplan.md`).
|
|
10
|
+
- **bin/nornir-job-daily-briefing.sh** — message/comment paths updated to the
|
|
11
|
+
same doors.
|
|
12
|
+
- **bin/docs-guard.sh** — block message names both new homes (hodd/docs,
|
|
13
|
+
memory/plans).
|
|
14
|
+
- **.agents/agents/{brokk,forseti-reviewer,mimir-planner}.md** — the plan
|
|
15
|
+
shelf, masterplan, and append-only log pointers moved to their hoard
|
|
16
|
+
homes (`memory/plans/<domain>/`, `hodd/docs/*`).
|
|
17
|
+
- **.agents/skills/{tyr-check,ymir-host,ratatoskr-a2a}/SKILL.md** — the same
|
|
18
|
+
pointers, plus the Ratatoskr spec → `memory/plans/mesh/25-ratatoskr-a2a.md`
|
|
19
|
+
and `hodd/docs/a2a-runs.md`.
|
|
20
|
+
- **docs/workspaces.md** — status note: workspaces settled under
|
|
21
|
+
`hodd/workspaces/` (2026-09-17).
|
|
22
|
+
|
|
23
|
+
### Files
|
|
24
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the model that raised itself, and the workhorse that replaced it
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **A model raised itself at login and killed the session.** `qwen3-6-35b-a3b`
|
|
5
|
+
carried `[Install] WantedBy=default.target`, so systemd started it at
|
|
6
|
+
12:36:33; with `--no-mmap` on a unified-memory APU the weights were
|
|
7
|
+
unreclaimable, memory and swap drained, and the kernel's global OOM killer took
|
|
8
|
+
`gnome-shell` — and the Ymir stack with it. `local-models.md` §4 gains
|
|
9
|
+
**three traps** from this (anonymous load on unified memory; backend chosen by
|
|
10
|
+
reputation rather than measurement; reasoning configured through the chat
|
|
11
|
+
template), and a new **§12** states the rule: a model service unit must never
|
|
12
|
+
raise itself.
|
|
13
|
+
- **`§11 — Reasoning is a resource you must configure`** is new. Unbounded
|
|
14
|
+
reasoning fails *totally* — no answer at all — not merely worse. The same model
|
|
15
|
+
on the same request produced clean, degenerate (repetition), or unterminated
|
|
16
|
+
output depending only on how reasoning was configured. Prefer the engine's
|
|
17
|
+
native budget flag; the chat-template keyword is a different mechanism.
|
|
18
|
+
- **Seated a new local workhorse** (a 176B-parameter MoE, Vulkan backend, MTP
|
|
19
|
+
speculative decoding, file-backed load). Measured before seating: prefill and
|
|
20
|
+
decode both at parity with the reference stack for this silicon. The per-host
|
|
21
|
+
record belongs in the hoard, not here — §6.
|
|
22
|
+
- **Ran a 32-run A/B on guidance during reasoning** (counsel at the moment of
|
|
23
|
+
failure vs counsel u
|
|
24
|
+
|
|
25
|
+
### Files
|
|
26
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the package shipped the memory well (one version, now excluded)
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The exposure.** `@zerwiz/ymir@0.1.5` carries five files that are nobody's but
|
|
5
|
+
the operator's: `.agents/memory/kaia.engram`, its `-shm` and `-wal` sidecars, and
|
|
6
|
+
`.agents/memory/well/{episodes,workspace}.jsonl`. A public npm tarball contained
|
|
7
|
+
the live memory well — the store and the episodes. Verified by fetching the
|
|
8
|
+
published artefact and listing it; `0.1.0`–`0.1.4` are clean, and this branch's
|
|
9
|
+
build is clean.
|
|
10
|
+
- **The cause, and it is a trap worth naming.** `.gitignore` excludes
|
|
11
|
+
`.agents/memory/kaia.engram*` and `.agents/memory/well/*.jsonl`, and the repo is
|
|
12
|
+
clean — but **npm does not consult `.gitignore` when `files[]` names a whole
|
|
13
|
+
directory.** `files: [".agents/"]` packs that subtree *including* the ignored
|
|
14
|
+
files. Nothing warned: the leak travelled in the artefact, not the repo.
|
|
15
|
+
- **The fix.** The manifest excludes them explicitly, because a `files[]` list
|
|
16
|
+
cannot rely on the ignore file it overrides:
|
|
17
|
+
`!.agents/memory/kaia.engram*`, `!.agents/memory/well/*.jsonl`,
|
|
18
|
+
`!.agents/memory/*.db`, plus `!**/__pycache__/` and `!**/*.pyc` for the compiled
|
|
19
|
+
junk that was travelling the same way. Verified: `npm pack --dry-run` carries
|
|
20
|
+
864 files and **no** memory store — the memory README and the ledger's scaffold
|
|
21
|
+
header are all that remain, as they should be.
|
|
22
|
+
- **The rule for every future package:** a `files[]` entry that names a directory
|
|
23
|
+
overrides `.giti
|
|
24
|
+
|
|
25
|
+
### Files
|
|
26
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the phantom optional pins, cut
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- The platform's stale \`optionalDependencies\` (sessrumnir pinned at the broken
|
|
5
|
+
0.1.9) shadowed the required \`^0.1.10\` — npm never fetched the good seat.
|
|
6
|
+
Removed; the required deps now resolve to latest (0.1.18).
|
|
7
|
+
|
|
8
|
+
### Files
|
|
9
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## runtime · unversioned · 2026-09-17 — the sweep, and the door that mends itself
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **A retired name is swept from the launcher.** `ymir-visualizer.desktop` and its
|
|
5
|
+
icon pointed at a glyph nobody ships — a blank square for anyone who knew the old
|
|
6
|
+
name. `design-icon.sh install` removes retired entries now (`ymir-visualizer`,
|
|
7
|
+
and `ymir-hlidskjalf-mobile` where that app is not installed).
|
|
8
|
+
- **`ymir hlidskjalf` mends the Electron runtime itself.** npm gates install
|
|
9
|
+
scripts by default, so a fresh install can build the web app perfectly and have
|
|
10
|
+
no window. The door now runs the repair it used to *describe*
|
|
11
|
+
(`npm install-scripts approve electron` + `npm rebuild electron`), and only then
|
|
12
|
+
refuses — with both the manual command and the honest alternative
|
|
13
|
+
(`ymir install --no-desktop`).
|
|
14
|
+
- **Two faults are provably in the app repos, not here** (recorded so nobody hunts
|
|
15
|
+
them in Ymir again):
|
|
16
|
+
- **the fourth hall** — the landing's list is a hardcoded SPA component
|
|
17
|
+
(`HallsSwitcher`; the bundle says *"three halls of Ymir — one seat, three
|
|
18
|
+
roofs"*), not data from the gate API. Óðrerir must be added in
|
|
19
|
+
`zerwiz/hlidskjalf` and the SPA rebuilt.
|
|
20
|
+
- **the ember glow** — the seat ships `emberBootTheme` in its built renderer but
|
|
21
|
+
no themed cloth beside it; the house's framework-neutral
|
|
22
|
+
`midgard/design-system/ember.js` exists precisely so every surface can share
|
|
23
|
+
one fire, and the seat must be told to light it (`zerwiz/sessrumnir`).
|
|
24
|
+
|
|
25
|
+
### Files
|
|
26
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-12 — The editor keeps its own seat
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **`open-editor.ts` seats the editor in Þjazi:** inside herdr, `/edit` and
|
|
5
|
+
`ctrl+shift+e` now open the Allfather's editor in its **own tab** of the home
|
|
6
|
+
workspace (`herdr tab create --focus` + `herdr pane run`, label
|
|
7
|
+
`ymir:edit[:<base>]`, recorded in `state/herdr-seats` for `close-all`) instead
|
|
8
|
+
of suspending the pi session — the agent no longer dies when the editor
|
|
9
|
+
opens. Outside herdr the old roads remain: GUI editors launch detached,
|
|
10
|
+
terminal editors suspend the TUI and resume on exit.
|
|
11
|
+
- **`open-editor.ts` shows hidden files:** the picker and `/edit`
|
|
12
|
+
tab-completion now merge the git listing with a bounded walk, so gitignored
|
|
13
|
+
dotfiles (`.env.local`, `.env.realm`, …) are openable too.
|
|
14
|
+
|
|
15
|
+
### Files
|
|
16
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-13 — Sessrúmnir, the seat-hall
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Sessrúmnir adopted:** the Apache-2.0 **pi-desktop** GUI
|
|
5
|
+
(`FaqFirebase/pi-desktop`, v0.1.7-alpha) is vendored at `apps/sessrumnir/`
|
|
6
|
+
and rebranded **Sessrúmnir** — the seat-hall where the Allfather converses
|
|
7
|
+
with the machine. The external engine keeps its product name; the GUI the
|
|
8
|
+
user sees is Sessrúmnir, themed with the way-of palette (sky `#38bdf8` on
|
|
9
|
+
deep navy) as the new default built-in theme. Window titles, launcher,
|
|
10
|
+
package identity, tray/autostart strings, data-dir name, and the Pi logo
|
|
11
|
+
(now a Sowilo rune bolt) are rebranded; upstream `LICENSE` is preserved and
|
|
12
|
+
`NOTICE` records the adoption.
|
|
13
|
+
- **Forge scripts:** `bin/sessrumnir-ensure.sh` (status/ensure/install — deps
|
|
14
|
+
are never committed, installed on first run with the electron-binary heal
|
|
15
|
+
`scripts/electron.sh` already uses) and `bin/sessrumnir.sh`
|
|
16
|
+
(start/status/stop with a workspace argument).
|
|
17
|
+
- **Install wiring:** `bin/ymir-install.sh` gains a `sessrumnir` step (after
|
|
18
|
+
`hermes`) and lists Sessrúmnir in `workspace/INSTALL.md`; the
|
|
19
|
+
`installation.md` asset's step table, adopted-engines table, and Hermes-style
|
|
20
|
+
section are updated in the same change.
|
|
21
|
+
- **Registry & audit:** the Hoard registry (`hodd/identity/projects.yaml`)
|
|
22
|
+
gains the `sessrumnir` project (upstream remote); the adoption is inscribed
|
|
23
|
+
in Runes.
|
|
24
|
+
- **Not yet installed:** `apps/sessrumnir/node_modules` is absent — run
|
|
25
|
+
`bin/ses
|
|
26
|
+
|
|
27
|
+
### Files
|
|
28
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-13 — the carved cloth reaches the seat-hall (Sessrúmnir)
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The landing's cloth is now the seat's own look.** Every semantic token in
|
|
5
|
+
`apps/sessrumnir/src/renderer/src/index.css` `@theme` was mapped to its carved
|
|
6
|
+
twin from the landing page's `:root` (`CodeP/ymir-homepage/src/lore.html`):
|
|
7
|
+
stone `#0e0c09` (app) with panels `#151209`/`#1a1610`/`#14100b`, bone text
|
|
8
|
+
`#cfc3a9`/`#9a8f75`/`#6b6250` (faint/ghost as bone washes), bronze
|
|
9
|
+
`#c9973f` accent and `#7d5f2a` brass rule for `border-strong`, blood
|
|
10
|
+
`#c2584a`/`#7c3a30` for error, steel `#96a0a8` for success. Semantic names are
|
|
11
|
+
unchanged — only the values moved.
|
|
12
|
+
- **Fensalir** (the weaving halls) is registered as a built-in theme
|
|
13
|
+
(`themes/fensalir.json`, id `fensalir`, appended to `BUILTIN_THEME_IDS` — an
|
|
14
|
+
additive change that keeps every persisted id resolving). The seat's own
|
|
15
|
+
built-in `sessrumnir` theme was carved to the same cloth, so the default look
|
|
16
|
+
of an existing profile is the cloth on restart. A new test holds the two
|
|
17
|
+
together (`the cloth is one`) and another holds the CSS `@theme` base to the
|
|
18
|
+
theme file (`never drift`).
|
|
19
|
+
- **Cloth is the default, not a cage:** the ThemeEngine's ordering is untouched —
|
|
20
|
+
every other built-in theme, any user theme, and `high-contrast` still win when
|
|
21
|
+
chosen.
|
|
22
|
+
- **Type:** Cormorant (display), Newsreader (body), IBM Plex Mono (mono) bundled
|
|
23
|
+
from `@fontsource*` (offline, `font-src 'self'`), with Inter/JetBrains Mono
|
|
24
|
+
kept as
|
|
25
|
+
|
|
26
|
+
### Files
|
|
27
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-13 — the new tree, the mesh, the seat-hall
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Everything in the new tree:** the Sessrúmnir work plus the orphaned fixes
|
|
5
|
+
were migrated from the `ymir-old` working tree into this canonical tree —
|
|
6
|
+
`apps/sessrumnir/` (deps vendored locally, never committed), the two
|
|
7
|
+
`bin/sessrumnir-*.sh` scripts, `step_sessrumnir` in `bin/ymir-install.sh`,
|
|
8
|
+
the Hoard registry entry, the `installation.md` asset, and the
|
|
9
|
+
`syn-watch-arm.js` continuity fix (re-arm when `.supervision-armed` exists
|
|
10
|
+
even with no task metadata). The superseded self-service register-gate work
|
|
11
|
+
was **not** ported — this tree's committed invite-gate is canonical.
|
|
12
|
+
- **Full install ran green** in the new tree: every step OK, invite minted
|
|
13
|
+
(`YMIR-DBN4-FXEX`), all five services up, `bin/ymir-validate.sh` 11/11 PASS.
|
|
14
|
+
- **Ratatoskr mesh healed:** the `a2abridge` engine (MIT,
|
|
15
|
+
`vbcherepanov/a2abridge` v3.0.0) is installed at `~/.a2abridge/bin/`, its
|
|
16
|
+
directory daemon runs on `127.0.0.1:7777`, and `bin/ratatoskr.sh
|
|
17
|
+
status|doctor` pass. Forged `bin/a2abridge-ensure.sh` (installs the engine,
|
|
18
|
+
patches the systemd unit's unwritable `/var/log` log paths to journal,
|
|
19
|
+
keeps the directory up) and wired it into migration `0002-a2a-mcp.sh`, so
|
|
20
|
+
every install/update heals the mesh instead of leaving a dangling MCP path.
|
|
21
|
+
- **MCP bridges fixed:** `engram-mcp` failed at startup (its Python env
|
|
22
|
+
lacked the `mcp` SDK; mcp 2.x renamed FastMCP, so it is pinned to `mcp<2`
|
|
23
|
+
|
|
24
|
+
### Files
|
|
25
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-13 — The realm seat, carved (wayof)
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Problem:** the realm tree was bare (only the shipped example), no tenant
|
|
5
|
+
was seated, and the session digest resolved the Allfather's realm to
|
|
6
|
+
`default` — his company and private holdings unreachable by the map.
|
|
7
|
+
- **Seat:** `svartalfaheim/wayof/` carved from the example — `.env.realm`,
|
|
8
|
+
`SECRETS.md`, `AGENTS.md` (persona), `domains/`, `projects/`, the five
|
|
9
|
+
workspace branches, and the 9 company cards seeded from the identity hoard
|
|
10
|
+
(askr · brokkforge · dvalin · mannheim · muninn · runestone · utgard · wayof ·
|
|
11
|
+
ymirlabs), realm field unified to `wayof`, repo paths corrected to this
|
|
12
|
+
machine. `data/realm.md` now pins `wayof` (was drifting between `way-of`,
|
|
13
|
+
`wayof`, and `default`; hoard cards + persona updated to match).
|
|
14
|
+
- **Hood:** `svartalfaheim/wayof/HOOD.md` is the map of the hoard and the
|
|
15
|
+
seat; `bin/saga-session-start.sh` stage 6 (context digest) now prints
|
|
16
|
+
`--- hood ---` whole from the realm seat, so a session opens knowing the
|
|
17
|
+
operator's holdings. Living overviews: `workspace/company/wayof-overview.md`
|
|
18
|
+
and `workspace/company/aigf.md` (hodd stays the private store; the realm
|
|
19
|
+
points at it).
|
|
20
|
+
- **Verified:** `bash -n` green; realm-lib resolves `wayof`; `realm env:
|
|
21
|
+
present`.
|
|
22
|
+
|
|
23
|
+
### Files
|
|
24
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-16 — Apodex seat verified; the Weave mended
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Correction (cites the entry below, never rewrites it).** The earlier
|
|
5
|
+
entry said *"LM Studio is retired; its :1234 port belongs to Apodex now."*
|
|
6
|
+
That was false as carved. LM Studio still holds `:1234` and is what serves
|
|
7
|
+
the Apodex GGUF; Apodex took the **model seat**, not the server.
|
|
8
|
+
- **Live verification.** `bin/apodex-smoke-test.sh` → PASS (valid tool-capable
|
|
9
|
+
response, exit 0). `bin/huginn-research-worker.sh` with **bare defaults** →
|
|
10
|
+
`status: completed`, verdict written, observed into Mimirsbrunn. The Apodex
|
|
11
|
+
seat (`http://127.0.0.1:1234/v1`) is live.
|
|
12
|
+
- **One model id, everywhere.** The seat serves **`apodex-1.0-mini`**; the
|
|
13
|
+
worker, smoke test, `.env.example`, `opencode.json`, `config/agents.yaml.example`
|
|
14
|
+
and Huginn's profile now all say so. Previously three names drifted
|
|
15
|
+
(`apodex/Apodex-1.0-mini-Q4_K_M`, `apodex/apodex-mini-q4`, the served id) and
|
|
16
|
+
the default worker call failed with `No models loaded`.
|
|
17
|
+
- **Four defects mended.** `bin/huginn-research-worker.sh` made executable
|
|
18
|
+
(was 644 — bare invocation died with `Permission denied`); the smoke test's
|
|
19
|
+
`--serve` GGUF path corrected to
|
|
20
|
+
`~/Models/FlameF0X/Apodex-1.0-mini-Q4_K_M-GGUF/apodex-1.0-mini-q4_k_m.gguf`;
|
|
21
|
+
`bin/models-detect.sh` env var renamed from the typo `APEDEX_URL` to
|
|
22
|
+
`APODEX_URL`.
|
|
23
|
+
- **Weight truth.** The Apodex Q4_K_M weights are **21.7 GB**, not the ~4–6 GB
|
|
24
|
+
the plan assumed — it ca
|
|
25
|
+
|
|
26
|
+
### Files
|
|
27
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-16 — the visualizer finds its DB, and the seat-hall actually builds
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
Two more readers left behind — both discovered by *starting the apps*, not by any
|
|
5
|
+
gate. Each failed silently in its own way.
|
|
6
|
+
|
|
7
|
+
- **`scripts/start.sh` pointed the smithy at a repo path that no longer holds the
|
|
8
|
+
DB.** `0003-private-data-separation` moved it to `$YMIR_HOME/smidja/smidja.db`,
|
|
9
|
+
but the starter still passed `CMD_DB=<repo>/apps/smidja/smidja_data/smidja.db`
|
|
10
|
+
— so the visualizer API died on boot with `smidja.db not found` and `:8437`
|
|
11
|
+
answered nothing. It now resolves the same pair `bin/smidja-bootstrap.sh` does
|
|
12
|
+
(home first, in-repo fallback, `SMIDJA_DB` override). The asset already
|
|
13
|
+
*described* this resolution; the code now implements it.
|
|
14
|
+
- **`bin/sessrumnir-ensure.sh` never built the app.** `[ "$built_present" ]` tests
|
|
15
|
+
a **literal, non-empty string** — always true — so `ensure --install` skipped
|
|
16
|
+
`build_app` and reported `built: no` with exit 0. Sessrúmnir only built when the
|
|
17
|
+
build was run by hand. Now `built_present` (the function) is called.
|
|
18
|
+
- `galdr-reread`: `.agents/skills/galdr-ymirsystem/assets/smidja.md` — the DB
|
|
19
|
+
path, the `scripts/start.sh` DB resolution, and the observer's read list.
|
|
20
|
+
|
|
21
|
+
### Files
|
|
22
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-17 — 0.1.13: the re-voiced seat arrives, and the packages are listed
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **`@zerwiz/sessrumnir` 0.1.9** — the seat that says Sessrúmnir and "Brokk is working", with the fork`s name gone from its source, its bundles, its installer and its package identity. Pinned so a fresh install receives it.
|
|
5
|
+
- **The README lists every package** on npm, and why the smithy is `@zerwiz/smidja-factory`.
|
|
6
|
+
|
|
7
|
+
### Files
|
|
8
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-17 — Sessrúmnir stops wearing Pi's clothes
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The naming law, broken at the root.** Clicking the Sessrúmnir icon opened a
|
|
5
|
+
window titled **Pi Desktop**: `apps/sessrumnir` is the Pi Desktop shell adopted
|
|
6
|
+
whole, and its product name was still Pi's —
|
|
7
|
+
`export const PI_DESKTOP_PRODUCT_NAME = 'Pi Desktop'` — rendered as the heading on
|
|
8
|
+
the home screen, the sidebar and the chat panel. That is the title the Allfather
|
|
9
|
+
saw, twice, on every launch.
|
|
10
|
+
- **Mended at the name:** `SESSRUMNIR_PRODUCT_NAME = 'Sessrúmnir'` (Odin's hall of
|
|
11
|
+
many seats), the three rendering components walked, and the old constant kept as an
|
|
12
|
+
alias so no unwalked import breaks. `tsc --noEmit` exit 0.
|
|
13
|
+
- **Still owed:** 1,255 English strings, **86 of them naming Pi** ("Pi is working",
|
|
14
|
+
"Quit Pi Desktop", "Pi Desktop v{{latestVersion}} is available", "Start Pi/OMP
|
|
15
|
+
before planning with Council"), and Pi's logo on the home screen. The locale is the
|
|
16
|
+
one place they live — that pass is the order, not a patch.
|
|
17
|
+
- Also in the launcher this session: an icon click now raises THE SYSTEM (converge
|
|
18
|
+
the service, reborn a windowless app, focus a live window), and `stop --view X`
|
|
19
|
+
stops only X — the loop that killed every view is gone. The Hall's own outage had
|
|
20
|
+
a cause: an Astro dev server on :4323 while the app waited on :4322.
|
|
21
|
+
|
|
22
|
+
### Files
|
|
23
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-17 — the hearth re-seeds on its container: Sessrúmnir's chat fire returns
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The ember glow was gone from the chat because the canvas sized itself once
|
|
5
|
+
at mount and only re-seeded on `window.resize`.** Sessrúmnir's split panes
|
|
6
|
+
(file tree · editor · image) resize the chat column without any window resize,
|
|
7
|
+
so the hearth kept a stale or zero-sized canvas — invisible. Both the shared
|
|
8
|
+
hearth (`midgard/design-system/ember.js`) and Sessrúmnir's React port
|
|
9
|
+
(`ember-background.tsx`) now watch their container with a ResizeObserver and
|
|
10
|
+
re-seed only when the measured size actually changes (never per-frame).
|
|
11
|
+
Hlidskjalf inherits the same mend through the shared module.
|
|
12
|
+
- **Verified live**: Sessrúmnir restarted on the fresh build; a screen capture
|
|
13
|
+
of the running window shows the fire drawing (ember + warm-glow pixels across
|
|
14
|
+
the hearth area). The running app had been serving a stale bundle (missing
|
|
15
|
+
`react-i18next` — deps installed, rebuilt).
|
|
16
|
+
|
|
17
|
+
galdr-reread: `.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md` — the
|
|
18
|
+
EmberBackground hearth section (shared module + ResizeObserver mend).
|
|
19
|
+
|
|
20
|
+
# CHANGELOG
|
|
21
|
+
|
|
22
|
+
### Files
|
|
23
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-17 — the packaged seat carries the watch
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The @zerwiz/ymir tarball now ships every surface the runtime reads**: the
|
|
5
|
+
harness surfaces (`.pi/`, `.opencode/`, `.claude/`, `.codex/`, `.cursor/`),
|
|
6
|
+
`assets/`, `data/`, `deploy/` — so an npm-installed seat has the watchers,
|
|
7
|
+
the session-start hooks and the extensions, not only the repo clone (0.1.16
|
|
8
|
+
→ 0.1.17).
|
|
9
|
+
|
|
10
|
+
### Files
|
|
11
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-17 — the README lists the packages, and the pin moves to the re-voiced seat
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **The README says what is on npm.** Five packages serve — `@zerwiz/ymir` (the
|
|
5
|
+
distro) and the four surfaces it depends on — and the section says so with a
|
|
6
|
+
table, plus the one line that matters to a reader: *why the smithy is not
|
|
7
|
+
`@zerwiz/smiddja`*. That name was accepted twice and served never (package
|
|
8
|
+
document 404, website 403, republish refused as already published); it was
|
|
9
|
+
renamed to `@zerwiz/smidja-factory`, which resolves.
|
|
10
|
+
- **The distro's pin moves to `@zerwiz/sessrumnir@0.1.9`** — the seat that speaks
|
|
11
|
+
its own name rather than the fork's. A fresh install was still receiving the
|
|
12
|
+
old voice through the `0.1.8-alpha` pin.
|
|
13
|
+
- **`@zerwiz/ymir@0.1.13`** is the packet that carries them.
|
|
14
|
+
|
|
15
|
+
### Files
|
|
16
|
+
- *(carried from the frozen CHANGELOG.md)*
|
package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-seat-s-name-and-the-visualizer-s-home.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## sessrumnir · unversioned · 2026-09-17 — the seat's name and the visualizer's home
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **omarchy, not omarchy-1** — the machine is `omarchy`; the fleet config docs
|
|
5
|
+
and the tailscale-sync map say so.
|
|
6
|
+
- **The Smíðja visualizer's home is the smidja repo clone** —
|
|
7
|
+
`apps/smidja-factory/apps/visualizer`; the skill tree carries no copy (the
|
|
8
|
+
stale build was moved aside). `smidja.md` (the governed asset), the smithy
|
|
9
|
+
SKILL, and the install asset all point at the clone.
|
|
10
|
+
|
|
11
|
+
### Files
|
|
12
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-11 — Galdr/Tyr assets: symlink, not copies
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Fix:** `tyr-check/assets` is now a **symlink** to the canonical
|
|
5
|
+
`galdr/assets`, so the two can never drift. A background process had been
|
|
6
|
+
rewriting the registry, flipping the sync gate red; a symlink makes drift
|
|
7
|
+
structurally impossible. Compliance back to 8/8 stable.
|
|
8
|
+
- **Verified:** compliance 8/8, smoke 8/8, lint 4/4.
|
|
9
|
+
|
|
10
|
+
### Files
|
|
11
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-11 — Load the owning asset before editing a governed path (5 layers)
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
The runtime drifted from its documentation because the asset that governs a
|
|
5
|
+
subsystem was never loaded before the code changed. Five layers now prevent it:
|
|
6
|
+
|
|
7
|
+
- **1. `AGENTS.md`:** a new `governed[6]` table maps each governed path to the
|
|
8
|
+
asset to load first, and `manual[]` gained `installation`, `ui`, `runtime-spec`.
|
|
9
|
+
- **2. Session digest:** `saga-session-start.sh` prints an `ASSET ROUTING` block
|
|
10
|
+
every session, so the mapping is always in context.
|
|
11
|
+
- **3. Router loadable:** `galdr`'s `disable-model-invocation` is removed (it hid
|
|
12
|
+
the one router that owns the assets); `tyr-check` keeps it (deliberate).
|
|
13
|
+
- **4. Enforced seatbelt:** new `bin/syn-asset-pretool-check.sh` denies an
|
|
14
|
+
`edit`/`write` of a governed path until its asset was read (`state/asset-reads`);
|
|
15
|
+
the Pi extension relays it and records asset reads.
|
|
16
|
+
- **5. Compliance gate:** `compliance-check.sh` gains an `assets` check that
|
|
17
|
+
FAILS when a governed path changed without its asset (it caught this very
|
|
18
|
+
change), and `runtime-compliance.md` documents G12 + the routing map.
|
|
19
|
+
|
|
20
|
+
### Files
|
|
21
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-11 — Omarchy-first: host skills, machine learning, native fixes
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **New skill `ymir-omarchy`:** Omarchy-native operation — the two laws (never
|
|
5
|
+
edit `/usr/share/omarchy/`; Hyprland owns placement), host detection, the
|
|
6
|
+
monitor/scale coordinate trap, the amdgpu GPU crash and mitigation, desktop-app
|
|
7
|
+
placement, and a safe-customisation table.
|
|
8
|
+
- **New skill `ymir-thjazi`:** Þjazi (herdr-first) — protocol floors (14+ panes,
|
|
9
|
+
0.8.0 presentation spaces), verification, installation.
|
|
10
|
+
- **Ymir learns the host:** `bin/omarchy-sense.sh` snapshots and *diffs* the
|
|
11
|
+
machine (Omarchy version, explicit packages, config files, monitors, scale) into
|
|
12
|
+
`state/omarchy-setup.json`; `bin/omarchy-hook-install.sh` adds an Omarchy
|
|
13
|
+
`post-update` hook so it re-learns after every `omarchy update`.
|
|
14
|
+
- **Þjazi in the installer:** `bin/herdr-ensure.sh` + new `step_backend`
|
|
15
|
+
(herdr, else tmux — never a silent fallback).
|
|
16
|
+
- **New `step_omarchy`** (SKIP on a non-Omarchy host).
|
|
17
|
+
- **Desktop fixes:** window placement is now LOGICAL and work-area clamped, and
|
|
18
|
+
prefers a non-primary display (the old math used physical pixels on a scale-1.5
|
|
19
|
+
panel and filled the screen). Apps are identified by their command line, not the
|
|
20
|
+
`.bin/electron` shim pid — which fixes the **double-launch** bug. `stop` kills
|
|
21
|
+
every matching pid.
|
|
22
|
+
- **GPU mitigation:** `YMIR_DESKTOP_DISABLE_GPU=1` adds
|
|
23
|
+
`--disable-gpu --disable-gpu-compositing` for small-VRAM iGPUs (the crash was
|
|
24
|
+
`amdgpu: Not e
|
|
25
|
+
|
|
26
|
+
### Files
|
|
27
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-13 — the imported names leave the halls (Norse naming purge)
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **"firstmate" retargeted to Ymir's own names across every Ymir-owned surface.**
|
|
5
|
+
The upstream distro's nautical vocabulary is gone from the docs, skills, `bin/`,
|
|
6
|
+
config, and the Hlidskjalf review copy: `firstmate` → **Brokk**, `secondmate` →
|
|
7
|
+
**Eindri-home**, `crew`/`crewmate` → **Eindri**, `captain` → **Allfather**
|
|
8
|
+
(`docs/lore.md`, `docs/Architecture.md`, `.agents/agents/brokk.md`,
|
|
9
|
+
`.agents/skills/herdr-panes/assets/{herdr,tmux}-backend.md`,
|
|
10
|
+
`.agents/skills/eindri-homes/assets/control-plane.md`,
|
|
11
|
+
`.agents/skills/saga-bearings/assets/board-template.html`,
|
|
12
|
+
`.agents/skills/ymir-host/assets/thjazi.md`, `bin/README.md`,
|
|
13
|
+
`apps/hlidskjalf/**`).
|
|
14
|
+
- **Engine literals kept.** Every real upstream identifier stays verbatim — the
|
|
15
|
+
Herdr labels (`firstmate`, `2ndmate-<id>`, `firstmate-<id>`), the home marker
|
|
16
|
+
`.fm-secondmate-home`, the envelope `FIRSTMATE_OP: ` and `[fm-from-firstmate]`,
|
|
17
|
+
and all `FM_*`/`fm-*` names — because `.agents/backend/` (the vendored engine)
|
|
18
|
+
and `assets/reference/` (provenance) are untouched.
|
|
19
|
+
- **Licensing.** `NOTICE` now records the upstream **firstmate** distro
|
|
20
|
+
(`github.com/kunchenguid/firstmate`, MIT, © kunchenguid) and a README "Built on"
|
|
21
|
+
section points to it; the MIT copyright/permission notice is retained.
|
|
22
|
+
- **Governed asset:** `galdr-ymirsystem/assets/hlidskjalf-ui.md` records the Allfather
|
|
23
|
+
review copy in the same change. `complianc
|
|
24
|
+
|
|
25
|
+
### Files
|
|
26
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-16 — Gunnlöð joins the hall (SkillOpt integration)
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **SkillOpt integration.** `pip install skillopt` into `.venv/`; training
|
|
5
|
+
loop (`skillopt-train`), eval (`skillopt-eval`), and nightly
|
|
6
|
+
self-evolution (`skillopt-sleep`) available for Smíðja prompts and
|
|
7
|
+
Ymir skills. Nightly Nornir job at 00:30 (bin/nornir-job-skillopt-sleep.sh),
|
|
8
|
+
staged artifacts only — Allfather approves before adopt. One-time setup:
|
|
9
|
+
`bin/skillopt-setup.sh`.
|
|
10
|
+
- **Naming.** SkillOpt adopted the name **Gunnlöð** (keeper of the mead of
|
|
11
|
+
poetry — distills trajectories into refined skill artifacts). Added to
|
|
12
|
+
`.agents/assets/agents/naming.md` (platform map, 28 subsystems),
|
|
13
|
+
`.agents/skills/galdr-ymirsystem/assets/registry.md` (skills + external tools),
|
|
14
|
+
`README.md` (System Map + Skills + gratitude), `NOTICE` (MIT attribution).
|
|
15
|
+
|
|
16
|
+
### Files
|
|
17
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-16 — one skills tree, every harness; the config stomp mended
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Every harness now reaches `.agents/skills`.** Pi was already right — its own
|
|
5
|
+
code walks up from the cwd to `.agents/skills` (and `~/.agents/skills`), so it
|
|
6
|
+
discovers Ymir's skills natively with no link and no config; a second root
|
|
7
|
+
under `.pi/` would only double-load. Claude Code, Codex and Cursor read project
|
|
8
|
+
skills from their own directory, so `bin/valknut-load.sh` now binds
|
|
9
|
+
`.claude/skills`, `.codex/skills` and `.cursor/skills` to `../.agents/skills`.
|
|
10
|
+
opencode reaches the tree through `skills.paths`. The install step `loaders`
|
|
11
|
+
runs the loader, so a fresh install gets all of it.
|
|
12
|
+
- **The `harnesses` gate (G14) now asserts the skills surfaces too** — opencode's
|
|
13
|
+
config, Pi's native root, and the three links — so a harness silently loading
|
|
14
|
+
nothing can no longer pass.
|
|
15
|
+
- **Defect mended: the loader was stomping `opencode.json`.** `bin/valknut-load.sh`
|
|
16
|
+
renders `opencode.json` from `opencode.json.example`, and that example carried
|
|
17
|
+
only `llama.cpp` — so a loader run silently **deleted the Apodex provider**,
|
|
18
|
+
which had only ever lived in the generated file. The example now carries Apodex
|
|
19
|
+
as well, with the served id `apodex-1.0-mini`, so a re-render cannot drop it.
|
|
20
|
+
- `bin/valknut-load.sh --status` now reports every surface (agents *and* skills)
|
|
21
|
+
with a true row count instead of a hardcoded header.
|
|
22
|
+
- Assets: `harness-integration/README.md` gains the skill-loc
|
|
23
|
+
|
|
24
|
+
### Files
|
|
25
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-16 — the skill-loading audit: wrong skills unloaded, the index made true
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **Three phantom skills stopped loading.** opencode was loading `galdr-compliance`
|
|
5
|
+
and `galdr-crafter` — both superseded, their work long since moved to
|
|
6
|
+
`tyr-check` — and `NSR`, the NSR scaffolding spec, which sat at
|
|
7
|
+
`assets/nsr/SKILL.md` carrying frontmatter. A recursive scanner walks
|
|
8
|
+
`skills.paths` to *any* depth, so all three were announced to every agent as
|
|
9
|
+
live skills. The two galdr crafters are removed; the NSR spec is renamed
|
|
10
|
+
`assets/nsr/scaffold-spec.md` and stays a document (its sibling templates
|
|
11
|
+
carry no frontmatter and were already inert).
|
|
12
|
+
- **Two gates added, one per failure class** (`compliance-check.sh`):
|
|
13
|
+
- **`harnesses` (G14)** — every link in `.claude/agents`, `.codex/agents`,
|
|
14
|
+
`.cursor/agents`, `.pi/agents`, `.opencode/agent` must land, one hop, in the
|
|
15
|
+
canonical `.agents/agents/` tree (Rule 02), and no nested `SKILL.md` may
|
|
16
|
+
carry frontmatter. One hop deliberately: Galdr's agent file *is* the skill,
|
|
17
|
+
by the dual-surface rule.
|
|
18
|
+
- **`skillindex` (G15)** — every real skill dir must be named in
|
|
19
|
+
`.agents/skills/README.md`, and every `.agents/skills/<name>` path the assets
|
|
20
|
+
cite must exist. Lines marked planned/legacy/superseded/removed/abandoned/
|
|
21
|
+
retired are exempt by intent.
|
|
22
|
+
- **The drift they exposed, mended:** the canonical index listed 23 skills while
|
|
23
|
+
26 existed (`groa-update`, `lifecycle`, `rules-check-drift` were mis
|
|
24
|
+
|
|
25
|
+
### Files
|
|
26
|
+
- *(carried from the frozen CHANGELOG.md)*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## skills · unversioned · 2026-09-17 — 0.1.9: both shapes reach the registry
|
|
2
|
+
|
|
3
|
+
### Why
|
|
4
|
+
- **`ymir raise` works on a packaged install.** 0.1.8 shipped before the resolver,
|
|
5
|
+
so a user who installed from npm hit `cd …/apps/hlidskjalf: No such file or
|
|
6
|
+
directory` — every package had arrived, and eighteen scripts were looking in the
|
|
7
|
+
clone's `apps/`. `bin/app-lib.sh` resolves a surface in either shape now.
|
|
8
|
+
- **A clone and a package are one tree to the scripts.** Proven against both: the
|
|
9
|
+
five surfaces resolve from `$HOME/Ymir` and from an npm-installed
|
|
10
|
+
package, and `ymir raise` against a packaged tree fetches the app's
|
|
11
|
+
dependencies, raises the gate API, starts Nornir cron, and brings up Bifrost and
|
|
12
|
+
the well.
|
|
13
|
+
- **The patience words** — `style_patience` — open the installer's long chain and
|
|
14
|
+
the raise path's build, so a long hour says what it is doing.
|
|
15
|
+
|
|
16
|
+
### Files
|
|
17
|
+
- *(carried from the frozen CHANGELOG.md)*
|