@zerwiz/ymir 0.1.5 → 0.1.7

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 (118) hide show
  1. package/.agents/agents/huginn-researcher.md +1 -1
  2. package/.agents/agents/kvasir-scout.md +1 -1
  3. package/.agents/agents/sindri-developer.md +1 -1
  4. package/.agents/backend/README.md +74 -0
  5. package/.agents/backend/model-bridge.py +74 -4
  6. package/.agents/config/cron.yaml +2 -0
  7. package/.agents/config/eindri-dispatch.json +6 -6
  8. package/.agents/migrations/0003-private-data-separation.sh +11 -1
  9. package/.agents/migrations/0005-roots-out-of-tree.sh +158 -0
  10. package/.agents/skills/README.md +1 -1
  11. package/.agents/skills/galdr-ymirsystem/SKILL.md +2 -1
  12. package/.agents/skills/galdr-ymirsystem/assets/harness-integration/README.md +73 -10
  13. package/.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md +44 -1
  14. package/.agents/skills/galdr-ymirsystem/assets/installation.md +215 -23
  15. package/.agents/skills/galdr-ymirsystem/assets/memory-well.md +3 -1
  16. package/.agents/skills/galdr-ymirsystem/assets/nornir-jobs.md +39 -1
  17. package/.agents/skills/galdr-ymirsystem/assets/odrerir-hall.md +4 -0
  18. package/.agents/skills/galdr-ymirsystem/assets/pi-boot/pi-profile.yml +7 -2
  19. package/.agents/skills/galdr-ymirsystem/assets/registry.md +1 -1
  20. package/.agents/skills/galdr-ymirsystem/assets/runtime-compliance.md +2 -2
  21. package/.agents/skills/galdr-ymirsystem/assets/smidja.md +16 -11
  22. package/.agents/skills/galdr-ymirsystem/scripts/compliance-check.sh +147 -4
  23. package/.agents/skills/groa-update/SKILL.md +20 -0
  24. package/.agents/skills/hamr-adapters/SKILL.md +2 -2
  25. package/.agents/skills/lifecycle/smoke_test.sh +7 -2
  26. package/.agents/skills/ymir-host/SKILL.md +2 -1
  27. package/.agents/skills/ymir-host/assets/install.md +69 -0
  28. package/AGENTS.md +78 -34
  29. package/CHANGELOG.md +1033 -1
  30. package/README.md +1 -1
  31. package/RULES/02-agents.md +2 -2
  32. package/RULES/04-hoard.md +32 -0
  33. package/RULES/06-append-only.md +50 -0
  34. package/RULES/07-config.md +56 -0
  35. package/RULES/09-electron.md +58 -0
  36. package/RULES/README.md +2 -0
  37. package/bin/a2a-mcp.sh +42 -7
  38. package/bin/agents-config.sh +30 -7
  39. package/bin/apodex-smoke-test.sh +14 -1
  40. package/bin/bifrost-bridge.sh +25 -6
  41. package/bin/bootstrap-macos.sh +6 -1
  42. package/bin/brokk-send.sh +14 -1
  43. package/bin/changelog-assemble.sh +154 -0
  44. package/bin/changelog-guard.sh +39 -7
  45. package/bin/crash-sense.sh +14 -1
  46. package/bin/design-check.sh +80 -0
  47. package/bin/design-icon.sh +153 -0
  48. package/bin/docs-guard.sh +2 -2
  49. package/bin/editor-place.sh +33 -15
  50. package/bin/eindri-acclaim.sh +14 -1
  51. package/bin/eindri-seat.sh +83 -0
  52. package/bin/eindri-seen.sh +14 -1
  53. package/bin/eindri-start.sh +14 -1
  54. package/bin/eir-doctor.sh +47 -1
  55. package/bin/feature-inventory.sh +73 -0
  56. package/bin/fleet-apply.sh +15 -2
  57. package/bin/github-deploy.sh +14 -1
  58. package/bin/gjallarhorn-expose.sh +43 -9
  59. package/bin/gjallarhorn-notify.sh +14 -1
  60. package/bin/gjallarhorn-purge.sh +14 -1
  61. package/bin/gjallarhorn-tunnel.sh +16 -3
  62. package/bin/groa-update.sh +9 -1
  63. package/bin/hall-snapshot.sh +21 -2
  64. package/bin/herdr-run.sh +23 -2
  65. package/bin/hlidskjalf-agents.sh +172 -0
  66. package/bin/hlidskjalf-usage.sh +196 -0
  67. package/bin/hoard-guard.sh +135 -0
  68. package/bin/hoard-lib.sh +91 -11
  69. package/bin/hodd.sh +28 -4
  70. package/bin/huginn-research-worker.sh +14 -1
  71. package/bin/local-model-lock.sh +22 -3
  72. package/bin/mimir-bridge.py +33 -0
  73. package/bin/mimir-bridge.sh +14 -1
  74. package/bin/mimir-reflect.sh +27 -0
  75. package/bin/mjollnir-webhook.sh +14 -1
  76. package/bin/mjollnir.sh +22 -3
  77. package/bin/model-hardware.sh +17 -3
  78. package/bin/model-resolve.sh +14 -1
  79. package/bin/nornir-job-hall-snapshot.sh +28 -0
  80. package/bin/nornir-job-nsr-compliance.sh +54 -0
  81. package/bin/npm-publish.sh +136 -0
  82. package/bin/omarchy-install.sh +18 -5
  83. package/bin/omarchy-plugins.sh +15 -2
  84. package/bin/omarchy-sense.sh +14 -1
  85. package/bin/pi-model-agnostic.sh +71 -0
  86. package/bin/private-guard.sh +20 -0
  87. package/bin/project-git.sh +18 -4
  88. package/bin/public-guard.sh +3 -2
  89. package/bin/sessrumnir-ensure.sh +1 -1
  90. package/bin/sessrumnir.sh +16 -3
  91. package/bin/smidja-bootstrap.sh +5 -1
  92. package/bin/syn-asset-pretool-check.sh +14 -1
  93. package/bin/syn-spawn-pretool-check.sh +58 -0
  94. package/bin/tailscale-sync.sh +15 -2
  95. package/bin/telegram-bot.sh +14 -1
  96. package/bin/ui-truth-check.sh +75 -0
  97. package/bin/valknut-load.sh +42 -4
  98. package/bin/wedge-notify.sh +14 -1
  99. package/bin/workspace-rag.sh +14 -1
  100. package/bin/ymir-install.sh +219 -54
  101. package/bin/ymir-plan.sh +356 -0
  102. package/bin/ymir-say.sh +14 -1
  103. package/bin/ymir-setup-auth.sh +12 -1
  104. package/bin/ymir-validate.sh +28 -8
  105. package/docs/lore.md +5 -1
  106. package/docs/runbooks/agents.md +1 -1
  107. package/package.json +13 -3
  108. package/scripts/electron.sh +74 -15
  109. package/scripts/lower.sh +34 -0
  110. package/scripts/raise.sh +42 -0
  111. package/scripts/start.sh +52 -2
  112. package/.agents/config/agents.yaml +0 -50
  113. package/.agents/config/tailscale-sync.yaml +0 -27
  114. package/.agents/memory/kaia.engram +0 -0
  115. package/.agents/memory/kaia.engram-shm +0 -0
  116. package/.agents/memory/kaia.engram-wal +0 -0
  117. package/.agents/memory/well/episodes.jsonl +0 -367
  118. package/.agents/memory/well/workspace.jsonl +0 -27
