diff --git a/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/00-overview.md b/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/00-overview.md index 41f7e46f..f08e9a1e 100644 --- a/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/00-overview.md +++ b/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/00-overview.md @@ -81,7 +81,7 @@ shared and searchable place. 6. **Checks as refusals at write.** `records.py`, `cycle.py`, `words.py` and `index.py` judge a pull request after it is written. Which of their rules can become refusals of the write verb itself, and which only make sense across the whole record? -7. **Import.** How are the decision records (265 files on `main` on 2026-10-10, numbered up to 0279), the designs and the playbooks imported without +7. **Import.** How are the decision records (274 on `main` on 2026-10-11, numbered up to 0289), the designs and the playbooks imported without losing their history, their numbers or their links? Is the import repeatable, as the issue tracker's is? 8. **What git gives today.** Review on a pull request, line comments, a history of every change with diff --git a/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/01-findings.md b/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/01-findings.md index a54e75e7..88db65c3 100644 --- a/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/01-findings.md +++ b/01-RESEARCH/045-a-knowledge-base-the-mesh-writes/01-findings.md @@ -27,7 +27,7 @@ come from, what changed them since, and the commit it was read at.* | Fact | Measured | |---|---| -| Records on `main` | 274 decision records, 44 research efforts (119 files), 55 to-be and 16 as-is designs, 8 playbooks, 361 issue narratives, the glossary: 951 files | +| Records on `main` | 274 decision records, 44 research efforts (119 files), 55 to-be and 16 as-is designs, 8 playbooks, 361 issue narratives (479 files): 951 files, and the glossary | | Size | 6.9 MB of markdown, about 1.7 million tokens at four bytes a token; decision records alone 2.6 MB (about 650,000 tokens) | | One question, today | "what holds about the merge window": `records_search` gives 26 places in 11 documents; reading the five records and the design they point to is 85 KB, about 21,000 tokens | | The decision index | `records_decisions` answers 77 KB in one piece; the agent's tool-answer limit refused it inline, and it had to be read from a file in parts | @@ -38,7 +38,7 @@ come from, what changed them since, and the commit it was read at.* | Progressive insights | 39 records carry the dated marker, 55 markers in all; 2 more use an older form | | Change after writing | 189 of 271 traceable decision records were changed after the commit that created them; 34 paths were changed five times or more | | Pace | commits touching decision records: 87 in the last ten days of August, 160 in September, 274 in the first eleven days of October | -| Number collisions | 16 decision numbers were taken twice by sessions working at once (2026-09-25 to 10-10), each repaired by a renumbering commit; 15 numbers on `main` are gaps; no research number collided | +| Number collisions | 16 decision numbers were taken twice by sessions working at once (2026-09-25 to 10-10), each repaired by a renumbering commit; 15 numbers on `main` are gaps; no research number collided on `main` (the 043 collision of the overview never reached it) | | A decision's rules | 263 records have a `Decision` section; only 37 of them write it as numbered rules with a bold lead (198 rules in all); the rest write prose | | Drawings | no file but markdown in the repository; no diagram source; 22 designs carry diagrams drawn in text characters | | Knowledge with no home | the repository is public, and its README says what only makes sense to someone who knows this installation "is either a note in the wrong place or a disclosure"; one agent's private notes hold 89 files for one repository on one node, and issue 367 (a session's memory stays on the node where it was learned) is open | @@ -86,7 +86,7 @@ That is the division the issue tracker already made for issues the tracker holds number, status and links, and hq held the narrative. Section 9 takes issues one step further, on the operator's word: their narrative leaves this repository too. -Option A (git stays the truth, a module indexes it) was weighed and is not chosen. It keeps review, but it +Option A (git stays the truth, and a module's write verbs open pull requests, with numbers from a counter) was weighed and is not chosen. It keeps review, but it keeps the rule-level links in prose and the refusals after the fact, which is the cause of section 0's mess. Option B in full (the reasoning moves into the store too) is not chosen either: it would rebuild review, line comments, history and diff for prose, which git already gives. @@ -125,8 +125,10 @@ at once. The issue tracker hands out numbers by compare-and-set on a counter key - **A reserved number is spent.** A proposal that is abandoned keeps its number with status `withdrawn`, who reserved it and when. Gaps already exist (15 on `main`) and harm nothing; a reused number would. - **The counter starts above the highest number on `main` and on every open branch**, as the tracker's did. -- **The counters live in the knowledge base.** To-be 53 planned decision and research counters in the tracker - only because nothing else would hold them; the tracker keeps the issue counter alone. +- **The counters stay where ADR 0275 put them.** Its rule 8 decided that the issue tracker hands out decision + and research numbers too, in its second slice; to-be 53 ยง4 so far names only the issue counter. The knowledge + base's `reserve` asks the tracker for the number, so one counter holds every sequence and no accepted record + is superseded for it. ## 4. Rules and typed links @@ -230,7 +232,8 @@ What the tracker needs to hold it: - **an issue's documents**: the report it already holds, plus a diagnosis and a resolution as named documents of the issue, each with its author and date, revised in place with history (notes stay append-only); - **an import** of the 361 folders, repeatable, keeping each issue's number and dates; -- **links** from records: 250 files in this repository link into `04-ISSUES/` 765 times. Those links become +- **links** from records: 250 files in this repository mention a path into `04-ISSUES/` 765 times, counted + as every `04-ISSUES/NNN` path in the text (markdown links alone are fewer, about 660). Those mentions become plain "issue N" references that the knowledge base and the tracker resolve, rewritten in one pull request once the import is proven; the link check in `records.py` then refuses a new link into `04-ISSUES/`. @@ -240,7 +243,8 @@ decision record. ## 10. Slices 1. **Clean the input** (this repository, one pull request): repair the loose links of section 7, so the import - reads clean records. Beside it, a shared instruction section proposed for every session: take a decision + reads clean records. Done in the pull request that declares every partial supersession in both records + and adds the `partial-supersession` check. Beside it, a shared instruction section proposed for every session: take a decision or research number from the counter once it exists, name a partial supersession in a field, never only in prose. 2. **The knowledge base, decisions and research**: a Go module serving one seat held once for the mesh, on @@ -251,7 +255,7 @@ decision record. | `ask` | the records and rules that bear on a question, ranked: number, kind, status, title, and whether each rule still holds or what changed it | | `get` | one record: its rules, its links both ways, what changed it since; its reasoning's text only when asked | | `holds` | for a topic or a record, the rules in force now, each with the record it comes from | - | `reserve` | the next number of a kind, spent whether or not the record lands | + | `reserve` | the next number of a kind, from the issue tracker's counter (section 3), spent whether or not the record lands | | `propose` | a new record's structure, status `proposed` | | `import` | this repository's decisions and research at a commit, repeatable |