@zerwiz/ymir 0.1.4 → 0.1.5
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/README.md +291 -0
- package/.agents/agents/bragi-marketer.md +111 -0
- package/.agents/agents/brokk.md +352 -0
- package/.agents/agents/forseti-reviewer.md +93 -0
- package/.agents/agents/frigg-consent.md +77 -0
- package/.agents/agents/groa-update.md +77 -0
- package/.agents/agents/hnoss-designer.md +69 -0
- package/.agents/agents/huginn-researcher.md +99 -0
- package/.agents/agents/jord-projects.md +78 -0
- package/.agents/agents/kvasir-scout.md +91 -0
- package/.agents/agents/mimir-planner.md +92 -0
- package/.agents/agents/muninn-stow.md +77 -0
- package/.agents/agents/saga-bearings.md +78 -0
- package/.agents/agents/sindri-developer.md +114 -0
- package/.agents/agents/snotra-documenter.md +105 -0
- package/.agents/agents/syn-recovery.md +78 -0
- package/.agents/agents/tyr-check.md +78 -0
- package/.agents/agents/urdh-hold.md +77 -0
- package/.agents/agents/volundr-smith.md +80 -0
- package/.agents/agents/vor-diagnostics.md +77 -0
- package/.agents/assets/agents/naming.md +50 -0
- package/.agents/assets/agents/registry.md +93 -0
- package/.agents/assets/agents/runtime.md +36 -0
- package/.agents/assets/agents/toon-tasks-cli.md +42 -0
- package/.agents/assets/templates/company_entity.template.md +37 -0
- package/.agents/backend/backends/cmux.sh +649 -0
- package/.agents/backend/backends/herdr-eventwait.py +157 -0
- package/.agents/backend/backends/herdr-workspace-move.py +114 -0
- package/.agents/backend/backends/herdr.sh +3386 -0
- package/.agents/backend/backends/orca.sh +290 -0
- package/.agents/backend/backends/tmux.sh +357 -0
- package/.agents/backend/backends/zellij.sh +700 -0
- package/.agents/backend/fm-afk-launch.sh +654 -0
- package/.agents/backend/fm-afk-return.sh +241 -0
- package/.agents/backend/fm-afk-start.sh +172 -0
- package/.agents/backend/fm-arm-command-policy.mjs +960 -0
- package/.agents/backend/fm-arm-pretool-check.sh +200 -0
- package/.agents/backend/fm-backend-hometag-lib.sh +52 -0
- package/.agents/backend/fm-backend.sh +981 -0
- package/.agents/backend/fm-backlog-handoff.sh +909 -0
- package/.agents/backend/fm-backlog-receive.sh +187 -0
- package/.agents/backend/fm-backlog-transition-lib.sh +779 -0
- package/.agents/backend/fm-bearings-board.sh +204 -0
- package/.agents/backend/fm-bearings-snapshot.sh +546 -0
- package/.agents/backend/fm-bootstrap.sh +1568 -0
- package/.agents/backend/fm-branch-outcome.sh +203 -0
- package/.agents/backend/fm-branch-prompt.sh +101 -0
- package/.agents/backend/fm-brief.sh +452 -0
- package/.agents/backend/fm-busy-event.sh +234 -0
- package/.agents/backend/fm-busy-lib.sh +986 -0
- package/.agents/backend/fm-captain-hold.sh +1001 -0
- package/.agents/backend/fm-cd-command-policy.mjs +153 -0
- package/.agents/backend/fm-cd-pretool-check.sh +190 -0
- package/.agents/backend/fm-check-lib.sh +74 -0
- package/.agents/backend/fm-check-register.sh +42 -0
- package/.agents/backend/fm-check-unregister.sh +52 -0
- package/.agents/backend/fm-classify-lib.sh +1770 -0
- package/.agents/backend/fm-claude-stop-autoarm.sh +334 -0
- package/.agents/backend/fm-composer-lib.sh +1416 -0
- package/.agents/backend/fm-config-inherit-lib.sh +1202 -0
- package/.agents/backend/fm-config-push.sh +254 -0
- package/.agents/backend/fm-control-lib.sh +251 -0
- package/.agents/backend/fm-control.sh +878 -0
- package/.agents/backend/fm-crew-state.sh +625 -0
- package/.agents/backend/fm-cursor-lib.sh +243 -0
- package/.agents/backend/fm-decision-hold.sh +232 -0
- package/.agents/backend/fm-doc-audience-check.sh +269 -0
- package/.agents/backend/fm-dod-lib.sh +67 -0
- package/.agents/backend/fm-ensure-agents-md.sh +253 -0
- package/.agents/backend/fm-extension-launch-barrier.mjs +129 -0
- package/.agents/backend/fm-extension.mjs +2577 -0
- package/.agents/backend/fm-extension.sh +16 -0
- package/.agents/backend/fm-ff-lib.sh +420 -0
- package/.agents/backend/fm-fleet-snapshot.sh +1463 -0
- package/.agents/backend/fm-fleet-sync.sh +458 -0
- package/.agents/backend/fm-fleet-view.sh +96 -0
- package/.agents/backend/fm-gate-refuse-lib.sh +102 -0
- package/.agents/backend/fm-guard.sh +242 -0
- package/.agents/backend/fm-harness.sh +195 -0
- package/.agents/backend/fm-herdr-ci-cleanup.sh +115 -0
- package/.agents/backend/fm-herdr-lab.sh +346 -0
- package/.agents/backend/fm-herdr-session-cleanup.sh +337 -0
- package/.agents/backend/fm-home-seed.sh +984 -0
- package/.agents/backend/fm-home-summary-refresh.sh +255 -0
- package/.agents/backend/fm-hook-host-lib.sh +36 -0
- package/.agents/backend/fm-inactive-reconcile.sh +531 -0
- package/.agents/backend/fm-inbox.sh +399 -0
- package/.agents/backend/fm-install-actionlint.sh +84 -0
- package/.agents/backend/fm-install-herdr.sh +96 -0
- package/.agents/backend/fm-install-shellcheck.sh +84 -0
- package/.agents/backend/fm-install-treehouse.sh +95 -0
- package/.agents/backend/fm-kimi-turnend-hook.sh +276 -0
- package/.agents/backend/fm-lease-lib.sh +218 -0
- package/.agents/backend/fm-lease.sh +189 -0
- package/.agents/backend/fm-line-cap-lib.sh +51 -0
- package/.agents/backend/fm-lint-workflows.sh +137 -0
- package/.agents/backend/fm-lint.sh +591 -0
- package/.agents/backend/fm-lock-lib.sh +104 -0
- package/.agents/backend/fm-lock.sh +107 -0
- package/.agents/backend/fm-marker-lib.sh +12 -0
- package/.agents/backend/fm-merge-local.sh +74 -0
- package/.agents/backend/fm-merge-outcome-lib.sh +138 -0
- package/.agents/backend/fm-nm-run-lib.sh +124 -0
- package/.agents/backend/fm-on.sh +125 -0
- package/.agents/backend/fm-operational-input.sh +253 -0
- package/.agents/backend/fm-peek.sh +46 -0
- package/.agents/backend/fm-pending-reply-lib.sh +1409 -0
- package/.agents/backend/fm-pr-check.sh +135 -0
- package/.agents/backend/fm-pr-lib.sh +1016 -0
- package/.agents/backend/fm-pr-merge.sh +707 -0
- package/.agents/backend/fm-pr-poll.sh +110 -0
- package/.agents/backend/fm-primary-scope-lib.sh +33 -0
- package/.agents/backend/fm-procevent-extension-capture.pl +259 -0
- package/.agents/backend/fm-procevent-lavish.sh +628 -0
- package/.agents/backend/fm-procevent-lib.sh +892 -0
- package/.agents/backend/fm-procevent-quota.sh +290 -0
- package/.agents/backend/fm-procevent-remote-reply.sh +577 -0
- package/.agents/backend/fm-procevent-when.sh +504 -0
- package/.agents/backend/fm-procevent.sh +1466 -0
- package/.agents/backend/fm-project-mode.sh +92 -0
- package/.agents/backend/fm-project-origin-lib.sh +180 -0
- package/.agents/backend/fm-promote.sh +282 -0
- package/.agents/backend/fm-public-followup-emit.sh +260 -0
- package/.agents/backend/fm-public-followup-lib.sh +398 -0
- package/.agents/backend/fm-public-followup.sh +1330 -0
- package/.agents/backend/fm-push-transition-lib.sh +168 -0
- package/.agents/backend/fm-quota-axi-lib.sh +93 -0
- package/.agents/backend/fm-quota-choose.sh +384 -0
- package/.agents/backend/fm-remote-delta-read.sh +189 -0
- package/.agents/backend/fm-remote-doctor.sh +800 -0
- package/.agents/backend/fm-remote-entrypoint.sh +193 -0
- package/.agents/backend/fm-remote-file.sh +234 -0
- package/.agents/backend/fm-remote-home-provision.sh +259 -0
- package/.agents/backend/fm-remote-home-seed.sh +259 -0
- package/.agents/backend/fm-remote-inherit-push.sh +90 -0
- package/.agents/backend/fm-remote-inherit.sh +179 -0
- package/.agents/backend/fm-remote-job-lib.sh +1241 -0
- package/.agents/backend/fm-remote-job-reap-orphans.sh +137 -0
- package/.agents/backend/fm-remote-job-worker.sh +1124 -0
- package/.agents/backend/fm-remote-readiness-lib.sh +44 -0
- package/.agents/backend/fm-remote-secondmate-control.sh +340 -0
- package/.agents/backend/fm-review-diff.sh +158 -0
- package/.agents/backend/fm-secondmate-charter-lib.sh +44 -0
- package/.agents/backend/fm-secondmate-nudge-lib.sh +68 -0
- package/.agents/backend/fm-secondmate-parent-lib.sh +70 -0
- package/.agents/backend/fm-secondmate-reconcile.sh +371 -0
- package/.agents/backend/fm-secondmate-registry-lib.sh +311 -0
- package/.agents/backend/fm-secondmate-report.sh +88 -0
- package/.agents/backend/fm-send.sh +1059 -0
- package/.agents/backend/fm-session-lock-lib.sh +176 -0
- package/.agents/backend/fm-session-start.sh +970 -0
- package/.agents/backend/fm-sessionstart-cursor.sh +40 -0
- package/.agents/backend/fm-sessionstart-nudge.sh +45 -0
- package/.agents/backend/fm-sessionstart-run.sh +145 -0
- package/.agents/backend/fm-spawn.sh +3153 -0
- package/.agents/backend/fm-startup-memory-budget-lib.sh +224 -0
- package/.agents/backend/fm-startup-memory-budget.sh +94 -0
- package/.agents/backend/fm-startup-network.sh +642 -0
- package/.agents/backend/fm-stow-cascade.sh +251 -0
- package/.agents/backend/fm-subagent-pretool-check.sh +207 -0
- package/.agents/backend/fm-supervise-daemon.sh +1732 -0
- package/.agents/backend/fm-supervision-instructions.sh +215 -0
- package/.agents/backend/fm-supervision-lib.sh +90 -0
- package/.agents/backend/fm-supervisor-target-lib.sh +78 -0
- package/.agents/backend/fm-tangle-lib.sh +53 -0
- package/.agents/backend/fm-task-inbox-lib.sh +402 -0
- package/.agents/backend/fm-tasks-axi-lib.sh +123 -0
- package/.agents/backend/fm-teardown.sh +2922 -0
- package/.agents/backend/fm-test-isolation-proof.sh +588 -0
- package/.agents/backend/fm-test-run.sh +2191 -0
- package/.agents/backend/fm-timeout-lib.sh +141 -0
- package/.agents/backend/fm-timing-lib.sh +179 -0
- package/.agents/backend/fm-tmux-lib.sh +291 -0
- package/.agents/backend/fm-tool-update-check.sh +898 -0
- package/.agents/backend/fm-trace-context-lib.sh +227 -0
- package/.agents/backend/fm-transition-lib.sh +103 -0
- package/.agents/backend/fm-turnend-guard-cursor.sh +391 -0
- package/.agents/backend/fm-turnend-guard-grok.sh +90 -0
- package/.agents/backend/fm-turnend-guard.sh +432 -0
- package/.agents/backend/fm-update.sh +110 -0
- package/.agents/backend/fm-vendor-auth-probe.sh +190 -0
- package/.agents/backend/fm-voice-client.py +1373 -0
- package/.agents/backend/fm-voice-relay.py +1256 -0
- package/.agents/backend/fm-wake-drain.sh +592 -0
- package/.agents/backend/fm-wake-grant.sh +127 -0
- package/.agents/backend/fm-wake-lib.sh +1849 -0
- package/.agents/backend/fm-watch-arm.sh +602 -0
- package/.agents/backend/fm-watch-checkpoint.sh +109 -0
- package/.agents/backend/fm-watch.sh +1962 -0
- package/.agents/backend/fm-x-dismiss.sh +116 -0
- package/.agents/backend/fm-x-followup.sh +286 -0
- package/.agents/backend/fm-x-lib.sh +1000 -0
- package/.agents/backend/fm-x-link.sh +234 -0
- package/.agents/backend/fm-x-poll.sh +185 -0
- package/.agents/backend/fm-x-reply.sh +385 -0
- package/.agents/backend/fm_voice_frame.py +166 -0
- package/.agents/backend/fm_voice_records.py +574 -0
- package/.agents/backend/model-bridge.py +290 -0
- package/.agents/backend/opencode-go-bridge.py +30 -0
- package/.agents/bus/README.md +12 -0
- package/.agents/bus/messages.json +1 -0
- package/.agents/config/agents.machine.example.yaml +16 -0
- package/.agents/config/agents.yaml +50 -0
- package/.agents/config/agents.yaml.example +72 -0
- package/.agents/config/crew-dispatch.json +22 -0
- package/.agents/config/cron.yaml +9 -0
- package/.agents/config/eindri-dispatch.json +67 -0
- package/.agents/config/eindri-harness +1 -0
- package/.agents/config/startup-memory-budget +1 -0
- package/.agents/config/tailscale-sync.yaml +27 -0
- package/.agents/filebrowser/.filebrowser.json +6 -0
- package/.agents/filebrowser/README.md +11 -0
- package/.agents/gateway/README.md +12 -0
- package/.agents/github/README.md +15 -0
- package/.agents/github/webhooks/.gitkeep +0 -0
- package/.agents/github/workflows/.gitkeep +0 -0
- package/.agents/harness/opencode/plugins/lib/rodd-operational-input.js +37 -0
- package/.agents/harness/opencode/plugins/package.json +4 -0
- package/.agents/harness/opencode/plugins/saga-sessionstart.js +77 -0
- package/.agents/harness/opencode/plugins/syn-cd-check.js +61 -0
- package/.agents/harness/opencode/plugins/syn-pretool-check.js +68 -0
- package/.agents/harness/opencode/plugins/syn-turnend-guard.js +105 -0
- package/.agents/harness/opencode/plugins/syn-watch-arm.js +521 -0
- package/.agents/memory/README.md +46 -0
- package/.agents/memory/kaia.engram +0 -0
- package/.agents/memory/kaia.engram-shm +0 -0
- package/.agents/memory/kaia.engram-wal +0 -0
- package/.agents/memory/runes_audit.md +5 -0
- package/.agents/memory/well/episodes.jsonl +367 -0
- package/.agents/memory/well/workspace.jsonl +27 -0
- package/.agents/migrations/0001-hodd-layout.sh +38 -0
- package/.agents/migrations/0002-a2a-mcp.sh +27 -0
- package/.agents/migrations/0003-private-data-separation.sh +111 -0
- package/.agents/migrations/0004-hoard-and-realms.sh +104 -0
- package/.agents/sandbox/Dockerfile.utgard +19 -0
- package/.agents/sandbox/README.md +14 -0
- package/.agents/sandbox/utgard.config.json +14 -0
- package/.agents/skills/README.md +59 -0
- package/.agents/skills/bragi-marketing/README.md +3 -0
- package/.agents/skills/bragi-marketing/SKILL.md +82 -0
- package/.agents/skills/eindri-homes/README.md +3 -0
- package/.agents/skills/eindri-homes/SKILL.md +291 -0
- package/.agents/skills/eindri-homes/assets/control-plane.md +122 -0
- package/.agents/skills/eindri-homes/assets/dispatch.md +80 -0
- package/.agents/skills/frigg-consent/README.md +3 -0
- package/.agents/skills/frigg-consent/SKILL.md +56 -0
- package/.agents/skills/galdr-ymirsystem/README.md +3 -0
- package/.agents/skills/galdr-ymirsystem/SKILL.md +158 -0
- package/.agents/skills/galdr-ymirsystem/assets/README.md +74 -0
- package/.agents/skills/galdr-ymirsystem/assets/brokk-distro-runtime.md +390 -0
- package/.agents/skills/galdr-ymirsystem/assets/build-method.md +113 -0
- package/.agents/skills/galdr-ymirsystem/assets/build-tool-categories.md +178 -0
- package/.agents/skills/galdr-ymirsystem/assets/eindri-orchestration.md +518 -0
- package/.agents/skills/galdr-ymirsystem/assets/eindri-profiles.md +136 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/README.md +673 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/claude-code.md +197 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/codex.md +191 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/cursor.md +193 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/opencode.md +262 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/pi.md +295 -0
- package/.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md +496 -0
- package/.agents/skills/galdr-ymirsystem/assets/installation.md +571 -0
- package/.agents/skills/galdr-ymirsystem/assets/local-models/HOST-DATA.example.md +72 -0
- package/.agents/skills/galdr-ymirsystem/assets/local-models.md +274 -0
- package/.agents/skills/galdr-ymirsystem/assets/memory-well.md +161 -0
- package/.agents/skills/galdr-ymirsystem/assets/nornir-jobs.md +377 -0
- package/.agents/skills/galdr-ymirsystem/assets/norse-naming.md +325 -0
- package/.agents/skills/galdr-ymirsystem/assets/odrerir-hall.md +129 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/einherjar-spawn.schema.json +81 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/herdr-profile.toml +75 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/pi-profile.yml +96 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/supervision-tree.yml +163 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot-guide.md +58 -0
- package/.agents/skills/galdr-ymirsystem/assets/porting-upstream-to-norse.md +301 -0
- package/.agents/skills/galdr-ymirsystem/assets/principles.md +385 -0
- package/.agents/skills/galdr-ymirsystem/assets/reference-adoption.md +99 -0
- package/.agents/skills/galdr-ymirsystem/assets/registry.md +379 -0
- package/.agents/skills/galdr-ymirsystem/assets/runtime-compliance.md +463 -0
- package/.agents/skills/galdr-ymirsystem/assets/runtime-components.md +553 -0
- package/.agents/skills/galdr-ymirsystem/assets/smidja.md +175 -0
- package/.agents/skills/galdr-ymirsystem/schemas/toon-schemas.md +190 -0
- package/.agents/skills/galdr-ymirsystem/scripts/README.md +45 -0
- package/.agents/skills/galdr-ymirsystem/scripts/bench-one.sh +248 -0
- package/.agents/skills/galdr-ymirsystem/scripts/compliance-check.sh +360 -0
- package/.agents/skills/galdr-ymirsystem/scripts/gpu-sample.sh +43 -0
- package/.agents/skills/galdr-ymirsystem/scripts/stop-all.sh +34 -0
- package/.agents/skills/galdr-ymirsystem/scripts/toon-check.py +188 -0
- package/.agents/skills/gjallarhorn-relay/README.md +3 -0
- package/.agents/skills/gjallarhorn-relay/SKILL.md +283 -0
- package/.agents/skills/groa-update/SKILL.md +70 -0
- package/.agents/skills/hamr-adapters/README.md +3 -0
- package/.agents/skills/hamr-adapters/SKILL.md +123 -0
- package/.agents/skills/hamr-adapters/references/common/control-and-recovery.md +37 -0
- package/.agents/skills/hamr-adapters/references/common/dispatch.md +32 -0
- package/.agents/skills/hamr-adapters/references/common/model-and-effort.md +42 -0
- package/.agents/skills/hamr-adapters/references/common/primary-hooks.md +40 -0
- package/.agents/skills/hamr-adapters/references/harness/claude.md +55 -0
- package/.agents/skills/hamr-adapters/references/harness/codex.md +43 -0
- package/.agents/skills/hamr-adapters/references/harness/cursor.md +75 -0
- package/.agents/skills/hamr-adapters/references/harness/grok.md +69 -0
- package/.agents/skills/hamr-adapters/references/harness/kimi.md +51 -0
- package/.agents/skills/hamr-adapters/references/harness/muse.md +70 -0
- package/.agents/skills/hamr-adapters/references/harness/opencode.md +42 -0
- package/.agents/skills/hamr-adapters/references/harness/pi.md +56 -0
- package/.agents/skills/herdr-panes/README.md +3 -0
- package/.agents/skills/herdr-panes/SKILL.md +92 -0
- package/.agents/skills/herdr-panes/assets/herdr-backend.md +346 -0
- package/.agents/skills/herdr-panes/assets/tmux-backend.md +115 -0
- package/.agents/skills/hnoss-design/DESIGN.md +19 -0
- package/.agents/skills/hnoss-design/README.md +3 -0
- package/.agents/skills/hnoss-design/SKILL.md +83 -0
- package/.agents/skills/hvild-afk/README.md +3 -0
- package/.agents/skills/hvild-afk/SKILL.md +241 -0
- package/.agents/skills/jord-projects/README.md +3 -0
- package/.agents/skills/jord-projects/SKILL.md +92 -0
- package/.agents/skills/lifecycle/SKILL.md +56 -0
- package/.agents/skills/lifecycle/smoke_test.sh +52 -0
- package/.agents/skills/lifecycle/start.sh +21 -0
- package/.agents/skills/lifecycle/status.sh +35 -0
- package/.agents/skills/lifecycle/stop.sh +16 -0
- package/.agents/skills/muninn-stow/README.md +3 -0
- package/.agents/skills/muninn-stow/SKILL.md +309 -0
- package/.agents/skills/no-mistakes/SKILL.md +379 -0
- package/.agents/skills/nornir-schedule/README.md +3 -0
- package/.agents/skills/nornir-schedule/SKILL.md +25 -0
- package/.agents/skills/nornir-schedule/assets/events.md +137 -0
- package/.agents/skills/nornir-schedule/assets/quota.md +131 -0
- package/.agents/skills/nsr-compliance/README.md +3 -0
- package/.agents/skills/nsr-compliance/SKILL.md +29 -0
- package/.agents/skills/nsr-compliance/assets/nsr/README.md +40 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/README.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/git-workflow.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/security.md +22 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/tech-stack.md +8 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/SKILL.md +71 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/config/core_four.yaml +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/validate_code.sh +29 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/verify_docs.py +66 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/generate.sh +109 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/telemetry/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/README.md +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/features/README.md +36 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/features/SKILL-template.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/README.md +25 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/SKILL.md +13 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/create_branch.sh +6 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/safe_commit.sh +9 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/sync_upstream.sh +6 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/README.md +27 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/SKILL.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/smoke_test.sh +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/start.sh +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/status.sh +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/stop.sh +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/config/core_four.yaml +13 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/telemetry/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/README.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/api.md +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/compliance-wiring.md +155 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/frontend.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/README.md +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/clients/README.md +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/clients/template-README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/deploy.sh +49 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/development.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/production.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/staging.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/tenants/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/tenants/template.env.example +8 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/README.md +26 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/agent.md +7 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/developers/dev-1.md +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/linux.md +9 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/macos.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/shared.md +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/windows.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/README.md +25 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/_template.md +41 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/hosting-1.md +41 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/README.md +21 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/README.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/deployment.md +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/disaster-recovery.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/ops-tasks.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/features/README.md +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/project-skills.md +146 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/research/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/research/software-compliance-research.md +269 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/working-with-agents.md +260 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/AGENTS.md +38 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/ARCHITECTURE.md +36 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/BEST_PRACTICES.md +27 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/CI_CD.md +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/FEATURES.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/README.md +22 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/RULES.md +37 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/STRUCTURE.md +45 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/TECH_STACK.md +28 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scaffold-spec.md +63 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scripts/scaffold.sh +103 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scripts/validate.sh +52 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/SKILL.md +71 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/config/core_four.yaml +16 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/validate_code.sh +29 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/verify_docs.py +66 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/generate.sh +109 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/telemetry/README.md +11 -0
- package/.agents/skills/pr-ops/README.md +3 -0
- package/.agents/skills/pr-ops/SKILL.md +109 -0
- package/.agents/skills/ratatoskr-a2a/README.md +3 -0
- package/.agents/skills/ratatoskr-a2a/SKILL.md +148 -0
- package/.agents/skills/rules-check-drift/SKILL.md +81 -0
- package/.agents/skills/saga-bearings/README.md +3 -0
- package/.agents/skills/saga-bearings/SKILL.md +26 -0
- package/.agents/skills/saga-bearings/assets/bearings.md +161 -0
- package/.agents/skills/saga-bearings/assets/board-template.html +731 -0
- package/.agents/skills/saga-bearings/assets/recap.md +56 -0
- package/.agents/skills/syn-recovery/README.md +3 -0
- package/.agents/skills/syn-recovery/SKILL.md +54 -0
- package/.agents/skills/tyr-check/README.md +3 -0
- package/.agents/skills/tyr-check/SKILL.md +218 -0
- package/.agents/skills/urdh-hold/README.md +3 -0
- package/.agents/skills/urdh-hold/SKILL.md +25 -0
- package/.agents/skills/urdh-hold/assets/decisions.md +15 -0
- package/.agents/skills/urdh-hold/assets/hold.md +54 -0
- package/.agents/skills/vor-diagnostics/README.md +3 -0
- package/.agents/skills/vor-diagnostics/SKILL.md +68 -0
- package/.agents/skills/ymir-host/README.md +3 -0
- package/.agents/skills/ymir-host/SKILL.md +34 -0
- package/.agents/skills/ymir-host/assets/desktop.md +36 -0
- package/.agents/skills/ymir-host/assets/omarchy.md +297 -0
- package/.agents/skills/ymir-host/assets/runbooks.md +15 -0
- package/.agents/skills/ymir-host/assets/thjazi.md +220 -0
- package/.agents/skills/ymir-host/assets/update.md +64 -0
- package/.agents/tests/assets/board-render-harness.mjs +117 -0
- package/.agents/tests/cmux-test-safety.sh +51 -0
- package/.agents/tests/fixtures.sh +291 -0
- package/.agents/tests/fm-afk-inject-e2e.test.sh +428 -0
- package/.agents/tests/fm-afk-inject-herdr-e2e.test.sh +536 -0
- package/.agents/tests/fm-afk-launch.test.sh +961 -0
- package/.agents/tests/fm-afk-pi-herdr-return-e2e.test.sh +297 -0
- package/.agents/tests/fm-afk-return.test.sh +283 -0
- package/.agents/tests/fm-arm-pretool-check.test.sh +482 -0
- package/.agents/tests/fm-ask-user-authority.test.sh +42 -0
- package/.agents/tests/fm-backend-autodetect-smoke.test.sh +176 -0
- package/.agents/tests/fm-backend-cmux-smoke.test.sh +188 -0
- package/.agents/tests/fm-backend-cmux.test.sh +1166 -0
- package/.agents/tests/fm-backend-herdr-eventwait-smoke.test.sh +136 -0
- package/.agents/tests/fm-backend-herdr-eventwait.test.py +106 -0
- package/.agents/tests/fm-backend-herdr-focus-flash-e2e.test.sh +409 -0
- package/.agents/tests/fm-backend-herdr-launcher-workspace-e2e.test.sh +437 -0
- package/.agents/tests/fm-backend-herdr-presentation-e2e.test.sh +1424 -0
- package/.agents/tests/fm-backend-herdr-prune-safety-e2e.test.sh +180 -0
- package/.agents/tests/fm-backend-herdr-respawn-idem-e2e.test.sh +182 -0
- package/.agents/tests/fm-backend-herdr-smoke.test.sh +355 -0
- package/.agents/tests/fm-backend-herdr-workspace-per-home-e2e.test.sh +251 -0
- package/.agents/tests/fm-backend-herdr.test.sh +4606 -0
- package/.agents/tests/fm-backend-orca.test.sh +1357 -0
- package/.agents/tests/fm-backend-tmux-smoke.test.sh +173 -0
- package/.agents/tests/fm-backend-zellij-smoke.test.sh +205 -0
- package/.agents/tests/fm-backend-zellij.test.sh +1360 -0
- package/.agents/tests/fm-backend.test.sh +1142 -0
- package/.agents/tests/fm-backlog-atomicity.test.sh +2302 -0
- package/.agents/tests/fm-backlog-handoff.test.sh +1360 -0
- package/.agents/tests/fm-bearings-board-render.test.sh +135 -0
- package/.agents/tests/fm-bearings-board.test.sh +414 -0
- package/.agents/tests/fm-bearings-snapshot.test.sh +1990 -0
- package/.agents/tests/fm-bootstrap-network-parallel.test.sh +316 -0
- package/.agents/tests/fm-bootstrap.test.sh +1178 -0
- package/.agents/tests/fm-branch-supervision.test.sh +552 -0
- package/.agents/tests/fm-brief.test.sh +785 -0
- package/.agents/tests/fm-busy-adapter-wiring.test.sh +324 -0
- package/.agents/tests/fm-busy-state.test.sh +465 -0
- package/.agents/tests/fm-calm-pi-extension.test.sh +3979 -0
- package/.agents/tests/fm-captain-hold-lifecycle.test.sh +1187 -0
- package/.agents/tests/fm-cd-pretool-check.test.sh +400 -0
- package/.agents/tests/fm-check-unregister.test.sh +198 -0
- package/.agents/tests/fm-classify-corr-token.test.sh +543 -0
- package/.agents/tests/fm-classify-decision-key.test.sh +340 -0
- package/.agents/tests/fm-claude-stop-autoarm-live-e2e.test.sh +164 -0
- package/.agents/tests/fm-claude-stop-autoarm.test.sh +1190 -0
- package/.agents/tests/fm-cmux-claude-composer-live-e2e.test.sh +110 -0
- package/.agents/tests/fm-codex-continuity-live-e2e.test.sh +55 -0
- package/.agents/tests/fm-composer-ghost.test.sh +716 -0
- package/.agents/tests/fm-composer-lib.test.sh +666 -0
- package/.agents/tests/fm-composer-matrix-live-e2e.test.sh +220 -0
- package/.agents/tests/fm-control-herdr-smoke.test.sh +149 -0
- package/.agents/tests/fm-control-relaunch.test.sh +1530 -0
- package/.agents/tests/fm-control.test.sh +910 -0
- package/.agents/tests/fm-crew-state.test.sh +1610 -0
- package/.agents/tests/fm-cursor-harness.test.sh +404 -0
- package/.agents/tests/fm-cursor-primary-live-e2e.test.sh +217 -0
- package/.agents/tests/fm-cursor-primary.test.sh +708 -0
- package/.agents/tests/fm-daemon.test.sh +2740 -0
- package/.agents/tests/fm-documentation-audiences.test.sh +141 -0
- package/.agents/tests/fm-ensure-agents-md.test.sh +371 -0
- package/.agents/tests/fm-extension-binding.test.sh +2187 -0
- package/.agents/tests/fm-fleet-snapshot-view.test.sh +816 -0
- package/.agents/tests/fm-fleet-sync.test.sh +721 -0
- package/.agents/tests/fm-gate-refuse.test.sh +356 -0
- package/.agents/tests/fm-gitignore-config.test.sh +89 -0
- package/.agents/tests/fm-gotmp.test.sh +230 -0
- package/.agents/tests/fm-grok-continuity-live-e2e.test.sh +112 -0
- package/.agents/tests/fm-grok-harness.test.sh +117 -0
- package/.agents/tests/fm-grok-stop-live-e2e.test.sh +219 -0
- package/.agents/tests/fm-guard-stale-banner.test.sh +709 -0
- package/.agents/tests/fm-harness-adapter-instructions-live-e2e.test.sh +134 -0
- package/.agents/tests/fm-harness-adapter-references.test.sh +30 -0
- package/.agents/tests/fm-harness-liveness-drift-live-e2e.test.sh +151 -0
- package/.agents/tests/fm-herdr-lab.test.sh +243 -0
- package/.agents/tests/fm-herdr-session-cleanup-e2e.test.sh +146 -0
- package/.agents/tests/fm-herdr-session-cleanup.test.sh +329 -0
- package/.agents/tests/fm-herdr-submit-confirm-live-e2e.test.sh +125 -0
- package/.agents/tests/fm-herdr-version-floor-live-e2e.test.sh +144 -0
- package/.agents/tests/fm-home-summary-refresh.test.sh +971 -0
- package/.agents/tests/fm-inactive-reconcile.test.sh +485 -0
- package/.agents/tests/fm-kimi-harness.test.sh +687 -0
- package/.agents/tests/fm-lint-workflows.test.sh +532 -0
- package/.agents/tests/fm-lint.test.sh +1023 -0
- package/.agents/tests/fm-muse-harness.test.sh +932 -0
- package/.agents/tests/fm-muse-signals-live-e2e.test.sh +205 -0
- package/.agents/tests/fm-no-mistakes-required.test.sh +72 -0
- package/.agents/tests/fm-on.test.sh +507 -0
- package/.agents/tests/fm-opencode-primary-live-e2e.test.sh +357 -0
- package/.agents/tests/fm-operational-input.test.sh +160 -0
- package/.agents/tests/fm-peek-remote.test.sh +110 -0
- package/.agents/tests/fm-pending-reply.test.sh +1288 -0
- package/.agents/tests/fm-pi-branch-extension.test.sh +3182 -0
- package/.agents/tests/fm-pi-branch-live-e2e.test.sh +527 -0
- package/.agents/tests/fm-pi-primary-live-e2e.test.sh +345 -0
- package/.agents/tests/fm-pi-primary-types.test.sh +68 -0
- package/.agents/tests/fm-pi-watch-extension.test.sh +2843 -0
- package/.agents/tests/fm-pr-check-security.test.sh +2140 -0
- package/.agents/tests/fm-pr-merge.test.sh +2135 -0
- package/.agents/tests/fm-procevent-quota.test.sh +225 -0
- package/.agents/tests/fm-procevent-when.test.sh +406 -0
- package/.agents/tests/fm-procevent.test.sh +1745 -0
- package/.agents/tests/fm-project-origin.test.sh +110 -0
- package/.agents/tests/fm-public-followup.test.sh +2272 -0
- package/.agents/tests/fm-quota-array-dispatch-live-e2e.test.sh +526 -0
- package/.agents/tests/fm-quota-choose.test.sh +626 -0
- package/.agents/tests/fm-remote-backlog-handoff.test.sh +453 -0
- package/.agents/tests/fm-remote-doctor.test.sh +625 -0
- package/.agents/tests/fm-remote-entrypoint.test.sh +59 -0
- package/.agents/tests/fm-remote-job-orphan-reap.test.sh +205 -0
- package/.agents/tests/fm-remote-job.test.sh +768 -0
- package/.agents/tests/fm-remote-reply.test.sh +520 -0
- package/.agents/tests/fm-remote-secondmate-lifecycle-e2e.test.sh +1256 -0
- package/.agents/tests/fm-remote-secondmate-parent-binding.test.sh +326 -0
- package/.agents/tests/fm-remote-secondmate-trace-context.test.sh +310 -0
- package/.agents/tests/fm-remote-transport-lanes.test.sh +431 -0
- package/.agents/tests/fm-review-diff.test.sh +176 -0
- package/.agents/tests/fm-secondmate-harness.test.sh +2600 -0
- package/.agents/tests/fm-secondmate-lifecycle-e2e.test.sh +259 -0
- package/.agents/tests/fm-secondmate-liveness.test.sh +559 -0
- package/.agents/tests/fm-secondmate-reconcile.test.sh +732 -0
- package/.agents/tests/fm-secondmate-safety.test.sh +2972 -0
- package/.agents/tests/fm-secondmate-sync.test.sh +913 -0
- package/.agents/tests/fm-send-inbox-doorbell-live-e2e.test.sh +206 -0
- package/.agents/tests/fm-send-inbox.test.sh +352 -0
- package/.agents/tests/fm-send-popup-settle.test.sh +167 -0
- package/.agents/tests/fm-send-remote-delivery.test.sh +796 -0
- package/.agents/tests/fm-send-resolve-key.test.sh +551 -0
- package/.agents/tests/fm-send-secondmate-marker-herdr-e2e.test.sh +187 -0
- package/.agents/tests/fm-send-secondmate-marker.test.sh +278 -0
- package/.agents/tests/fm-send-settle.test.sh +147 -0
- package/.agents/tests/fm-send-strict.test.sh +241 -0
- package/.agents/tests/fm-session-lock-ancestry.test.sh +365 -0
- package/.agents/tests/fm-session-start.test.sh +2515 -0
- package/.agents/tests/fm-sessionstart-hook-live-e2e.test.sh +631 -0
- package/.agents/tests/fm-sessionstart-instruction-refresh-live-e2e.test.sh +230 -0
- package/.agents/tests/fm-sessionstart-nudge.test.sh +1039 -0
- package/.agents/tests/fm-shared-captain-inheritance.test.sh +404 -0
- package/.agents/tests/fm-spawn-batch.test.sh +148 -0
- package/.agents/tests/fm-spawn-dispatch-profile.test.sh +827 -0
- package/.agents/tests/fm-spawn-pool-base-freshen.test.sh +440 -0
- package/.agents/tests/fm-spawn-worktree-settle.test.sh +147 -0
- package/.agents/tests/fm-startup-memory-budget.test.sh +333 -0
- package/.agents/tests/fm-startup-network.test.sh +712 -0
- package/.agents/tests/fm-stow-cascade.test.sh +370 -0
- package/.agents/tests/fm-subagent-pretool-check.test.sh +291 -0
- package/.agents/tests/fm-supervision-events.test.sh +156 -0
- package/.agents/tests/fm-supervision-instructions.test.sh +189 -0
- package/.agents/tests/fm-tangle-guard.test.sh +277 -0
- package/.agents/tests/fm-task-delivery.test.sh +420 -0
- package/.agents/tests/fm-task-inbox.test.sh +513 -0
- package/.agents/tests/fm-teardown-endpoint-safety.test.sh +374 -0
- package/.agents/tests/fm-teardown.test.sh +2665 -0
- package/.agents/tests/fm-test-fixture-cleanup.test.sh +172 -0
- package/.agents/tests/fm-test-fixtures.test.sh +132 -0
- package/.agents/tests/fm-test-isolation-proof.test.sh +278 -0
- package/.agents/tests/fm-test-run.test.sh +1196 -0
- package/.agents/tests/fm-tmux-agent-liveness.test.sh +354 -0
- package/.agents/tests/fm-tmux-submit-busy.test.sh +340 -0
- package/.agents/tests/fm-tool-update-check.test.sh +1044 -0
- package/.agents/tests/fm-trace-context-lib.test.sh +253 -0
- package/.agents/tests/fm-trace-context-spawn.test.sh +581 -0
- package/.agents/tests/fm-transition-lib.test.sh +54 -0
- package/.agents/tests/fm-turnend-guard.test.sh +1822 -0
- package/.agents/tests/fm-update.test.sh +304 -0
- package/.agents/tests/fm-vendor-auth-probe.test.sh +395 -0
- package/.agents/tests/fm-voice-relay.test.sh +4741 -0
- package/.agents/tests/fm-wake-daemon-lifecycle-e2e.test.sh +171 -0
- package/.agents/tests/fm-wake-drain-open-decisions-cursor.test.sh +356 -0
- package/.agents/tests/fm-wake-drain-open-decisions.test.sh +226 -0
- package/.agents/tests/fm-wake-drain-unread-status.test.sh +379 -0
- package/.agents/tests/fm-wake-queue.test.sh +1224 -0
- package/.agents/tests/fm-watch-arm.test.sh +821 -0
- package/.agents/tests/fm-watch-checkpoint.test.sh +87 -0
- package/.agents/tests/fm-watch-recovery-loop.test.sh +223 -0
- package/.agents/tests/fm-watch-triage.test.sh +3889 -0
- package/.agents/tests/fm-watcher-lock.test.sh +1133 -0
- package/.agents/tests/fm-x-mode.test.sh +3042 -0
- package/.agents/tests/gleipnir-guard-pretool-check.test.sh +51 -0
- package/.agents/tests/gleipnir-machine-lock.test.sh +130 -0
- package/.agents/tests/herdr-test-safety.sh +42 -0
- package/.agents/tests/lib.sh +315 -0
- package/.agents/tests/remote-herdr-fixture.sh +125 -0
- package/.agents/tests/secondmate-helpers.sh +193 -0
- package/.agents/tests/smoke.test.sh +93 -0
- package/.agents/tests/wake-helpers.sh +338 -0
- package/.agents/tests/zellij-test-safety.sh +60 -0
- package/.agents/tools/README.md +10 -0
- package/.agents/tools/bin/tasks-cli +267 -0
- package/.agents/tools/tasks-cli.ts +216 -0
- package/AGENTS.md +454 -0
- package/CHANGELOG.md +881 -0
- package/LICENSE +1 -1
- package/NOTICE +63 -0
- package/README.md +113 -59
- package/RULES/01-domains.md +51 -0
- package/RULES/02-agents.md +78 -0
- package/RULES/03-houses.md +61 -0
- package/RULES/04-hoard.md +65 -0
- package/RULES/05-platforms.md +67 -0
- package/RULES/06-append-only.md +58 -0
- package/RULES/07-config.md +45 -0
- package/RULES/08-delivery-gate.md +75 -0
- package/RULES/README.md +20 -0
- package/bin/README.md +107 -0
- package/bin/a2a-mcp.sh +98 -0
- package/bin/a2a-serve.py +103 -0
- package/bin/a2a-serve.sh +8 -0
- package/bin/a2a-talk.sh +50 -0
- package/bin/a2abridge-ensure.sh +108 -0
- package/bin/agent-run.sh +43 -0
- package/bin/agents-config.sh +233 -0
- package/bin/apodex-smoke-test.sh +92 -0
- package/bin/bifrost-bridge.sh +112 -0
- package/bin/bifrost-ingress.sh +77 -0
- package/bin/bootstrap-macos.sh +107 -0
- package/bin/bootstrap-windows.ps1 +112 -0
- package/bin/branch-guard.sh +64 -0
- package/bin/brokk +73 -0
- package/bin/brokk-classify-lib.sh +1770 -0
- package/bin/brokk-lease-lib.sh +222 -0
- package/bin/brokk-lease.sh +193 -0
- package/bin/brokk-lint.sh +65 -0
- package/bin/brokk-send.sh +38 -0
- package/bin/brokk-update.sh +9 -0
- package/bin/brokk-wake-grant.sh +127 -0
- package/bin/brokk-wake-lib.sh +1849 -0
- package/bin/changelog-guard.sh +165 -0
- package/bin/crash-sense.sh +160 -0
- package/bin/desktop-place.sh +224 -0
- package/bin/docs-guard.sh +39 -0
- package/bin/editor-place.sh +207 -0
- package/bin/eindri-acclaim.sh +34 -0
- package/bin/eindri-control.sh +28 -0
- package/bin/eindri-role.sh +83 -0
- package/bin/eindri-seen.sh +41 -0
- package/bin/eindri-send.sh +15 -0
- package/bin/eindri-start.sh +85 -0
- package/bin/eindri-watch.sh +57 -0
- package/bin/einherjar-spawn.sh +576 -0
- package/bin/eir-doctor.sh +112 -0
- package/bin/erindi-brief.sh +271 -0
- package/bin/fleet-apply.sh +68 -0
- package/bin/github-deploy.sh +81 -0
- package/bin/gjallarhorn-expose.sh +102 -0
- package/bin/gjallarhorn-notify.sh +58 -0
- package/bin/gjallarhorn-purge.sh +54 -0
- package/bin/gjallarhorn-tunnel.sh +72 -0
- package/bin/gleipnir-lock-lib.sh +284 -0
- package/bin/groa-update.sh +122 -0
- package/bin/hall-snapshot.sh +92 -0
- package/bin/hamr-harness.sh +246 -0
- package/bin/heimdall-ssh-keys.sh +374 -0
- package/bin/herdr-agents.py +44 -0
- package/bin/herdr-ensure.sh +104 -0
- package/bin/herdr-run.sh +431 -0
- package/bin/hermes-ensure.sh +88 -0
- package/bin/hoard-lib.sh +25 -0
- package/bin/hodd.sh +78 -0
- package/bin/host-sense.sh +199 -0
- package/bin/huginn-research-worker.sh +108 -0
- package/bin/local-model-lock.sh +51 -0
- package/bin/mimir-bridge.py +226 -0
- package/bin/mimir-bridge.sh +87 -0
- package/bin/mimir-ingest.sh +131 -0
- package/bin/mimir.sh +113 -0
- package/bin/mjollnir-webhook.sh +59 -0
- package/bin/mjollnir.sh +85 -0
- package/bin/model-hardware.sh +82 -0
- package/bin/model-resolve.sh +147 -0
- package/bin/models-detect.sh +178 -0
- package/bin/nornir-cron-start.sh +162 -0
- package/bin/nornir-job-daily-briefing.sh +191 -0
- package/bin/nornir-job-git-sync.sh +152 -0
- package/bin/nornir-job-memory-housekeeping.sh +114 -0
- package/bin/nornir-job-observer.sh +166 -0
- package/bin/nornir-job-skillopt-sleep.sh +76 -0
- package/bin/omarchy-hook-install.sh +60 -0
- package/bin/omarchy-install.sh +148 -0
- package/bin/omarchy-plugins.sh +174 -0
- package/bin/omarchy-sense.sh +149 -0
- package/bin/perm-guard.sh +30 -0
- package/bin/pi-agent.sh +68 -0
- package/bin/pi-ensure.sh +77 -0
- package/bin/pi-local.sh +37 -0
- package/bin/pi-seat.sh +63 -0
- package/bin/prereq-ensure.sh +166 -0
- package/bin/private-guard.sh +38 -0
- package/bin/project-git.sh +55 -0
- package/bin/public-guard.sh +70 -0
- package/bin/ratatoskr.sh +49 -0
- package/bin/realm-lib.sh +32 -0
- package/bin/repo-scrub.sh +62 -0
- package/bin/rodd-operational-input.sh +250 -0
- package/bin/runes-append.sh +198 -0
- package/bin/saga-session-start.sh +172 -0
- package/bin/saga-sessionstart-run.sh +79 -0
- package/bin/saga-wake-drain.sh +41 -0
- package/bin/secret-guard.sh +63 -0
- package/bin/sessrumnir-ensure.sh +100 -0
- package/bin/sessrumnir-sync.sh +237 -0
- package/bin/sessrumnir.sh +91 -0
- package/bin/skillopt-setup.sh +76 -0
- package/bin/skuld-branch-outcome.sh +203 -0
- package/bin/skuld-branch-prompt.sh +101 -0
- package/bin/smidja-bootstrap.sh +90 -0
- package/bin/smidja-observe.sh +86 -0
- package/bin/syn-arm-pretool-check.sh +57 -0
- package/bin/syn-asset-pretool-check.sh +76 -0
- package/bin/syn-cd-pretool-check.sh +28 -0
- package/bin/syn-guard-pretool-check.sh +83 -0
- package/bin/syn-turnend-guard.sh +36 -0
- package/bin/syn-watch-arm.sh +99 -0
- package/bin/tailscale-sync.sh +190 -0
- package/bin/telegram-bot.sh +69 -0
- package/bin/toolchain.sh +74 -0
- package/bin/utgard.sh +111 -0
- package/bin/valhalla.sh +115 -0
- package/bin/valknut-load.sh +260 -0
- package/bin/vor-crew-state.sh +124 -0
- package/bin/wedge-notify.sh +47 -0
- package/bin/workspace-provision.sh +80 -0
- package/bin/workspace-rag.sh +150 -0
- package/bin/wyrd-db.sh +47 -0
- package/bin/yggdrasil.sh +152 -0
- package/bin/ymir-edit.sh +145 -0
- package/bin/ymir-install.sh +641 -0
- package/bin/ymir-invite.sh +93 -0
- package/bin/ymir-isolation.sh +88 -0
- package/bin/ymir-migrate.sh +61 -0
- package/bin/ymir-platform.sh +348 -0
- package/bin/ymir-say.sh +97 -0
- package/bin/ymir-setup-auth.sh +108 -0
- package/bin/ymir-validate.sh +173 -0
- package/bin/ymir.js +74 -16
- package/docs/Architecture.md +339 -0
- package/docs/design.md +351 -0
- package/docs/installations/README.md +63 -0
- package/docs/installations/ymir-home.md +93 -0
- package/docs/integration.md +105 -0
- package/docs/lore.md +1056 -0
- package/docs/research/agent-harnesses.md +290 -0
- package/docs/runbooks/README.md +19 -0
- package/docs/runbooks/a2a.md +91 -0
- package/docs/runbooks/agent-permissions.md +99 -0
- package/docs/runbooks/agents.md +57 -0
- package/docs/runbooks/models.md +69 -0
- package/docs/runbooks/realm-onboarding.md +60 -0
- package/docs/runbooks/secrets-and-hoard.md +60 -0
- package/docs/runbooks/updates-and-migrations.md +110 -0
- package/docs/runbooks/worktrees-isolation.md +72 -0
- package/docs/session-start.md +105 -0
- package/docs/skillopt-integration.md +321 -0
- package/docs/sync-system.md +66 -0
- package/docs/workspaces.md +104 -0
- package/docs/ymir-rut.md +260 -0
- package/package.json +44 -14
- package/packaging/build.sh +74 -0
- package/packaging/macos/Ymir Installer.command +43 -0
- package/packaging/windows/ymir-setup.nsi +74 -0
- package/scripts/README.md +22 -0
- package/scripts/electron.sh +210 -0
- package/scripts/start.sh +167 -0
- package/scripts/stop.sh +113 -0
- package/install.sh +0 -35
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# Norse Naming Law — the complete component map
|
|
2
|
+
|
|
3
|
+
> Purpose: the single source of truth for Ymir's Norse methodology — the law, every figure in use, the Galdr aett prefixes, the rules for naming new work, and the reject list.
|
|
4
|
+
|
|
5
|
+
## 1. The law
|
|
6
|
+
|
|
7
|
+
> **Name every subsystem, component, and process for the figure whose role matches its work.**
|
|
8
|
+
|
|
9
|
+
Three clauses make the law enforceable:
|
|
10
|
+
|
|
11
|
+
1. **Name for the role, never the mood.** A component is named for *what it does* — Sága is the seeress because she sees all that happens and therefore owns the session-start digest. Do not name a component after a figure you merely like.
|
|
12
|
+
2. **Flavor may season a line; it must never name a subsystem or leak into docs.** Conversational Norse color ("the forge is hot") is permitted in a spoken reply. It is forbidden in file names, subsystem names, commits, briefs, PRs, and any Markdown the runtime or other agents read — including every file in `.agents/skills/galdr-ymirsystem/assets/`.
|
|
13
|
+
3. **The operator is the Allfather (Odin), never the imported `captain`.** Odin sees all realms from Hlidskjalf; the operator is the one who sits there. Brokk addresses the Allfather directly in every response and never sends a response with zero direct address. Nautical or upstream terms (`captain`, `first mate`, `crew`, `ship`, `treehouse`) are rejected outright — see §6.
|
|
14
|
+
|
|
15
|
+
The law is restated in four authoritative places; keep them consistent:
|
|
16
|
+
`AGENTS.md:6` (SYSTEM MANDATE), `data/operator.md` (Voice), `docs/plans/29-brokk-distro-runtime.md:270-276` (Norse naming law), and this file.
|
|
17
|
+
|
|
18
|
+
## 2. The operator and the primary
|
|
19
|
+
|
|
20
|
+
| Figure | Role | Where it lives |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| **Allfather** (Odin) | The single human operator. Sees all realms from Hlidskjalf; talks only to Brokk. Never a subsystem — an address. | `AGENTS.md:6`, `data/operator.md` |
|
|
23
|
+
| **Brokk** | The primary autonomous agent. The smith who keeps the forge hot; the single point of contact, dispatcher, and supervisor. | `AGENTS.md` (header), `opencode.json` → `default_agent: "brokk"`, `.agents/agents/brokk.md` |
|
|
24
|
+
| **Ymir** | The platform itself: base host OS, master daemon, the root the whole system is named for. | repository root `$YMIR_ROOT`, `AGENTS.md:24` |
|
|
25
|
+
|
|
26
|
+
**Addressing rule.** Every Brokk response opens to or includes the Allfather directly ("Allfather, …"). Broken address is a contract violation, not a style preference.
|
|
27
|
+
|
|
28
|
+
## 3. The complete component map
|
|
29
|
+
|
|
30
|
+
### 3.1 Platform subsystems (`AGENTS.md:20-46`)
|
|
31
|
+
|
|
32
|
+
| Subsystem | Norse figure | Role | File / path |
|
|
33
|
+
|---|---|---|---|
|
|
34
|
+
| Master platform root | **Ymir** | Base host OS, master daemon | `$YMIR_ROOT` |
|
|
35
|
+
| Primary agent | **Brokk** | Main autonomous worker; forge-master | `AGENTS.md`, `opencode.json`, `.agents/agents/brokk.md` |
|
|
36
|
+
| Sub-agent worker | **Eindri** | Isolated sandboxed worker ("the one who runs the errand") | `.agents/subagents/*.md`, `bin/einherjar-spawn.sh` |
|
|
37
|
+
| Eindri specialist — code | **Sindri** (smith) | Code synthesis, refactoring, development | `.agents/subagents/developer.md` |
|
|
38
|
+
| Eindri specialist — content | **Bragi** (skald) | Content, SEO, social, marketing campaigns | `.agents/subagents/marketer.md` |
|
|
39
|
+
| Eindri specialist — research | **Huginn** (sage) | RAG, web search, analysis, knowledge discovery | `.agents/subagents/researcher.md` |
|
|
40
|
+
| Git worktree manager | **Yggdrasil** | Branch isolation, zero-collision parallel edits | `.agents/tools/yggdrasil.ts` (planned), `.yggdrasil/<id>/`, `bin/einherjar-spawn.sh` |
|
|
41
|
+
| Docker execution sandbox | **Utgard** | Ephemeral container execution barrier | `.agents/sandbox/Dockerfile.utgard`, image `utgard-runner:latest` |
|
|
42
|
+
| Reverse proxy / gateway | **Bifrost** | HTTP routing, external traffic ingress | platform services |
|
|
43
|
+
| OAuth / security | **Heimdall** | Authentication guardian | platform services |
|
|
44
|
+
| Cloudflare tunnel | **Gjallarhorn** | Outbound encrypted tunnel | platform services |
|
|
45
|
+
| User dashboard | **Hlidskjalf** | Observability, monitoring, control panel | `apps/hlidskjalf` |
|
|
46
|
+
| Web file browser | **Skrymir** | Web-based file explorer | platform services |
|
|
47
|
+
| Multi-tenant domains | **Svartalfaheim** | Scoped tenant workspaces | `svartalfaheim/<realm>/` |
|
|
48
|
+
| Global shared workspace | **Midgard** | Cross-tenant shared repos & assets | `midgard/` |
|
|
49
|
+
| Inter-agent A2A bus | **Ratatoskr** | A2A 1.0 backbone: agent cards, task lifecycle, Redis queue | `.agents/bus/protocol.ts` |
|
|
50
|
+
| Vector DB & memory | **Mimirsbrunn** | Long-term memory, embeddings, vector store | `.agents/memory/mimirsbrunn.db` |
|
|
51
|
+
| Audit trail | **Runes** | Append-only system audit ledger | `bin/runes-append.sh`, `workspace/memory/runes_audit.md` |
|
|
52
|
+
| Issue-to-PR pipeline | **Mjollnir** | Autonomous bug-fix and PR creation | `.agents/github/webhooks/issue_listener.ts` |
|
|
53
|
+
| Process health monitor | **Valhalla** | PM2/Docker process supervisor | platform services |
|
|
54
|
+
| Skill synthesis engine | **Gungnir** | Dynamic skill creation & validation | `.agents/skills/` |
|
|
55
|
+
| Agent ergonomics standards | **Galdr** | TOON output, 10 design principles, skill synthesis | `.agents/skills/galdr-ymirsystem/` |
|
|
56
|
+
| MCP/A2A composition | **Hermóðr** | MCP vertical (agent→tools) + A2A horizontal (agent↔agent) | `.agents/skills/galdr-ymirsystem/assets/pi-boot/herdr-profile.toml` (pane layout) |
|
|
57
|
+
| Software smidja | **Smíðja** | Repeatable agent+code pipeline: rosters, bounded phases, typed envelopes, retries/acceptance, trace | `.agents/skills/smidja-factory/` |
|
|
58
|
+
| Smíðja orchestrator | **Völundr** | The master smith who runs Smíðja — the smidja's Kaia (Kaia's seat inside the smidja) | `.agents/skills/smidja-factory/skills/volundr/` |
|
|
59
|
+
|
|
60
|
+
### 3.2 Brokk distro runtime components (`docs/plans/29-brokk-distro-runtime.md:270-297`)
|
|
61
|
+
|
|
62
|
+
These are the figures the port actually wired into `bin/` and the harness adapters. This table is the authoritative runtime map; `brokk-distro-runtime.md` describes their behavior.
|
|
63
|
+
|
|
64
|
+
| Component | Norse figure | Why this figure | Concrete file(s) |
|
|
65
|
+
|---|---|---|---|
|
|
66
|
+
| Operator | **Allfather** | The one who sees all realms from Hlidskjalf | (address only) |
|
|
67
|
+
| Primary agent | **Brokk** | The smith who keeps the forge hot | `AGENTS.md`, `opencode.json`, `.agents/agents/brokk.md` |
|
|
68
|
+
| Sub-agent worker | **Eindri** | "The one who runs the errand" | `.agents/subagents/*.md`, `bin/einherjar-spawn.sh` |
|
|
69
|
+
| Session-start digest | **Sága** | The seeress who sees all that happens | `bin/saga-session-start.sh`, `bin/saga-sessionstart-run.sh` |
|
|
70
|
+
| Daily briefing (same seeress, dated) | **Sága** | The daily seeing | `bin/nornir-job-daily-briefing.sh` |
|
|
71
|
+
| Watch / supervision | **Sýn** | Watchful sight; guards the turn boundary | `bin/syn-watch-arm.sh`, `bin/syn-turnend-guard.sh`, `.pi/extensions/syn-turnend-guard.ts`, `.opencode/plugins/syn-watch-arm.js`, `.opencode/plugins/syn-turnend-guard.js` |
|
|
72
|
+
| Watch wake messenger | **Gná** | Frigg's rider who carries word | `.pi/extensions/gna-pi-watch.ts` |
|
|
73
|
+
| Digest process supervisor | **Vörðr** | The warden who holds the child | `.pi/extensions/lib/vordr-sessionstart-supervisor.mjs` |
|
|
74
|
+
| Operational wire | **Rödd** | The voice between Allfather, Brokk, and Eindri | `bin/rodd-operational-input.sh`, `.pi/extensions/lib/rodd-operational-input.ts`, `.opencode/plugins/lib/rodd-operational-input.js` |
|
|
75
|
+
| Session lock | **Gleipnir** | The impossible chain that binds one session | `bin/gleipnir-lock-lib.sh` → `state/.lock` |
|
|
76
|
+
| Harness detection | **Hamr** | The shape a being wears | `bin/hamr-harness.sh` |
|
|
77
|
+
| Worker spawn | **Einherjar** | The chosen who are gathered to fight | `bin/einherjar-spawn.sh` |
|
|
78
|
+
| Worker brief | **Erindi** | The errand given to a worker | `bin/erindi-brief.sh` → `data/<id>/brief.md` |
|
|
79
|
+
| Worker-state reconciliation | **Vör** | Awareness of what is | `bin/vor-crew-state.sh` |
|
|
80
|
+
| Scheduled jobs (the fate-spinners) | **Nornir** | The fates who govern time | `bin/nornir-cron-start.sh`, `bin/nornir-job-*.sh`, `config/cron.yaml` |
|
|
81
|
+
| Memory housekeeping | **Muninn** | The raven of memory (remembers and prunes) | `bin/nornir-job-memory-housekeeping.sh` |
|
|
82
|
+
| External observation | **Huginn** | The raven of thought/observation | `bin/nornir-job-observer.sh` |
|
|
83
|
+
| Git sync | **Yggdrasil** | The world-tree kept in order | `bin/nornir-job-git-sync.sh` |
|
|
84
|
+
| Audit ledger | **Runes** | The carved record | `bin/runes-append.sh`, `workspace/memory/runes_audit.md` |
|
|
85
|
+
| Session wake drain | **Sága** | The seeress who sees the queue | `bin/saga-wake-drain.sh` → `state/.wake-queue` |
|
|
86
|
+
| Arm-path seatbelt | **Sýn** | Guards the arm command | `bin/syn-arm-pretool-check.sh` |
|
|
87
|
+
| Directory seatbelt | **Sýn** | Guards the working directory | `bin/syn-cd-pretool-check.sh` |
|
|
88
|
+
| Invariant seatbelt | **Sýn** | Guards the load-bearing invariants (lock, markers, Runes, machinery, secrets, registries) | `bin/syn-guard-pretool-check.sh` |
|
|
89
|
+
| Updater shaman | **Gróa** | The völva who renews — fast-forwards Brokk and its homes, then mends forward | `bin/groa-update.sh` (alias `bin/brokk-update.sh`), `.agents/skills/groa-update/` |
|
|
90
|
+
| Doctor / healer | **Eir** | The goddess of healing — diagnoses every surface, then mends the broken | `bin/eir-doctor.sh` |
|
|
91
|
+
|
|
92
|
+
### 3.3 The Galdr skill family
|
|
93
|
+
|
|
94
|
+
| Skill | Norse | Role | Path |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| `galdr` | Galdr | AXI incantation standards — ergonomic CLI for agents | `.agents/skills/galdr-ymirsystem/SKILL.md` |
|
|
97
|
+
| `tyr-check` | Tyr | The judge — validates tools/skills/docs against the 10 Galdr principles | `.agents/skills/tyr-check/SKILL.md` |
|
|
98
|
+
| `brokk-craft` | Brokk | The forger — generates new Galdr-compliant skills in TOON | (planned) `.agents/skills/brokk-craft/SKILL.md` |
|
|
99
|
+
| `galdr-compliance` | (legacy) | Superseded by `tyr-check` — removed | — |
|
|
100
|
+
| `galdr-crafter` | (legacy) | Superseded by `brokk-craft` — removed | — |
|
|
101
|
+
|
|
102
|
+
### 3.4 Figure reuse — one name, two roles
|
|
103
|
+
|
|
104
|
+
Some figures legitimately carry both a *platform subsystem* and a *runtime job* that serves it. This is intentional, not a collision; disambiguate by file path, never by inventing a second figure.
|
|
105
|
+
|
|
106
|
+
| Figure | Role A (subsystem) | Role B (runtime job) |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| **Yggdrasil** | worktree manager (`AGENTS.md:30`) | `bin/nornir-job-git-sync.sh` (keeps the tree in order) |
|
|
109
|
+
| **Sága** | session-start digest (`bin/saga-session-start.sh`) | 07:00 daily briefing (`bin/nornir-job-daily-briefing.sh`) |
|
|
110
|
+
| **Huginn** | Eindri research specialist (sage) | external observer job (`bin/nornir-job-observer.sh`) — the raven of observation |
|
|
111
|
+
| **Runes** | append-only audit ledger | the ledger head is titled `# YGGDRASIL Audit Trail` (see §5) |
|
|
112
|
+
|
|
113
|
+
**Vör vs Vörðr are distinct.** **Vör** (`bin/vor-crew-state.sh`) is awareness of a worker's current state. **Vörðr** (`.pi/extensions/lib/vordr-sessionstart-supervisor.mjs`) is the warden that supervises the digest child process. Never collapse them to one spelling.
|
|
114
|
+
|
|
115
|
+
## 4. Galdr aett prefixes (`SKILL.md:288-301`, `AGENTS.md:127`)
|
|
116
|
+
|
|
117
|
+
New Galdr-family skills inherit one of eight aett (family) prefixes, each bound to a domain. The prefix comes from the domain, not from taste.
|
|
118
|
+
|
|
119
|
+
| Aett prefix | Domain | Examples in use |
|
|
120
|
+
|---|---|---|
|
|
121
|
+
| `galdr-` | incantation / chant standards | `galdr`, `tyr-check` |
|
|
122
|
+
| `val-` | hall / health | `valhalla` |
|
|
123
|
+
| `skyr-` | giant / file scope | `skrymir` |
|
|
124
|
+
| `bifr-` | bridge / gateway | `bifrost` |
|
|
125
|
+
| `heimd-` | gate / guard | `heimdall` |
|
|
126
|
+
| `gjallar-` | horn / signal | `gjallarhorn` |
|
|
127
|
+
| `mimir-` | memory / wisdom | planned |
|
|
128
|
+
| `yggd-` | tree / worktree | planned |
|
|
129
|
+
|
|
130
|
+
Naming form: `<aett>-<verb|noun|adjective>`, e.g. `mimir-recall`, `yggd-branch`. The aett table lives in `SKILL.md:288-301` and `assets/build-tool-categories.md`; keep both in sync when an aett gains its first real skill.
|
|
131
|
+
|
|
132
|
+
## 5. Rules for naming a new component
|
|
133
|
+
|
|
134
|
+
1. **Find the role first.** State, in one sentence, what the component *does*. Choose the figure whose mythic role is that sentence.
|
|
135
|
+
2. **Check for reuse before inventing.** If the work belongs to an existing figure's domain, extend that figure's files rather than minting a name (e.g. a new Sýn guard is a `bin/syn-*.sh`, not a new god).
|
|
136
|
+
3. **Prefer a runtime file over a platform subsystem.** Runtime components are `bin/<figure>-<verb>.sh`, harness adapters are `.<harness>/…/<figure>-…`, and private state is `state/<id>.*`. Platform subsystems are reserved for the named systems in `AGENTS.md:20-46`.
|
|
137
|
+
4. **Keep the suffix honest.** `-lib.sh` = source-safe library; `-start.sh` / `-spawn.sh` / `-brief.sh` = entry points; `-job-*.sh` = a Nornir job; `-guard.sh` / `-check.sh` = a seatbelt.
|
|
138
|
+
5. **Add the figure to this file and to the plan table.** A name that is not in §3 does not exist. Add a row and, if it is a runtime component, add it to the corresponding plan table.
|
|
139
|
+
6. **Do not rename shipped paths to chase a better myth.** Renames break harness adapters and recorded `state/*.meta`. Append a note instead; a fresh name is a new file.
|
|
140
|
+
7. **Never let flavor name anything.** A spoken "the forge is hot" is fine; a file named `hot-forge.sh` is not.
|
|
141
|
+
|
|
142
|
+
## 6. Reject list
|
|
143
|
+
|
|
144
|
+
These terms must never name a Ymir subsystem, file, config key, environment variable, or documented component.
|
|
145
|
+
|
|
146
|
+
### 6.1 Imported terms (from the upstream distro and elsewhere)
|
|
147
|
+
|
|
148
|
+
| Rejected term | Why | Norse replacement |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| `captain` | Imported nautical operator title | **Allfather** |
|
|
151
|
+
| `first mate` / `firstmate` | Upstream project name; provenance only | **Brokk** (the primary) |
|
|
152
|
+
| `second mate` / `secondmate` | Upstream isolated-home concept | **eindri-home** (realm/home scope) |
|
|
153
|
+
| `crew` / `crewmate` | Imported worker terms | **Eindri** (worker), **Einherjar** (the spawn act) |
|
|
154
|
+
| `ship` / `shipping` (as subsystem names) | Nautical metaphor | **Smíðja** / **Mjollnir** as appropriate |
|
|
155
|
+
| `SSSF` / `sssf` | Upstream project name; provenance only | **Smíðja** (the smithy) |
|
|
156
|
+
| `treehouse`, `worktree pool` (as a subsystem) | Imported OSS engine name | **Yggdrasil** (Norse shell over treehouse) |
|
|
157
|
+
| `sandcastle` (as a subsystem) | Imported OSS engine name | **Utgard** (Norse shell over sandcastle) |
|
|
158
|
+
| `FM_HOME`, `FM_*`, `fm-*` | Upstream env/file prefix | **`BROKK_HOME`, `BROKK_*`, `<figure>-*`** |
|
|
159
|
+
| `calm` | Upstream presentation mode; deferred, not ported | (not named; presentation theming deferred) |
|
|
160
|
+
| `harness-adapters`, `bootstrap-diagnostics`, `supervision-protocols` (as skill names) | Upstream skill names | Galdr aett name or runtime file |
|
|
161
|
+
| `lavish`, `gh-axi`, `chrome-devtools-axi` (as Ymir names) | Upstream tooling names | reuse the OSS tool; do not rename into Ymir |
|
|
162
|
+
| `stow`, `backlog-handoff`, `fleet-sync` | Upstream skill names | Galdr aett name |
|
|
163
|
+
| `zellij`, `orca`, `cmux`, `codex-app` (as Ymir backend names) | Upstream spawn backends not ported | **tmux** / **herdr** only |
|
|
164
|
+
|
|
165
|
+
### 6.2 Collision and ambiguity names
|
|
166
|
+
|
|
167
|
+
| Rejected name | Why | Correct choice |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| `agent` | Generic; collides with Cursor's legacy alias and countless tools | detected structurally in `bin/hamr-harness.sh`, never named |
|
|
170
|
+
| `MainThread` | Runtime-internal Cursor marker, not a figure | never named |
|
|
171
|
+
| `Vordr` (unaccented, for Vör) | Collides with **Vörðr** (the warden) | `vor-crew-state.sh` = Vör; `vordr-*` = Vörðr |
|
|
172
|
+
| `Yggdrasil` for the audit ledger | Collides with the worktree manager | **Runes** (the ledger head string is legacy; see below) |
|
|
173
|
+
| `Huginn` for a new observer *and* the research specialist | Already dual-role | keep both; disambiguate by path |
|
|
174
|
+
| `syn` for the session digest | Collides with Sýn (the watcher) | **Sága** (`saga-*`) owns the digest; `syn-*` owns the watch |
|
|
175
|
+
| `saga` for a watcher | Inverse of the above | Sýn owns watch; Sága owns seeing/digest |
|
|
176
|
+
| `valhalla` for cron | Collides with the process supervisor | **Nornir** owns the schedule; Valhalla supervises processes |
|
|
177
|
+
| `ratatoskr` for the queue | Ratatoskr is the A2A bus; Redis is the queue engine | keep the split stated in `AGENTS.md:86` |
|
|
178
|
+
| `smidja` / `smidja` / `smidja` (as a Ymir subsystem name) | Imported upstream project name; provenance only | **Smíðja** (the workshop); its orchestrator is **Völundr** |
|
|
179
|
+
| `Smíðja` / `Smidjan` for the **platform** | The platform is the body | **Ymir** is the platform; **Smíðja** names only the smithy (the workshop inside it) |
|
|
180
|
+
|
|
181
|
+
### 6.3 Legacy strings — RESOLVED (2026-09-11)
|
|
182
|
+
|
|
183
|
+
All three legacy strings below were corrected in the same working session; the history is
|
|
184
|
+
kept only so the migration is traceable. New tooling must still not reproduce any of them.
|
|
185
|
+
|
|
186
|
+
- ~~`bin/runes-append.sh:101` seeds the ledger with `# YGGDRASIL Audit Trail`.~~ **Fixed:** now `# RUNES Audit Trail` (append-only history preserved).
|
|
187
|
+
- ~~`AGENTS.md:231-244` (`PI / FIRSTMATE INTEGRATION (W0031)`) uses imported terms.~~ **Fixed:** the section is now §PI PRIMARY BOOT using Hamr, Einherjar, Yggdrasil, and the `rodd` operational schema.
|
|
188
|
+
- ~~`.pi/extensions/README.md` says the other adapters are "not yet wired".~~ **Fixed:** the README now lists OpenCode, Claude Code, Codex, and Cursor as wired (Grok unimplemented).
|
|
189
|
+
|
|
190
|
+
## Maintaining this
|
|
191
|
+
|
|
192
|
+
- **Owner:** Brokk. **Source of truth:** `AGENTS.md:6` (mandate) and `docs/plans/29-brokk-distro-runtime.md:270-297` (runtime table).
|
|
193
|
+
- **Add a row** in §3 whenever a new component ships, with its real path. Add an aett row in §4 when an aett gains its first skill.
|
|
194
|
+
- **Add a reject row** in §6 the moment an imported or colliding name is encountered, before it can spread.
|
|
195
|
+
- **Audit periodically:** `grep -rniE 'captain|firstmate|crew|treehouse|sssf|fm-' --include='*.sh' --include='*.ts' --include='*.js' --include='*.json' --include='*.md' bin .pi .opencode config data .agents docs/plans | grep -v Brokk-to-norse` should return only provenance citations in `porting-upstream-to-norse.md` and the legacy strings listed in §6.3.
|
|
196
|
+
- **Never rewrite §3.2 paths without updating `brokk-distro-runtime.md`**, which cites the same files.
|
|
197
|
+
|
|
198
|
+
## 7. Later runtime & worker figures (2026-09-11)
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
runtime_figures[7]{figure,role,path}:
|
|
202
|
+
"Ró","calm presentation (hides chrome; /ro)","`.pi/extensions/ro.ts` + `lib/ro-*.ts`, `state/ro` (env `YMIR_RO`)"
|
|
203
|
+
"Skuld","supervision branch (routine wakes; /skuld-model)","`.pi/extensions/skuld-branch-supervision.ts` + `lib/skuld-branch-*.ts`, `config/skuld-branch-*`"
|
|
204
|
+
"Valknut","repo-local loader (binds agents into each tool)","`bin/valknut-load.sh`"
|
|
205
|
+
"Mímir","Eindri planner (architecture, sequencing)","`.agents/agents/mimir-planner.md`"
|
|
206
|
+
"Forseti","Eindri reviewer (QA, acceptance; changes nothing)","`.agents/agents/forseti-reviewer.md`"
|
|
207
|
+
"Snotra","Eindri documenter (docs, changelogs)","`.agents/agents/snotra-documenter.md`"
|
|
208
|
+
"Kvasir","Eindri scout (recon; changes nothing)","`.agents/agents/kvasir-scout.md`"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### 7.1 Binding and watch figures (lore §XVI)
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
runtime_figures[3]{figure,role,path}:
|
|
215
|
+
"Gleipnir","Session lock — binds one session, one reins","bin/gleipnir-lock-lib.sh, bin/brokk-lease.sh"
|
|
216
|
+
"Skuld","Branch outcome tracker — sees the future of every branch","bin/skuld-branch-outcome.sh, bin/skuld-branch-prompt.sh"
|
|
217
|
+
"Valknut","Load mechanism — assembles agent config at boot","bin/valknut-load.sh"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 7.2 Diagnostics and brief figures (lore §XVII)
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
runtime_figures[2]{figure,role,path}:
|
|
224
|
+
"Vor","Diagnostics — bootstrap + crew state","bin/vor-crew-state.sh, vor-diagnostics skill"
|
|
225
|
+
"Erindi","The errand — task brief format","bin/erindi-brief.sh"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 7.3 Shape-changer and consent figures (lore §XVIII)
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
runtime_figures[2]{figure,role,path}:
|
|
232
|
+
"Hamr","Shape-changer — harness adapter","bin/hamr-harness.sh, hamr skill"
|
|
233
|
+
"Frigg","Consent gate — ask-user authority","frigg-consent skill"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 7.4 Earth and decision-hold figures (lore §XIX)
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
runtime_figures[2]{figure,role,path}:
|
|
240
|
+
"Jörð","Earth goddess — project registry","jord-projects skill"
|
|
241
|
+
"Urðr","Allfather-hold lifecycle","the `urdh` skill (assets/decisions.md, assets/hold.md)"
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### 7.5 Recovery and away-mode figures (lore §XX)
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
runtime_figures[2]{figure,role,path}:
|
|
248
|
+
"Sýn","Stuck-worker recovery","syn-recovery skill, syn-turnend-guard.sh, syn-watch-arm.sh"
|
|
249
|
+
"Hvíld","Away-mode — idle supervision","hvild-afk skill, saga-wake-drain.sh"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 7.6 Update and relay figures (lore §XXI)
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
runtime_figures[2]{figure,role,path}:
|
|
256
|
+
"Ymir","Self-update mechanism","the `ymir` skill (assets/update.md)"
|
|
257
|
+
"Gjallarhorn-relay","Public relay — X/Discord","gjallarhorn-relay skill, gjallarhorn-notify.sh"
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### 7.7 Nornir array figures (lore §XXII)
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
runtime_figures[2]{figure,role,path}:
|
|
264
|
+
"Nornir","Process→event sources + quota dispatch","the `nornir` skill"
|
|
265
|
+
"Nornir","Process→event sources + quota dispatch","the `nornir` skill"
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### 7.8 Database and toolchain figures (lore §XXIV-XXV)
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
runtime_figures[2]{figure,role,path}:
|
|
272
|
+
"Wyrd","Workspace RAG database","bin/wyrd-db.sh, bin/workspace-rag.sh"
|
|
273
|
+
"Toolchain","Unified entry point for all Ymir operations","bin/toolchain.sh, justfile"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### 7.9 Veil and gate figures (lore §XXVII)
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
runtime_figures[2]{figure,role,path}:
|
|
280
|
+
"The Veil","Anti-hallucination gate — nothing passes without well evidence","kaia-veil gate"
|
|
281
|
+
"Glitnir","Human review gate — every PR/merge/deploy needs approval","glitnir gate"
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## 7. Organisation (Rule 01/03) — house, domain (Grein), Eindri
|
|
285
|
+
|
|
286
|
+
- **House = company** (WayOf). Never a field of knowledge.
|
|
287
|
+
- **Domain = Grein / Greinar** — the eight Labs are *domains*, not houses.
|
|
288
|
+
- **Eindri = specialists**; each names its domain and craft.
|
|
289
|
+
- In code: `DOMAINS` / `DomainId` / `DomainDef`; agents carry `domain`.
|
|
290
|
+
- Full law: `RULES/01-domains.md`, `RULES/02-agents.md`, `RULES/03-houses.md`.
|
|
291
|
+
|
|
292
|
+
### 7.3 Local-model operation (2026-09-12)
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
runtime_figures[1]{figure,role,path}:
|
|
296
|
+
"Vog","local models on this machine — the scales: which engine, how to wire the runtime to it, and how to weigh it honestly","`.agents/skills/galdr-ymirsystem/assets/local-models.md`, `.agents/skills/galdr-ymirsystem/scripts/bench-one.sh`"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Vog** is the scales. The capability that puts a local model on the balance and
|
|
300
|
+
reads its true weight — prefill, decode, peak device memory, and the context it
|
|
301
|
+
actually survives — rather than trusting a specification. It is named for the
|
|
302
|
+
*role*: an instrument, in the same pattern as Mjollnir (hammer), Gungnir
|
|
303
|
+
(spear), Gleipnir (chain), and Valknut (knot).
|
|
304
|
+
|
|
305
|
+
**Vog weighs, Hodd keeps.** Vog measures on the machine; the results are private
|
|
306
|
+
to that machine and go to the Hoard (`hodd/docs/vog/`, Rule 04). Vog is not a
|
|
307
|
+
figure of judgement (that is Týr, and Forseti reviews) and never names a model's
|
|
308
|
+
worth — only what it measurably does.
|
|
309
|
+
|
|
310
|
+
## 8. Reserved figures (claimed, not yet built)
|
|
311
|
+
|
|
312
|
+
A figure reserved here is spoken for: do not use it for other work. Add a row
|
|
313
|
+
the moment a reservation is made, and move the row into §3 or §7 when the
|
|
314
|
+
component ships.
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
reserved[1]{figure,role,path,claimed}:
|
|
318
|
+
"Máni","the calendar — who counts the months: the Nornir schedule and the Hlidskjalf calendar view","bin/nornir-* calendar surface + apps/hlidskjalf calendar","2026-09-12"
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**Máni** is reserved deliberately and must not be spent elsewhere. Máni is the
|
|
322
|
+
measurer of *time* — he counts the months and governs the course of the moon —
|
|
323
|
+
which is exactly the role of a calendar: the schedule that Nornir keeps and the
|
|
324
|
+
calendar the Allfather reads in Hlidskjalf. Do not use it for benchmarking or
|
|
325
|
+
for anything that merely reports a rate per second.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Óðrerir — the Live Hall (apps/odrerir) reference
|
|
2
|
+
|
|
3
|
+
Purpose: the complete reference for **Óðrerir**, the Ymir fleet's planning glass —
|
|
4
|
+
the carved board that reads the machine's real state and renders it read-only:
|
|
5
|
+
the tally of the hall, the armed errands dealt one slate at a time, the smiths and
|
|
6
|
+
their states, and the carved ledger of what is underway, landed, and charted.
|
|
7
|
+
|
|
8
|
+
> The hall is its **own app** under `apps/odrerir` (an Astro board), separate from
|
|
9
|
+
> the landing page it once lived beside (`~/CodeP/ymir-homepage`, migrated
|
|
10
|
+
> 2026-09-15). The Allfather's word: only the hall came into the tree, not the
|
|
11
|
+
> landing. It has its **own** Electron window (`--view odrerir`), so it never
|
|
12
|
+
> stacks with Hlidskjalf or Smíðja.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. What the hall is
|
|
17
|
+
|
|
18
|
+
| Thing | Value |
|
|
19
|
+
|---|---|
|
|
20
|
+
| Norse figure | **Óðrerir** — the cauldron of the mead of poetry, poured live |
|
|
21
|
+
| App home | `apps/odrerir` |
|
|
22
|
+
| Tech | Astro (static output) + a `verbatim-hall` integration |
|
|
23
|
+
| Port | `:4322` (env `ODRERIR_PORT`, config `server.port`) |
|
|
24
|
+
| Feed | `public/livehall.json` — written by `bin/hall-snapshot.sh` |
|
|
25
|
+
| Public face | `https://hall.ymir.zerwiz.org` (production) |
|
|
26
|
+
| Desktop app | `ymir-odrerir` — its own Electron shell, own icon, own `.desktop` |
|
|
27
|
+
|
|
28
|
+
The page (`src/index.html`) is served **verbatim**; assets are handed beside it.
|
|
29
|
+
Missing `livehall.json` is **not** a build failure — the board paints the saga's
|
|
30
|
+
own tale and says so.
|
|
31
|
+
|
|
32
|
+
## 2. Raising the hall
|
|
33
|
+
|
|
34
|
+
### 2.1 With the whole stack
|
|
35
|
+
|
|
36
|
+
`scripts/start.sh` raises it in its own stanza (before the Hlidskjalf SPA so a
|
|
37
|
+
window never waits):
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
scripts[1]{command,result}:
|
|
41
|
+
"scripts/start.sh","Óðrerir — Live Hall raised (pid <pid>) → http://127.0.0.1:4322/"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
- If `apps/odrerir/node_modules` is missing it `npm install`s once.
|
|
45
|
+
- Liveness is tracked by `.run/odrerir.pid`, logs to `.run/odrerir.log`.
|
|
46
|
+
- Idempotent: already running → "already running" line, no double spawn.
|
|
47
|
+
- Missing app dir → `Óðrerir — Live Hall skipped (missing apps/odrerir).`
|
|
48
|
+
|
|
49
|
+
### 2.2 Standalone (working on the hall itself)
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
hall-dev[4]{command,when}:
|
|
53
|
+
"cd apps/odrerir && npm run dev","hack + watch (runs check:cloth first)"
|
|
54
|
+
"cd apps/odrerir && npm run build","static build into dist/"
|
|
55
|
+
"cd apps/odrerir && npm run preview","serve the built dist for a look"
|
|
56
|
+
"cd apps/odrerir && npm run check:cloth","verify the cloth tokens are in step (warns+passes when the landing is absent)"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`npm install` is required once (`--no-audit --no-fund`). Astro is the only
|
|
60
|
+
dependency.
|
|
61
|
+
|
|
62
|
+
### 2.3 Its own window
|
|
63
|
+
|
|
64
|
+
`scripts/electron.sh start --view odrerir` opens the hall in its **own** Electron
|
|
65
|
+
app:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
odrerir[4]{aspect,detail}:
|
|
69
|
+
"identity","ymir-odrerir (class, .desktop, user-data-dir, single-instance lock)"
|
|
70
|
+
"URL","http://127.0.0.1:4322/ (own window, never hosted inside Hlidskjalf)"
|
|
71
|
+
"pid","state/electron-odrerir.pid; log state/electron-odrerir.log"
|
|
72
|
+
"menu","Reload / DevTools / quit (own app menu — no cross-app Sign out)"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`--both` raises Hlidskjalf + Smíðja; Óðrerir is raised by its own `--view odrerir`
|
|
76
|
+
call. The hall's Electron binary is shared from `apps/hlidskjalf/node_modules`;
|
|
77
|
+
the app directory passed to Electron is `apps/odrerir` (its `package.json`
|
|
78
|
+
`main` → `electron/main.cjs`). The hall has **no** gate session — a Sign-out link
|
|
79
|
+
is never shown; the window is read-only chrome around a read-only board.
|
|
80
|
+
|
|
81
|
+
## 3. The planning feed — `bin/hall-snapshot.sh`
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
snapshot[1]{command,out}:
|
|
85
|
+
"bin/hall-snapshot.sh","apps/odrerir/public/livehall.json (default)"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- Reads REAL system state: Runes tally, project registry, the Nornir loom (cron
|
|
89
|
+
jobs), the wake queue, the herdr smiths (`odrerir` / `sessrumnir-cloth` /
|
|
90
|
+
`hall-button`), the armed `when-*` errands, and the runes-ledger counts.
|
|
91
|
+
- **PUBLIC-SAFE BY LAW:** only Norse worker names, counts, and job ids — never a
|
|
92
|
+
private name, path, secret, or command (the PLAN §12 gate). When the feed is
|
|
93
|
+
stale the board says so rather than inventing state.
|
|
94
|
+
- Override the output with the first argument; override the home with
|
|
95
|
+
`BROKK_ROOT_OVERRIDE`, the state dir with `BROKK_STATE_OVERRIDE`.
|
|
96
|
+
|
|
97
|
+
## 4. Working on the hall — laws and gotchas
|
|
98
|
+
|
|
99
|
+
- **Only the board lives here.** The landing page (`src/lore.html`, the site's
|
|
100
|
+
prose) stays outside the tree. Any change that assumes the landing is beside
|
|
101
|
+
the hall is wrong.
|
|
102
|
+
- **The cloth** (`src/styles/cloth.css`) carries a marked region
|
|
103
|
+
(`/* >>> generated:tokens … >>> */` → `/* <<< generated:tokens <<< */`)
|
|
104
|
+
extracted from the landing's `:root`. Standalone, `check:cloth` warns and
|
|
105
|
+
passes — the locked copy is the source of truth for this app. Touching the
|
|
106
|
+
region by hand breaks the check.
|
|
107
|
+
- **Snapshot freshness:** after adding an armed errand or a new smith, re-run
|
|
108
|
+
`bin/hall-snapshot.sh` so the board shows it. The `verbatim-hall` integration
|
|
109
|
+
serves `public/livehall.json` same-origin in dev and copies it into the build.
|
|
110
|
+
- **Ports are sacred:** `:4322` is Óðrerir's alone. Do not move it into a
|
|
111
|
+
Hlidskjalf route or a launcher call — its door is a plain anchor in a new tab
|
|
112
|
+
(`.hall-btn`, rune **ᛟ**, "To the Hall") and its own window.
|
|
113
|
+
|
|
114
|
+
## 5. Files you will touch
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
files[5]{path,what}:
|
|
118
|
+
"apps/odrerir/src/index.html","the board's carved page (served verbatim)"
|
|
119
|
+
"apps/odrerir/src/styles/cloth.css","the cloth (locked token region + board primitives)"
|
|
120
|
+
"apps/odrerir/src/styles/livehall.css","the board kit"
|
|
121
|
+
"apps/odrerir/astro.config.mjs","server port/host, verbatim-hall integration, asset slate"
|
|
122
|
+
"apps/odrerir/electron/main.cjs","the hall's own window (single instance, no session)"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Door plumbing that reaches the hall from other apps: `HALL_URL` in
|
|
126
|
+
`apps/hlidskjalf/src/data/metadata.ts` (`localhost|127.0.0.1` → `:4322`, else the
|
|
127
|
+
public hall), surface rules in `.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md`
|
|
128
|
+
("The Hall door" section). Everything the hall renders lives only under
|
|
129
|
+
`apps/odrerir/`; nothing else in the tree is its feed but `bin/hall-snapshot.sh`.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Einherjar Dispatch Payload",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["task_id", "profile", "target", "payload"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"task_id": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"pattern": "^eindri-[a-z0-9-]+$",
|
|
10
|
+
"description": "Unique task identifier, e.g. 'eindri-dev-20260911-001'"
|
|
11
|
+
},
|
|
12
|
+
"profile": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": ["eindri-dev", "eindri-marketer", "eindri-researcher"],
|
|
15
|
+
"description": "Eindri worker profile to dispatch"
|
|
16
|
+
},
|
|
17
|
+
"target": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"required": ["worktree", "realm"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"worktree": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"pattern": "^.yggdrasil/[a-z0-9-]+$",
|
|
24
|
+
"description": "Yggdrasil worktree path for isolation"
|
|
25
|
+
},
|
|
26
|
+
"realm": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"enum": ["work", "personal"],
|
|
29
|
+
"description": "Target tenant realm"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"payload": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"required": ["instructions", "context"],
|
|
36
|
+
"properties": {
|
|
37
|
+
"instructions": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"minLength": 10,
|
|
40
|
+
"description": "Task instructions for the Eindri worker"
|
|
41
|
+
},
|
|
42
|
+
"context": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"properties": {
|
|
45
|
+
"well_recall": { "type": "string" },
|
|
46
|
+
"runes_context": { "type": "string" },
|
|
47
|
+
"active_plan": { "type": "string" },
|
|
48
|
+
"realm_env": { "type": "object" }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"utgard": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"required": ["cpu", "memory", "timeout", "network", "rootless"],
|
|
56
|
+
"properties": {
|
|
57
|
+
"cpu": { "type": "string", "default": "2.0" },
|
|
58
|
+
"memory": { "type": "string", "default": "4g" },
|
|
59
|
+
"timeout": { "type": "string", "default": "300s" },
|
|
60
|
+
"network": { "type": "string", "enum": ["none", "internal", "full"], "default": "none" },
|
|
61
|
+
"rootless": { "type": "boolean", "default": true }
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"a2a": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"properties": {
|
|
67
|
+
"agent_card_url": { "type": "string", "format": "uri" },
|
|
68
|
+
"task_lifecycle": { "type": "string", "enum": ["SUBMITTED", "WORKING", "TERMINAL"] }
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"observability": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"required": ["observe_before", "carve_on_complete"],
|
|
74
|
+
"properties": {
|
|
75
|
+
"observe_before": { "type": "boolean", "default": true },
|
|
76
|
+
"carve_on_complete": { "type": "boolean", "default": true },
|
|
77
|
+
"well_endpoint": { "type": "string", "default": "http://localhost:4602/observe" }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Hermóðr Profile — Hermóðr (herdr) Pane Configuration for Ymir PI
|
|
2
|
+
|
|
3
|
+
[session]
|
|
4
|
+
name = "ymir-pi"
|
|
5
|
+
socket = "/tmp/herdr-ymir-pi.sock"
|
|
6
|
+
protocol = "thjazi-14" # Þjazi protocol 14+ required
|
|
7
|
+
|
|
8
|
+
[layout]
|
|
9
|
+
type = "vertical"
|
|
10
|
+
pane_count = 5
|
|
11
|
+
auto_rename = true
|
|
12
|
+
focus_new = false
|
|
13
|
+
|
|
14
|
+
[pane.brokk]
|
|
15
|
+
label = "🔨 Brokk"
|
|
16
|
+
command = ["opencode", "--agent", "brokk"]
|
|
17
|
+
cwd = "$YMIR_ROOT"
|
|
18
|
+
env = {}
|
|
19
|
+
shell = "/bin/bash"
|
|
20
|
+
focus = true
|
|
21
|
+
restart_policy = "on_failure"
|
|
22
|
+
restart_delay = 5
|
|
23
|
+
|
|
24
|
+
[pane.eindri_dev]
|
|
25
|
+
label = "⚒️ Eindri-Dev"
|
|
26
|
+
command = ["opencode", "--agent", "build"]
|
|
27
|
+
cwd = "$YMIR_ROOT/.yggdrasil/eindri-dev"
|
|
28
|
+
env = {}
|
|
29
|
+
shell = "/bin/bash"
|
|
30
|
+
focus = false
|
|
31
|
+
restart_policy = "on_failure"
|
|
32
|
+
restart_delay = 5
|
|
33
|
+
|
|
34
|
+
[pane.eindri_marketer]
|
|
35
|
+
label = "📣 Eindri-Marketer"
|
|
36
|
+
command = ["opencode", "--agent", "build"]
|
|
37
|
+
cwd = "$YMIR_ROOT/.yggdrasil/eindri-marketer"
|
|
38
|
+
env = {}
|
|
39
|
+
shell = "/bin/bash"
|
|
40
|
+
focus = false
|
|
41
|
+
restart_policy = "on_failure"
|
|
42
|
+
restart_delay = 5
|
|
43
|
+
|
|
44
|
+
[pane.eindri_researcher]
|
|
45
|
+
label = "🔍 Eindri-Researcher"
|
|
46
|
+
command = ["opencode", "--agent", "build"]
|
|
47
|
+
cwd = "$YMIR_ROOT/.yggdrasil/eindri-researcher"
|
|
48
|
+
env = {}
|
|
49
|
+
shell = "/bin/bash"
|
|
50
|
+
focus = false
|
|
51
|
+
restart_policy = "on_failure"
|
|
52
|
+
restart_delay = 5
|
|
53
|
+
|
|
54
|
+
[pane.valhalla]
|
|
55
|
+
label = "⚖️ Valhalla"
|
|
56
|
+
command = ["bash", "-c", "tail -f $YMIR_ROOT/workspace/memory/runes_audit.md"]
|
|
57
|
+
cwd = "$YMIR_ROOT"
|
|
58
|
+
env = {}
|
|
59
|
+
shell = "/bin/bash"
|
|
60
|
+
focus = false
|
|
61
|
+
restart_policy = "never"
|
|
62
|
+
|
|
63
|
+
[hooks]
|
|
64
|
+
on_session_start = [
|
|
65
|
+
"echo 'Valhalla: Ymir PI session started' >> $YMIR_ROOT/workspace/memory/runes_audit.md"
|
|
66
|
+
]
|
|
67
|
+
on_pane_exit = [
|
|
68
|
+
"echo 'Valhalla: Pane $PANE_NAME exited with code $EXIT_CODE' >> $YMIR_ROOT/workspace/memory/runes_audit.md"
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[thjazi]
|
|
72
|
+
presentation_spaces = false # opt-out per config/herdr-presentation-spaces
|
|
73
|
+
protocol_floor = "0.7.5" # minimum verified
|
|
74
|
+
launcher_workspace = "ymir"
|
|
75
|
+
label_collision_policy = "refuse"
|