@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.
Files changed (143) hide show
  1. package/.agents/skills/groa-update/SKILL.md +30 -0
  2. package/CHANGELOG.md +27 -0
  3. package/README.md +47 -8
  4. package/bin/fixes-guard.sh +112 -0
  5. package/bin/fixes.sh +157 -0
  6. package/bin/ymir.js +35 -0
  7. package/docs/fixes/agents/unversioned-2026-09-11-chat-uses-the-root-pi-model-catalog.md +15 -0
  8. package/docs/fixes/agents/unversioned-2026-09-11-shared-well-for-every-harness-no-mock-clickable-memories.md +26 -0
  9. package/docs/fixes/agents/unversioned-2026-09-13-gleipnir-sees-when-an-agent-is-turned-off.md +26 -0
  10. package/docs/fixes/agents/unversioned-2026-09-14-the-eindri-brokk-wake-bridge-they-can-talk-back-now.md +23 -0
  11. package/docs/fixes/agents/unversioned-2026-09-16-a-sandboxed-worker-cannot-think-auto-stops-killing-agent.md +18 -0
  12. package/docs/fixes/agents/unversioned-2026-09-17-agents-md-states-the-one-law-no-private-data-in-the-publ.md +25 -0
  13. package/docs/fixes/agents/unversioned-2026-09-17-every-figure-loads-the-agent-directory-was-never-read.md +25 -0
  14. package/docs/fixes/agents/unversioned-2026-09-17-pi-gets-its-agents-and-a-dead-extension-comes-back.md +26 -0
  15. package/docs/fixes/agents/unversioned-2026-09-17-the-well-as-tools-ymir-s-first-custom-pi-extension.md +20 -0
  16. package/docs/fixes/gate/0.1.28-fixes-guard-replaces-the-changelog-gate.md +7 -0
  17. package/docs/fixes/gate/0.1.28-the-changelog-system-is-replaced-by-fix-notes.md +8 -0
  18. package/docs/fixes/gate/0.1.28-the-frozen-changelog-becomes-per-component-notes.md +9 -0
  19. package/docs/fixes/hlidskjalf/unversioned-2026-09-11-automate-the-install-consent-gate-self-healing-prereqs-v.md +21 -0
  20. package/docs/fixes/hlidskjalf/unversioned-2026-09-11-single-tenant-workspaces-shipped.md +15 -0
  21. package/docs/fixes/hlidskjalf/unversioned-2026-09-13-the-cloth-reaches-all-three-halls-hlidskjalf-sm-ja-the-s.md +25 -0
  22. package/docs/fixes/hlidskjalf/unversioned-2026-09-16-one-login-for-every-app-on-the-web-the-gate-fronts-them-.md +24 -0
  23. package/docs/fixes/hlidskjalf/unversioned-2026-09-16-the-credential-reaches-the-gate-and-the-hall-stops-leaki.md +23 -0
  24. package/docs/fixes/hlidskjalf/unversioned-2026-09-16-the-delivery-gates-install-themselves-rename-drift-mende.md +22 -0
  25. package/docs/fixes/hlidskjalf/unversioned-2026-09-16-the-panels-that-crashed-the-gate-that-lied-and-the-well-.md +25 -0
  26. package/docs/fixes/hlidskjalf/unversioned-2026-09-17-0-1-14-the-panels-reach-the-gate-and-the-fourth-window-s.md +9 -0
  27. package/docs/fixes/hlidskjalf/unversioned-2026-09-17-models-providers-and-paths-are-the-user-s-and-the-gate-s.md +26 -0
  28. package/docs/fixes/hlidskjalf/unversioned-2026-09-17-the-northstar-gate-runs-nightly-the-platform-door-it-cau.md +16 -0
  29. package/docs/fixes/hoard/unversioned-2026-09-16-every-app-wears-its-own-rune.md +27 -0
  30. package/docs/fixes/hoard/unversioned-2026-09-16-hodd-lives-outside-the-repo-and-the-installer-makes-it-s.md +24 -0
  31. package/docs/fixes/hoard/unversioned-2026-09-16-the-icons-are-real-runes-now-eight-of-them-were-drawings.md +33 -0
  32. package/docs/fixes/hoard/unversioned-2026-09-17-0-1-26-published-and-the-vault-door-named.md +8 -0
  33. package/docs/fixes/hoard/unversioned-2026-09-17-one-well-in-the-hoard-every-reader-of-kaia-s-memory-reso.md +23 -0
  34. package/docs/fixes/hoard/unversioned-2026-09-17-skrymir-opens-the-hoard-not-the-checkout.md +18 -0
  35. package/docs/fixes/hoard/unversioned-2026-09-17-the-hoard-encrypts-its-secrets-at-rest.md +20 -0
  36. package/docs/fixes/hoard/unversioned-2026-09-17-the-hoard-gets-a-guard-and-rule-04-stops-contradicting-t.md +19 -0
  37. package/docs/fixes/hoard/unversioned-2026-09-17-the-home-s-re-laid-layout-taught-to-the-system.md +17 -0
  38. package/docs/fixes/hoard/unversioned-2026-09-17-the-private-home-gets-the-ward-it-never-had.md +25 -0
  39. package/docs/fixes/hoard/unversioned-2026-09-17-the-schedule-is-the-user-s-cron-leaves-the-tree-lives-in.md +27 -0
  40. package/docs/fixes/install/0.1.28-a-stale-install-can-no-longer-hide.md +8 -0
  41. package/docs/fixes/install/unversioned-2026-09-11-desktop-shell-tunnel-and-temporary-auth.md +14 -0
  42. package/docs/fixes/install/unversioned-2026-09-11-smooth-install-provider-choice-no-forced-key-real-prereq.md +22 -0
  43. package/docs/fixes/install/unversioned-2026-09-16-apodex-joins-the-weave-research-planning-provider.md +27 -0
  44. package/docs/fixes/install/unversioned-2026-09-16-icons-the-operator-can-pin-and-one-pair-of-hands-for-the.md +29 -0
  45. package/docs/fixes/install/unversioned-2026-09-16-the-desktop-never-dials-out-cloudflare-stays-outside-ele.md +25 -0
  46. package/docs/fixes/install/unversioned-2026-09-17-0-1-12-the-icons-reach-the-live-tree-and-a-missing-surfa.md +10 -0
  47. package/docs/fixes/install/unversioned-2026-09-17-0-1-8-the-day-s-work-reaches-npm.md +25 -0
  48. package/docs/fixes/install/unversioned-2026-09-17-a-stale-install-cannot-hide-and-the-one-liner-cannot-be-.md +9 -0
  49. package/docs/fixes/install/unversioned-2026-09-17-both-shapes-a-clone-and-an-npm-install-and-the-patience-.md +26 -0
  50. package/docs/fixes/install/unversioned-2026-09-17-gr-a-knows-the-npm-half-how-to-renew-the-published-packa.md +9 -0
  51. package/docs/fixes/install/unversioned-2026-09-17-npm-only-the-hall-answers-on-its-own-port-and-the-marks-.md +27 -0
  52. package/docs/fixes/install/unversioned-2026-09-17-the-apps-leave-the-monorepo-installation-pulls-them-from.md +23 -0
  53. package/docs/fixes/install/unversioned-2026-09-17-the-doors-the-cloth-and-the-icons-that-were-not-there.md +27 -0
  54. package/docs/fixes/install/unversioned-2026-09-17-the-editor-stops-being-banished-to-its-own-desktop.md +18 -0
  55. package/docs/fixes/install/unversioned-2026-09-17-the-four-surfaces-arrive-by-npm-and-an-old-tree-gives-up.md +24 -0
  56. package/docs/fixes/install/unversioned-2026-09-17-the-house-gains-an-unpublish-door.md +19 -0
  57. package/docs/fixes/install/unversioned-2026-09-17-the-icons-reach-the-live-tree-and-a-missing-surface-is-a.md +26 -0
  58. package/docs/fixes/install/unversioned-2026-09-17-the-install-asks-with-a-plan-and-the-operator-s-things-l.md +24 -0
  59. package/docs/fixes/install/unversioned-2026-09-17-the-installer-actually-installs-the-whole-platform-then-.md +9 -0
  60. package/docs/fixes/install/unversioned-2026-09-17-the-installer-has-a-design-of-its-own.md +9 -0
  61. package/docs/fixes/install/unversioned-2026-09-17-the-npm-door-stands-the-surfaces.md +13 -0
  62. package/docs/fixes/install/unversioned-2026-09-17-the-one-liner-the-readme-promised-and-it-sets-the-path.md +9 -0
  63. package/docs/fixes/install/unversioned-2026-09-17-ymir-command-not-found-is-a-path-fault-and-here-is-the-c.md +8 -0
  64. package/docs/fixes/install/unversioned-2026-09-18-the-readme-leads-with-the-doors-that-work.md +13 -0
  65. package/docs/fixes/odrerir/unversioned-2026-09-14-rerir-forged-eindri-odrerir-pane-w3-p7.md +12 -0
  66. package/docs/fixes/odrerir/unversioned-2026-09-17-the-live-hall-s-board-becomes-true-the-snapshot-lands-on.md +18 -0
  67. package/docs/fixes/runtime/unversioned-2026-09-11-gleipnir-lock-pid-binding-fix.md +17 -0
  68. package/docs/fixes/runtime/unversioned-2026-09-11-hardcoded-per-page-feeds-header-stream.md +19 -0
  69. package/docs/fixes/runtime/unversioned-2026-09-11-per-page-rolling-40-message-feeds.md +13 -0
  70. package/docs/fixes/runtime/unversioned-2026-09-11-smi-ja-views-are-repo-local.md +17 -0
  71. package/docs/fixes/runtime/unversioned-2026-09-11-stats-1-1-kaia-chat-forge-prompts.md +23 -0
  72. package/docs/fixes/runtime/unversioned-2026-09-11-the-well-is-real-mimirsbrunn-engram.md +21 -0
  73. package/docs/fixes/runtime/unversioned-2026-09-12-fleet-preferences.md +11 -0
  74. package/docs/fixes/runtime/unversioned-2026-09-12-house-law-rules-and-the-grein-naming.md +11 -0
  75. package/docs/fixes/runtime/unversioned-2026-09-12-r-preference-moved-out-of-the-tracked-tree.md +10 -0
  76. package/docs/fixes/runtime/unversioned-2026-09-12-the-dashboards-stop-crash-looping-on-the-igpu.md +20 -0
  77. package/docs/fixes/runtime/unversioned-2026-09-12-the-well-actually-installs-it-never-did.md +23 -0
  78. package/docs/fixes/runtime/unversioned-2026-09-12-updater-forged-credential-moved-to-env.md +12 -0
  79. package/docs/fixes/runtime/unversioned-2026-09-14-a-vacant-helm-is-entered-not-punted-watcher-wake-repair.md +24 -0
  80. package/docs/fixes/runtime/unversioned-2026-09-14-the-echo-guard-no-wake-flood-through-gn-s-door.md +18 -0
  81. package/docs/fixes/runtime/unversioned-2026-09-16-app-packaging-prepared-under-the-ymir-scope-amendment-c-.md +23 -0
  82. package/docs/fixes/runtime/unversioned-2026-09-16-four-readers-that-still-pointed-at-the-pre-split-world.md +26 -0
  83. package/docs/fixes/runtime/unversioned-2026-09-16-no-blue-the-forge-language-replaces-the-old-blue.md +26 -0
  84. package/docs/fixes/runtime/unversioned-2026-09-16-omarchy-first-host-aware-windows-and-macos-get-a-door.md +25 -0
  85. package/docs/fixes/runtime/unversioned-2026-09-16-smi-ja-moves-into-the-app-tree.md +17 -0
  86. package/docs/fixes/runtime/unversioned-2026-09-16-the-changelog-guard-no-push-ships-untold.md +19 -0
  87. package/docs/fixes/runtime/unversioned-2026-09-16-the-core-senses-the-real-host-not-omarchy-s-shadow.md +23 -0
  88. package/docs/fixes/runtime/unversioned-2026-09-16-the-hearth-spreads-one-fire-three-more-surfaces.md +25 -0
  89. package/docs/fixes/runtime/unversioned-2026-09-16-the-loader-stops-deleting-merge-never-overwrite.md +27 -0
  90. package/docs/fixes/runtime/unversioned-2026-09-16-the-mesh-reaches-teams-and-anchor-and-show-stops-guessin.md +24 -0
  91. package/docs/fixes/runtime/unversioned-2026-09-17-0-1-10-the-hall-answers-on-its-port-and-the-marks-land.md +15 -0
  92. package/docs/fixes/runtime/unversioned-2026-09-17-0-1-11-four-surfaces-their-marks-and-a-door-that-mends.md +18 -0
  93. package/docs/fixes/runtime/unversioned-2026-09-17-glitnir-stops-hanging-and-one-process-is-one-row.md +15 -0
  94. package/docs/fixes/runtime/unversioned-2026-09-17-main-is-repaired-and-the-report-wears-the-cloth.md +25 -0
  95. package/docs/fixes/runtime/unversioned-2026-09-17-not-again-and-four-surfaces-in-one-raise.md +26 -0
  96. package/docs/fixes/runtime/unversioned-2026-09-17-smoke-test-all-ui-two-checks-that-lied-about-their-own-s.md +20 -0
  97. package/docs/fixes/runtime/unversioned-2026-09-17-the-changelog-stops-conflicting-fragments-folded-by-a-sc.md +25 -0
  98. package/docs/fixes/runtime/unversioned-2026-09-17-the-doors-written-down-where-a-user-will-find-them.md +20 -0
  99. package/docs/fixes/runtime/unversioned-2026-09-17-the-duplicate-extensions-removed-from-the-project-tree.md +17 -0
  100. package/docs/fixes/runtime/unversioned-2026-09-17-the-extensions-deployed-without-their-modules.md +23 -0
  101. package/docs/fixes/runtime/unversioned-2026-09-17-the-feed-follows-brokk-s-thinking-past-the-composer.md +17 -0
  102. package/docs/fixes/runtime/unversioned-2026-09-17-the-fleet-stops-colliding-a-grid-fan-and-each-smith-s-ow.md +21 -0
  103. package/docs/fixes/runtime/unversioned-2026-09-17-the-fork-stands-the-machine.md +12 -0
  104. package/docs/fixes/runtime/unversioned-2026-09-17-the-fragment-convention-is-enforced-where-github-runs-it.md +26 -0
  105. package/docs/fixes/runtime/unversioned-2026-09-17-the-layout-swept-every-reader-taught-the-new-doors.md +24 -0
  106. package/docs/fixes/runtime/unversioned-2026-09-17-the-model-that-raised-itself-and-the-workhorse-that-repl.md +26 -0
  107. package/docs/fixes/runtime/unversioned-2026-09-17-the-package-shipped-the-memory-well-one-version-now-excl.md +26 -0
  108. package/docs/fixes/runtime/unversioned-2026-09-17-the-phantom-optional-pins-cut.md +9 -0
  109. package/docs/fixes/runtime/unversioned-2026-09-17-the-sweep-and-the-door-that-mends-itself.md +26 -0
  110. package/docs/fixes/sessrumnir/unversioned-2026-09-12-the-editor-keeps-its-own-seat.md +16 -0
  111. package/docs/fixes/sessrumnir/unversioned-2026-09-13-sessr-mnir-the-seat-hall.md +28 -0
  112. package/docs/fixes/sessrumnir/unversioned-2026-09-13-the-carved-cloth-reaches-the-seat-hall-sessr-mnir.md +27 -0
  113. package/docs/fixes/sessrumnir/unversioned-2026-09-13-the-new-tree-the-mesh-the-seat-hall.md +25 -0
  114. package/docs/fixes/sessrumnir/unversioned-2026-09-13-the-realm-seat-carved-wayof.md +24 -0
  115. package/docs/fixes/sessrumnir/unversioned-2026-09-16-apodex-seat-verified-the-weave-mended.md +27 -0
  116. package/docs/fixes/sessrumnir/unversioned-2026-09-16-the-visualizer-finds-its-db-and-the-seat-hall-actually-b.md +22 -0
  117. package/docs/fixes/sessrumnir/unversioned-2026-09-17-0-1-13-the-re-voiced-seat-arrives-and-the-packages-are-l.md +8 -0
  118. package/docs/fixes/sessrumnir/unversioned-2026-09-17-sessr-mnir-stops-wearing-pi-s-clothes.md +23 -0
  119. package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-hearth-re-seeds-on-its-container-sessr-mnir-s-chat-f.md +23 -0
  120. package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-packaged-seat-carries-the-watch.md +11 -0
  121. package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-readme-lists-the-packages-and-the-pin-moves-to-the-r.md +16 -0
  122. package/docs/fixes/sessrumnir/unversioned-2026-09-17-the-seat-s-name-and-the-visualizer-s-home.md +12 -0
  123. package/docs/fixes/skills/unversioned-2026-09-11-galdr-tyr-assets-symlink-not-copies.md +11 -0
  124. package/docs/fixes/skills/unversioned-2026-09-11-load-the-owning-asset-before-editing-a-governed-path-5-l.md +21 -0
  125. package/docs/fixes/skills/unversioned-2026-09-11-omarchy-first-host-skills-machine-learning-native-fixes.md +27 -0
  126. package/docs/fixes/skills/unversioned-2026-09-13-the-imported-names-leave-the-halls-norse-naming-purge.md +26 -0
  127. package/docs/fixes/skills/unversioned-2026-09-16-gunnl-joins-the-hall-skillopt-integration.md +17 -0
  128. package/docs/fixes/skills/unversioned-2026-09-16-one-skills-tree-every-harness-the-config-stomp-mended.md +25 -0
  129. package/docs/fixes/skills/unversioned-2026-09-16-the-skill-loading-audit-wrong-skills-unloaded-the-index-.md +26 -0
  130. package/docs/fixes/skills/unversioned-2026-09-17-0-1-9-both-shapes-reach-the-registry.md +17 -0
  131. package/docs/fixes/skills/unversioned-2026-09-17-midgard-holds-public-assets-only-the-company-wiki-is-gon.md +23 -0
  132. package/docs/fixes/skills/unversioned-2026-09-17-the-forge-speaks-each-skill-s-own-text-in-the-index.md +16 -0
  133. package/docs/fixes/skills/unversioned-2026-09-17-the-local-git-round-joins-the-loom-the-stack-s-doors-are.md +19 -0
  134. package/docs/fixes/skills/unversioned-2026-09-17-the-registry-says-where-a-repo-lives-and-what-it-is-for.md +20 -0
  135. package/docs/fixes/smidja/unversioned-2026-09-16-the-pane-bridge-keeps-its-quoting-phase-3-verified.md +22 -0
  136. package/docs/fixes/smidja/unversioned-2026-09-16-the-roster-can-finally-run-an-agent-on-pi.md +23 -0
  137. package/docs/fixes/smidja/unversioned-2026-09-16-the-roster-s-effect-lands-and-the-backend-pin-stops-bein.md +19 -0
  138. package/docs/fixes/smidja/unversioned-2026-09-16-the-validator-stops-calling-a-dead-visualizer-healthy.md +20 -0
  139. package/docs/fixes/smidja/unversioned-2026-09-17-the-fleet-was-a-rack-of-terminals-now-it-is-the-roster.md +18 -0
  140. package/docs/fixes/smidja/unversioned-2026-09-17-the-plan-learns-the-smithy-s-package-name-and-the-instal.md +25 -0
  141. package/docs/fixes/smidja/unversioned-2026-09-17-the-smithy-can-see-the-well.md +20 -0
  142. package/docs/fixes/smidja/unversioned-2026-09-17-the-smithy-s-dependency-names-the-package-npm-will-actua.md +20 -0
  143. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ ## skills · unversioned · 2026-09-17 — midgard holds public assets only; the company wiki is gone
