give pending work four owners instead of six scattered lists
Ideas were spread across six places with real duplication and one list that was about to be lost. Consolidated by merging the duplication, not the categories. The 130-item feature-list triage lived in .scratch/, which is gitignored — 130 verified verdicts a scratchpad cleanup would have deleted. It is now ideas/feature-list-triage.md with the header the ideas gates require, indexed, and out of agent context by default like everything there. exploration.md's Verdicts table was empty and designed for exactly this; it now carries one row per body of work with a pointer, rather than 130 rows nobody could skim. Deferred triggers had no single owner: continue.md restated them and drifted, still listing the extension registry as pending after ADR-0081 built it. deferred-decisions.md now holds the only trigger table, covering the two it already described plus math, corrections, write routes and the registry's remaining fields. continue.md links to it. Two rows record couplings worth not rediscovering: the View layer may pull a minimal settings cascade in with it, because the Views counter says selection resolves *through* the cascade; and ADR-0081's seam mounts GET only, so Arc 3's first write endpoint extends it. Corrections per post is dropped in its cheap form and parked in its real one. A hand-maintained frontmatter list was rejected for an authoring reason rather than a technical one — a half-remembered list of corrections misleads where none would not, because two entries imply those were the only two. Deriving it from repository history is the shape worth waiting for, and the file records what must be settled first: whether the engine may read local git history at all, that it needs a dependency or a subprocess, and that not every commit is a correction. Not merged, on purpose: latent items stay in state.md because they describe shipped code and are gated against .go commits; arcs stay in roadmap.md because they are sequencing decisions. One file would have flattened four levels of authority and made pending work cheap to load, which is the opposite of why ideas/ sits outside harness/ at all. harness/README.md now says which list owns what, in both the topic table and the single-source table. 7 files. No rule or threshold moved. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Corrections and updates, derived rather than remembered
|
||||
|
||||
Status: parked
|
||||
Raised: 2026-08-02
|
||||
|
||||
A post that has been corrected should say so. The question is who remembers.
|
||||
|
||||
## Why the obvious version was rejected
|
||||
|
||||
The cheap shape is a frontmatter list — `corrections: [{date, note}]` — lifted by the parser and rendered
|
||||
by the theme. It needs no engine history at all and could ship in an afternoon.
|
||||
|
||||
It was dropped for an authoring reason, not a technical one: **it puts the burden on the author to
|
||||
remember, and a half-remembered list of corrections is worse than none.** A page carrying two entries
|
||||
implies those were the only two, which is a stronger claim than the author can honestly make months later.
|
||||
An absent list claims nothing; an incomplete one misleads. That asymmetry is what kills it.
|
||||
|
||||
## The shape worth waiting for
|
||||
|
||||
Derive it. The repository already knows what changed and when — that is what a content repo is for — so the
|
||||
list should come from history rather than from memory.
|
||||
|
||||
This wants the **Effect** primitive: work off the request path, on content change or on a schedule
|
||||
(ADR-0012), writing an artifact the render then reads. An Effect walking the content repo's history for a
|
||||
bundle's path can produce a real, complete list of when that file changed, with commit subjects as the
|
||||
notes.
|
||||
|
||||
## What has to be settled first
|
||||
|
||||
- **The engine does not read git today, deliberately.** `harness/content-model.md`: "The engine notices
|
||||
changes. It never fetches them — pulling a git repository is the operator's business." That sentence is
|
||||
about *pulling from a remote*, which is a different act from reading local history, but the distinction
|
||||
has never been decided and should not be assumed.
|
||||
- **Reading history needs a dependency or a subprocess.** Either a Go git library — an ADR and an
|
||||
allowlist entry — or shelling out to `git`, which makes the binary's behaviour depend on a tool that may
|
||||
be absent in the container (ADR-0010 ships the binary alone).
|
||||
- **Not every commit is a correction.** A typo fix, a reflow and a retitle are all commit subjects, and
|
||||
publishing them as corrections recreates the noise problem from the other direction. Something has to
|
||||
filter — a commit-message convention, a trailer, or a path-scoped rule — and that choice is the actual
|
||||
design work here.
|
||||
- **The Effect runner does not exist yet.** The effects counter stands at 1, due at 2
|
||||
(`harness/state.md`), so this waits on that extraction regardless.
|
||||
|
||||
## Trigger
|
||||
|
||||
The Effect runner landing, plus a decision on whether the engine may read the content repo's local
|
||||
history. Until both, this stays parked — and the manual version stays rejected rather than merely
|
||||
unbuilt, so it is not reintroduced as an easy win.
|
||||
Reference in New Issue
Block a user