Core store file
worklog.toml
The detailed operational record, at .working/toml/worklog.toml: one
entry per change, appended as the work happens.
About
The worklog is the fact layer of the release triad. Every change gets an entry; every entry stays forever. Entries are mutable until a release freezes their span, immutable after, and never consumed, rolled away, or deleted. Every fact ever recorded stays in the worklog or its archive, and survives store relocation byte for byte.
Why
Durable facts are what make summaries safe. Because the detail beneath a changelog entry is never lost, the public story can be re-worded, re-rolled, and re-told at any depth without risk: editing a summary can never change the facts, which persist here. The freeze-at-release rule draws the line honestly: before release, a mistake is corrected in place through ordinary review; after release, a correction is a new entry that links the one it corrects.
Description
An array of [[entry]] rows using a reduced record envelope: id
(namespace WL), date, actor, a change kind
(added, changed, fixed, removed,
security, docs, or infra; a manifest may register
additional kinds), a one-line summary, optional detail, and
links and refs to the records and revisions it concerns. Its status
is the single state recorded, and it never takes the /proposed
qualifier whatever the actor: a worklog entry records a fact, not a proposal awaiting
ratification.
schema = 1
[[entry]]
id = "WL-131"
date = "2026-08-29T16:22:41Z"
actor = { kind = "maintainer" }
kind = "fixed"
summary = "Close the view generator's stale-output gap on renamed types"
links = [ { rel = "resolves", id = "BI-42" } ]
How it works
Entry mutability follows the release cut. At release, the release's coverage digest freezes the covered entries; from then on any change to them is a gate failure, and an entry can never be appended into an already-released span, because spans are contiguous frozen ID intervals. Only released, frozen spans may rotate to the archive; the unreleased tail never rotates, whatever its age or size.
Generated view
WORKLOG.md, a deterministic, byte-drift-gated render at .working/
top level, opening with the standard do-not-edit header.
Value
A complete, append-only change record that a summary can always be rebuilt from. A silent edit to released history breaks a recorded digest and fails the gate, which helps prevent history from being quietly rewritten.
Usage
- Created by:
opf init, empty. - Updated by: every change, as an appended entry (IDs allocated through counters.toml); pre-release corrections in place; rotation of released spans into the archive.
- Read by:
opf render(WORKLOG.md); the release cut (span selection and coverage digest); the changelog drafting flow (summaries are drafted from spans);opf doctor(span tiling, frozen digests, ID partition between active and archive).