Bootstrap parity: full Armonia mount-stack at session start (discovery, grants, splice, typed memory) - #130
Merged
Merged
Conversation
…recedence (spec-20260707-002846 C1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…60707-002846 C3/C4 read side) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… prep (spec-20260707-002846 C1–C4 read side; C2's compaction knobs deliberately deferred) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…260707-002846 C4) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Amicode sessions now see the full Armonia mount stack — not just the personal vault. Implements the bootstrap parity half (Components 1–4) of the context-lifecycle spec (
spec-20260707-002846), extension-side only, zero fork patches:substrate/mount_store.ts(new) — TS port of the amico-plugin session-start hook's discovery:.amico-vault.tomlmarkers under~/.amico/vaults/,mounts.tomlorder/kind/writable overrides, canonical kind precedence, skip-with-warning semantics.external_directoryread grants in the injected opencode config — the agent can read notes/cards across the whole stack on demand.<personal>/amicode/memory/{type}_{topic}.md+MEMORY.mdindex; only the index is spliced, facts load on demand. DISTILLER.md now writes typed facts and maintains the index;KNOWLEDGE.md/DEMOS.mdfrozen (idempotent migration pointer).Semantics (single source of truth)
Canonical kind order per the approved vault-CLI spec (
spec-20260703-053956): personal 0 · engagement 1 · project 2 · restricted 3 · team 4 · public 5 · unknown 6. Note: this deliberately corrects the Ombra draft's table (which swaps team/restricted). Two oracle-parity subtleties replicated + tested: manifest-kind override applies before the missing-kind skip (rescue rule), and manifest-unlisted mounts append in discovery order.Parity oracle:
amico-plugin/hooks/session-startonfeat/amico-vault-mounts-toml(amico-plugin PR #27).The three-state
vaultDircontract is preserved exactly (undefined→ auto-resolve stack /""→ personalization off, no grants, no splice / path → single forced personal mount). Read-posture note: grants are read grants even forromounts (the permission surface has no r/w split); write discipline stays distiller-side.Testing
pnpm test: 460 passed | 3 skipped (baseline 435 | 3 — +25 new, zero regressions).pnpm typecheckclean. New suites:mount_store.test.ts(fixture matrix incl. rescue + discovery-order + restricted rank), splice sections, three-state prep contract. One new test mutatesHOME(restored infinally) to hermetically exercise auto-resolve — flagged for reviewer attention.Deliberately deferred
Ombra C2's compaction knobs + summarizer model pin; Ombra itself (C5–C9); resolver unification with the amico-run twin (
packages/amico-run/src/mounts.ts, see #131) — headers cross-reference.CI: expected red on the pre-existing private-fork binary token issue — unrelated.
🤖 Generated with Claude Code