2
+
3
+ ### Why
4
+ - **`midgard/company_wiki/` did not belong in this repo.** It was an empty
5
+ placeholder (one `.gitkeep`), but a company wiki is *tenant data* — policies,
6
+ vision, specs, client names — and this repo is public. Removed, with every
7
+ reference to it corrected in `midgard/README.md`, `STRUCTURE.md`, `docs/lore.md`
8
+ and `assets/Ymir.md`.
9
+ - **`midgard/` is now described precisely.** It was called "shared company
10
+ assets" in one place and "cross-tenant" in another; a wiki is neither. The
11
+ contract says **public assets**, and `midgard/README.md` names what does *not*
12
+ belong: company knowledge, which lives at `$YMIR_HOME/hodd/identity/companies/`.
13
+ - **`bin/private-guard.sh` gains a tenant-document rule** so the shape cannot
14
+ return: a `company_wiki/`, `wiki/`, `policies/`, `handbook/` or `vision`/
15
+ `strategy`/`roadmap` document staged in the public tree is refused, with a
16
+ message naming where it belongs. Verified by planting `midgard/company_wiki/policies.md`.
17
+ - **Nothing had leaked.** A full sweep of every tracked midgard file for personal
18
+ handles, home paths, key shapes, tunnel UUIDs and LAN/tailnet addresses found
19
+ no hits — the ingress configs use `${VARS}` and `example.org` throughout, and
20
+ the DB schema is generic with row-level security on every tenant table.
21
+
22
+ ### Files
23
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,16 @@
1
+ ## skills · unversioned · 2026-09-17 — the Forge speaks: each skill's own text in the index
2
+
3
+ ### Why
4
+ - **The Forge listed skills as bare names.** `Forge.tsx` rendered only
5
+ `{s.name}` + the aett rune, while the live `/api/skills` index carries every
6
+ skill's `description` (240-char truncation) — the data was there, the
7
+ surface never showed it. The skill list items are now two-line cards: name +
8
+ aett on the head row, the description beneath (`forge-item-desc`, dimmed
9
+ until hover), scoped to the skill variant so the Eindri rows keep their
10
+ side-by-side name+status shape.
11
+
12
+ galdr-reread: `.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md` — the
13
+ Forge gate bullet (skill list shows name + aett + description).
14
+
15
+ ### Files
16
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,19 @@
1
+ ## skills · unversioned · 2026-09-17 — the local git round joins the loom; the stack's doors are in the registry
2
+
3
+ ### Why
4
+ - **`bin/nornir-job-forgejo-git.sh` (02:45)** — reads the local forge's open
5
+ issues each night (`$YMIR_HOME/config/forge.env` names the door; token
6
+ optional), writes a daily digest to the hoard, carves Rune
7
+ `forgejo / git.issues` — or `git.door-down` (exit 1) when the tunnel is
8
+ closed, so a dead door is seen at sunrise. Unarmed without a URL, honestly.
9
+ - **The marketing stack's doors are now in the registry** —
10
+ `marketing_doors[6]` (Mautic · Postiz · Activepieces · Forgejo · SearXNG ·
11
+ Grafana) with reach notes, mirrored to the Galdr asset. Agents (Bragi ·
12
+ Sindri) provision the stack for any user via
13
+ `bin/ymir-marketing-stack.sh`, or reach the Allfather's live server stack.
14
+
15
+ galdr-reread: `.agents/skills/galdr-ymirsystem/assets/nornir-jobs.md` — §3.7
16
+ (Forgejo round) and §3.8 (marketing stack provisioner); registry mirrored.
17
+
18
+ ### Files
19
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,20 @@
1
+ ## skills · unversioned · 2026-09-17 — the registry says where a repo lives and what it is for
2
+
3
+ ### Why
4
+ - **A project entry can now name its machine.** `machine:` records the host
5
+ where a checkout lives; `data/machines.md` holds the fleet (omarchy-1,
6
+ zerwiz, zerwizserver live on the tailnet). A repo is no longer assumed to be
7
+ on the box you happen to be standing on.
8
+ - **A project entry can now say what it is for.** `about:` is one plain
9
+ sentence per repo. `bin/project-git.sh list --field about` prints the whole
10
+ inventory without opening the YAML.
11
+ - **`project-git.sh` resolves more of the block.** `--field` now accepts
12
+ `machine`, `company`, `workspace` and `about` alongside the git fields, and
13
+ non-git keys read from the project block rather than the `git:` line.
14
+ - **One registry, not two.** The live registry is `hodd/identity/projects.yaml`
15
+ (what the runtime reads). A stale duplicate at `Documents/Ymir/identity/` had
16
+ been drifting apart from it — different GitHub owners, different project sets
17
+ — and is retired, with a backup kept in `hodd/state/`.
18
+
19
+ ### Files
20
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,22 @@
1
+ ## smidja · unversioned · 2026-09-16 — the pane bridge keeps its quoting; Phase 3 verified
2
+
3
+ ### Why
4
+ - **The Apodex plan's last open verification is closed.** Run in a herdr pane —
5
+ `bin/herdr-run.sh run huginn-research -- bin/huginn-research-worker.sh --brief
6
+ "…" --output-dir …` — the worker recalled, dispatched to the Apodex seat, wrote
7
+ its verdict, and observed it into Mimirsbrunn (`status: completed`, verdict
8
+ *"The capital of Norway is Oslo."*). Phase 3 needed a spawn, which the
9
+ read-only session lock had forbidden; it was run once the lock was this
10
+ session's.
11
+ - **Defect found and mended — `bin/herdr-run.sh run` lost its quoting.** A pane
12
+ runs its command through a *shell*, but the bridge handed herdr the raw argv.
13
+ An argument containing spaces reached the pane as separate words, so
14
+ `--brief "In one sentence: …"` arrived as `--brief In one sentence: …` and the
15
+ worker died with `error: unknown arg: one`. Every real brief is multi-word, so
16
+ the documented invocation could never have worked. `run` now quotes each
17
+ argument on the way in (`printf '%q'`), verified by re-running it.
18
+ - Asset updated in the same change: `.agents/skills/ymir-host/assets/thjazi.md`
19
+ carries the quoting rule.
20
+
21
+ ### Files
22
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,23 @@
1
+ ## smidja · unversioned · 2026-09-16 — the roster can finally run an agent on Pi
2
+
3
+ ### Why
4
+ `bin/agents-config.sh apply` wrote **every** agent's model into `opencode.json`'s
5
+ agent block, whatever harness that agent used. So an agent set to run on **Pi**
6
+ (native local models) would have had its Pi model id —
7
+ `llamacpp/qwen3.5-9b` — written into OpenCode's config, which cannot resolve it.
8
+ That is why the roster's two local agents were pinned to `harness: opencode` with
9
+ opencode-style ids: there was no working way to put an agent on Pi.
10
+
11
+ - **`apply` is now harness-aware.** Only `opencode`-harness agents are written
12
+ into `opencode.json`; a `pi` (or `hermes`) agent is left out, its model id going
13
+ to the resolve cache that `bin/agent-run.sh` reads. The providers block is
14
+ unchanged — a provider's endpoint is a real fact OpenCode may still want.
15
+ - The way this is meant to be used: declare a local agent's model as its **Pi**
16
+ id (`llamacpp/qwen3.5-9b`, `llamacpp-coder/qwen3-coder-30b` — the ids `pi
17
+ --list-models` reports) with `harness: pi`; the roster is then Pi-driven with no
18
+ per-machine hand-editing.
19
+ - `galdr-reread`: `assets/harness-integration/README.md` — the two writers of
20
+ `opencode.json`, and the rule that only OpenCode agents belong in it.
21
+
22
+ ### Files
23
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,19 @@
1
+ ## smidja · unversioned · 2026-09-16 — the roster's effect lands, and the backend pin stops being committable
2
+
3
+ ### Why
4
+ Applying the private roster (`bin/agents-config.sh apply`) writes the resolved
5
+ model into each agent's canonical profile. Flipping the two local agents to Pi
6
+ made that visible — and surfaced a small ignore hole.
7
+
8
+ - **Profiles follow the roster.** `sindri-developer.md` and `kvasir-scout.md`
9
+ now carry their **Pi** ids (`llamacpp-coder/qwen3-coder-30b`,
10
+ `llamacpp/qwen3.5-9b`), and `huginn-researcher.md` its declared model — the
11
+ output of `apply` against the operator's roster. These profiles are what the
12
+ harnesses load, so the local agents now run on Pi rather than through OpenCode.
13
+ - **`.agents/config/backend` is ignored.** The pinned terminal backend is
14
+ machine-local, but `config` is a **symlink** to `.agents/config`, so the
15
+ `config/*` rule never matched it and the pin was committable. The file is named
16
+ in `.gitignore` instead.
17
+
18
+ ### Files
19
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,20 @@
1
+ ## smidja · unversioned · 2026-09-16 — the validator stops calling a dead visualizer healthy
2
+
3
+ ### Why
4
+ `bin/ymir-validate.sh` reported `visualizer PASS "UI built and served on :8437"`
5
+ by looking at `./dist` alone. When the API had crashed on a bad `CMD_DB` and
6
+ nothing was listening on `:8437`, the validator still said PASS — the false-pass
7
+ class this night kept surfacing, in the very tool meant to catch it.
8
+
9
+ - **The check now probes the port as well as the build.** `dist` missing → FAIL;
10
+ built but nothing on `:8437` → FAIL with the fix (`run scripts/start.sh`);
11
+ built and listening → PASS. A PASS now means the thing is actually up.
12
+ - **The smidja-db check resolves the same DB pair** `scripts/start.sh` and
13
+ `bin/smidja-bootstrap.sh` do (an existing `$YMIR_HOME/smidja/smidja.db` first,
14
+ then an in-repo copy, `SMIDJA_DB` override) — previously it named the home path
15
+ only, so an in-repo DB read as missing.
16
+ - `galdr-reread`: `assets/installation.md` — a `visualizer` PASS means built *and*
17
+ listening.
18
+
19
+ ### Files
20
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,18 @@
1
+ ## smidja · unversioned · 2026-09-17 — the Fleet was a rack of terminals; now it is the roster
2
+
3
+ ### Why
4
+ - **We were tracking the tools.** `.agents/agents/` holds **21 agent definitions** —
5
+ Brokk, Sindri, Bragi, Forseti, Mímir, Kvasir, Snotra, Huginn, Hnoss, Sága, Muninn,
6
+ Frigg, Gróa, Jörð, Sýn, Týr, Galdr… — and the Fleet served **13 panes all named
7
+ "OpenCode"**, role `opencode`. The board showed seats and never the smiths who might
8
+ be standing in them.
9
+ - **`bin/hlidskjalf-agents.sh` now reads the roster** (`.agents/agents/*.md`, canonical
10
+ per RULES/02) and joins each agent to its standing pane: figure, craft, model from
11
+ the definition's frontmatter, and `live{}` only when a pane answers to it. An
12
+ **unseated agent is still an agent** — hiding it is what made the board a rack.
13
+ - Harness seats that answer to no one on the roster are kept visible and named
14
+ honestly, never dressed as agents.
15
+ - Served: **34 entries — 21 agents (roster first) + 13 harness seats, 14 joined**.
16
+
17
+ ### Files
18
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,25 @@
1
+ ## smidja · unversioned · 2026-09-17 — the plan learns the smithy's package name, and the install forwards its flags
2
+
3
+ ### Why
4
+ Two defects the first real end-to-end npm install surfaced — which is what an
5
+ end-to-end test is for.
6
+
7
+ - **A surface's name is not its package's name.** The plan looked for
8
+ `apps/smidja` or `@zerwiz/smidja`, but npm serves the smithy as
9
+ `@zerwiz/smidja-factory` — so the row read `BLOCKED` on a machine where the
10
+ smithy was installed and standing. `app_dir`/`app_row` now take the surface
11
+ name and the package name separately, and the row tells the truth: installed,
12
+ with the visualizer's UI still to build (the tarball ships its source, never a
13
+ stale build).
14
+ - **`ymir install --plan` forwarded only `--json`.** `--phase` and `--blocked`
15
+ were dropped on the way through the installer's door, so `--blocked` answered
16
+ *unknown flag*. Every plan flag is forwarded now.
17
+
18
+ **The install this came out of:** `npm install -g @zerwiz/ymir` from the registry
19
+ — `@zerwiz/ymir@0.1.7`, 331 packages, and all four surfaces
20
+ (`hlidskjalf` · `odrerir` · `sessrumnir` · `smidja-factory`) arrived inside the
21
+ distro. The tarball carries no memory store — the leak is closed in the artefact
22
+ as well as in the repo.
23
+
24
+ ### Files
25
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,20 @@
1
+ ## smidja · unversioned · 2026-09-17 — the smithy can see the well
2
+
3
+ ### Why
4
+ - **Why the memory looked absent in the smithy:** the visualizer proxies the bridge's
5
+ `/inspect`, and `/inspect` reported three fields — store, episodes, agents — while
6
+ the well holds six layers. A panel told only the episode count cannot show that
7
+ facts, entities and reflections exist. `/inspect` now reports them all:
8
+ episodes, facts (active/superseded), entities, edges, reflections (with the last
9
+ run's time) and the vector index.
10
+ - **Through the smithy right now:**
11
+ `store $YMIR_HOME/memory/kaia.engram · episodes 8 · facts 36 (35 active) ·
12
+ entities 60 · edges 480 · reflections 1 (2026-09-16T21:01) · vec index 8`.
13
+ - **A trap found while doing it:** restarting the bridge RAW (`python3 bin/mimir-bridge.py`)
14
+ loses the env that carries the well's path, and the bridge silently re-points at the
15
+ old store in the repo — 364 stale episodes and no facts. The well is the **blessed
16
+ starter's** to raise: `bin/mimir-bridge.sh --start`. A raw restart is a different
17
+ well wearing the same port.
18
+
19
+ ### Files
20
+ - *(carried from the frozen CHANGELOG.md)*
@@ -0,0 +1,20 @@
1
+ ## smidja · unversioned · 2026-09-17 — the smithy's dependency names the package npm will actually serve
2
+
3
+ ### Why
4
+ - **`@zerwiz/smidja` is published and not served.** npm accepted it twice (0.1.0,
5
+ then 0.1.1): the tarball and the version document existed, the package document
6
+ never did, and a republish of 0.1.0 was refused as *"previously published"*. The
7
+ name answers `404`, the website `403`, while `@zerwiz/hlidskjalf`,
8
+ `@zerwiz/odrerir` and `@zerwiz/sessrumnir` resolve normally and always have.
9
+ - **A second free name failed identically.** `@zerwiz/smidja-factory` was published
10
+ and shows the same shape — version served, package document withheld. Two names,
11
+ one behaviour, while packages published yesterday serve fine: the withholding is
12
+ npm's, not the name's, and the CLI does not report it.
13
+ - **The distro depends on the name that can resolve.** `optionalDependencies` now
14
+ names `@zerwiz/smidja-factory`, so the moment npm serves that package the smithy
15
+ arrives with the rest. Being optional, it is skipped silently until then — the
16
+ plan's phase-5 row is what says so out loud.
17
+ - **`@zerwiz/ymir` 0.1.7** — the version published once this lands.
18
+
19
+ ### Files
20
+ - *(carried from the frozen CHANGELOG.md)*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerwiz/ymir",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "description": "Ymir \u2014 the single-tenant agent operating system. Omarchy-first, host-aware, self-healing.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/zerwiz/ymir",