Skip to content

Slice 030: Persona (SOUL) + always-on memory tier - #40

Merged
HackTuah merged 8 commits into
mainfrom
slice/030-persona-always-on-memory
Sep 21, 2026
Merged

HackTuah merged 8 commits into
mainfrom
slice/030-persona-always-on-memory

Conversation

@HackTuah

Copy link
Copy Markdown
Member

Personas with a SOUL seeded from priv/personas/default/SOUL.md, a default model and quick settings (the memory tool's rule). The always-on tiers (profile, always_on) as rows with a scope chain (session, persona, global), a change log every write appends to, a byte budget per persona, and a consolidator that asks the model for a smaller set, applies it under budget with every removal logged under the proposal, or holds it for review on the memory page. The memory tool (add, replace, remove, promote, list) through the membrane, allowed by the persona's rule with the basis named in the decision receipt. The prompt in three tiers with token budgets measured at G1 (stable 800, context 300, volatile 2,800) and a query receipt for every cut; the snapshot frozen in the Session until refresh. Pages: /personas, /personas/:id, /memory, and a persona picker on the index.

Also carried: a policy may answer {decision, basis} (Layered names its layer), and Prompt.build/5 takes the time as an input.

Manual half of AC5 in proof/: the SOUL edited and saved; entries added; an entry deleted and the page reloaded. PROOF.md at slices/030-persona-always-on-memory/PROOF.md.

Signed-off-by: Ayla Croft aylacroft@proton.me

… and the slice opens

ROADMAP row 030 to in_progress. NOTES.md records the default SOUL's
464 tokens and the untrusted rule's 85 against the stable tier's 800,
sets the volatile tier to the byte budget's 2,731 tokens rounded to
2,800 so the two budgets agree, then the eight-line build plan, the
one-item manual queue and four deviations stated before any code.
priv/personas/default/SOUL.md written. plan_check: PASS.

Signed-off-by: Ayla Croft <aylacroft@proton.me>
…n, Budget and the Consolidator

Three tables. Trinity.Personas over the Sessions schema; the default
persona seeded from priv/personas/default/SOUL.md with the persona
rule that lets the memory tool write, on creation and on a pre-030
row's next read. Trinity.Memory.AlwaysOn: the scope chain (session,
persona, global), the deterministic snapshot, add, replace, remove
and promote, every write logged. Budget over every scope of a
persona; the Consolidator asks the model for a smaller set, applies
it under budget with every removal logged under the proposal, holds
it pending otherwise. Nine tests.

Signed-off-by: Ayla Croft <aylacroft@proton.me>
Trinity.Tools.Memory (risk write, effect artifact): add, replace,
remove, promote, list over the session's chain, the persona's scope
by default and the session's on request; the persona from the
context, never from Sessions. A policy may answer {decision, basis}
and Layered names its layer; the runner carries it into the decision
receipt, so the memory tool's writes read allowed by persona (AC6).
Six tests; the 013 and 020 tests updated for the seeded soul and the
new core tool.

Signed-off-by: Ayla Croft <aylacroft@proton.me>
…receipt; the frozen snapshot in the Session

Prompt.build_with_report/5 orders the system prompt stable (soul,
tool guidance), context (skills placeholder), volatile (the memory
snapshot, the time, the title), then 023's compaction section; each
tier cut at its token budget on a line boundary and reported. The
Session freezes the snapshot at start, recomputes it on
refresh_memory/1, and writes a query receipt naming the tier and the
tokens dropped for every cut (Sessions gains the Receipts edge).
Tests: the order, the cut and its report, AC1's prompt half, the
frozen snapshot through three turns and the receipt, AC4. The 012
purity test takes the time as an input.

Signed-off-by: Ayla Croft <aylacroft@proton.me>
…docs/05 and docs/01 as built

Signed-off-by: Ayla Croft <aylacroft@proton.me>
… call

Signed-off-by: Ayla Croft <aylacroft@proton.me>
PROOF.md with every criterion's evidence by test name against run
35549378616 (gate, postgres and fips green). The manual half of AC5
in proof/: the SOUL edited and saved, entries added, an entry deleted
and the page reloaded. NOTES.md: six findings, five follow-ups.
ROADMAP row 030 to done; coverage.tsv row 78.40 %.

Signed-off-by: Ayla Croft <aylacroft@proton.me>
Signed-off-by: Ayla Croft <aylacroft@proton.me>
@HackTuah
HackTuah merged commit 91c673c into main Sep 21, 2026
8 checks passed
@HackTuah
HackTuah deleted the slice/030-persona-always-on-memory branch September 21, 2026 01:30
@HackTuah HackTuah mentioned this pull request Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant