mesh-knowledge: the import keeps every field and takes clauses only from the Decision section's own list, and can repair what it held (hq issue 487)
mesh/merge-gate pass: builds mesh-knowledge → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer head of the same pull request
mesh/merge-gate pass: builds mesh-knowledge → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer head of the same pull request
The import at hq f0892019 lost reconstructed, amended and a research effort's touches, held rests-on only as a citation, took eight records' clauses from a numbered list inside a ### subsection, and left the 11 records with no Decision section clause-less with nothing queued. Each is held now; refresh repairs a record only the import ever wrote, and never one changed since.
This commit is contained in:
@@ -56,8 +56,14 @@ A clause is `proposed`, `in force`, `changed` (a later clause replaces part of i
|
||||
- `confirmed`: drafted, then confirmed by a second, separate judgement that saw only the record and the drafts.
|
||||
|
||||
The links are `supersedes`, `changes` (to a clause: `0276 §4`), `extends`, `became` (from a research effort to a
|
||||
decision record or design) and `cites` (to any record, an issue, or a design). Each link is stored once, on the
|
||||
record it goes out from.
|
||||
decision record or design) and `cites` (to any record, an issue, or a design). Two more hold what hq's records
|
||||
write and to-be 55 names no kind for (hq issue 487): `rests-on`, from a decision to one it stands on (held to the
|
||||
rules `extends` is), and `touches`, from a research effort to a record, issue or design it bears on. Each link is
|
||||
stored once, on the record it goes out from.
|
||||
|
||||
Besides the fields every record has, a decision holds `reconstructed` (true or false, where it says) and `amended`
|
||||
(the days), and a research effort holds what it `touches` that is no record, issue or design ("the tool runtime")
|
||||
as text. `get` serves each, and any other field a record of hq wrote under `fields`.
|
||||
|
||||
## Writing a record
|
||||
|
||||
@@ -109,8 +115,20 @@ no counter moves. A second run changes nothing and says so. `dry-run` writes not
|
||||
`mesh-knowledge dry-run <hq checkout>` gives the same dry run over a checkout on disk, against an empty knowledge
|
||||
base.
|
||||
|
||||
A decision whose Decision section writes numbered statements with a bold lead gets them as `written` clauses. One
|
||||
written as prose (226 of main's 278 on 2026-10-11) gets none at the import. A background worker then takes one
|
||||
**`refresh`** (the import's third argument) repairs what an earlier import lost or misread (hq issue 487). For a record held whose every version
|
||||
was written by the import or a refresh (no one has changed it since, and nothing waits over it), it reads the
|
||||
record again at the commit and, when what it holds differs, writes it as a new version: "refreshed from hq at
|
||||
<commit>: <path>", naming each field that differs. A record anyone changed after its import (drafted, accepted
|
||||
over, corrected) is never touched, and its row says so. A record read again and found the same is left as it is,
|
||||
so a second refresh changes nothing. With `dry-run` it says, record by record, what it would change.
|
||||
|
||||
A decision whose Decision section's own top-level list writes numbered statements with a bold lead gets them as
|
||||
`written` clauses. A numbered list inside a `###` subsection of the Decision section is that subsection's prose,
|
||||
never the record's clauses (ADR 0259, 0272, 0273, 0278 and 0288 number steps so; hq issue 487). A decision with no
|
||||
such list (245 of 278 at hq f0892019, 196 written clauses in the rest) gets none at the import, and so does one
|
||||
with no Decision section at all (11): it is drafted from what it decides across its sections, all but its
|
||||
preamble, consequences and references. One too large for one judgement (48 KiB) is marked as having no clauses,
|
||||
and `get` says why. A background worker then takes one
|
||||
judgement at a time (`claude-code.claude_code_judge` on this node): it drafts the clauses, then confirms them in a
|
||||
separate call. A clause the second judgement rejects stays `drafted`, with the reason. hq's `supersedes-in-part`
|
||||
named a record, not a clause: which clause it changes is judged and then confirmed the same way, and only then is
|
||||
|
||||
Reference in New Issue
Block a user