Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,10 @@ Each run of whitespace in the content becomes one space, so a record is always o
Times are in ISO 8601 in UTC, to the second. A null `valid_from` shows as `unknown`, a
null `valid_until` as `now`, and a record with no sources as `none`. The block holds whole
lines only, joined by newlines. It stops before the first line that would make it longer
than the budget. The list holds the records of the block.
than the budget. The list holds the records of the block. The budget counts the characters of
the block in this line format, and its default is 2,000. A consumer that renders the
records in its own format passes its own `budget` and `k`, so that the default does not
cut the list first.

The block of `profile` has a group for each kind that has records, in the order fact,
profile, procedure. A line `<kind>:` starts each group, and its records follow
Expand Down
11 changes: 10 additions & 1 deletion docs/internal/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ that proves it.
| 1. The storage contract, offline | The record, the `Store` protocol, the in-memory driver, the conformance suite, the frozen surfaces, the ledger test, and CI. | closed 2026-10-06, PR #5 |
| 2. The Hotdata driver | `HotdataStore` with four tables, the serialized writer, the three-stage retrieval query, the sweeper, the integration leg against the local stack in CI, and the oracle test. | closed 2026-10-08, PR #7 |
| 3. The memory contract | `Memory` with remember, recall, candidates, supersede, forget, profile, and capture, the rendered blocks pinned by tests, and the skill file with its command check. | closed 2026-10-08, PR #9 |
| 4. The first consumer | A document loader in hotmemory. A post-mortem loader and a recall at investigation start in the consumer's own repository, proven by a replay case. Two pull requests, one in each repository. | open |
| 4. The first consumer | A document loader in hotmemory. A post-mortem loader and a recall at investigation start in the consumer's own repository, proven by a replay case. Two pull requests, one in each repository. | closed 2026-10-10, PR #11 and the consumer's pull request |
| 5. A public benchmark | A LongMemEval-S runner measuring retrieval recall at k first and end-to-end accuracy second, with the numbers in `docs/benchmarks.md`. | planned |
| 6. Adapters | A LangGraph `BaseStore` adapter in `hotdata-langchain`, then an MCP server. | planned, out of scope for version 1 |

Expand Down Expand Up @@ -57,3 +57,12 @@ A closed phase keeps its row above with the date it closed and the pull request.
writes a merged revision. `recall` reads current revisions only, so a search over
history is still open. A count in the block of `profile` is a lower bound when a
sub-namespace fills the window of `list`.
- Phase 4 closed on 2026-10-10 with PR #11 and the consumer's pull request, which closed
issue #10. The consumer loaded 12 post-mortems, and counted 129 episodes and 256 facts
with SQL. A second load wrote nothing. It changed the plan for later phases in four ways. The pass
rule of the replay case judges the investigation loop from its trace, because the report
step drops the date of a rejected hypothesis. A consumer that renders its own block
passes `budget` and `k` to `recall`, because the default budget of 2,000 characters cut
the list first. A single-part upload in the Hotdata SDK does not retry on a closed
connection, so a long load can fail and must be run again. It is reported to the SDK
repository. A document that gets fewer chunks keeps its old last episodes current.
Loading