@@ -1,27 +0,0 @@
1
- {"timestamp": "2026-09-11T17:45:31Z", "source": "midgard/design-system/icons.md", "tags": ["workspace", "way-of"], "content": "Rune-Glyph Icon Map\n**Runecoded, not emoji.** Every icon in Ymir is an Elder Futhark rune drawn as a\n24px stroke glyph, colored by `currentColor`. Emoji are never used as icons.", "hash": "76791e6b55cf375518199a58eeaeb301d8511b296a16d4bf3bd82b9bc3048511"}
2
- {"timestamp": "2026-09-11T17:45:31Z", "source": "midgard/design-system/icons.md", "tags": ["workspace", "way-of"], "content": "Set\nThe glyphs live in `midgard/design-system/icons/*.svg` (24\u00d724 viewBox; render at\n16px or 24px). Stroke uses `currentColor`, square caps, miter joins \u2014 the chisel\nbevel. The primary seat may add a 1px inner bevel via the `--ymir-bevel` token.\n\n```\nicons[21]{glyph,name,unicode,figure,used_for}:\n \"fehu\",\"Fehu\",\"\u16a0\",\"Ymir (cattle/wealth)\",\"Fleet \u2014 the herd of agents\"\n \"tiwaz\",\"Tiwaz\",\"\u16cf\",\"T\u00fdr (justice)\",\"Tasks \u2014 the A2A lifecycle board\"\n \"ingwaz\",\"Ingwaz\",\"\u16dc\",\"Ing (the well)\",\"Well \u2014 Mimirsbrunn recall\"\n \"raidho\",\"Raidho\",\"\u16b1\",\"ride/journey\",\"Runes \u2014 the ledger (a road carved)\"\n \"algiz\",\"Algiz\",\"\u16c9\",\"protection\",\"Reviews / Glitnir \u2014 the protective gate; the Ymir emblem\"\n \"dagaz\",\"Dagaz\",\"\u16de\",\"day/dawn\",\"Processes \u2014 Valhalla supervision\"\n \"sowilo\",\"Sowilo\",\"\u16ca\",\"sun\",\"Files \u2014 Skrymir (light on the tree)\"\n \"kaunan\",\"Kaunan\",\"\u16b4\",\"torch\",\"OmniChat \u2014 Kaia's flame\"\n \"ansuz\",\"Ansuz\",\"\u16a8\",\"Odin's breath\",\"Forge \u2014 creation\"\n \"ehwaz\",\"Ehwaz\",\"\u16d6\",\"horse/journey\",\"Runtime \u2014 the seat and its transit\"\n \"jera\",\"Jera\",\"\u16c3\",\"year/harvest\",\"Cron \u2014 the Nornir's seasons\"\n \"berkana\",\"Berkanan\",\"\u16d2\",\"birch\",\"Profile \u2014 the self\"\n \"midgard\",\"Midgard\",\"\u2014\",\"the shared world\",\"shared workspace / cross-tenant assets\"\n \"utgard\",\"Utgard\",\"\u16a2\",\"the outer realm\",\"Utgard \u2014 the sandbox barrier\"\n \"yggdrasil\",\"Yggdrasil\",\"\u16c3\",\"the world-tree\",\"Yggdrasil \u2014 worktrees\"\n \"ratatoskr\",\"Ratatoskr\",\"\u16d2\",\"the squirrel\",\"Ratatoskr \u2014 the A2A bus\"\n \"mimirsbrunn\",\"Mimirsbrunn\",\"\u16dc\",\"the well of wisdom\",\"Mimirsbrunn \u2014 memory\"\n \"valhalla\",\"Valhalla\",\"\u16b9\",\"the hall of the slain\",\"Valhalla \u2014 process health\"\n \"gungnir\",\"Gungnir\",\"\u16b7\",\"Odin's spear\",\"Gungnir \u2014 skill synthesis\"\n \"heimdall\",\"Heimdall\",\"\u16ba\",\"the watchman\",\"Heimdall \u2014 auth / the gate\"\n \"gjallarhorn\",\"Gjallarhorn\",\"\u16b7\",\"the horn\",\"Gjallarhorn \u2014 the tunnel and its call\"\n```", "hash": "96b259ffc2df0be3c837f937bb244feb4b33c5fd963b6090bca51412a2c8d32f"}
3
- {"timestamp": "2026-09-11T17:45:31Z", "source": "midgard/design-system/icons.md", "tags": ["workspace", "way-of"], "content": "Usage\n- Reference a glyph as an inline `<svg>` (copy the path) or `<img src>`; stroke\n with `currentColor`, never a raw hex.\n- Render at **24px** in panels, **16px** inline in tables and chips.\n- A status glyph is always paired with **glyph + colour + text** \u2014 never\n colour-only state.\n- The active realm/accent may tint glyphs via `--realm-tint`.", "hash": "c6eadb628c590de83cdcd1312e220c851bd80134e7931786f3477b416b1cf71d"}
4
- {"timestamp": "2026-09-11T17:45:31Z", "source": "midgard/design-system/icons.md", "tags": ["workspace", "way-of"], "content": "Verification\n```bash\nls midgard/design-system/icons/*.svg | wc -l # 21", "hash": "d062ad476d08435118fd8775e2219c99aaeb9195f79ecf274703a8b327a65661"}
5
- {"timestamp": "2026-09-11T17:45:31Z", "source": "midgard/design-system/icons.md", "tags": ["workspace", "way-of"], "content": "no emoji used as icons in the UI:\nrg -n \"[\\x{1F300}-\\x{1FAFF}\\x{2600}-\\x{27BF}]\" apps/hlidskjalf/src || echo \"no emoji icons\"\n```", "hash": "57de454e7ca077533dd4043b5a1b9af8ddaf7df6052c7fc31ad953039fc0902e"}
6
- {"timestamp": "2026-09-11T17:45:31Z", "source": "midgard/design-system/icons.md", "tags": ["workspace", "way-of"], "content": "Maintaining this\n- **Owner:** Brokk. **Tokens:** `midgard/design-system/tokens.css`.\n- Add a rune here and its glyph in `icons/` in the same pass; keep the count in the\n `icons[N]` block true (Galdr TOON check: `.agents/skills/galdr/scripts/toon-check.py`).", "hash": "aa5b8b86b426462f68634bee9858ba79ae5d75600a2b0d340625279b210703e2"}
7
- {"timestamp": "2026-09-11T17:45:32Z", "source": "midgard/README.md", "tags": ["workspace", "way-of"], "content": "MIDGARD \u2014 Global Shared Workspace\nCross-tenant shared assets, repositories, and documentation.", "hash": "b045ed2401295b1d8407c2138241e980f5e320b35939a9b9d8e345f3a2ec6645"}
8
- {"timestamp": "2026-09-11T17:45:32Z", "source": "midgard/README.md", "tags": ["workspace", "way-of"], "content": "Contents\n- `design-system/` \u2014 shared UI components & design assets\n- `shared-packages/` \u2014 internal npm/cargo/python libraries\n- `infrastructure/` \u2014 shared Terraform / Docker / Kubernetes configs\n- `company_wiki/` \u2014 company policies, vision, specs\n- `github_org_repos/` \u2014 central company repositories\n - `shared-core-api/` \u2014 example shared repo (with `.yggdrasil/` worktrees)", "hash": "a37257a91953cc85880337f8dd52f44431390bfd312d6194180eedc8e15dc91d"}
9
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "Daily Briefing \u2014 2026-09-11\nRealm: `way-of` \u00b7 Home: `/home/zerwiz/Ymir` \u00b7 Generated by S\u00e1ga (Nornir 07:00, deterministic)", "hash": "50c0f685ecff2925dfb783f2ea589aca97dde70b131a5c59f635cb117ad3e4f6"}
10
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "1. Open Forge Orders\nCounts: total=102 added=101 working=0 blocked=1\n\n| Order | Status | Title |\n|---|---|---|\n| W0001 | ADDED | Yggdrasil worktree manager daemon |\n| W0002 | ADDED | Utgard rootless sandbox (execution barrier) |\n| W0003 | ADDED | Brokk spawn CLI + worktree lifecycle DX |\n| W0004 | ADDED | Mimirsbrunn: engram bridge adoption (memory) |\n| W0005 | ADDED | Runes: append-only audit ledger |\n| W0006 | ADDED | Pre-dispatch context injection (drink before act) |\n| W0007 | ADDED | Gungnir skill synthesis + validation |\n| W0008 | ADDED | Ratatoskr: A2A 1.0 backbone |\n| W0009 | ADDED | Redis task queue under the A2A model |\n| W0010 | ADDED | Inter-agent message schema + lifecycle machine |\n| W0011 | ADDED | Cron schedule spine |\n| W0012 | ADDED | Ymir \u2194 Command observer spine |\n| W0013 | ADDED | Realms & house activation |\n| W0014 | ADDED | Hlidskjalf portal (React/Vue, token-driven) |\n| W0015 | ADDED | Rune-glyph icon map |\n\n_(truncated \u2014 102 open orders total; see docs/masterplan.md \u00a73)_", "hash": "9207da51ba0cfbf3121c5cd850a93ec0ca9822451c382a19c5686e1ef666bbe3"}
11
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "Active Queue\n- **W0026** \u2014 AXI CI/CD workflow port (ymir-sdk-ci, ymir-release-please, ymir-docs-check, ymir-guard-generated-files)\n- **W0028** \u2014 Eindri spawn/monitor/merge CI (Yggdrasil + Valhalla + Glitnir)\n- **W0027** \u2014 Norse-named skill family (tyr-check, brokk-craft)\n- **W0022** \u2014 Plan 21 execution: per-tenant `companies/` + `projects/` + `company_entity.template.md` *(approved; awaiting human \"go\")*\n- **W0001** \u2014 Yggdrasil worktree manager daemon (TS)\n- **W0002** \u2014 Utgard rootless sandbox recipes + enforcement\n- **W0004** \u2014 Mimirsbrunn: adopt Kaia's engram bridge (`:4602`) for recall/observe\n- **W0015** \u2014 `midgard/design-system/icons.md` rune-glyph map\n- **W0021** \u2014 write individual plan docs 01\u201320 (currently index rows only)", "hash": "d6ead9d52cb63e2f6c4db24fc97406bc2482485172eb197fe26229ab268e62ab"}
12
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "2. Fleet & State\n- cron: running pid=2653889 jobs=4\n- session lock: stale pid 2651493\n- task metadata records: 0\n- status records: 0\n- realm env: ABSENT (svartalfaheim/way-of/.env.realm)", "hash": "2bce8d0a954fb41596c4c30fd31a05b20cbc8372bcb3f10d3bf489257ff44e84"}
13
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "3. Active Plan Status\n- `21-company-houses` \u2014 approved (ENTRY 2026-09-11-004/005) \u00b7 **Realm:** company (way-of)\n- `22-hlidskjalf-portal` \u2014 proposed \u00b7 **Realm:** platform \u00b7 **Owner:** Brokk/Kaia\n- `23-ymir-command-observer` \u2014 proposed \u00b7 **Realm:** platform \u00b7 **Owner:** Brokk\n- `24-cron-schedule` \u2014 proposed \u00b7 **Realm:** platform \u00b7 **Owner:** Brokk\n- `25-ratatoskr-a2a` \u2014 proposed \u2192 approved (ENTRY 2026-09-11-008)\n- `26-a2a-planning` \u2014 proposed\n- `26-firstmate-four-layer` \u2014 active\n- `27-firstmate-context-budget` \u2014 active\n- `27-hermod-mcp-a2a-composition` \u2014 proposed\n- `28-frontend-backend-build` \u2014 DRAFT (proposed) \u00b7 **Owner:** Brokk \u00b7 **Stamp:** `traceability_target: 0.984`\n- `29-brokk-distro-runtime` \u2014 proposed \u00b7 **Realm:** platform \u00b7 **Owner:** Brokk", "hash": "93d97cf810d0e55a9cab110bf038aa3f5a45b82a8c1156c4a262d95427d4c8cb"}
14
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "4. Today's Runes (2026-09-11)\n```jsonl\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"yggdrasil\",\"order\":\"\",\"realm\":\"way-of\",\"event\":\"git.sync\",\"message\":\"no git targets found under /home/zerwiz/Ymir (mode=fetch)\",\"prev\":\"\",\"checksum\":\"3fe78cd4851245fa2b2e5bcc676af6f3a3844b0f46839840b0e877c7541ec01a\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"muninn\",\"order\":\"\",\"realm\":\"way-of\",\"event\":\"memory.housekeeping\",\"message\":\"engram=absent backup=/home/zerwiz/Ymir/state/backups/memory-2026-09-11.tar.gz pruned=0\",\"prev\":\"3fe78cd4851245fa2b2e5bcc676af6f3a3844b0f46839840b0e877c7541ec01a\",\"checksum\":\"d9eae453a45ec94288bec58bbaa5829e6a2adfd112590ab9b4ba594b70e88ff1\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.features\",\"message\":\"FEATURES.md registry readable; projects=38\",\"prev\":\"d9eae453a45ec94288bec58bbaa5829e6a2adfd112590ab9b4ba594b70e88ff1\",\"checksum\":\"a4b5180ff26dcbeaeaf30d95d096b36f7a522ed946e0e55c6937976c30f6b8b2\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.compliance\",\"message\":\".compliance present; gates=5 [check_platform.sh check_env.sh check_danger.sh check_wiring.sh check_paths.sh] core_four=present\",\"prev\":\"a4b5180ff26dcbeaeaf30d95d096b36f7a522ed946e0e55c6937976c30f6b8b2\",\"checksum\":\"62c77d96ba90d4faff79e0bf6ffa3f7bd926e57fee9db8a5c679af45b60c7606\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.factory\",\"message\":\"factory.db read-only: sessions=161 phases=437 gates=67 gate_fail=1\",\"prev\":\"62c77d96ba90d4faff79e0bf6ffa3f7bd926e57fee9db8a5c679af45b60c7606\",\"checksum\":\"3726c03833e0693eb5c73d7db42562c55a30dcdbdfcd9ce7ce11f1832878a6d7\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.engram\",\"message\":\"kaia.engram size=610304B wal=present mtime=2026-09-05 20:14:25\",\"prev\":\"3726c03833e0693eb5c73d7db42562c55a30dcdbdfcd9ce7ce11f1832878a6d7\",\"checksum\":\"", "hash": "da287fd27ea661acd08a9cf7983ca84ee658fb26dac16f1ed47facb8929bcf60"}
15
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/memory/daily/2026-09-11.md", "tags": ["workspace", "way-of"], "content": "Next\nBegin from the Active Queue above. Frontend gate stays ahead of backend (plan 29 \u00a70).", "hash": "bc96c758629fe519ec0bda52d5a31d2157030adffff0bba3a5e798c20d6b6d3e"}
16
- {"timestamp": "2026-09-11T17:45:32Z", "source": "svartalfaheim/way-of/workspace/README.md", "tags": ["workspace", "way-of"], "content": "Way-Of \u2014 Workspace (Company Tenant)\nScoped operational memory for the way-of company realm.\n\n- `company/` \u2014 Way-Of brand identity, mission, offers, strategy\n- `marketing/` \u2014 copy, social calendars, campaigns, analytics\n- `development/` \u2014 product specs, active repos (WOMONO, WOW, OPT), architectural docs\n- `life/` \u2014 company-side scheduling\n- `memory/daily/` \u2014 auto-generated daily logs `YYYY-MM-DD.md`\n- `memory/entity_graph/` \u2014 key entity relationship notes", "hash": "615dcef83876d0d9ba529cbeafebcd766ae7800f662b55b87e9e7974f74820ed"}
17
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/portfolio.md", "tags": ["workspace", "way-of"], "content": "Projects\n_No projects registered yet. Use `register_foreign_app` skill to onboard repos._", "hash": "cf8465546b79e276300e1587c2aac0ffa25501dc67a7e4fd95dd33f80ae63c06"}
18
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/portfolio.md", "tags": ["workspace", "way-of"], "content": "Running Processes\n_None tracked. Use `process_controller` skill to manage services._", "hash": "d4bfe35df8eb2688d8db49a75345d63e2fd60d949c35bc0fc11552614392d24b"}
19
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/portfolio.md", "tags": ["workspace", "way-of"], "content": "Deploy Pipelines\n_None configured. Use `github_deploy` skill to set up CI/CD._", "hash": "70102e751942c96e9d420271cc498bb8fd19d2ff7565f34ef189cc85d32da567"}
20
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/toolchain.md", "tags": ["workspace", "way-of"], "content": "Toolchain Registry\nThe validated engines Ymir adopts rather than rebuilds (AGENTS.md law 8 \u2014 open\nsource first). Ymir owns only the UI, the runtime, and A2A collaboration; everything\nbelow wears a Norse name over a proven engine. Wrappers live in `bin/`; secrets come\nfrom `.env.local` / `.env.realm`, never here.\n\n```\ntoolchain[16]{domain,engine,norse,wrapper,auth_env}:\n \"memory\",\"engram/engdbram\",\"Mimirsbrunn\",\"bin/mimir.sh\",\"MIMIRSBRUNN_URL\"\n \"memory bridge\",\"Kaia engram bridge (:4602)\",\"Mimirsbrunn\",\"bin/mimir.sh\",\"MIMIRSBRUNN_URL\"\n \"queue\",\"Redis\",\"Ratatoskr's nest\",\"(a2a-bus)\",\"REDIS_URL\"\n \"protocol\",\"a2aproject/a2a\",\"Ratatoskr\",\"(a2a-bus)\",\"\u2014\"\n \"gateway\",\"Traefik / Caddy\",\"Bifrost\",\"(deploy)\",\"BIFROST_PORT\"\n \"auth\",\"OAuth2-proxy / Authentik + JWS\",\"Heimdall\",\"(deploy)\",\"HEIMDALL_OAUTH_CLIENT_ID\"\n \"tunnel\",\"cloudflared\",\"Gjallarhorn\",\"(deploy)\",\"CLOUDFLARE_TUNNEL_TOKEN\"\n \"sandbox\",\"Docker (rootless)\",\"Utgard\",\"bin/utgard.sh\",\"\u2014\"\n \"files\",\"MinIO / FileBrowser\",\"Skrymir\",\"(deploy)\",\"\u2014\"\n \"process supervisor\",\"PM2 / Docker\",\"Valhalla\",\"(valhalla)\",\"\u2014\"\n \"SCM\",\"git + gh CLI\",\"Yggdrasil\",\"bin/yggdrasil.sh\",\"GITHUB_TOKEN\"\n \"local models\",\"llama-server / LM Studio\",\"\u2014\",\"bin/bifrost-bridge.sh\",\"LM_STUDIO_URL\"\n \"cloud models\",\"opencode-go bridge\",\"Bifrost bridge\",\"bin/bifrost-bridge.sh\",\"OPENCODE_GO_API_KEY\"\n \"harnesses\",\"OpenCode / Pi / Claude / Codex / Cursor\",\"Hamr\",\"bin/hamr-harness.sh\",\"\u2014\"\n \"backlog\",\"tasks-axi\",\"Nornir\",\"(.agents/config/cron.yaml)\",\"\u2014\"\n \"library of the halls\",\"command-factory / firstmate / .compliance\",\"\u2014\",\"\u2014\",\"\u2014\"\n```", "hash": "a3879d67c63bfd4f9e88999db104ee1eb9ed01b26e85bc7781adc8d7f14b297a"}
21
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/toolchain.md", "tags": ["workspace", "way-of"], "content": "Auth status\n```\nauth[6]{engine,env,checked}:\n \"opencode-go bridge\",\"OPENCODE_GO_API_KEY (in .env.local)\",\"bin/bifrost-bridge.sh --status\"\n \"GitHub\",\"GITHUB_TOKEN\",\"gh auth status\"\n \"LM Studio / llama-server\",\"LM_STUDIO_URL\",\"curl :8080/v1/models\"\n \"Redis\",\"REDIS_URL\",\"redis-cli ping\"\n \"engram bridge\",\"MIMIRSBRUNN_URL (:4602)\",\"bin/mimir.sh health\"\n \"Docker\",\"(socket)\",\"docker info\"\n```", "hash": "877b71bf39cc3d413789680ae0bcff5e7f6aa37873a4995917824573173572bc"}
22
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/toolchain.md", "tags": ["workspace", "way-of"], "content": "Rules\n- Before synthesizing a feature, ask: *does a validated engine already do this?*\n If yes, adopt it and Norse-name the wrapper; do not rebuild.\n- One wrapper per domain in `bin/`; it is the only interface agents use.\n- Secrets only from env; the registry names the variable, never the value.\n- Never claim a tool is present without a `--status` check.", "hash": "d1ca9c0ef12d6adad694ad9f93047d0777e826758a4755872d88dd4db994995e"}
23
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/config/toolchain.md", "tags": ["workspace", "way-of"], "content": "Maintaining this\n- **Owner:** Brokk. Add a row when an engine is adopted; update its `auth` row when\n the check path changes.", "hash": "769f1d684e2c429a167afa0d1a0276175f5be225cc0adb2d33175e333c5292f5"}
24
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/memory/runes_audit.md", "tags": ["workspace", "way-of"], "content": "YGGDRASIL Audit Trail\n> Append-only log of all significant system actions across Ymir\n\n---\n\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"yggdrasil\",\"order\":\"\",\"realm\":\"way-of\",\"event\":\"git.sync\",\"message\":\"no git targets found under /home/zerwiz/Ymir (mode=fetch)\",\"prev\":\"\",\"checksum\":\"3fe78cd4851245fa2b2e5bcc676af6f3a3844b0f46839840b0e877c7541ec01a\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"muninn\",\"order\":\"\",\"realm\":\"way-of\",\"event\":\"memory.housekeeping\",\"message\":\"engram=absent backup=/home/zerwiz/Ymir/state/backups/memory-2026-09-11.tar.gz pruned=0\",\"prev\":\"3fe78cd4851245fa2b2e5bcc676af6f3a3844b0f46839840b0e877c7541ec01a\",\"checksum\":\"d9eae453a45ec94288bec58bbaa5829e6a2adfd112590ab9b4ba594b70e88ff1\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.features\",\"message\":\"FEATURES.md registry readable; projects=38\",\"prev\":\"d9eae453a45ec94288bec58bbaa5829e6a2adfd112590ab9b4ba594b70e88ff1\",\"checksum\":\"a4b5180ff26dcbeaeaf30d95d096b36f7a522ed946e0e55c6937976c30f6b8b2\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.compliance\",\"message\":\".compliance present; gates=5 [check_platform.sh check_env.sh check_danger.sh check_wiring.sh check_paths.sh] core_four=present\",\"prev\":\"a4b5180ff26dcbeaeaf30d95d096b36f7a522ed946e0e55c6937976c30f6b8b2\",\"checksum\":\"62c77d96ba90d4faff79e0bf6ffa3f7bd926e57fee9db8a5c679af45b60c7606\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.factory\",\"message\":\"factory.db read-only: sessions=161 phases=437 gates=67 gate_fail=1\",\"prev\":\"62c77d96ba90d4faff79e0bf6ffa3f7bd926e57fee9db8a5c679af45b60c7606\",\"checksum\":\"3726c03833e0693eb5c73d7db42562c55a30dcdbdfcd9ce7ce11f1832878a6d7\"}\n{\"timestamp\":\"2026-09-11T13:47:00Z\",\"actor\":\"huginn\",\"order\":\"\",\"realm\":\"\",\"event\":\"observer.command.engram\",\"message\":\"kaia.engram size=610304B wal=present mtime=2026-09-05 20:14:25\",\"prev\":\"3726c03833e0693eb5c73d7db", "hash": "93b9bb597402502e16983c19f305a5aca075a1e00a7a0401e53e19f33b9da467"}
25
- {"timestamp": "2026-09-11T17:45:32Z", "source": "workspace/README.md", "tags": ["workspace", "way-of"], "content": "Ymir \u2014 Global / Personal Workspace & Audit Trails\n- `config/` \u2014 platform configuration, `portfolio.md` (project registry)\n- `memory/` \u2014 global audit trail, `runes_audit.md`\n\nGlobal (non-realm-scoped) state lives here. Realm-scoped data lives under `svartalfaheim/<realm>/`.", "hash": "d38072d34412a649576ba220d0fe0f929e1e9e250087ace54a77981e707f9ea6"}
26
- {"timestamp": "2026-09-11T17:47:50Z", "source": "svartalfaheim/way-of/workspace/memory/entity_graph/README.md", "tags": ["workspace", "way-of"], "content": "Entity Graph\nRelationship notes for the realm's workspace. `bin/workspace-rag.sh entities|graph`\nreads these files; each `[[Entity]]` is a node, and `[[A]] -> [[B]]` is a directed\nedge. Keep entries short and grounded; this is the realm's memory of *how things\nrelate*, not a copy of the documents.", "hash": "90e9ff46a3592fd996d44e33f491d59d3708401fce9e3c7a42f12813f3597493"}
27
- {"timestamp": "2026-09-11T17:47:50Z", "source": "svartalfaheim/way-of/workspace/memory/entity_graph/README.md", "tags": ["workspace", "way-of"], "content": "Format\n```\n[[hlidskjalf]] -> [[gate-api]]\n[[gate-api]] -> [[runes]]\n[[brokk]] -> [[eindri]]\n```\n\nPlain Markdown with `[[wiki-links]]` and `->` edges. Index the prose docs with\n`bin/workspace-rag.sh index`; index the relationships here.", "hash": "c3a7d455361a9be44376e161c7ee66f09c06988e4a9cff1160261aa3e1034f1e"}