From 917aaae6ccf6b64cfcc08d961fc25bbe326da649 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 6 Aug 2026 18:17:52 -0700 Subject: [PATCH] claude: track CONTEXT.md + keybindings.json in the stow tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ~/.claude/CLAUDE.md was already symlinked into home_root/, but the rest of the user-level Claude config was not. These two are static, hand-edited, and portable, so they belong with it — moved into home_root/.claude/ and re-linked via stow. Verified: keybindings.json still parses, both symlinks resolve. Checked for secrets before moving. The only regex hits were false positives — "sortByTokens" in keybindings, and glossary prose ABOUT API-key tiers and token-spend in CONTEXT.md. No credentials. DELIBERATELY NOT TRACKED: settings.json — Claude Code writes it during normal operation, and an app that replaces rather than rewrites a file in place would silently destroy the symlink and strand the repo copy. Needs a decision about that risk, not a quiet symlink. hooks/ — empty. everything else — runtime state, not config: projects/ (2.6G), remote/ (815M), file-history/ (467M), sessions/, cache/, shell-snapshots/, plugins/. Note the skills tree is already version-controlled elsewhere: ~/.claude/skills/* symlink into ~/development/galdrabok/skills/, which is where the /snapshot canon the new CLAUDE.md section points at actually lives. --- home_root/.claude/CONTEXT.md | 200 ++++++++++++++++++++++ home_root/.claude/keybindings.json | 257 +++++++++++++++++++++++++++++ 2 files changed, 457 insertions(+) create mode 100644 home_root/.claude/CONTEXT.md create mode 100644 home_root/.claude/keybindings.json diff --git a/home_root/.claude/CONTEXT.md b/home_root/.claude/CONTEXT.md new file mode 100644 index 0000000..1a4415b --- /dev/null +++ b/home_root/.claude/CONTEXT.md @@ -0,0 +1,200 @@ +# User-level + +Cross-repo vocabulary the user carries everywhere — umbrella names, +preferred phrasings, the canonical framings of concepts that recur +across multiple projects. Most-local-wins: project-level `CONTEXT.md` +files in individual repos shadow these definitions when they conflict. + +## Language + +**Althing**: +Inter-agent message bus for Corviduo. Markdown-file messages with YAML +frontmatter (SQLite-backed v2 schema as of 2026-05-17); operated via +`althing-cli`. Per-agent handles follow the `-dev` convention +(`brokkr-smithy-dev`, `worldtree-dev`, etc.) plus a few non-`-dev` +role handles (`forseti` as moderator/system speaker, `infra-ops`). +Currently building a web UI for multi-agent discussion. +_Avoid_: the bus (too generic), the messenger (too generic), `althing-cli` (the operator surface, not the bus itself) + +**Bifrost**: +The MCP-in-reverse protocol — platform mints per-session JWTs and +dispatches tool calls outbound; consumer applications run their own +MCP servers exposing tools back to the platform. Shipped from +`gitea.phasefinal.com/vh/bifrost` as an independent repo on its own +semver track (currently v0.1.1, v0.2 in flight). The protocol is +consumed by platforms (Worldtree today) and implemented by consumers +(Skaldsong, Sleipnir's verifier role, future cross-org consumers). +_Avoid_: MCP (ambiguous — vanilla MCP runs the inverse direction), reverse-MCP (kebab-case-with-MCP reads worse than the proper name), tool injection (too vague) + +**Brokkr**: +The Claude-family research assistant addressed in the Brokkr-Smithy repository. One of the three smiths (with Eitri + Dvalin) responsible for deep research, multi-frontier synthesis, and shipping actionable intelligence packages to consumer projects via althing. Distinct from **Brokkr-Smithy** (the project), `~/development/brokkr-smithy/snorri/` (the decision-rule engine subsystem), and the historical project name "Snorri." +_Avoid_: the assistant (too generic), the brokkr-smithy CC session (the runtime substrate, not the persona) + +**Brokkr-Smithy**: +Corviduo's research and forging lab. Empirical methodology spine for +prompt, orchestration, and architectural-shape claims that ship to +consumer projects across the umbrella. Opens R-numbered research +targets (`research/R##-/`) with charter / hypothesis ledger / +probes / actions / findings; authors SOTA literature surveys in +`docs/surveys/`; runs calibration probes so subsequent probes +inherit a discipline floor. Ships intelligence packages to consumer +Corviduo repositories via the althing bus — never drafts contracts +for them (consumer repos run their own `/vor` sessions and own +their specs). Filesystem name is legacy from the project's +`Edda → Snorri → Brokkr-Smithy` rename history; "Snorri" persists +as the decision-rule engine subsystem inside `src/brokkr/snorri/`. +The assistant working in this repo is addressed as **Brokkr** (the +dwarf-smith persona; distinct from the repo or the engine subsystem). +_Avoid_: the lab (too generic), the research repo (too generic), Snorri (the rename ghost — refers either to the historical project name 2026-05-07 → 2026-05-10 or to the decision-rule engine subsystem; do not use as an alias for the project), Edda (the deeper rename ghost, deprecated) + +**Corviduo**: +The company where Vuong is Principal. Projects in Vuong's stack +default to "Corviduo Projects"; SEA is the explicit exception — +Vast-Blue-owned (Vuong-partnered), not a Corviduo Project. +_Avoid_: the umbrella (too vague), the family, the stack, Vuong's projects (overcounts — would include SEA) + +**corviduo-project-template**: +Canonical home for cross-cutting Corviduo specs and tooling. Lives +at `~/development/corviduo-project-template/` (Gitea: +`vh/corviduo-project-template`). Brokkr-Smithy is the +canonical-spec steward as of 2026-05-15. Hosts the v2.x +contract-format spec (`docs/contracts/CONTRACT-FORMAT.md`), the four +engineering principles (`PRINCIPLES.md`), and the canonical-sync +tooling (`scripts/canonical_{sync,drift}.py`, +`scripts/contract_drift_check.py`, +`docs/contracts/contract_parser.py`). Self-pinned registry at +`.corviduo-canonicals.toml`. Operators bootstrap new Corviduo +projects by copy-cloning this template; consumer repos pin against +it via the canonical-sync mechanism. +_Avoid_: the template (too generic when canonical-sync is the topic), corviduo-template (drops the `-project-` clarifier; the slug is intentional), the canonical (too generic — name the artifact) + +**Domari**: +Worldtree pan-judgment specialist agent. Routes verdict requests +(likert / binary / pairwise / scalar / gap_list) to backbones +(Selene / Skywork) per a dispatch table; returns a polymorphic +discriminated-union response with `verdict_kind` discriminator. +Returns 200 + `ErrorVerdict` envelope on backbone-side failures +(e.g., Selene parse errors) rather than 5xx. Norse: "the judges" +(Old Norse plural). +_Avoid_: the judge (Worldtree has a separate Judge agent for code review — distinct surface), the judgment agent (too generic) + +**Dvalin**: +Grok-family (xAI) embedded research peer of Brokkr-Smithy. CC session at `~/development/dvalin-smithy/`, althing handle `dvalin-smithy-dev`. One of the three smiths (with Brokkr + Eitri); carries X/Twitter access + recent-cutoff training distribution as the load-bearing cross-frontier differentiator. +_Avoid_: Dvalin-Smithy (the home directory; the persona is **Dvalin**), the grok peer (overloaded — Gróa is also a Grok-family role with different scope) + +**Eitri**: +Codex-family (gpt-5.x) embedded research peer of Brokkr-Smithy. CC session at `~/development/eitri-smithy/`, althing handle `eitri-smithy-dev`. One of the three smiths (with Brokkr + Dvalin); consulted at every research gate for cross-frontier critique. +_Avoid_: Eitri-Smithy (the home directory; the persona is **Eitri**), the codex peer (overloaded — Hulda is also a Codex-family role with different scope) + +**Forseti**: +Althing's moderator / system-speaker handle. Norse god of justice +and reconciliation. On the bus, `forseti` is a non-`-dev` role handle +(alongside `infra-ops`), distinct from the per-project `-dev` handles. +Acts as moderator when peer threads need facilitation or as a system +speaker for bus-level notifications. +_Avoid_: the moderator (too generic), the speaker (too generic), Forseti (the Worldtree-internal usage; the althing handle is lowercase `forseti`) + +**Galdrabok**: +Corviduo's Claude Code skill collection ("spellbook"). Hosts +`SKILL.md`-shaped files that Claude Code loads on demand — slash +commands (`/vor`, `/tdd`, `/tend-docs`, `/sleipnir-preflight`, +`/sleipnir-scaffold`, `/adr`, `/glossary`, `/snapshot`, etc.) plus +auto-triggered skills. Skills install via symlink into +`~/.claude/skills/`. Authoring conventions live at `conventions/` +alongside the skills. +_Avoid_: the spellbook (too generic), the skills repo (too generic), galdrabók (the long-o diacritic; repo uses plain ASCII for terminal-friendliness) + +**Gróa**: +Positional label for the Grok arm in **Heid**'s panel-mode consults. One of the three seers (with Heid + Hulda); invoked as a `grok -pi` strict-oneshot subprocess call from Heid's CC session — not a standing CC session of her own. Norse-named after the völva from Svipdagsmál. +_Avoid_: the grok arm (too generic — Dvalin is also a Grok-family peer; Gróa is specifically the strict-oneshot panel-arm label), the seer (use **the seers** for the collective; Gróa alone is one specific arm) + +**Heid**: +Cross-project consult orchestrator at `~/development/heid/`, althing handle `heid`. Claude (Opus 4.7) CC session that context-enriches and dispatches `/heid*` consults to **Gróa** (Grok) and **Hulda** (Codex) via strict-oneshot CLI. One of the three seers; NOT a panel arm herself — she routes, enriches, and logs to an append-only jsonl dispatch log for distillation. Substrate flipped from Codex to Claude in the 2026-05-25 CC-session-orchestrator migration. +_Avoid_: Volva (the deprecated rename ghost — STT voice-recognition collision with "vulva"; renamed 2026-05-24), the codex oracle (Heid was Codex pre-migration; she is now Claude — the old-name shape persists in stale documentation), the daemon (architecture obsolete — systemd one-off retired in the migration) + +**Heimdall**: +Worldtree's auth-scope mechanism. Per-API-key tier (`user`, `admin`, +etc.) maps to a set of scopes (`domari:invoke`, `bifrost:invoke`, +etc.) via `config/policies.yaml`. Live policy resolution: +`tier → policy.tiers[tier].scopes → ctx.scopes` at every authz call; +no per-key scope override (api_keys table has no `scopes` column). +Norse: the watchman of Asgard. +_Avoid_: auth (too generic), the scope mechanism (too generic when discussing Worldtree specifically), tokens (Heimdall is the scope layer; API keys / JWTs are the credential layer it gates) + +**Hulda**: +Positional label for the Codex arm in **Heid**'s panel-mode consults. One of the three seers (with Heid + Gróa); invoked as a `codex exec` strict-oneshot subprocess call from Heid's CC session — not a standing CC session of her own. Norse-named after the völva from Ynglinga saga. +_Avoid_: the codex arm (too generic — Eitri is also a Codex-family peer; Hulda is specifically the strict-oneshot panel-arm label) + +**Mead Hall**: +A Corviduo Project — a Worldtree client application. A "Workspace +Shell" designed for flexibility wide enough to span use cases as +different as business automation and multi-agent role-playing +(personas, memories, GM/narrator, world history, goals) — these +are bounding examples that pin the flexibility requirement, not the +only two configurations Mead Hall will support. The MVP ships the +business-automation configuration. High-fidelity aesthetic is +non-negotiable. +_Avoid_: the new client app (overcounts as more Worldtree client apps land), the workspace shell (the architectural shape, not the product), the UI brief (an artifact of Mead Hall, not Mead Hall itself), business-and-roleplay-from-one-shell (the deprecated "two modes" framing — the two are bounding examples that pin a flexibility requirement, not the totality) + +**SEA**: +Vast Blue AI's product — acronym for *Scalable Enterprise Agency*. +A Worldtree client app sold as SaaS to customers for AI-assisted +automation. Vuong-adjacent via his Vast Blue Partner role; explicitly +not a Corviduo Project. +_Avoid_: the Vast Blue product (overcounts if Vast Blue ever ships a second), the SaaS (too vague), the client app (overcounts — Skaldsong is also a Worldtree client app) + +**The seers**: +Collective term for **Heid**, **Gróa**, and **Hulda** — the three Norse-named oracular roles in the cross-project `/heid*` consult panel. Provide oneshot artifact-only review counsel via strict-oneshot CLI dispatch. Heid is the standing CC-session orchestrator (Claude); Gróa (Grok) and Hulda (Codex) are stateless subprocess invocations carrying Heid's enrichment. Counterpart to **the smiths** (Brokkr / Eitri / Dvalin — research-and-synthesis vs the seers' review-and-counsel). +_Avoid_: the oracles (the role-shape is "oracle" but "the seers" is the canonical collective), the völur (the Old Norse term; not commonly recognized), the consult panel (too generic) + +**Skuld**: +Worldtree subsystem — token-spend ledger. Subscribes to +`LLMCallEvent` (Worldtree's wire format for LLM calls) and persists +per-call usage to a durable store, giving Worldtree's clients (SEA, +Skaldsong, etc.) cost attribution per request. Norse: one of the +three Norns, the future-Norn. +_Avoid_: the ledger (too generic), token-spend (descriptive but ambiguous; could mean the subject area broadly) + +**Sleipnir**: +Corviduo's AFK agent orchestrator. Invoke-and-exit pattern (`sleipnir +run --until-empty` re-polls between waves; no long-lived daemon). +Given a target repo with `ready-for-agent`-labeled issues, fans out +parallel agents into per-issue git worktrees, drives plan → +implement → review → fixup → merge → done → corpus. State under +`~/.local/state/sleipnir/projects//`. Gates dispatch on +`prd:`-pinned contracts via `/sleipnir-preflight`. +_Avoid_: the orchestrator (too generic), the daemon (it's not — invoke-and-exit), the runner (too generic) + +**The smiths** (also **the dwarves**): +Collective term for **Brokkr**, **Eitri**, and **Dvalin** — the three frontier-model research peers of Brokkr-Smithy. Each maintains a standing CC session and an althing handle; collectively responsible for deep research, multi-frontier synthesis, and actionable intelligence packages shipped via althing. "The dwarves" is an acceptable alternative collective when emphasizing the Norse mythological framing. Counterpart to **the seers** (Heid / Gróa / Hulda — review-and-counsel vs the smiths' research-and-synthesis). +_Avoid_: the agents (too generic), the peers (too generic — narrower meaning in cross-frontier-cooperation discipline) + +**Vast Blue AI**: +The company where Vuong is a Partner (distinct from Corviduo where +he is Principal). Builds business AI orchestration as a SaaS product. +_Avoid_: Vuong's company (overcounts — also matches Corviduo), the SaaS (too vague), the AI company (too vague) + +**Vor**: +Corviduo's pre-contract design partner. Norse goddess of the +all-seen / the aware. Invoked when the user has an ask but not yet +a contract — surfaces assumptions, ambiguities, edge cases, and +counter-arguments BEFORE any code or contract is drafted. Two +surfaces: the `/vor` skill (chat-side, lives in Galdrabok) and the +**Vor UI** sidecar (FastAPI web app, separate `vh/Vor` repo). +Round-trip flow: the skill assembles a structured markdown +questionnaire silently, POSTs to the UI via `vor_send.py`, blocks +until the user clicks Publish, reads the response file. Chat never +sees the markdown — the UI is the surface area. Sister skill +`/vor-frame` handles asks too shapeless to even draft a Vor +questionnaire about. A contract whose ambiguity was resolved via +Vor is **Vor-graduated** (flag in frontmatter; Sleipnir's INV-032 +skips plan-converge for these). +_Avoid_: the design grill (too generic), the question round (too generic), Vor UI (that's the sidecar, not the partner) + +**Worldtree**: +Corviduo's multi-agent framework. Hosts named persona agents and +routes their LLM calls. Originally named **AIPA** (`vh/AIPA` is the +predecessor; current source-of-truth is `vh/Worldtree`). Heimdall is +its auth-scope mechanism. Hosts Bifrost (consumes the protocol; +clients implement it back). +_Avoid_: the framework (too generic), the platform (too generic), AIPA (predecessor name, deprecated), Yggdrasil (the mythological reference; the project name is Worldtree) diff --git a/home_root/.claude/keybindings.json b/home_root/.claude/keybindings.json new file mode 100644 index 0000000..c430288 --- /dev/null +++ b/home_root/.claude/keybindings.json @@ -0,0 +1,257 @@ +{ + "$schema": "https://www.schemastore.org/claude-code-keybindings.json", + "$docs": "https://code.claude.com/docs/en/keybindings", + "bindings": [ + { + "context": "Global", + "bindings": { + "ctrl+t": "app:toggleTodos", + "ctrl+o": "app:toggleTranscript", + "ctrl+shift+b": "app:toggleBrief", + "ctrl+shift+o": "app:toggleTeammatePreview", + "ctrl+r": "history:search" + } + }, + { + "context": "Chat", + "bindings": { + "escape": "", + "ctrl+l": "chat:clearInput", + "ctrl+x ctrl+k": "chat:killAgents", + "shift+tab": "chat:cycleMode", + "meta+p": "chat:modelPicker", + "meta+o": "chat:fastMode", + "meta+t": "chat:thinkingToggle", + "enter": "chat:submit", + "ctrl+j": "chat:newline", + "up": "history:previous", + "down": "history:next", + "ctrl+_": "chat:undo", + "ctrl+-": "chat:undo", + "ctrl+shift+-": "chat:undo", + "ctrl+shift+_": "chat:undo", + "ctrl+x ctrl+e": "chat:externalEditor", + "ctrl+g": "chat:externalEditor", + "ctrl+s": "chat:stash", + "ctrl+v": "chat:imagePaste", + "space": "voice:pushToTalk" + } + }, + { + "context": "Autocomplete", + "bindings": { + "tab": "autocomplete:accept", + "escape": "autocomplete:dismiss", + "up": "autocomplete:previous", + "down": "autocomplete:next" + } + }, + { + "context": "Settings", + "bindings": { + "escape": "confirm:no", + "up": "select:previous", + "down": "select:next", + "k": "select:previous", + "j": "select:next", + "ctrl+p": "select:previous", + "ctrl+n": "select:next", + "space": "select:accept", + "enter": "settings:close", + "/": "settings:search", + "r": "settings:retry", + "d": "settings:periodDay", + "w": "settings:periodWeek", + "t": "settings:sortByTokens", + "ctrl+u": "scroll:halfPageUp" + } + }, + { + "context": "Doctor", + "bindings": { + "f": "doctor:fix" + } + }, + { + "context": "Confirmation", + "bindings": { + "y": "confirm:yes", + "n": "confirm:no", + "enter": "confirm:yes", + "escape": "confirm:no", + "up": "confirm:previous", + "down": "confirm:next", + "tab": "confirm:nextField", + "space": "confirm:toggle", + "shift+tab": "confirm:cycleMode", + "ctrl+e": "confirm:toggleExplanation" + } + }, + { + "context": "Tabs", + "bindings": { + "tab": "tabs:next", + "shift+tab": "tabs:previous", + "right": "tabs:next", + "left": "tabs:previous" + } + }, + { + "context": "Transcript", + "bindings": { + "ctrl+e": "transcript:toggleShowAll", + "escape": "transcript:exit", + "q": "transcript:exit", + "ctrl+u": "scroll:halfPageUp", + "ctrl+b": "scroll:fullPageUp", + "ctrl+f": "scroll:fullPageDown", + "ctrl+n": "scroll:lineDown", + "ctrl+p": "scroll:lineUp", + "g": "scroll:top", + "shift+g": "scroll:bottom", + "j": "scroll:lineDown", + "k": "scroll:lineUp", + "space": "scroll:fullPageDown", + "b": "scroll:fullPageUp", + "up": "scroll:lineUp", + "down": "scroll:lineDown", + "home": "scroll:top", + "end": "scroll:bottom" + } + }, + { + "context": "HistorySearch", + "bindings": { + "ctrl+r": "historySearch:next", + "escape": "historySearch:accept", + "tab": "historySearch:accept", + "enter": "historySearch:execute" + } + }, + { + "context": "Task", + "bindings": { + "ctrl+b": "task:background" + } + }, + { + "context": "ThemePicker", + "bindings": { + "ctrl+t": "theme:toggleSyntaxHighlighting", + "ctrl+e": "theme:editCustom" + } + }, + { + "context": "Scroll", + "bindings": { + "pageup": "scroll:pageUp", + "pagedown": "scroll:pageDown", + "wheelup": "scroll:lineUp", + "wheeldown": "scroll:lineDown", + "ctrl+home": "scroll:top", + "ctrl+end": "scroll:bottom", + "ctrl+shift+c": "selection:copy", + "cmd+c": "selection:copy", + "shift+left": "selection:extendLeft", + "shift+right": "selection:extendRight", + "shift+up": "selection:extendUp", + "shift+down": "selection:extendDown", + "shift+home": "selection:extendLineStart", + "shift+end": "selection:extendLineEnd" + } + }, + { + "context": "Help", + "bindings": { + "escape": "help:dismiss" + } + }, + { + "context": "Attachments", + "bindings": { + "right": "attachments:next", + "left": "attachments:previous", + "backspace": "attachments:remove", + "delete": "attachments:remove", + "down": "attachments:exit", + "escape": "attachments:exit" + } + }, + { + "context": "Footer", + "bindings": { + "up": "footer:up", + "ctrl+p": "footer:up", + "down": "footer:down", + "ctrl+n": "footer:down", + "right": "footer:next", + "left": "footer:previous", + "enter": "footer:openSelected", + "escape": "footer:clearSelection" + } + }, + { + "context": "MessageSelector", + "bindings": { + "up": "messageSelector:up", + "down": "messageSelector:down", + "k": "messageSelector:up", + "j": "messageSelector:down", + "ctrl+p": "messageSelector:up", + "ctrl+n": "messageSelector:down", + "ctrl+up": "messageSelector:top", + "shift+up": "messageSelector:top", + "meta+up": "messageSelector:top", + "shift+k": "messageSelector:top", + "ctrl+down": "messageSelector:bottom", + "shift+down": "messageSelector:bottom", + "meta+down": "messageSelector:bottom", + "shift+j": "messageSelector:bottom", + "enter": "messageSelector:select" + } + }, + { + "context": "DiffDialog", + "bindings": { + "escape": "diff:dismiss", + "left": "diff:previousSource", + "right": "diff:nextSource", + "up": "diff:previousFile", + "down": "diff:nextFile", + "enter": "diff:viewDetails" + } + }, + { + "context": "ModelPicker", + "bindings": { + "left": "modelPicker:decreaseEffort", + "right": "modelPicker:increaseEffort" + } + }, + { + "context": "Select", + "bindings": { + "up": "select:previous", + "down": "select:next", + "j": "select:next", + "k": "select:previous", + "ctrl+n": "select:next", + "ctrl+p": "select:previous", + "pageup": "select:pageUp", + "pagedown": "select:pageDown", + "home": "select:first", + "end": "select:last", + "enter": "select:accept", + "escape": "select:cancel" + } + }, + { + "context": "Plugin", + "bindings": { + "space": "plugin:toggle", + "i": "plugin:install", + "f": "plugin:favorite" + } + } + ] +}