---
{
  "n": 15,
  "title": "Share of plan 31",
  "abstract": "https://agent-journal-2c544411e572c1c7389b1750.tunler.jessegall.nl/s/af240e3c-97e5-4def-a45e-0aeaa8b3a4ca",
  "refs": [],
  "seen": [
    "user",
    "system",
    "agent"
  ],
  "data": {
    "target": "plan:31",
    "token": "af240e3c-97e5-4def-a45e-0aeaa8b3a4ca",
    "expires": 1792238543.559602,
    "approved": true,
    "password": "",
    "comments": true,
    "agent_replies": true,
    "environment": "main",
    "member": "owner",
    "views": 9
  },
  "created": 1791633743.5797231,
  "updated": 1791657552.5982358,
  "deleted": 0.0,
  "completed": 0.0,
  "outcome": "",
  "type": "share"
}
---
One repository for rows, kept in memory (plan 31)
The health check takes no locks, and one prober per journal judges it (todo 4139)
A late heartbeat means busy, not dead, so commands never go cold (todo 4140)
A hook answers first and replays spooled hooks after (todo 4141)
One shared sampler replaces a timer thread per slow request (todo 4142)
The after-answer pool grows with the agents and holds back per lane (todo 4143)
A session write no longer bumps the sessions folder (todo 4144)
An agent's row is written at most once a second per session (todo 4145)
A request takes the migration and record locks once, not per file (todo 4146)
The engine reads the end of the terminal capture once per tick (todo 4147)
One watcher per journal notices an upgrade, not every worker (todo 4148)
The seat file is written only when it changed (todo 4149)
Live sockets are found once per journal, not per environment (todo 4150)
A hook is a shell script with no Python start and fewer processes (todo 4151)
The viewer takes agents, bar and online from the stream (todo 4152)
Answering runs in parallel across environments (todo 4153)
The test kit counts parsed rows per call (todo 4048)
The test kit counts Records built per call (todo 4049)
A guard fails on a row parsed twice in one call (todo 4050)
journal speed times a board of 40 tickets (todo 4051)
Today's board numbers are written into doc 76 (todo 4052)
The test kit counts stat calls on row files (todo 4102)
The load guard counts work done on other threads (todo 4103)
The new guards live in the work-budget test, not new test functions (todo 4104)
The benchmark measures a transportklok-sized journal and memory (todo 4115)
A board call computes sessions, running agents and the board once (todo 4053)
_slots reuses the card states already computed (todo 4054)
_actions takes the card's state instead of asking the plan again (todo 4055)
Plan status, waits and the board are kept for one call (todo 4056)
Record.sibling shares the request's memo (todo 4057)
Session liveness is checked once per sessions stamp (todo 4058)
A guard proves a board makes one Record per environment, one plan check each (todo 4085)
Summaries use a folder version, not two stats (todo 4060)
peek checks the in-memory stamp instead of the file (todo 4061)
exists answers from the summaries (todo 4062)
Every load stops copying the whole row (todo 4063)
The cross-process test still passes with restat forced (todo 4065)
A guard proves a warm load opens, scans and stats nothing (todo 4086)
A rolled-back transaction clears the rows it wrote from memory (todo 4092)
Reads skip the stat only where an event tail runs (todo 4093)
The behind-the-back write test asserts a bounded delay (todo 4105)
A test proves a rollback to the previous build reads the new index (todo 4120)
Writers keep a copy, so a refused save leaves memory unchanged (todo 4121)
A test proves a refused save leaves the held row unchanged (todo 4122)
The folder version covers own-folder and packed rows (todo 4127)
Search, shared pages and plugin dashboards read through the repository (todo 4137)
The watch thread tails every event log (todo 4066)
A foreign event refreshes just its row (todo 4067)
The periodic restat becomes the safety net (todo 4068)
Writes from another machine refresh through the same path (todo 4069)
A test proves another process's write is seen within a tick (todo 4087)
Writes lock their repository briefly; reads never lock (todo 4091)
A foreign event refreshes every row in its numbers list (todo 4094)
The event tail keeps a cursor and resyncs by id after a trim (todo 4095)
A gap in event ids or a long lag falls back to a full restat (todo 4096)
Requests and the watch thread patch memory under one folder lock (todo 4097)
The tail starts from the event id read before warming begins (todo 4098)
Own events are told apart by pid and machine (todo 4100)
Refresh handles pack, move and force-delete, which emit no event (todo 4101)
Tests cover a trimmed log, a half line and a reused pid (todo 4107)
The cross-process test runs the tick itself and kills its child (todo 4108)
A setting turns event refresh off and falls back to restat (todo 4117)
Every event carries the writer's pid and machine (todo 4135)
Event ids keep their order across environment and project logs (todo 4136)
Every type declares held and eager (todo 4071)
Parsed rows roll per folder (todo 4072)
Eager types are parsed at server start (todo 4073)
Counters are declared per type (todo 4074)
Counters are kept on every write and persisted (todo 4075)
Every repository answers unread by actor (todo 4076)
Every repository answers by type and by relation (todo 4077)
A test proves counters after a restart equal a fresh count (todo 4088)
Persisted counters are checked against the index and rebuilt if foreign (todo 4099)
Counters stay right after move, sweep, prune and rename (todo 4109)
Eager parsing stays inside the warm-up budget (todo 4110)
Counters live in a side file older builds ignore (todo 4112)
Counters are counted from rows once on first start, then kept (todo 4113)
The safety-net restat corrects counters too (todo 4114)
Held rows are capped per process and evicted least recently used (todo 4116)
A removed environment drops its summaries, stamps and indexes (todo 4123)
Whole-folder walks of lazy types read summaries, not parsed rows (todo 4124)
Counters extend counted and unread, updated by diff on every update (todo 4125)
Counters are checked against an index whose save was put off (todo 4126)
Upgrade order installs the new index before any process reads it (todo 4138)
The repository's funnel methods are final and a check refuses overrides (todo 4156)
Tests pin the repository's contract so a change that breaks it fails (todo 4157)
Rows made or read outside their repository are refused, and a detector flags it (todo 4158)
RowStore.page pages with a keyset cursor (todo 4079)
Board lanes load 50 cards at a time (todo 4080)
The kanban board pages its lanes the same way (todo 4081)
The viewer loads the next page of a lane on scroll (todo 4082)
The chat polls only the messages the user has not seen (todo 4083)
Tests prove 200 tickets answer 50 a lane, cursor holds across a write (todo 4089)
The chat polls by event cursor, keeping its event refresh (todo 4106)
A lane cursor holds across a delete and a move (todo 4111)
The lanes API answers old viewer tabs that send no cursor (todo 4118)
Each phase writes its changelog, and paging announces itself (todo 4119)
The board poll keeps every loaded page of a lane (todo 4128)
The lane count comes from a server counter, not loaded cards (todo 4129)
The next page adds its cards with no skeleton (todo 4130)
Card filter and Show done reach cards beyond the loaded page (todo 4131)
The phone and the CLI read the paged board correctly (todo 4132)
The keyset cursor reuses the listing's before and since paging (todo 4133)
A test proves the board poll keeps loaded pages and lane counts (todo 4134)
