You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
so-hud, a native Claude Code status mod (#1508): mods/so-hud (version 0.1.0) shows the session state (lock, registry, wave scope, agent status, STATE.md, gate and vault events) as a status line and, when something needs attention, a warning band, and writes one beacon per session that other sessions can read through $.so.beacons(); the status line shows how many peer sessions are running. It reads everything through scripts/so-hud.mjs (JSON v1 with provenance and degraded), keeps no second copy of the state and never changes a tool decision. It is listed in this repo's marketplace: /plugin install so-hud@kanevry (Claude Code only, tested with 2.1.296, Node.js 24+, Session Orchestrator 5.12.0 or later as the plugin or as a checkout set through soRoot). Status texts are German for now; an English table is prepared but not yet selectable.
Mod CI gate (#1508): the mods:plugin job runs claude plugin validate --strict --json and claude plugin test for every mod under mods/ with Claude Code pinned once in CLAUDE_CODE_VERSION (2.1.296). It verifies the registry signatures of both downloaded packages, calls the platform binary directly so ignore-scripts stays on, runs without credentials or nonessential traffic, and is a hard dependency of pipeline-gate.
Session-end names untracked vault files modified during the session (#1563): new Phase 3.7e runs scripts/vault-orphans.mjs, which lists untracked files under vault-dir modified since the session started (git ls-files --others --exclude-standard -z, read-only) and leaves out files carrying a _generator: session-orchestrator- marker. The close names them in the final report and records one Open Question with the path list; it never commits, moves or deletes anything in the vault, because a modification time does not prove which session wrote a file. A vault that cannot be read is reported as "could not measure", never as "none". There is no blanket exclusion of 40-learnings/ and 50-sessions/: an unmarked file there blocks every later mirror auto-commit and is exactly the case to surface.
Fixed
The Mode-Selector sees the previous session's recommendation again (#1560): the session-start Idle Reset was prose only, and its rule 6 deleted the five recommendation keys from the STATE.md frontmatter that Phase 7.5 reads through buildLiveSignals(), so after every clean /close the selector answered with confidence 0. The reset is now code (scripts/lib/state-md/idle-reset.mjs, CLI scripts/state-md-idle-reset.mjs, written under the STATE.md lock) and keeps those keys; session-end Phase 3.7a overwrites them at the next close. Without a new Wave History the earlier ## Previous Session archive stays below the new recommendations copy. parseRecommendations() accepts "#42" and "42" in top-priorities and drops free-text entries instead of discarding the whole list.
A first /session no longer starts deep silently (#1561): a bare /session in a repo whose .orchestrator/metrics/sessions.jsonl holds no real session resolves with defaultReason: "no-session-history", and commands/session.md then asks for task and mode first (recommending feature). A linked worktree reads its main checkout's ledger, and an unreadable ledger counts as not measured, so neither triggers the question.
Solo users see no fleet machinery (#1559): without fleet integration (NAVIGATOR_CONFIG_DIR unset and no ~/.config/navigator/ directory), scripts/fleet-checkin.mjs still validates its input, then writes nothing, creates no directory, emits no event and prints skipped: "no-fleet"; a headless (plattform: kopflos) run without fleet integration applies the Standard-Auflagen instead of writing. The SessionStart banner drops the navigator line. In a git repository without .orchestrator/bootstrap.lock (neither at the toplevel nor in the session directory) the first banner action is /bootstrap, in place of the decision nudge whose /go and /close do not work before setup; once bootstrapped, the nudge returns and now reads in plain words instead of naming an internal rule file. The hint no longer follows cold-start.enabled, which governs only the post-bootstrap first-session nudge.
The npm package no longer ships this repo's own AGENTS.md (#1559): it carried the maintainer's Session Config (vault path, remote host aliases), and no consumer reads an instruction file from the installed package. tests/scripts/pack-policy-floor.test.mjs keeps root AGENTS.md and CLAUDE.md out of the tarball. Config examples use the neutral alias build-host.
Install docs match current Claude Code (#1369, #1559): docs/install.md runs npm install in the plugin cache only when node_modules/js-yaml is missing, since /plugin install already provisions the dependencies. The README quickstart says that /bootstrap writes the Session Config and names /bootstrap --fast --no-interview as the shortest path. The website install step (EN and DE) and the guide use the same conditional command (#1564).
One identity for a repo reached through a symlink (#1557): repoPathHash() and the registry's repo_name resolve the real path (realpathSync.native, falling back to path.resolve when the path is unavailable), so a session in a symlink and one in its target count as the same repo for peer discovery, session transition and the live-status board. Board keys of canonical paths are unchanged. A board row stored under a pre-#1557 alias key is adopted on its first fresh write when it names the same repo; a row of another repo that merely shares the 8-character key stays. Registry entries written before the update keep their old hash until the session registers again.
Umlauts survive in new learning-note slugs (#1548): vault-mirror transliterates the slugs of new learning notes with a traceable origin (ä to ae, ö to oe, ü to ue, ß to ss, accents after NFC) instead of deleting the characters ("grnes" for "grünes"). Existing notes with a traceable origin keep their path, file name and id, and namespace and tags stay as they were, so auto-commit, relocation and backfill see the same folder. Session notes, tags and records without a traceable origin keep the historical slug, which drops umlauts; the backfill reverse lookup does not find older notes with umlauts; æ, ø, ł and œ are still dropped.
No overwriting another repo's fleet check-in (#1556): scripts/fleet-checkin.mjs exits 2 and writes nothing when the check-in file for the same semantic session id already belongs to another repo; the same repo still updates its own check-in. The existing file is opened without following symlinks and without blocking, read only as a regular file of at most 64 KiB, and the foreign repo name is printed as a JSON string on one stderr line.