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

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:
2026-10-11 12:18:03 +02:00
parent 300406e0dd
commit 1cc0ab369f
26 changed files with 3592 additions and 80 deletions
@@ -881,12 +881,15 @@ func Tools(k *KB, caller func(map[string]any) string) []stdio.Tool {
Description: "Import hq's decision records and research efforts, read through the records module at the commit its checkout " +
"stands at, each whole at its own number as its first version naming that commit. It only creates a record that is not " +
"held, never overwrites one, never moves a number counter, and run again changes nothing and says so. A decision written " +
"as prose waits for its clauses to be drafted and confirmed. With dry-run it writes nothing and says what it would do; " +
"with commit it refuses a checkout standing elsewhere.",
"as prose, or with no Decision section, waits for its clauses to be drafted and confirmed. With refresh it also reads " +
"again every record it holds that nobody changed since its import, and writes what it lost or misread as a new version " +
"naming why; a record changed since is never touched, and a second refresh changes nothing. With dry-run it writes " +
"nothing and says what it would do, record by record; with commit it refuses a checkout standing elsewhere.",
Input: schema(nil, map[string]any{"dry-run": flag("read everything, write nothing, say what would be done"),
"commit": text("the commit of hq the record must stand at (a prefix is enough)")}),
"commit": text("the commit of hq the record must stand at (a prefix is enough)"),
"refresh": flag("also repair what it holds that only the import ever wrote, from hq at this commit")}),
Run: func(m map[string]any) (any, error) {
a, err := readArgs("import", m, "dry-run", "commit")
a, err := readArgs("import", m, "dry-run", "commit", "refresh")
if err != nil {
return nil, err
}
@@ -894,6 +897,9 @@ func Tools(k *KB, caller func(map[string]any) string) []stdio.Tool {
if ask.DryRun, err = a.flag("dry-run"); err != nil {
return nil, err
}
if ask.Refresh, err = a.flag("refresh"); err != nil {
return nil, err
}
if ask.Commit, err = a.str("commit"); err != nil {
return nil, err
}