diff --git a/02-DECISIONS/0290-a-decision-record-lives-whole-in-the-knowledge-base-made-of-clauses.md b/02-DECISIONS/0290-a-decision-record-lives-whole-in-the-knowledge-base-made-of-clauses.md index 40fe9345..897985df 100644 --- a/02-DECISIONS/0290-a-decision-record-lives-whole-in-the-knowledge-base-made-of-clauses.md +++ b/02-DECISIONS/0290-a-decision-record-lives-whole-in-the-knowledge-base-made-of-clauses.md @@ -25,6 +25,10 @@ extends: 02-DECISIONS/0153-the-record-is-read-by-a-module-and-the-console-lists- > inference layer. Following that, the knowledge base now reviews a proposal itself, through a fresh judgement. Option 3 of > *How a record is reviewed*, rule 4, rule 6 and the consequences say so. + +> **Updated — 2026-10-11.** Rule 8 gains `refresh`: comparing every imported record with its file found fields the +> first import did not hold and clauses read from the wrong list (issue 487). A refresh writes a new version and +> overwrites nothing, so the rule's *never overwrites* stands. ## Context [Research 045](../01-RESEARCH/045-a-knowledge-base-the-mesh-writes/00-overview.md) measured, on 2026-10-11, how an @@ -150,7 +154,9 @@ rule 8 already decided that the issue tracker hands out decision and research nu ([ADR 0041](0041-events-are-a-relationship.md)), carrying what changed and who changed it. 8. **The import reads this repository at a commit and can run again.** It writes every decision record and research effort whole, at its own number, with the commit as its first version's source; it creates what is absent, never - overwrites, never advances a counter, and a second run changes nothing and says so. A record whose clauses are + overwrites, never advances a counter, and a second run changes nothing and says so. With `refresh` it re-reads a + record nobody but the import and the knowledge base's own drafting has written, and writes what an earlier import + misread as a new version naming why (to-be 55 §8). A record whose clauses are written as numbered statements gets them as `written`. A prose record gets them `drafted` by the agent's judgement ([ADR 0278](0278-the-issue-tracker-checks-every-new-issue-for-a-duplicate-through-a-judgement-the-agent-makes-without-tools.md)), then `confirmed` by a second judgement that sees only the record and the drafts; the operator is told per topic and diff --git a/03-DESIGN/01-to-be/55-the-knowledge-base.md b/03-DESIGN/01-to-be/55-the-knowledge-base.md index 43252d95..ebc4bd11 100644 --- a/03-DESIGN/01-to-be/55-the-knowledge-base.md +++ b/03-DESIGN/01-to-be/55-the-knowledge-base.md @@ -156,8 +156,10 @@ advances a counter; a second run changes nothing and says so. Records written in while the first slice does not take writes yet, are taken in by running it again. **Refresh.** `import` with `refresh` re-reads, at the commit given, every record whose versions were all written by -the import or a refresh, with nothing waiting over it, and writes the corrected record as a new version naming why; a record anyone else wrote a version of is -never touched. It repairs what an earlier import misread (issue 487) and is idempotent: a second run changes +the import, a refresh, or the knowledge base's own drafting and confirming of clauses, with nothing waiting over +it, and writes the corrected record as a new version naming why; a record anyone else wrote a version of is +never touched. Clauses already drafted and confirmed are kept when the Decision section's text is unchanged, and +drafted again when it changed. It repairs what an earlier import misread (issue 487) and is idempotent: a second run changes nothing. `dry-run` lists what it would change. Once this repository holds no records, `import` refuses rather than reporting nothing created (issue 488).