Expand description
One seat over the habitats. Each habitat keeps its own crate.
Cards are read-only. Remember/Prefer POST /v1/atoms and never extract
on write. Consensus is a different crate, then the tracker verb. Policyd
is argv law: this process does not reload a pack as a check.
Modules§
- admit
- Origin-bound admission.
- approval
- One-use consent for an ask verdict when the caller has no approval UI.
- ask_
pack - The ask pack: built-in
askrules for commands that lose data or reach past the machine. Database drops and resets, infrastructure and cluster teardown, cloud and container deletes, publishing a package, reading a secret, emptying or deleting a config file, mirroring a delete into the home directory, dropping a stash, and putting a world-writable directory ahead of$PATHeach ask the person first, with a reason and a safer form. The pack is on by default.LJOS_ASK_PACK=offturns it off, and a list such asLJOS_ASK_PACK=db,cloudkeeps only those classes. A seat rule in the pack is read first, so a person’s owndenyoraskon the same line wins. - capture
- A standing choice the person states in chat.
- command_
prefs - Preferences at the moment the agent acts.
- hud
ljos hud— exec the separateljos-hudbinary.- jev
- The prompt hook’s judgments through Jev, TypeSafe’s decision model, on TypeSafe’s own API or OpenRouter’s Decisions API: which candidate claims bear on a prompt, whether the prompt corrects the agent, and whether it puts a choice.
- Mail from one seat to another.
- persona_
session - A persona’s session: the runner that thinks as the persona, in a pane the person can watch and talk to, kept across hand-offs.
- plugin
- A harness child, restarted the way OTP restarts one.
- reap
- Reap idle claims: a sitting nobody finished goes back to ready, and its seat hears why. A claim is idle when neither its claim time nor the newest tracker commit naming it falls inside the window.
- runner_
hooks - Hook setups for runners whose hook contract is not Claude Code’s own: GitHub Copilot, Gemini CLI, Windsurf (Devin Desktop), Factory Droid, Kiro, Cline, Qwen Code and Crush.
- sync
- Sharing the seat’s memory across machines through the tracker repository that already travels between them.
- tools
- The tools a runner lives in: terminal multiplexers and agent runtimes. A
tool opens a pane the person can watch and hands the runner a line, and
its
aliveverb says whether the pane is still there. - upgrade
ljos upgrade: replace the seat’s binaries with a published release.- wake
- Wake a seat when mail reaches it.
Structs§
- BumpRow
- One module of a bump bundle as the tracker will hold it.
- Calibration
- One voter’s forecast record. The bins are the probabilities actually stated, in thousandths, each with how many times it was stated and how many of those events occurred. Murphy’s categories are those values, not a grid this seat invented.
- Campaign
- A campaign state file: the package it builds, the target, its findings.
- Commit
Lock - An exclusive advisory lock on a file, held until dropped. Taking it blocks; a lock that cannot be opened is no lock, and the commit goes on as it would have without one.
- Consensus
Step - Crate
Version - A registry answer and where it came from: the day cache on disk, or the registry itself.
- Dense
Signal - What the pack’s encoder said about one hit: its rank on the dense ballot (from 1) and its cosine with the prompt. Both are absent on a pack that does not send them, or on a hit the encoder did not name.
- Event
- One dated event on an issue’s timeline, from whichever store holds it.
- Expired
- A claim on the graph that has been quiet longer than the lease.
- Finding
- One typed finding from an eb-stack campaign state file, flattened to what a seat reads and remembers.
- Forecast
learn_aboutandlearn_anchorstogether, written to the pack: the rows, then the personas the outcome moved. Returns what was written.- Habitat
- One habitat and whether it answers.
- Harness
- One agent runner, as the seat’s own configuration describes it. The seat
ships no runner’s name: the file at
harnesses_pathnames them, one table each, andonboardanddoctorread it. - Harnesses
- The whole file:
[[harness]]tables, and[[tool]]tables for the multiplexers and agent runtimes a runner lives in (tools). - Hold
- What a conversation left beside the claim graph when it took a node: the name it held under, its seat, the runner process, and when. The claim graph keeps only the hashed actor; this is how a later conversation that finds the node held learns who holds it, and whether that conversation is still running.
- Hook
Call - What the runner’s hook hands the seat: the event, and the text worth asking the pack about. From a tool call, the command about to run; from a prompt, the prompt.
- Panel
Verdict - Whether a closed panel round passed, and why not when it did not.
- Partition
- Murphy’s partition of the Brier score (1973,
doi:10.1175/1520-0450(1973)012<0595:ANVPOT>2.0.CO;2).
brier = reliability - resolution + uncertainty. - Persona
- A voter with a view of its own: a persona.
anchorin[0, 1]is how far it moves off its ballot in a settle; 0 never moves, 1 is a plain DeGroot voter.entitiesare the domains it speaks to. - Playbook
- A recipe a sitting copies before personas enter.
modelsare optional spawn hints; every panel still ends inljos vote --asthenljos consensus. - Prediction
- One voter’s forecast on one issue: what share the others give each option, or the option it expects to win.
- Push
Call - A
git pushfound in a shell line: where it runs, its arguments afterpush, and theLJOS_CITEit carries. - Push
Facts - What the gate knows about the remote a push goes to.
- Reading
- One reading of a habit: a number the seat keeps measuring, with the
cadence it is measured at. A reading is a claim of kind
habitthat supersedes the reading before it, so the pack holds one live value a habit andsearch --as-ofstill answers what it stood at then; its review clock is the cadence, sodueand the hook say when the next reading is late. - Remembered
- What
remember_findingsdid with one finding. - Rule
- Argv law kept in the pack: a glob over the command line, a verdict, and
the reason a reader sees when it fires.
denystops the action at the runner and underljos policy;askhands it to the person. - Said
- What a habitat printed, kept for a caller that has to hand it on. A non-zero exit is an error carrying stderr.
- Seat
- Who is sitting. The seat is the program that connected: the name a runner remembers, votes and earns trust under, the same across its conversations. The holder is that seat in one conversation: the name its claims are held under, so two conversations of one runner hold two tickets while a vote from either counts for the one voter.
- Seat
Decision - What a push cite stood on: the option, and the ballots counted for it in words.
- Step
- One step an onboarding took, or would take.
- Stop
Turn - The turn a stop ends, read from the runner’s transcript: the person’s last request, the shell commands since it, the output of the latest test run (or of the last commands when none ran), and the final message.
- Trust
- One row of the influence graph:
fromlistens totowithweight.aboutscopes the row to the domains it speaks to: a row with none applies everywhere, a row with some applies when one of them meets the issue at hand (its title, or the entities of the island it activates). - Workflow
Child - One child of a workflow parent, as the status reads it.
- Workflow
Config - The workflow settings S1 reads: which workflow new feature work takes, the panel, who can veto, the pass share and the tie-break. There is no round cap and no setting that waits on the person.
- Workflow
Status - Where a workflow parent stands and what comes next.
Enums§
- Access
- Whose a remote is, as far as the seat can tell.
- Hook
Shape - The hook contract a call arrived in, told apart by its stdin. The
runners share one name for the answer,
permissionDecision, but not what they do with it. - JevVote
- What a Jev ballot did: cast under the persona’s name, or handed to a subagent because Jev was not sure enough.
- Persona
Write - How a persona write treats a live persona of the same name.
- Push
Tier - How much a push needs before it runs.
- Stage
- The step of a workflow a child issue stands for.
Constants§
- BROAD_
EPSILON - The confidence bound a
broadissue settles under: voters within this L1 distance of each other’s opinion listen to each other. - BROAD_
TAG - The tag on an issue that asks for bounded confidence: a panel for a broad audience is allowed to settle into clusters, and the settle says how far apart they are, where a single-position model would average them away. Without it the anchored model runs.
- CARD_
NAMES - Working-core files this seat will print. Nothing else, and never write.
- COMMAND_
PREFERENCES - How many preferences one command hears at most.
- CORRECTION_
CUES - Phrases a person uses when the agent has forgotten something it was told. A prompt that opens this way is a preference or a lesson the pack does not hold yet, and the moment to write it is now, before the work that follows.
- CURSOR_
GATE_ DEADLINE_ MS - How long a Cursor gate waits on the seat before the seat refuses the call itself: under the 10 seconds onboard registers, so the refusal is written before Cursor gives up on the hook.
- CURSOR_
HOOK_ EVENTS - The events the seat’s hook takes in Cursor’s hooks file, each with its timeout in seconds. They are the gate before a shell command, the prompt, the tool results that deliver its note, a failure, a compaction, the stop, and the end of the session. A prompt’s note is held, since Cursor does not hand a prompt hook’s context to the model.
- DECISION_
CUES - Phrases that put a choice to the agent. A choice with more than one defensible answer is a ballot, and a ballot needs an issue to sit on.
- DECISION_
OPENING - How much of a prompt the decision cues are looked for in.
- DEFAULT_
ANCHOR - The anchor a voter with none of its own settles under when a persona votes on the same issue: it moves halfway toward the others. Under Friedkin-Johnsen a voter at susceptibility 1 keeps none of its ballot, so with no anchor of its own the seat lost every settle to any anchored persona, however few held that view.
- DENSE_
ALONE_ AT - The cosine the encoder’s first hit must reach when it shares no word with the prompt. Set on the 20-memory set: 13 of the 16 paraphrase targets that the encoder ranked first cleared it, and the first hit on none of 12 unrelated prompts did (their best was 0.653).
- DENSE_
ALONE_ RANK - How far down the dense ballot a hit that shares no word with the prompt may sit and still be handed over: first only.
- DENSE_
WORD_ BEHIND - How far below the prompt’s best cosine a hit that names the subject
may sit, in place of two scorers agreeing. The cosines of one prompt
sit close together, so the distance from the best tells more than a
fixed floor. One ordinary word of a longer cue does not enter this
band: see [
names_the_subject]. - DUE_
SHOWN_ TTL_ S - How long a due row stays open to
gradedafter a page showed it. - DUE_
WINDOW_ DAYS - How far back the prompt’s due line looks.
- ENCODER_
WARMING_ NOTE - What a prompt hears while the pack’s encoder loads. On a new machine the first load downloads the model, which takes longer than a hook may.
- FAILURE_
SHARED_ WORDS - How many content words a lesson must share with a failed command and
its error. A failure cue is long and noisy. One word in common
(
buildin an npm error and in “Grok Build”) is a coincidence, not a match. - GATE_
REFUSED_ EXIT - The exit status of a gate the seat refused because the hook failed. Cursor, Claude Code and Codex each read exit 2 from a tool hook as a deny; any other failing status lets the call run on Cursor’s CLI.
- GROK_
PACK_ LINE - How this runner calls the pack. Its tools are not in the built-in list.
- HABIT_
ENTITY - The entity a habit’s readings carry, so a name finds them.
- HABIT_
EVERY_ S - A habit’s cadence when none is given: a week, in seconds.
- HARNESSES_
EXAMPLE - An example of the file, with placeholder names.
ljos onboard --exampleprints it; the two shapes are a registering command and a config file. - HOOK_
DEADLINE_ MS - How long a context hook may take before it answers with nothing. The shortest runner cut-off seen is grok’s 15 s on a prompt; this leaves it room on a loaded host.
- HOOK_
EVENTS - The events the memory hook fires on when a runner’s table names none:
the prompt, which carries the task in the person’s words. A tool call
carries the command about to run and is a cue too; a runner asks for it
with
hook_events. The default came out of a panel of this seat’s personas: a turn issues many shell commands and one prompt. - HOOK_
MATCHERS - The events the hook knows a matcher for; any other event takes
*. - HOOK_
MAX_ MEMORIES - The most memories one prompt is handed. Past three, the ones that bear on the prompt are read among the ones that do not.
- HOOK_
RERANK_ BUDGET_ MS - How long the prompt hook waits for the reranked search. Runners cut a hook off at 10 to 20 s, and a loaded host has made the rerank alone take longer than that.
- HOOK_
SCORE_ FLOOR - The floor a hit must reach, as a share of the strongest hit’s score, to be injected. A command line matches many claims weakly; only the ones that match it as well as the best does are worth the agent’s context. The floor is not relevance: a vague sentence scores high on unrelated lessons, so a hit must also name a content word of the cue.
- JEV_
ALONE_ AT - How sure Jev must be that a claim bears on a prompt it shares no content word with.
- LEARN_
BETA - The factor a refuted voter’s rows shrink by (Hedge, doi:10.1006/jcss.1997.1504).
- MIN_
NAMED_ OUTCOMES - Named outcomes a pair must share before
ljos-consensus correlationreads its correlation (its--min-shareddefault). Below it no discount can move, so the reading is not asked for. - OOM_
RECENT_ S - How long an OOM kill keeps the host row failing.
- PANEL_
BY_ VIEW - How many specialists a panel seats by their views when no domain and no generalist speaks to the issue.
- PLAYBOOK_
NAMES - The closed set. Write, list, bind, and copy refuse any other name.
- PLAYBOOK_
NOTE_ PREFIX - A tracker logbook note that binds a playbook name to an issue. Latest such note wins; empty rest is the sitting-scoped drop finish/release write.
- PLUGIN_
TEMPLATES - The plugins
ljoscarries for runners whose hooks are code, by name.{ljos}in each is filled with the absolute path at onboard. - POLICYD_
DEADLINE - How long the TCB has to answer before the line is refused. A runner times a hook out after seconds and most then run the tool, so the check must give its own answer first.
- POLICYD_
MIN - The oldest
ljos-policydthis ljos runs with. A Rust older than the workspace’srust-versioncan leave an older one installed:cargo installpicks the newest release that builds and says nothing. - POLICY_
TCB - Printed on stderr.
ljos-policydis the TCB when it exists. - PRINCIPLES
- Five named principles, invocable mid-sitting, mapped onto existing law.
- PROTOCOL
- The sitting protocol: which store answers which question, the order of
verbs before, during and after the work, and the refusals worth knowing.
ljos protocolprints it,ljos onboardinstalls it as a skill, and the server serves it atljos://protocol. Harness agnostic on purpose. - REQUIRED
- The habitats the seat needs. The encoder (
packset-embed) is not one: it links ONNX Runtime, and without it the pack ranks by words alone. - RUBRIC
- The scoring sheet a compose is voted on. Personas vote the compose, not accept-at-most-one on the designs.
- RUST_
MIN - The oldest Rust that builds the seat from source, the workspace’s
rust-version. - SEAT_
ENTITY - The entity every write carries: which seat wrote it. Many seats share one pack, and a reader can then see whose lesson it is reading.
- SEAT_
PATHS - The files that are the seat’s law and its reach into each runner: the binaries the hooks run and the files that register them. An agent that may rewrite them can rewrite the law, so only the person does.
- SEAT_
VERBS - The seat verb a bare tracker verb stands in for: the tracker writes one store, the seat’s verb writes every store and weighs the ballot.
- SEAT_
WORKSPACE - The workspace the seat’s memory lives in when nothing names one. The
pack’s command line keys a workspace to the repository it stands in;
a seat is one memory across every repository it works in, so the seat
pins one.
PACKSET_WORKSPACEoverrides it. - SHIPPED_
PLAYBOOK_ NAMES - The six shipped recipes. Kind
playbook, weighed not recalled. - SITTING_
DUE - How many due rows a sitting prints before the summary line.
- SITTING_
TIMELINE - How many dated events a sitting’s timeline prints. Protocol: last twelve.
- TITLE_
PLAYBOOK_ NAMES - The names a title token binds by itself.
featureis left out: “feature” is an ordinary word in titles, and the feature recipe is for a parent thatljos workflow --startput under the workflow. - TRUST_
FLOOR - The least a row can fall to, so a voter who is right again is heard again.
- TWIN_
EVENTS - Events said once per occurrence, whose twin from a second registration
is dropped by
hook_twin. A tool gate is never dropped: its verdict must reach the runner from every registration. - WORKFLOW_
NAMES - The workflows a parent issue can carry. Each is the playbook of the same name; the parent keeps it across every sitting on its children.
- WORKFLOW_
NOTE_ PREFIX - The logbook note that binds a workflow to a parent:
workflow: NAME. Latest wins and an empty rest drops it, like the playbook note, but no finish or release writes the drop: the workflow outlives every sitting. - WORKFLOW_
TAG_ PREFIX - The tag a workflow parent carries, for boards and search. vissue splits
org tags on
:, so the tag joins with a hyphen. - WORK_
NUDGE_ EVERY - Tool calls a conversation that already holds an issue may make without a word to the seat before the hook reminds it. A conversation that holds none is told on the first result, when the seat tracks work.
Functions§
- accepts_
another_ conversation - Whether a conversation under a runner may accept a proposal: only one
another conversation filed, such as a worker it started.
proposeris the holder the proposal’s atom names,holderthis conversation’s. - add_
entities - Add entities to a body without losing the seat’s.
- admits_
judged - Whether a judged claim reaches the prompt: Jev says it bears, the two
scorers agreed, and its score clears
HOOK_SCORE_FLOORof the top. - admits_
local - Whether a hit from the fused pool reaches the prompt on a pack that
sends the encoder’s cosine. A preference, a standing lesson or a
transient lesson gets in when the encoder ranked it first at
DENSE_ALONE_ATor more, or when it names the prompt’s subject, clearsHOOK_SCORE_FLOORof the top score and sits withinDENSE_WORD_BEHINDofbest, the highest cosine in the pool. A lesson with no horizon tag stays out. - adopts_
holder - Whether
assigneenames the same seat as any ofnamed, the holder names the hold record and the tracker give, socompletemay finish under the claim graph’s holder. - age_of
- How long ago a stamp was, in words a reader can place:
today,yesterday,N days ago, then weeks, months and years once the count stops fitting the smaller unit. Empty when the stamp is missing or unreadable,in N daysfor a stamp ahead ofnow. - anchors_
json - Anchors as the settles take them:
{"name": anchor, ...}. - announce_
seat - The MCP server, once a client has said who it is: the seat is the
client’s name. The holder is that seat and a short tag for the
*_SESSION_IDthe runner stamped, else that seat tagged with the runner’s process. The record under the runtime directory is howljosin a shell the same runner opened names the same seat and holder. A runner started from another runner’s shell carries that runner’s ids; it holds under its own process and leaves the parent’s records alone. - answer_
denies - Whether an answer refuses the action. JSON is a
denyondecision,permissionorpermissionDecision. Plain text is a later line, or the only line, that starts withdeny:ordenyand a tab. A lesson that merely contains the word does not count, and anaskdoes not. - answer_
gate - Write a gate’s answer and mark it given, so a failure after it, or the deadline, writes nothing more.
- arm_
gate - Arm the refusals of a gate call: a panic in the hook writes the deny of
hook_failure_outputand exits 2 (a panic exits 101, which Cursor’s CLI reads as an allow), and on Cursor, a hook with no answer byCURSOR_GATE_DEADLINE_MSdoes the same. A Cursor hook that times out is a deny in the IDE and an allow in the CLI, so the seat answers first. Nothing is armed for an event that is not a gate. - as_
thread - Run
fas the thread a runner named on this call, when it named one. A runner that spawns one server for many conversations names each in the call’s metadata rather than in the server’s environment. - ask_
persona ljos ask NAME TEXT: the persona’s own session takes the question, in its open pane or one that continues its session.- asks_
decision - A tool call the transcript names at the top level:
nameandarguments. Whether the person’s words ask for a choice rather than a change. - assist_
note_ line - The line
ljos noteadds when another seat holds the issue. A note from outside the sitting is an assist: it goes in the logbook, which the holder reads at its next sitting, andljos sendreaches the holder now.Nonewhen nobody holds the issue live, when this seat holds it, or when no record on this host names the holder’s seat. Reads only; a node the claim graph lacks is not minted. - atom_
body - Explicit claim body. The text is stored as given; never harvested. The entities open with the seat that wrote it.
- atom_
kind - Remember → lesson, Prefer → preference. Trust rows go through
trust_atom. - atom_
out - What
ruleandforgetprint. The default is one line.--jsonis the atom, embedding included. - atom_
source - Where a claim was written: the runner, the conversation, the host and, when the runner stamped one, the turn. An audit reads a claim’s lineage here instead of guessing it from its entities.
- atoms_
lean - The pack’s live atoms without their dense vectors. Every reader here
wants texts, kinds, review clocks, trust or rules; the vectors are nine
tenths of the listing, and parsing them grew one ljos-mcp from 10 to
66 MB and kept it. A writer older than
embedding=omitsends them anyway, and the answer is the same. - atoms_
timeout - How long a pack listing may take. A hook is killed at 10s and the kill drops a deny, so the listing fails at 2s and the local gate still runs. Outside a hook the listing may take 30s.
- ballot_
rows - An issue’s ballots as
vissue vote ID --jsonprints them; empty when the tracker does not answer. - ballot_
seat - The seat a ballot or a forecast counts for. Refused when nothing named
the seat and it is only the program above this shell: a subagent with
no
LJOS_SEATcast 25 forecasts asexec-daemon, the box’s command daemon, and nothing said so (Software-o9bu).LJOS_SEAT,VISSUE_AGENT, an MCP client’s name or a runner’s record name a seat; a person at a terminal is their login user, as before. - ballot_
voters - The names on an issue’s ballots, from
vissue vote ID --json. - ballots_
from_ json (agent, choice)pairs from a tracker’svote --json.- bare_
seat - The bare seat a holder name stands for: no
:nodescope, no@hostsuffix, trimmed and lowercased. - bind_
playbook - Hold
nameonissueuntil finish or release. A different name while one is held is refused: mid-sitting turns re-read the same note. - block_
output - The answer that keeps an agent going one more round with
reason, in the runner’s words for it. - bound_
playbook - The playbook name this sitting holds, if one was bound. Tracker note is the bind that survives the process; the runtime cache is only when the tracker does not answer.
- brief
- The brief a subagent playing a persona starts from: the persona’s view and domains, what the seat knows on those domains (preferences first), and the issue’s working set. One text, so a panel member reads the same seat the rest do and still reads it its own way.
- brief_
playbook_ blocks - The blocks a brief carries: the playbook step (full body), then, on ljos’s own issues only, the named principles and the arena rubric. Another project’s issue gets its playbook and a line saying no product rubric applies, so a persona reasons from the issue alone.
- brier
- Quadratic score of a stated probability against the outcome.
- bump_
issue_ id - A deterministic issue id for a module of a generation: the project, then eight base-36 digits of the module and generation hashed.
- bump_
plan - Put a bundle’s modules on the tracker: one child issue per module under
parent, blockers along the dependency edges, ids the same on every run so a rerun holds what exists and adds what is missing.vissue readythen lists the modules a seat can build now, and a sitting refuses the rest until their blockers close. - bump_
rows - The plan a bundle implies for the tracker: one row per module the lock builds, blockers along the SBOM’s dependency edges. Nothing is written.
- bypass_
log_ path $XDG_DATA_HOME/ljos/bypass.jsonl: one row each time a command ran that the guard would have stopped.- bypass_
summary - [
bypass_row]’s text from the log’s rows. - calibrate
- Turn a project’s voting history into trust rows without anyone naming
an outcome: Dawid and Skene’s accuracy per voter
(doi:10.2307/2346806), from
ljos-consensus reliability, turned into the weight every other voter gives that voter bycalibration_weights: log odds, so a voter right nine times in ten outweighs one right six times in ten by five to one, not three to two. Rows are complete and floored atTRUST_FLOOR, so the settle sees the whole graph. - calibration_
from_ atoms - The latest forecast record per voter, from the trust rows that carry one.
- calibration_
weights - The weight a voter of estimated accuracy
pearns: the log oddsln(p / (1 - p)), the optimal weight for independent voters on a two-way choice (Nitzan and Paroush, doi:10.2307/2526438; a weighted majority under these weights is the maximum-likelihood decision), withpheld inside[0.01, 0.99]so a perfect record does not become an infinite vote, and a voter at or under chance atTRUST_FLOOR. The weights are scaled so the most reliable voter stands at one, which is the scale the trust rows live on; the ratios between voters are the rule’s. - came_
due_ since - The due claims that came due at or after
since(RFC 3339): a review date inside the window, or, for a claim never reviewed, a write inside it. The rest is backlog the nudge does not count. - card_
paths - cards
- Read-only cards. Only
CARD_NAMES, never created, never written. - cast_
jev - Cast Jev’s ballot as the judge, not the persona. The chosen option’s
probability is the ballot’s confidence, the forecast is the judge’s
prediction, and
--usednames the judge. Confidence decides escalation. - check_
persona ljos persona NAME --check:persona_check_reportagainst the pack.- cite_
stands - Whether a cite stands: a tracker issue its seat ballots decide
(
seats_decide), open or closed. The text says which ballots it counted. A deed alone does not stand: the pushing seat can mint one withdeedar createa moment before the push, so the decision has to be on an issue another seat voted on. - claim
- Take a session node, and when the claim graph refuses because the assignee still holds another node, say which tracker id that is and the two verbs that free it. The bare refusal names a 32-hex id nobody can act on.
- claim_
graph_ absent - The directory claimdag would create, when its refusal says the seat has no work graph yet because nothing was ever claimed. A fresh host is not a fault: the sitting’s first claim creates the graph.
- claim_
next - Claim the ready node the claim graph puts first for
assignee, throughclaim. A node another conversation took first is passed over. - clean_
user_ prompt - The person’s request out of the wrapper a runner puts around it: agy
sends
<USER_REQUEST>...</USER_REQUEST>beside metadata blocks, and only the request is a cue. - cli_
assignee - Resolve a command line
--assignee. A name typed on the command line is taken as given, the seat’s own name too, soljos sitting ISSUE --assignee saddleclaims as saddle and a board filtered by seat finds it. Empty or a pronoun (seat,you,agent) is the conversation’s holder. A tool call’s field keepsresolve_assignee, where a runner echoing its own seat name means itself. - command_
preference_ note - The note a tool call carries: the preferences that bear on its command and that this session has not heard on a command yet, and the keys to mark seen once it is delivered.
- command_
segments - The commands a shell line runs: split on
&&,||,;,|and new lines outside quotes, each with leadingNAME=valueassignments and the prefixes in [SEGMENT_PREFIXES] taken off with their flags. A rule anchored at a command’s start then seescd x && git pushandFOO=1 git pushas the push they run, and quoted text is not split, so a commit message naming a command is not that command. - compact_
sitting - A sitting’s report cut to what a person acts on. The full report goes
section by section (
== doctor,== island: TITLE, …); this keeps the doctor’s summary and the rows that need action, the memories the island found, open blockers, the playbook’s name, a panel, a reclaim that moved something, and the claim, then says the issue is held.ljos sitting --verboseprints the full report. - compaction_
note - What a compacted conversation needs to go on: the issue it holds, and where its working set, its history and the protocol are.
- complete
- Close a sitting: remember the lesson when there is one, fire the island the issue’s title activates, complete the session node, and learn from the outcome when one is named. Without a lesson the report says so, because a sitting that taught nothing worth two sentences is rare and worth noticing.
- confidence_
in_ words - What a ballot’s confidence does, said when any ballot states one: it
is recorded,
ljos learnscores it once an outcome is named, and nothing else reads it.Nonewhen no ballot states one. - conflicts
- Consolidate the seat’s memory: every claim that replaces an earlier
one (a rewrite, a new object under the same head, a correction, an
explicit supersedes) closes the earlier one’s window and names it.
Candidate contradictions from the geometry of the seat’s memory: the
landscapebinary reads the pack’s embeddings at the point scale and prints the lowest passes between single memories, which on a record of planted contradictions were the contradictions nine times in ten. The replacement rule reads words; this reads distance, in any language. A candidate is for a person orconsolidateto judge; nothing is written here.landscapeis an optional habitat: absent, this says so. - consensus_
document ljos consensus --jsonas one JSON object.gateis the push cite, and its fields stay at the top level under the keys the push cite already uses. Each step’s output follows under its label (settle,tracker,surprising,reputation), parsed when it is JSON and kept as text when it is not.- consensus_
step_ label - The key a step’s output takes in
ljos consensus --json: the model crate’s verb (settle,surprising,reputation), ortrackerfor vissue’s own settle. - consensus_
steps ljos-consensusfirst, thenvissue consensus, both under the pack’s trust rows when there are any. Missing bins are skipped.- consensus_
steps_ anchored consensus_stepspassing the personas’ anchors to both settles as--susceptibility-of, so a persona holds its ballot as much as it says.- consensus_
steps_ for - The steps
consensus_steps_anchoredbuilds, under the anchorssettle_anchorsgives for these voters, with the model flags the issue’s tags ask for on the model crate’s settle. - conversation_
tag - A short tag for one conversation from the process that runs it: the pid
in base 36, so
acme-cli-39ureads as a name and not a number. - copy_
playbook - Bind
nametoissueand return the full recipe body. This is the copy into the working set; sitting prints it before recall. - correction_
cue - The first cue in
CORRECTION_CUESthattextcontains. - correlation_
step - The correlation reading over the issues whose outcome is named: each
issue’s ballots beside the option it closed on. None below
MIN_NAMED_OUTCOMES. - cursor_
plugin_ in - The ljos Cursor plugin under Cursor’s plugins directory, when installed:
a clone in
local/ljos, or a marketplace or/add-plugininstall incache/<marketplace>/ljos/<commit>. - decision_
hold - The line a decision gets before anyone picks, when the host could not start the panel itself.
- decision_
member_ task - What one panel member is asked, after its brief. It votes as itself and stops. It does not sit, edit, or leave the machine.
- deed_
alone - Why a deed cited on its own does not let a push through.
- detect_
runners - The runners among
shapesthis machine has: a runner’s command is on the PATH, or the directory its MCP config or its hooks file sits in exists underhome. Shell-only runners and the example shapes are never found, since nothing on disk tells them apart. - discount_
from - The discount a correlation reading asks the settle for, and the line that says so. None when no pair passed the gate, so every voter keeps its whole weight.
- doctor
- Which habitats answer: binaries on
PATH, the pack overPACKSET_URL, the deed store, the tracker, the claim graph. - doctor_
seat - The seat’s own rows: binaries, pack, host key, deed store, tracker, claim graph. What a sitting checks; the runner rows are onboarding.
- doctor_
summary - The line
ljos doctoropens with: whether the seat is ready, which required parts do not answer, and how many optional parts are off. - doctor_
word okwhen the row answers,warnwhen the policy row names anljos-policydwithout phronesis,infowhen the row is optional and absent,nowhen a required row failed.- drop_
playbook - Drop the sticky name. Finish and release call this; a new task is a
new sitting. Writes an empty
playbook:note so the next sitting does not reprint the previous recipe, and unlinks the runtime cache. - due
- What the pack holds for review now.
- due_of
- The live atoms whose review is due at
now(RFC 3339 UTC), soonest first. A claim that has never entered the review clock has nodue_at; it is due now, and grading it puts it on the clock. Trust and persona rows are weighed, not recalled, and never come up. - due_
on_ island_ first - The due claims with the island’s first, keeping each group’s due order: the claims a sitting’s work bears on are the ones its agent can grade from what it is about to read, rather than the oldest in the pack.
- due_
page - The soonest
SITTING_DUEclaims, how many are due in all, and the clock line. Read-only: the sweep stays onljos dueand on a sitting. - due_
report - The review clock as
ljos dueprints it: the soonestSITTING_DUEdue atoms, then the summary. Those rows are the onesgradedtakes. Withall, every due atom is listed to read, and none is put up for grading: a list of a thousand is a census, not a review. - due_
shown_ live - The ids a due page showed inside
DUE_SHOWN_TTL_S, read fromtext(EPOCH\tIDlines) atnow. - enclose
- Deeds to enclose: the satchel’s
needsplus what the pack cites, once each. - enclosed_
atoms - Every atom in a satchel’s
data/atoms/*.jsonl. - encoder_
cold - Whether the pack’s encoder has not answered since packsetd started: it is
on, its binary is there, and no dense call came back yet. A search then
waits for the model to load, and on a new machine for its download. A
status without the
answeringfield, from an older packsetd, says nothing about it, and is not cold. - encoder_
warming - Whether the pack’s encoder is still loading. When it is, a warm-up
starts in the background, at most one per [
ENCODER_WARM_EVERY]. The status call has half a second; a pack that does not answer in that time is not called cold, and the search goes on as before. - evidence_
here evidence_in_wordsin this machine’s zone.- evidence_
in_ words - The reader’s seconds east of UTC at the instant
secs. The tracker writes org stamps in local wall time; a timeline reads every store in it.deedar evidenceas a person reads it: after eachtime=line in seconds since the epoch, anat=line with the same instant in ISO 8601 with the reader’s UTC offset. Thetime=line stays as it is, since the timeline and scripts read it. - exec_
server - Replace this process with the
ljos-mcpthat goes with thisljos, soljos mcpserves on the same standard input and output. Returns only when the server cannot be found or started. - expand_
leading_ tilde rawwith a leading~or~/put againsthome;Nonewhen there is nothing to expand.- expired_
claims - The claimed or running nodes in a
claimdag list --jsonanswer that have been quiet for at leastleaseseconds atnow, oldest first. - export_
agents ljos agents: every persona as an agent definition in each runner’sagentsdirectory, or in one runner’s.- failing
- The required rows that do not answer, by name.
- failing_
for_ sitting - The required rows a sitting cannot open without, by name.
- failure_
note - What this seat knows that bears on a tool that just failed. The pack is
searched on the command and the error it gave, and a hit has to pass the
prompt hook’s tests. It must also share
FAILURE_SHARED_WORDScontent words with the command and the error, where a prompt needs one, since an error is long and noisy. One handed over earlier in the session is left out. Calls that worked are not searched. - file_
placement - Where
ljos fileputs a new issue: its parent, its project, and a line for the agent when the held issue was passed over.--topfiles with no parent and--parentnames one. Otherwise the held issue is the parent, unless-pnames another project: a child lives in its parent’s project, so a tool bug filed with-pmid-sitting goes to the top of that project, not under the work being sat on. - finding_
lesson - The lesson a finding leaves: what failed where, then the fix, or that a later attempt got past it. Two short sentences; the pack refuses more, and refuses hard prose.
- finish
- forecasts_
for_ surprising - Forecasts the surprisingly popular step may read. A judge’s forecast stays out of that step.
- forecasts_
from_ json (agent, choice, confidence)from a tracker’svote --json.- format_
bump_ rows - format_
change - The change since the reading before, signed, or nothing for a first reading.
- format_
consolidation - The pairs a consolidation closed or would close, one a line, then the count and whether it was applied.
- format_
doctor - format_
doctor_ short - The short doctor: the summary line, then only the rows that need
action (
noandwarn), each with the fix its state names. - format_
due - format_
findings - One line per finding: id, status, class, stage, recipe, then the fix or the summary.
- format_
hits - One line per hit: score, how many scorers named it out of how many
ran, kind, id, age, text. The age is the one column a reader needs to
lay the hits on a timeline; the count is what the hook keys on.
explain(ljos search --explain) opens withsearch_reading; without it the hits come alone, and an empty answer is the one lineNo hits. - format_
hubs - One line per hub: score, links, id, text.
- format_
island - One line per activated memory: activation, seed mark, id, text.
- format_
personas - A panel for a runner with no MCP: one brief per persona written to
out, named<persona>.md, and the lines that run it. A runner starts one subagent per file, each ends with the ballot its brief names, andljos consensus ISSUEsettles. - format_
playbook_ copy - The recipe body a sitting copies, including optional spawn hints.
- format_
playbooks - The roster, one playbook per line: name, spawn hints, first sentence.
- format_
readings ljos habit: one line a habit: name, value with unit, the change since the last reading, the age of this one, when the next is due, source.- format_
remembered - format_
rules - The rules as
ljos rulesprints them:verdict\tpattern\treason, deny first, or a JSON array. - format_
seat ljos seat: who is sitting, one field a line.- format_
seat_ row - The doctor’s
seatrow: who votes, who holds, and where the names came from. - format_
steps - format_
sweep - One line on what the sweep did, or nothing when it found nothing.
- format_
workflow_ status - The status as the sitting and
ljos workflowprint it. - format_
write_ ack - One line after a pack write: id, kind, due, text. Not the embedding.
- format_
write_ ack_ plain - What
rememberandpreferprint to a person at a terminal: the kind and the text, when it comes up for review in local time, and the first eight characters of its id, whichaccept,forgetandgradedtake. A pipe getsformat_write_ack. - gate_
push - The verdict the push gate makes of a line the rules asked about:
Nonelets it run. Only anaskon a push is gated; every other verdict, and a line with no push, is the rule’s own. A cited pass is noted on the cited issue, so the record says which decision let it through. - gate_
read - The rules a gate judges by, as
rules_for_gate, and the pack’s preferences as (id, text), from the one listing. The preferences are empty when the pack does not answer: a reminder is not worth a wait. - glob_
matches - A glob over a command line:
*matches any run of characters,?one. The match is on the whole line, sorm -rf *isrm -rfand anything after, and*sudo*is sudo anywhere. - graded
- Grade one review: recalled moves the atom out, lapsed brings it back sooner.
- habit
- Take a reading: write it as a claim that supersedes the habit’s earlier
reading, carrying that reading as
was, with its review due one cadence from now. Returns the pack’s answer and the reading it closed. - habit_
text - The claim a reading is stored as. The words are for a reader; the
numbers travel in the atom’s
habitfield. - habits
- The live readings in the seat’s pack.
- hand_
ballot - Hand a persona’s open ballot to its own session, and note on the
issue where it runs.
Nonefor a persona with no runner, whose ballot stays a brief for a subagent. - handover
- Pack a slice of the seat into
out: the tracker’s satchel, the pack’s atoms, the deeds both cite, sealed, and signed when a host key is set. - harnesses_
from - Parse the runners file. An absent file is no runners, not an error.
- harnesses_
path - Where the runners are described:
$XDG_CONFIG_HOME/ljos/harnesses.toml. - harnesses_
with_ shipped - The runners file with each runner it names merged over the shipped
shape of that name (
merge_shipped). An absent file is no runners. - has_
unscoped_ inbound - Whether
namealready has the seat’s unscoped inbound row inrows. A third-party unscoped row does not seat this persona. - healthy
- Whether every required habitat answers.
- held_
by_ another_ message - Refusal when another conversation holds the node: names that holder
and still says
held by another, so a concurrent sitting can match it. - held_
issue - The issue this conversation’s holder claimed last and still works: a subagent’s hook runs under its parent’s holder, so this is the work the subagent is a slice of.
- hold_
hook_ context - Remember the prompt’s pack text and the memory ids it names. An empty note leaves a note already held: a later prompt that matches nothing must not erase one the runner has not delivered yet.
- hold_
hook_ note - Hold
contextwith the ids to mark seen when a runner delivers it. - holder_
for_ session SEAT@TAGfor one conversation id.- holder_
name - The name this conversation’s claims are held under.
- hook_
already_ running - Whether an identical call (event, session, text) started in the last 20 seconds. A runner that loads another runner’s hook file runs the same hook twice for one event, and both queue on the pack’s one reranker. The first call makes the marker and answers; the second returns at once.
- hook_
call - Read a hook call from the runner’s JSON, or from plain text (an argv
under argv law). Fields:
hook_event_name,tool_name,tool_input(itscommand, else every string value joined),prompt; grok’s camelCasehookEventName,sessionIdandtoolInputread the same. - hook_
call_ as hook_callwith the event the runner’s hooks file named, for a runner whose payload does not carry one.- hook_
context - The context the hook injects. A camel-case runner does not see prompt
stdout, so the ids stay unmarked until the first tool result, or
Stopwhen the turn ran no tool, delivers them. Every other runner is shown this string and the ids are marked now. - hook_
directory - The directory the tool executes in, including an explicit tool override. Relative overrides are resolved against the hook’s directory.
- hook_
failure_ output - A gate’s refusal when the hook fails before it reaches a verdict: an
error, a panic, or no verdict by the deadline. Cursor’s IDE reads a
permission hook that prints nothing as a deny when
failClosedis set, and Cursor’s CLI reads the same silence as an allow, so the seat says deny in the runner’s own JSON and both refuse.Noneon an event that is not a gate: a prompt or a session event that fails lets the work go on. - hook_
note - The pack note for a prompt, and the memory ids named in it. The ids are not marked seen here: the caller marks them when the runner delivers the note. A camel-case prompt hook’s stdout is discarded, so marking here would burn the note before the model read it.
- hook_
output - The hook’s answer in the runner’s JSON:
additionalContextunder the event that fired. Empty context is no output, which the runner reads as no opinion. - hook_
output_ ruled hook_outputcarrying a rule’s verdict on a tool call:denyoraskas the runner’s permission decision, with the rule’s reason. On a prompt or an argv line the verdict is a line of text.- hook_
subagent - What a hook call says about a subagent: its type when the call fired
inside one (
subagentType, oragent_type), and whether a stop gate already held it this turn (stopHookActive), and the agent’s id when the runner shares one session between a parent and its subagents. - hook_
trace - With
$XDG_RUNTIME_DIR/ljos/hook-tracepresent, one line per hook call tohook-trace.jsonlbeside it: the event as sent and as read, the payload’s top-level key names, the session and subagent type. Key names only, never values, so a runner’s hook contract can be read off a live session without storing what it said. - hook_
trusted - Whether a runner that gates hooks on trust has trusted the hooks in
hooks: its trust file records atrusted_hash, and was written after the hooks file last changed (a changed hook loses its trust). - hook_
twin - Whether this call is the twin of one that started in the last ten seconds: the same event with the same payload, byte for byte. A Cursor with the plugin and an earlier onboard, or a runner that also loads Claude’s settings, runs the seat’s hook twice for one event, and both copies get the same payload. A later event of the same kind carries a new generation, loop count or transcript, and is not a twin.
- hook_
uses_ rerank - The local path reranks when the judge did not answer.
- identity_
or_ seat - The identity a ballot is cast under: the persona named, else the seat
(
whoami), the same name across a runner’s conversations so its record accrues to one voter. - inbound_
floor - The unscoped inbound row a persona is owed: the seat weighs it at 1, everywhere. None when the seat and the persona are the same name (a row cannot weigh itself).
- is_
decision - Whether an issue asks for a decision: a
decisiontag, adecisiontype, or a body line openingOptions:. - is_
gate_ event - Whether a hook event is a gate: a tool call the runner holds until the hook answers.
- is_
ljos_ issue - Whether an issue is ljos’s own work: an id in the
ljosproject, a tracker project namedljos, or anljosorljos-*tag. The named principles and the arena rubric are ljos’s product law, so only such an issue’s brief carries them. - is_
regex_ pattern - Whether a rule’s pattern is a regular expression rather than a glob:
it says so with
re:, or it carries a class (\b,\s,\d,\w) or an alternation group, which a glob would read as literal text and never match. - is_
seat_ path - Whether a path names one of
SEAT_PATHS; a backup beside a binary (ljos.bak) is not the binary. - is_
version_ tag - Whether a tag names a release: a version,
v1.2or0.3.0, not a bookmark such ascampaign-sent. - island_
entities - The domains an issue’s island speaks to: the entities of the memories
its title activates, most frequent first, eight at most. What
learnscopes its rows to. - island_
reading - What an activation number is, and whether this call rewrote weights.
- issue_
direct_ words - The words an issue’s title and tags give, apart from its island.
- issue_
options - The options an issue puts to a vote: an
Options: A, Bline split on commas, or the- abullets under a bareOptions:line. - issue_
words - The words an issue speaks in: its title’s topic words, its tags, and the entities of the island its title activates when that island is not weak.
- jev_
ballot - Jev’s answer for a persona on an issue, not yet cast: its brief, less the closing instructions a subagent needs, is the state, and the issue’s options are the choices.
- jev_
panel_ stands - Whether a panel’s Jev answers may stand as its ballots: every seated persona sure, and all on one option. Personas answered by one model are correlated voters, so their agreement settles only a question it could not change; a split or an unsure seat goes to subagents.
- jev_
vote - One persona’s ballot through Jev: cast when Jev is sure, noted and left for a subagent when it is not.
- join
- judge_
due_ page ljos due --judge: the review judges weigh each claim on the page against the newer claims about it. One that holds atjev::REVIEW_HOLDS_ATis named forljos graded. One at or underjev::REVIEW_FAILS_ATis named for the agent to supersede or withdraw, and stays due. The rest stay due. A judge does not grade and does not lapse.- judge_
score_ report ljos judge-score: the judge log joined with outcome atoms. A pack that does not answer is named, and the log is still scored.- judge_
trust_ row - The trust row a judge starts with.
learnrewrites rows whosetois this voter once the judge is on a ballot beside another voter. - judge_
voter - The voter a judge’s ballot is recorded as. Not the persona.
- keep_
hook_ answer - Keep the answer the first call printed, for
replay_hook_answer. Readable by its owner only, and written whole before it can be read. - keep_
rules - Write the rules when they changed, through a temporary file so a gate reading at the same time sees the old rules or the new, never half.
- kept_
rules - The rules last kept at
path; none when there is no file or it does not parse. - last_
user_ text - The text of the person’s last message in a transcript of JSON lines,
read without knowing its schema: the last entry that names a user turn
(a
type,role,sourceorstepTypevalue containinguser), and in it the longest string undertext,content,prompt,message,userMessageoruserResponse. - latest_
note_ value - The rest of the latest logbook note that opens with
prefix, by timestamp, else the first one listed when none is dated. An empty rest is a drop: the answer isNone, and no earlier note is walked back to. - learn
- The rows every voter holds on every other after
outcomeis known: a voter whose ballot was refuted shrinks bybeta, floored atTRUST_FLOOR; a missing row starts at one. Complete, so the settle sees the whole graph. - learn_
about learnwriting rows scoped toabout: the domains the issue’s island speaks to, so that being wrong about one topic does not cost a voter its standing on every other. An emptyaboutis the unscoped rule.- learn_
anchors - The personas after an outcome: one whose ballot the outcome refuted
moves its anchor toward one by
1 - betaof the gap, so a persona that keeps being wrong listens more; a vindicated one keeps its anchor. The personas that voted are the only ones touched. Acemoglu, Como, Fagnani and Ozdaglar (doi:10.1287/moor.1120.0570) show what a stubborn wrong voter does to a pool; this is the seat’s remedy. - learn_
and_ write - Learn from
issue’soutcomeby the record and write what it moved: the trust rows, the personas, and the outcome itself. - learn_
reading - What a learn did. The rows are the next settle’s weights. This call is not a settle.
The scores, when any ballot stated a probability, are not trust weights.
calibrationis each voter’s record after this outcome is folded in. - learn_
record - Learn from an outcome by the record: each voter’s hits and misses so
far, this outcome added, give its accuracy shrunk toward the panel’s
(
shrunk_accuracy), and the rows are the log odds of that scaled to the best voter at one (calibration_weights). Measured against Hedge’s multiplicative update on voters of known accuracy, the record reaches the batch calibration and Hedge does not: a voter is weighed by what it got right, not by how many times it has been punished. One outcome cannot tell voters apart, so the first leaves them equal. Rows are complete over the voters and scoped toabout. - learn_
shared learn_aboutwith a fixed share of recovery: after the Hedge step every row moves toward one byshareof the gap, so a voter refuted long ago is not held down forever and the best voter can change (Herbster and Warmuth, doi:10.1023/A:1007424614876). Zero is plain Hedge; the seat’s default.- lesson_
is_ the_ persons - Whether a lesson given to
ljos finishis the person’s own: no agent runner above the process and a terminal on its input. Such a lesson is written at once; one an agent gives waits forljos accept. - limit_
notice - The id of the runner’s notice that its usage limit is reached, when the
latest user-side line of the transcript is one: the line’s
uuid, else its position. A runner announces the limit as text in the conversation, not as an event, so the transcript is where the hook sees it. - limit_
stop - At a usage limit the turn is held once, so what the conversation knows
reaches the stores before the runner cuts it off: a note on the held
issue saying what is done and what is left, an issue per item left, and
the lessons.
Nonewhen no limit was announced, or this notice was already answered. - listener_
uid_ in - [
listener_uid] over the text of the tables. A row issl local remote state ... uid ...; the local address ends in:PORTin hex, and state0Ais a listening socket. - local_
when local_when_inin this machine’s zone.- local_
when_ in - An RFC 3339 time in the given zone as
2026-10-12 09:00 -05:00, or the text unchanged when it does not parse. - log_
bypass - Write a row when the guard is passed over on a command it would have
stopped:
approvalwhen a one-use grant let an asked command run, andswitchwhen a setting such asLJOS_ASK_PACK=offturned off the rule that would have asked.howsays which grant or setting. A row that cannot be written is skipped; the command’s verdict does not wait on it. - log_
recall - Append one line,
ts seat verb what, to the state dir’s recall.log, so an audit can tell when a seat last asked its memory. Best effort: a log that cannot be written never fails the call. - log_
score - Logarithmic score of the probability assigned to the event that occurred.
- looks_
pasted - Whether a prompt carries pasted material: a pasted block, a code fence, terminal or log output, or many lines. Jev’s injection question is asked of every prompt, and a plain request is not pasted text addressing the agent.
- mark_
seen - mcp_
forward - One tool call answered by a fresh
ljos-mcp: startprogramwithmarkerset, send it the client’s initialize (init, or a plain one), the initialized notification andtools/callwithparams, and return the JSON-RPC answer to the call,resultorerror. - mean_
brier - Mean Brier score over the forecasts that stated a probability, and how
many those were.
Nonewhen nobody stated one. - mean_
log - Mean logarithmic score over the forecasts that stated a probability, how many of those scores were finite, and how many were unbounded.
- merge_
shipped - One runner’s table with the shipped shape under it, field by field: a key the file sets wins, a key it leaves out comes from the shape. A shape added to ljos after the first onboard reaches the runner.
- murphy
- Reliability, resolution, and uncertainty.
Noneuntil the voter has two forecasts: one forecast makes the partition the score itself. - named_
hook_ spec - The seat’s hooks for a runner whose hooks file maps a hook name to its events: the tool gate on shell commands, the prompt and tool-result notes on each model call, and the stop audit. The payload names no event, so each command is told its own.
- named_
outcome - The outcome as the ballots spell it, and a line for the reading when it
is on no ballot. An outcome that matches a ballot or one of the issue’s
options, ignoring case, takes that spelling. Any other answer scores
every voter a miss, which a typo would do as well, so it is refused
unless
new_optionsays the person’s answer was none of them: a tie broken with a third answer is recorded and calibrated like any other. - needs_
of - The accessions a satchel’s description says it needs.
- node_
for - The claimdag node standing for
issue, minted with the tracker id as its summary when the graph does not hold it yet. - normalize_
tracker_ env - Expand a leading
~inISSUE_ROOTandVISSUE_ROOTonce, at start. environment.d and MCPenvblocks pass~/...through unexpanded; a tracker crate that predates the fix then resolves it against the working directory, and every childvissueinherits the same relative root. - not_
assignee_ message - Refusal when this shell’s holder is not the name that holds the node:
names the holder from the hold record, else from the tracker, and the
--assigneethat finishes under it. A shell runner without a session id gets a new holder per shell, which is the usual cause. - now_utc
- Now, RFC 3339 UTC to the second, the stamp the pack writes.
- observe
- Add one stated probability to a voter’s record.
- occupancy_
assignee - Occupancy is always
{name}:{issue}. One live claim per name is what made two conversations unseat each other; the issue is already exclusive. Already-scoped names (they contain:) are left alone. - on_path
- onboard
- Register the server and install the skill for one runner named in the
runners file.
jsonregisters nothing and returns the entry to paste.dryreports without writing. - onboard_
detected - Onboard every runner
detect_runnersfinds, from the shapes ljos ships and the onesharnesses.tomlnames. Each runner’s steps follow a line naming it, a runner that fails is said and the rest go on, and a step two runners share (the pack, the host key) is said once. - onboard_
from - onboard_
in - onboard_
to - oom_
recent - Whether the kernel’s OOM count says a kill is recent, and what to keep:
the count and when it last rose. The counter is cumulative since boot,
so a kill counts as recent when the count rose since the last look, or
rose within
OOM_RECENT_S; a first look that finds kills cannot date them and counts them as recent. The record lives in the runtime directory, which a reboot clears with the counter. - open_
blockers - The blockers of an issue that are still open, as
id (STATE), read from the tracker. Empty when the issue is workable, or when the tracker does not answer (the sitting’s doctor already said so). - open_
decision_ panel - File a yes-or-no decision for
promptwhen nothing open is already one, sit it, write the briefs, and start one headless member per persona. The opener’s own log islog. - options_
of_ issue - The options an issue’s body puts to a vote, or none when the tracker does not answer.
- other_
seat - The seat that wrote a hit, when it was another than this one. Many seats share a pack; a reader is told whose lesson it is reading only when that is news.
- outcome_
text - The sentence an outcome is stored under, clipped to 80 characters of issue and 200 of choice, inside the pack’s text cap.
- outcomes_
of - The latest outcome per issue among the pack’s atoms.
- pack
- pack_
last_ write_ ts - The pack’s last write, RFC 3339, for a HUD watch.
Nonewhen the status has no stamp yet. - pack_
token_ row - The
pack tokenrow ofljos doctor.hassays whether a token was found,from_envwhetherPACKSET_TOKENcarried it,pathis where the token file is looked for, andrefusedwhether the writer answered 401 (Nonewhen it was not asked or did not answer). - packset_
consolidate - The rule a write applies on arrival, run over what the pack already
holds. Without
applynothing is written; the pairs are reported. - packset_
forget - Retire one atom from the workspace the cwd resolves to, optionally naming the deed that withdrew it.
- packset_
hubs - The claims the pack’s link graph turns on, highest first: what matters in this seat’s memory by its own connections, before any query.
- packset_
island - The memories a task activates: the pack’s island around the cue. With
fire, the strongest of them fire together and their links gain weight. - packset_
island_ as packset_islandthrough a persona’s lens: the spread follows the weights that persona fired, and a fire writes its weights and not the seat’s. The seat’s own island is the one with no lens.- packset_
search - packset_
search_ as_ of packset_search_optsasked of the pack as it stood atas_of(RFC 3339; a date alone reads as its start): only memories live then answer, what was withdrawn since included and what was learnt since left out.Noneis now. This is the question “what did the seat know when it decided that”, and the pack keeps every record so it can be asked.- packset_
search_ opts packset_searchwith a limit and the cross-encoder rerank: the writer scores the top hits against the query with its reranker, which costs a model call and buys precision. For a brief or a person reading, not for the hook. A claim the fused ranking and the encoder both placed first stays at the head; the reranker reorders the rest.- packset_
write - packset_
write_ as packset_writeas a persona: the claim carries the persona’s entity, so what a persona learned comes back to it first in its next brief and stays in the seat’s one pack. A persona accumulates its own lessons the way a reviewer does; the seat still reads them all.- packset_
write_ scoped packset_writefor a lesson learned on an issue: it carries anissue:IDentity naming where it was learned, and ascope:NAMEentity when one is given, so the claim travels with that scope’s log rather than the machine’s default.- panel
- panel_
concurrency - Maximum concurrent panel member processes to avoid CPU starvation, memory pressure, and model rate limit exhaustion. Unset defaults to available parallelism clamped to [1, 4]. Set to 0 to disable concurrency limits.
- panel_
jev - A panel through Jev: every seated persona’s ballot is asked of Jev
first. When all are sure and agree (
jev_panel_stands) they are cast; otherwise none is, and every seat gets a brief inoutfor a subagent, with Jev’s lean noted on the issue. - panel_
member_ argv - The argv of one headless panel member, from the
headlesstemplate of the runner the panel names (LJOS_PANEL_RUNNER) or else of the seat’s own runner. A panel opened under Claude Code runs Claude; a runner with no template runsgrokwith the seat’s fallback flags.LJOS_MEMBER_BINis the test stand-in. - panel_
personas - The personas a panel on
issueseats, byseat_panel. - panel_
round_ number - N in a title that opens
panel rN. - panel_
steps - The two readings beside a settle, when the pack holds what they need:
the surprisingly popular answer when two or more voters forecast the
others (
predict), and the EigenTrust standing of the voters when trust rows exist. Both are the model crate’s verbs. - panel_
verdict - The exit rule on one round’s ballots. A pass needs every panel persona’s
ballot, no
revisefrom a veto persona, and apassshare at or above the quorum that is not a tie. Everything else revises; nothing waits. - panel_
voters - One effective voter per model. An all-one-model panel is one voter.
- parse_
every 7d,24h,2w,30m, or bare seconds.- parse_
playbook_ name - Refuse a name that is not in
PLAYBOOK_NAMES. - parse_
semver - First
N.N.Nin a--versionline. - parse_
workflow_ name - Refuse a name that is not a workflow.
- pasted_
or_ quoted - Whether a prompt is pasted or quoted, so a phrase match inside it is not filed as a correction. A markdown quote, or a double-quoted span, refuses the whole prompt.
- peek_
hook_ context - The held pack text, left in place.
- per_
user_ pack_ port - Where a seat’s writer listens when the default port is another user’s: one port per user id, from 18761 up.
- persist_
tracker - Commit the tracker file that holds
issueand push it, when the tracker is a git checkout. A write that stays in one working tree is lost to every other host and to a rebuilt one; closures made on one laptop and never committed were how tickets came back open. Only that file is committed (--only), so another seat’s staged work is left alone. Never an error: the verb already happened, and the line says what did not. An ignored file is named with its ignore rule. It is not a clean tree and it is not force-added.LJOS_TRACKER_GIT=offskips it;=commitcommits without pushing. - persist_
tracker_ file persist_trackerfor a file already known: an issue filed into a projected board’s inbox lives there until the fold, not in the corpus.- persona_
agent - A persona as a runner’s agent definition: Markdown under YAML front
matter, the shape Claude Code and Grok Build both read. Grok spawns it
with
spawn_subagentandsubagent_typeljos-NAME;capabilityMode: executelets it read and run commands but gives it no edit tool. The persona briefs itself, casts one ballot before reading the others, notes why, and stops. Returns the file name and the text. - persona_
atom - The
personaatom for the pack: kindpersona, the view as text. - persona_
ballot_ task - What a persona’s runner is asked to do with its ballot: the brief, then how the verdict reaches the seat, under the persona’s own name.
- persona_
check_ report - What
ljos persona NAMEwould do with the pack as it stands, written as lines a person reads.atomsare the pack’s persona atoms;seatandholderare this conversation’s. Nothing is written. - persona_
entity - The entity a persona’s own claims carry, so a brief can find them.
- persona_
owner - Who defined a persona, from its atom: seat, holder and the date it was
defined.
Noneon a persona written before personas had owners. - persona_
set - The set a persona’s own conclusions live in:
persona-<name>, in the pack’s set alphabet. A set is its own tree for the duplicate and replacement rules, so a persona’s lesson never closes the seat’s or another persona’s, and the seat still reads them all. - personas_
from_ pack - The personas in the seat’s pack.
- personas_
listing ljos personas: one line per live persona, with the seat that defined it and when.- personas_
of - The live personas: the latest
personaatom per name. - personas_
speaking_ to - pick_
pack_ port - The port to point the pack client at, or
Noneto leave the default. A port the person named is used as named, unless another user’s process listens on it: that is refused. With nothing named, a writer this user already runs on the per-user port is used; the default port is used when it is free or this user’s; when another user’s writer holds it, the seat moves to the per-user port, wherepackset ensurestarts its own. - pin_
encoder_ leader - Keep
leaderat the front whenrankisDENSE_ALONE_RANK: the fused ranking and the encoder named the same claim first. The list stays the same length. Any other rank leaves the cross-encoder’s order as it stands. - playbook_
among - Pack latest for
name, else the shipped seed. Unknown names are refused even when the pack holds them. - playbook_
atom - The
playbookatom: kindplaybook, the recipe as text. - playbook_
from_ title - A title-bound name (
TITLE_PLAYBOOK_NAMES) the issue title names, elsesit. Longer names win (company-panelbefore a straysittoken);sittingis notsit. - playbook_
name_ from_ issue - The playbook name bound on an issue JSON: the latest logbook note that
opens with
PLAYBOOK_NOTE_PREFIX. Empty rest means this sitting dropped it; do not walk back to an earlier bind. - playbook_
named - Look up one playbook by name: pack latest first, shipped seed only when the pack has no live atom of that name.
- playbook_
named_ on - The playbook name bound on a tracker issue, if any.
- playbook_
opening - The
== playbooksection of a sitting: bind when a name is given, else reprint the sticky body, else say none is bound. - playbooks_
from_ pack - The roster: pack atoms, with the six shipped filled in when missing.
- playbooks_
of - The live playbooks: the latest
playbookatom per name. - policy_
line - policy_
with_ memory - The argv line, then what the pack knows that bears on it: the memory a policy layer injects beside its verdict. The line prints even when the pack is down; the memory is the part that may be empty.
- policyd_
bin POLICYD_BIN, elseljos-policydon PATH.- policyd_
reason - A refusal from
ljos-policydin words a person and an agent can act on: the check’s token first, so logs and scripts still find it, then what the command would have done and what to run instead. A token this build does not know is passed through as it came. - policyd_
required - Operator switch: missing TCB is a deny. Unset, absence stays open.
- post_
claim - POST one explicit claim. Callers pass Remember/Prefer only.
- post_
hook_ stdout - Stdout for a tool-result hook, and the ids to mark now that the note
was delivered. A runner that holds the prompt note takes whatever note
is held. The file goes with that take, so a later tool in the same turn
finds nothing and
Stophas nothing to say. Skipping a new hold because an earlier note was echoed leaves that hold forStop, andStopadditionalContext starts another round. A turn with no tool leaves the hold untilStoptakes it. A camel-case runner does not print that take. - prediction_
text - The sentence a forecast is stored under: the option the agent expects
most, with its share when the forecast is a distribution, clipped so the
claim fits the pack’s text cap. The whole forecast rides in
expect. - predictions_
json - Forecasts as
ljos-consensus surprising --predictionstakes them. - predictions_
of - The latest forecast per agent on an issue.
- preference_
rules - The rules a preference carries: one per
--denyand--askpattern, each with the preference as its reason, so the person who is stopped reads the words they wrote. Checked before anything is written, so a bad pattern leaves neither the preference nor a rule behind. - preferences_
enforced - How the stored preferences stand against the rules: how many a rule
enforces (a rule whose reason is the preference, as
ljos prefer --denyand--askwrite), how many more name a command they forbid and could carry one, and how many there are. - preferences_
line - The doctor’s preferences line from
preferences_enforced. - preferences_
of - The live preferences in a set of atoms, as (id, text).
- prompt_
call - Stdin as the person’s prompt. Plain text is the prompt. JSON keeps the
runner’s shape and is read as
UserPromptSubmit, so a shell agent does not have to wrap a prompt as a tool call. - prompt_
hook_ stdout - Stdout for a prompt hook. A camel-case runner discards that stdout, so the note is held and the stdout is empty. Any other runner is handed the note directly.
- prose_
warning_ line - The line a write prints when the pack stored the person’s words over a
prose warning: what the gate said, and that shorter sentences are
recalled better.
Nonewhen the pack gave no warning. - push_
call - The first
git pushin a line, followingcd DIRandgit -C DIRbefore it. - push_
cite_ reading - What the push gate makes of an issue, the first lines
ljos consensusprints: whether a push citing it stands forpusher, on which seat ballots (seats_decide), then what the ballots’ confidence does. The JSON beside the words carries the same answer. - push_
tier - What the gate makes of a push, from its arguments and the facts about its remote. Pure, so the ladder is tested without a repository.
- push_
tier_ at - The tier of a push read from the repository it runs in: the remote it
names (else the branch’s upstream remote, else
origin) and whether any tag exists there. - read_
campaign - Read an eb-stack campaign state (
campaign.json). - readings_
of - The live readings among
atoms, one a habit, by name. - rearm_
after_ compaction - A conversation about to be compacted keeps the issue it holds and loses
what the seat handed it. Every injected memory leaves the seen list, and
so does the mark that the held note was echoed. Other named keys stay,
the nudges and panel marks among them. When two or more memories were
injected, up to eight of them fire together, as at a session’s end. When
the conversation holds an issue, the next delivery opens with
compaction_note. Returns how many fired. - receive
- Check a satchel that arrived: manifest, deed receipts, signature, and what
the atoms hold; with
import, POST the atoms into this seat’s pack. - record_
due_ shown - Put the rows a due page showed up for grading. A page shared by the CLI and every server of the login lives in the runtime directory.
- records_
from_ atoms - The latest record per voter among the trust atoms that carry one.
- redirect_
seat_ verb - A deny on a bare tracker verb names the exact seat command to run in
its place, so the agent runs it instead of guessing at a placeholder.
vissue vote IDwith no ballot reads the tally, which writes nothing and is not refused. - refresh_
agents - Rewrite the agent definitions after a persona changed, in every agents
directory that harnesses.toml names and that exists on disk. A
directory the file does not name, such as the Grok one a first
onboardfills from the shipped shape, is left toonboardorljos agents. - refuse_
failed_ gate - Write the gate’s refusal for
errorand exit withGATE_REFUSED_EXIT, unless this process is not answering a gate or has already answered. Returns when there is nothing to refuse. - release
- Hand a session node back before it is terminal: ready again, assignee cleared, generation moved.
- remember_
findings - Write one lesson per finding a person or a seat resolved (every
finding with
all), cite the state file on the issue when one is named, and say what happened to each. - remember_
horizon - The horizon
ljos rememberwrites when neither--transientnor--standingis given. The person typing it is the review, so the lesson takes effect at once, likepreferandrule. Run under an agent runner it is the agent’s lesson: an episode. The hook shows it when a prompt bears on it, and a review promotes it to standing. - remember_
note - The line
ljos rememberprints after the write, saying when the hook shows the lesson. - remote_
slug owner/repofrom a remote URL:git@host:owner/repo.git,https://host/owner/repo,ssh://git@host/owner/repo.- replay_
hook_ answer - The first call’s answer, once it is written, waiting up to
wait.Nonewhen it never comes: the copy then answers with nothing, as a copy on any other runner does, and the first call’s answer stands. - replays_
its_ copy - Whether a copy of this call gets the first call’s answer again rather
than nothing. Codex (the runner whose stdin carries
turn_id) delivers every hook event twice, and how it joins the two answers is not written down, so its copy of a prompt or a tool result says what the first said. A runner that joins two registrations’ answers, such as Cursor, would show the memories twice, so its copy stays silent. - repo_
entity - The entity a repository’s facts carry in the pack.
- repo_
fact_ text - The sentence a repository’s facts are remembered as.
- repo_
facts_ in - The latest facts the pack holds about a repository, from the atoms.
- require_
ballots - Refuse a settle on an issue that holds no ballots. The model reads an empty ballot as settled with no options, which a caller takes for agreement.
- require_
deed - Whether
accessionis in the deed store.deedar currenthas to accept it. A dangling id is refused before a tracker cite. - resolve_
assignee - Resolve an
--assignee/ MCP field for a claim. Empty, a pronoun (seat,you,agent), or this process naming itself is omitted: occupancy is the conversation’s holder, not the product name on the box. A named worker is taken as given. - resolve_
short_ id - The full id a short one names:
inputitself when it is a whole id or names none ofids, the one id it starts when it starts exactly one, and an error naming them when it starts several. Ids under six characters are taken as typed. - resolve_
sitting_ playbook - Which playbook a sitting copies: an explicit name, else the name already
bound on the issue (sticky until finish/release), else a closed-set
token in the title, else
sit. - retire_
persona ljos persona NAME --retire: withdraw every atom of the persona, so it leaves the roster and casts no more ballots. The pack keeps that it was held and withdrawn. Only the conversation that defined it may retire it;take_over(--replace) retires one another seat or holder defined.- retire_
seat - Drop the records
announce_seatwrote, when the server ends. - review_
mark - What
due --judgesays about a hold probability. A hold is a report. The seat’s ownljos gradedis what marks the claim recalled. - review_
summary - One line on the state of the review clock: how many are due, how many
are scheduled, and when the next one comes up. An empty
duewith a next date is a clock that is running; an emptyduewith nothing scheduled is a seat that has remembered nothing. - rows_
about - The rows that apply to an issue about
topic: every unscoped row, and every scoped row one of whose domains is among the topic’s words. - rule_
matches - A rule’s pattern over one command: a regular expression anchored at the command’s start, else a glob. A pattern that does not compile matches nothing.
- ruled_
verdict - The verdict a shell line gets before it runs: the pack’s own rules
first (
verdict_for), then the built-in ask pack (ask_pack::ask_pack_verdict), so a person’sdenyoraskon the same line wins. - rules_
for_ gate - The rules a gate judges by. A read from the pack is kept on disk, and when the pack is down, slow or switched off the last rules read stand: a deny the person wrote does not lapse because a server did.
- rules_
from_ pack - The rules in the seat’s pack.
- rules_
of - The live rules in a set of atoms.
- run
- run_as
runwithVISSUE_AGENTset toidentity, so a ballot or a claim is recorded under a persona’s name rather than the seat’s.- run_
captured - run_
captured_ as run_capturedwithVISSUE_AGENTset toidentity, for a tracker write whose output the caller has to hand on.Noneleaves the environment as it is.- run_fed
- Run a habitat’s verb with
inputon stdin. - runner_
pid - The process that started this one. For
ljos-mcpthat is the runner, and the runner is also above every shell it opens. - runs_
tests - A command line that runs a test suite. Exact, so it is code, not a judgment.
- runtime_
fallback - The runtime directory when
XDG_RUNTIME_DIRis unset:ljos-UIDunder the temporary directory, so two users on one host never read each other’s holds, seat records or approvals. Aljos-UIDthat is a symlink, or that another user made first, is not used; the seat then keeps its records under~/.cache/ljos/run. - search_
reading - What a search score is. Empty and nonempty are different facts from a writer that did not answer.
- search_
with_ signals - The fused search with what the encoder said about each hit. A pack
that sends
dense_rankandcosineon its hits fills them in; the pack client does not read those fields yet, so the request is made here. Any failure falls back to the client’s search with no signals. - search_
within - The reranked search, or an error once
mshas passed. The request runs on its own thread: the pack client gives a reranked search at least a minute whateverPACKSET_TIMEOUT_MSsays, and a hook cannot wait that long. A thread left waiting ends with the hook’s process. - seat_
command_ for - The exact seat command a denied
vissue VERB ARGSline should have been, its arguments carried over:vissue claim demo-6c3zisljos sitting demo-6c3z.Nonefor a line with no such verb. - seat_
for_ thread - The seat for a thread a runner named on a call. The holder is the one a shell of that thread already took, found by the thread’s record; else the thread id whole, recorded so the thread’s shells find it.
- seat_
guard - The seat’s own guard, before any rule: a shell command that writes one
of
SEAT_PATHS(anything but a reader, or a redirect into it), or a file tool aimed at one, is refused. A path is a word of its own: a quoted sentence that names one is data.ljos onboardandljositself write them, run by the person. - seat_
name - The name this seat remembers, votes and earns trust under.
- seat_
panel - The personas a panel seats for an issue whose title and tags give
directand whose island givesisland. A persona whose domain is a title word or tag sits. One a domain matches only through the island must also share a content word of the title in its own view: an island carries the pack’s neighbours, and alone it seated physics reviewers on a filesystem capability question. With no domain match, the view fallback reads the title and tags only and wants two of their words in a view, not one everyday word such as “change”. Nobody is a correct answer: the caller says so and names how to write a persona. - seat_
slug - A name as a seat: lower case, runs of letters and digits joined by one
hyphen.
Acme CLI,acme-cliandacme_cli/1.2are one seat. - seat_
stop_ reason - Why a turn is held for one more round. A decision that has not been
sat is held even when an issue is already open. With
tracks_workon, a conversation that holds no issue and used tools without touching the seat is held too. A subagent is left to its brief. The second stop of the same turn is not held.Nonelets the turn end. - seats_
decide - The option an issue’s seat ballots decide for a push cite. Only seat
ballots count: persona ballots and Jev ballots (
judge:MODEL) are left out before anything is weighed, so they can neither pass a push nor block one. The seats that voted have to agree, and at least one of them has to be a seat other thanpusher, the seat asking to push: a seat that votes alone on its own issue has not been checked by anyone. Every answer names the seat ballots counted and how many were left out. - seen_
ids - server_
entry - The MCP server entry any runner that reads JSON accepts.
- session_
end - When a session ends, the memories injected during it fire together:
they served one sitting, so their links gain weight and the next
sitting like it walks a heavier path (Hebb, through the pack’s
fire). The seen file goes with the session. Returns how many fired; nothing to fire, or no pack, is zero and not an error, since a hook must not stop a runner from ending. - session_
start_ line - The line a new session hears first: that ljos is on, how many memories this workspace holds and how many are due, whether the command guard runs, and up to three of the workspace’s preferences. A pack that does not answer within 400 ms is named with its fix.
- session_
start_ line_ from session_start_linefrom what it read: the workspace’s atoms, orNonewhen the pack did not answer, and whetherljos-policydis on the PATH.- session_
tag - A conversation tag from a stamped id: ten base-36 digits of FNV-1a over the whole id. A prefix of the id would not do: a UUID v7 opens with its timestamp, so two conversations started in one window share it.
- settle_
anchors - The susceptibilities a settle runs under, by voter. Empty when no
persona voted, so a ballot of seats alone stays plain DeGroot. When
one did, every voter that is not a persona, the seat included, takes
DEFAULT_ANCHOR, and each persona its own anchor but never one below it. Under Friedkin-Johnsen with equal trust the share of its ballot a voter keeps is its weight in the settle, so a persona written at 0 would count as two seats and tie a 2-to-1 vote on its own. A persona can move more than a seat does, never less. Trust rows still weigh voters as they say. - settle_
discount - The correlation discount for the next settle, from the issues the
pack names an outcome for, with each one’s ballots from the tracker.
None below
MIN_NAMED_OUTCOMES, when the model crate is absent, or when no pair of voters is shown to err together. - settle_
flags_ for - The model flags an issue’s tags ask for, beside the rows and anchors.
The kind of work sets the dynamics:
broadruns bounded confidence. - settle_
in_ words - The settle’s JSON in words: the shares, who leads and by how much,
each voter’s influence, and what each anchor did.
Nonewhen the text is not a settle’s JSON. - shared_
holder_ note - The note a resumed sitting prints when the holder is shared and the hold was taken from another process that still runs: that process may be another conversation of the same runner.
- shell_
exit - Exit status for a shell agent.
fail_on_denyleaves the usual exit of 0 alone, and otherwise returns 1 whenanswer_deniesis true. - shipped_
differences - Where the runners file parts from the shipped shapes: one line per
key the file sets to something other than the shape, as
runner.key: yours X, shipped Y. A copy an older onboard wrote shows here when the shape has moved on. - shipped_
playbooks - The six shipped playbooks, bodies in full, model roles as spawn hints.
- shrunk_
accuracy - Each voter’s accuracy from its record, shrunk toward the panel’s pooled
accuracy by empirical Bayes (Efron and Morris,
doi:10.1080/01621459.1975.10479864). The prior weakens as the records
spread beyond binomial noise: the pooled variance times
N / (N - 1), divided by each record’s length and averaged, whereNcounts the ballots the records hold. When the records differ no more than noise would make them, as on a panel’s first outcome, every voter gets the pooled accuracy. A long record keeps the differences it shows.correlation_historyin the consensus crate measures the gain: plug-in log odds trail a count by 6.4 points on seven similar voters at three outcomes, and shrunk ones by 1.2. - sitting
- Open a sitting on an issue, in the protocol’s order, and stop at the first habitat that does not answer: doctor, cards, the review clock, the island the issue’s title activates, the working set, the timeline, the claim. One verb, so the loop that makes the seat a memory runs every time and not only when somebody remembers to run it.
- sitting_
due_ report - The review clock as a sitting prints it: a short prefix, then the summary.
- sitting_
gated sitting, and withanywaythe claim goes through even when the issue’s blockers are open. Without it a blocked issue is refused before anything is claimed: the tracker’s graph says what is workable, and a seat that sits on blocked work sits on nothing it can finish.playbooknames the recipe copied into== playbookbefore recall; absent, a name already bound, else a closed-set token in the title, elsesit. A workflow parent takes its workflow’s recipe. Sitting always binds one of the closed set before claim. Finish and release drop the sticky name; the workflow on a parent stays.- sitting_
warn_ line - The line a sitting prints under its doctor when a
warnrow failed: what the row means for the work that follows. - skill_
text - The skill file a harness loads: front matter, then the protocol.
- stage_
of - A child’s stage: its
stage-*tag, else its title’s opening word (design:,impl:orfix:,review:,panel rN), so a child filed by hand withljos file "impl: ..."counts too. - standing_
in_ words - The reputation step’s JSON in words, for the voters on this issue only.
EigenTrust runs over every trust row about the topic, so its standing
names personas and seats that never voted here; listing them beside
the settle read as influence they did not have. Those are counted, not
named.
Nonewhen the text is not reputation JSON. - start_
decision_ panel - Fork the panel opener and return at once. The opener files or reuses the
decision, writes the briefs, and starts one headless member per persona.
A second call for the same prompt in this session does not fork again.
A panel member (
LJOS_PANEL_CHILD) does not fork one of its own. - statusline
- The seat’s line for a runner’s status bar, Grok Build’s
[ui.status_line]or Claude Code’sstatusLine: the seat, the issue this conversation holds, and how many claims are due for review.inputis the runner’s status JSON. Only itssession_idis read, to keep one cached line a session. A pack that does not answer within 300 ms shows aspack down. - stop_
audit - Why an agent about to stop is held for one more round, from a Jev
audit of the turn;
Nonelets it stop. Only a runner’s first attempt is audited, only with Jev on, and only a final message long enough to claim anything. - stop_
context_ for_ runner - What
Stopprints. A camel-case runner treatsadditionalContextas another round, so a held note is not a reason to continue. An audit block is a separate answer and does not come through here. - stop_
hook_ stdout - Stdout for
Stop, and the ids to mark now that the note is delivered. A continuation (stop_active) says nothing: the firstStopalready delivered the note. - stop_
turn_ from_ transcript - Read a JSONL transcript. One shape stores
message.contentblocks (text,tool_use,tool_result). The other storescontentand a top-leveltool_callslist ofnameandarguments. - store_
correction - File a correction as a proposal. The hook does not write a preference. Once per session per cue. A pack that does not answer is left for the note.
- subagent_
brief - What a subagent is told on its first tool result: the issue its parent holds and how its result joins it. A subagent that is not told the issue cannot cast a ballot on it, and a sitting of its own would contend with its parent’s.
- subagent_
stop_ reason - The stop gate for a subagent: once, when its parent holds an issue, the reason the subagent is kept working one more round. A gate that already held it this turn, or a parent holding nothing, lets it stop.
- take_
hook_ context - Take the held pack text once. Empty if nothing was held.
- take_
hook_ note - Take the held note and its ids, and remove both files.
- tcb_
answer - What
bin check -- argvsays withindeadline, as a verdict line. - tcb_
check - One line from
ljos-policyd check -- argv. None only when there is no binary to ask: absence is not a deny unlessPOLICYD_REQUIREDsays so. A binary that is there and fails to start, crashes, hangs pastPOLICYD_DEADLINE, or prints something that is not a verdict gets a deny, because the check it was meant to make did not happen. - tcb_
verdict - The TCB’s verdict on a shell line:
ljos-policydjudges each pipeline the line runs, in shell words, and the first deny stands. A heredoc body is data the shell feeds a command, and it is not sent as argv. With the TCB required and absent, the line is refused. - timeline
- The issue’s timeline, the three stores read as one dated list, oldest first: the tracker’s logbook (creation, state changes, claims, notes), the deeds the issue cites with the time each was produced, and the memories the issue’s title activates with the time each was written. The reader gets time as data, not as stamps to do arithmetic on: each line carries its age and the gap since the line before it, and a later line supersedes an earlier one on the same matter.
- timeline_
events - The issue’s timeline as dated rows. The HUD paints this; it does not
parse
ljos timelinestdout. Tracker rows come fromvissue_core::agent::show_json. Deed rows still shelldeedar evidence, a named gap (deedar::Store::evidence). - tool_
error - The error a failed tool reported. The first field set wins, in this
order: Grok’s
error, Cursor’serror_message,tool_response.error,toolResult.errorandtool_response.stderr. - topic_
words - The words an issue is about, for scoping trust rows: its title, lower case, three letters or longer.
- touches_
seat - Whether a hook call’s cue is the seat’s own verbs or tools.
- tracker_
git_ drift - Commits the tracker checkout holds that origin does not. The count is always named. A live background push, or commits younger than the push wait, stay healthy: the sitting already waited that long. Older drift fails the row, and a leftover refused-push log names the reason.
- tracker_
show_ json - One issue as JSON from the tracker library. Same card as
vissue show --json. - tracker_
state - The tracker row from
vissue identity: version, the root and prefix it resolved, and where the root came from. A root that is relative, missing, or holds no prefix directory fails the row: tickets filed there are invisible to every other seat. When the root is a git checkout with an upstream, the row also names how many commits origin lacks. - tracks_
work - Whether the hooks ask a conversation that holds no issue to open one.
Off unless
LJOS_TRACK_WORK=on: a person who installed the seat for its memory and its guard did not ask for a tracker in every conversation. A conversation that sat on an issue is reminded either way. - trim_
num - A number as a person writes it: up to four decimals, no trailing zeros.
- trust_
atom - A
trustatom for one row.whyare deed accessions it cites. - trust_
from_ pack - The live trust rows in the seat’s pack.
- trust_
json - Rows as the consensus takes them:
[[from, to, weight], ...]. - trust_
rows - The live rows in a set of atoms: the latest
trustatom per(from, to). - uncite_
deed - Drop
accessionfrom the citations onticket. - under_
a_ runner - Whether this process runs under an agent runner: the environment carries a runner’s conversation, or a process above it is a runner, one whose server left a seat record or one the runners file names. Consent is the person’s, so the verbs that grant it refuse here.
- unstamp_
tracker - Drop the tracker’s claim on
issuewhenholderholds it, and keep the issue’s state. The claim graph frees a node on release and on completion; the tracker keptCLAIMED_BY, soljos claimslisted every finished sitting as still held. A claim another name took since is left alone and said so.Nonewhen the tracker does not know the issue or nobody holds it. - utc_at
secsafter the epoch, RFC 3339 UTC to the second, as the pack writes.- verdict_
for - The verdict the rules give a command line: the first
denywins, then the firstask, else none, each tried on the whole line and on every command in it. Returns the rule that fired. - voters_
of - The names on these ballot rows.
- warm_
command - The warm-up: one reranked search, run by
exein its own process group, so packsetd loads the encoder and the reranker off the hook’s clock, and a runner that kills the hook’s group does not stop it. - whoami
- Who is sitting, with nothing set. The seat:
LJOS_SEATor the tracker’sVISSUE_AGENTwhen someone set one; else what the MCP client said at initialize; else the process tree above this shell, which is the runner that opened it or the server that runner opened; else the login user, who is the seat when no program is. The holder is the seat and a short tag for any*_SESSION_IDthe runner stamped (holder_for_session), ahead of the process tag, so MCP sitting and CLI sitting of one conversation are one occupancy name; else the seat tagged with the conversation’s process. - with_
discount - The discount on the model crate’s settle; the tracker’s settle has none.
- withdraw_
prediction - Take back
agent’s forecasts on an issue: each prediction atom it wrote there is deleted, leaving the pack’s tombstone, so the settle reads the voter as forecasting nothing. Returns how many went. - work_id
- A claimdag id for a name: the name itself when it is already 32 hex, else FNV-1a 128 of it. One tracker id maps to one node; one assignee to one actor.
- work_
nudge - Count this conversation’s tool calls since it last touched the seat.
With no issue held and
tracks_workon, the firstPostToolUseof a stretch says to open one and sit; with it off, nothing is said. With an issue held, aPostToolUsethat reachesWORK_NUDGE_EVERYsays what to record. A subagent is left to its brief. - work_
nudge_ delivered - The reminder was printed. The next stretch starts at zero.
- workflow_
close_ refusal - Why
ljos finish PARENT --closeis refused on a workflow parent, or none when the latest round passed and no child is open. - workflow_
config - The workflow settings. Built-in defaults for now; the suite’s configuration layer plugs in here, so every caller already reads through it.
- workflow_
name_ from_ issue - The workflow an issue JSON carries: the latest
workflow:note when the logbook has one (an empty rest is a drop), else aworkflow-NAMEtag. A name that is not a workflow is none. - workflow_
on - The workflow an issue carries, read from the tracker.
- workflow_
round - File the next panel round, a decision child with options pass and revise. Refused while any child is open or once a round has passed.
- workflow_
sitting_ block - The
== workflowblock of a sitting: the status of the issue’s own workflow, or of its parent’s when the issue is a step of one. Empty when neither carries a workflow. - workflow_
start - Put
parentunder workflownameand file its design child. Running it again files nothing new. The parent gets no blocker edge, so it never turns BLOCKED; the close gate reads the children instead. - workflow_
status - The status of a workflow parent; none when it carries no workflow.
- workflow_
status_ of - The status from the parent’s children and the latest round’s ballots.
Open children come first, in the order design, implement, review, panel;
a closed latest round is read by
panel_verdict. - write_
outcome - POST the option
issueclosed on. The issue’s ballots and this outcome say which voters were right;settle_discountreads them. - write_
persona - POST one persona, defined by this seat. See
write_persona_as. - write_
persona_ as - POST one persona. A persona of the same name already in the pack is
superseded, so a rewrite moves the roster without leaving the old view
live. Each persona names the seat and holder that defined it and when.
Personas are shared by every seat on the pack, so redefining a name
someone else defined is refused unless the write is a replace. Every
persona is owed one unscoped inbound trust row;
--abouton a later trust row only adds weight, it does not replace that floor. - write_
playbook - POST one playbook. A playbook of the same name already in the pack is superseded, so a rewrite moves the recipe without leaving the old body live.
- write_
prediction - POST one forecast.
expectis an option name or{option: share}. - write_
rule - POST one rule.
- write_
trust - POST one trust row.
- write_
trust_ record write_trustcarrying the voter’s record on the row.
Type Aliases§
- Learned
State - Trust rows, personas, and each voter’s forecast calibration.
- Standing
- A voter’s record: how often the outcome agreed with its ballot, and how often not, carried on every trust row into that voter.