Skip to content

Commit 4cb0310

Browse files
committed
Adopt canonical knowledge rules registry
1 parent 0a3d5c5 commit 4cb0310

6 files changed

Lines changed: 597 additions & 118 deletions

File tree

‎.github/workflows/docs.yml‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Documentation
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
generated-readmes:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: ruby/setup-ruby@v1
16+
with:
17+
ruby-version: "3.3"
18+
- name: Verify generated README files
19+
run: ruby scripts/render_readmes.rb --check

‎README.md‎

Lines changed: 66 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,112 @@
1+
<!-- This file is generated from `rules.yaml`. Run `ruby scripts/render_readmes.rb` after changing the registry. -->
2+
13
# Knowledge as Code
24

35
[Русская версия](README.ru.md)
46

5-
A compact guide to organisational knowledge that remains understandable, verifiable, and reusable by a team. AI did not create these principles, but it makes their absence much more expensive: corporate knowledge has gained another fast and literal reader.
7+
A compact guide to organisational knowledge that remains understandable, verifiable, and reusable by a team. AI did not create these principles, but it makes their absence more expensive by becoming another fast and literal consumer of corporate knowledge.
8+
9+
> AI does not create corporate memory. It becomes useful when that memory distinguishes sources, assertions, evidence, inferences, decisions, and unknowns.
610
7-
> AI does not create corporate memory. It becomes useful when that memory can distinguish a source, a fact, an inference, a decision, and an unknown.
11+
## Working model
812

9-
## The model
13+
The arrow is a reading path, not a storage pipeline. In practice, knowledge forms an acyclic graph of typed relationships.
1014

11-
`Source → fact → derivative → inference or hypothesis → decision → action`
15+
```text
16+
source ──evidence_for──▶ canonical assertion
17+
│ │
18+
└────derived_from────────▶ report
19+
│
20+
assertions + constraints ───▶ decision ──implemented_by──▶ action or code
21+
```
1222

13-
Every layer links to the preceding one; none silently replaces it.
23+
## Independent metadata axes
1424

15-
## Knowledge-status notation
25+
Do not force epistemic state, document role, authorship, and lifecycle into one status. Apply each field only when it is meaningful.
1626

17-
| Label | Meaning |
18-
| --- | --- |
19-
| `FACT` | Confirmed by a primary source. |
20-
| `DERIVED` | A reproducible calculation, extract, or transformation of facts. |
21-
| `CLAIM` | Somebody's statement that has not yet been verified. |
22-
| `HYPOTHESIS` | An assumption that can be tested. |
23-
| `DECISION` | An accepted choice, rule, or policy. |
24-
| `UNKNOWN` | An important, explicitly recorded gap. |
25-
| `SYNTHETIC` | AI-generated, illustrative, or test data; not evidence. |
27+
| Field | Axis | Values | What it describes |
28+
| --- | --- | --- | --- |
29+
| `epistemic_state` | Epistemic state | `verified`, `claim`, `hypothesis`, `unknown` | What is known and how strongly it is supported. `verified` always implies named verification criteria. |
30+
| `record_kind` | Record role | `source`, `assertion`, `decision`, `instruction`, `report` | What responsibility the record owns. Evidence is a typed relationship, not a competing record role. |
31+
| `generation_mode` | Generation mode | `captured`, `human_authored`, `machine_generated`, `mixed` | How the content came into existence. Derivation is recorded separately through `derived_from`. |
32+
| `lifecycle` | Lifecycle | document: `draft`, `active`, `archived`; decision: `proposed`, `accepted`, `superseded`, `rejected` | Publication state and entity state are separate. A draft cannot silently override active knowledge. |
2633

2734
## Rules
2835

29-
### KAC-01 — One fact, one owner
36+
### KAC-01 — One scope, one canonical owner
3037

31-
Every fact has one canonical source and a person responsible for its freshness. Other documents link to it or derive from it.
38+
Every material assertion has exactly one canonical owner within a declared scope. The owner is the record or system that maintains the current assertion; source evidence and the human steward are separate.
3239

33-
### KAC-02 — Do not confuse a source with its processing
40+
### KAC-02 — Separate source, assertion, and derivative
3441

35-
An email, meeting recording, contract, or export is a source. A transcript, summary, report, or presentation is a derivative. A derivative links to the source and its version.
42+
A source preserves what happened or was said. A canonical assertion records what the organisation currently accepts. A derivative transforms upstream material. None silently substitutes for another.
3643

37-
### KAC-03 — Preserve provenance
44+
### KAC-03 — Provenance is not truth
3845

39-
Every material record identifies its `source`, `author`, `created_at`, `as_of`, and transformation. Readers should be able to see who produced a result, when, and from what.
46+
Provenance answers who produced a record, when, from what, and through which transformation. Verification separately states what the evidence proves, under which criteria, scope, and date.
4047

41-
### KAC-04 — Mark the type of assertion
48+
### KAC-04 — One question, one metadata axis
4249

43-
Use `FACT`, `DERIVED`, `CLAIM`, `HYPOTHESIS`, `DECISION`, `UNKNOWN`, or `SYNTHETIC`. A hypothesis, paraphrase, or AI-generated text must not masquerade as a fact.
50+
Do not encode truth, role, authorship, and lifecycle in one label. Use independent fields so a machine-generated report can also be derived, active, and based on claims without contradiction.
4451

45-
### KAC-05 — Links, not copies
52+
### KAC-05 — Typed links, not copies
4653

47-
Projects, companies, meetings, decisions, and sources need stable addresses. Share a link to the canonical record, rather than another copy.
54+
Link to the canonical record using an explicit relationship such as `evidence_for`, `derived_from`, `implements`, or `supersedes`. A useful link explains what is there and why it should be followed.
4855

49-
### KAC-06 — Knowledge belongs in the repository, not the thread
56+
### KAC-06 — Durable owner, messages as transport
5057

51-
Within a project or team, record knowledge in the repository: a card, meeting note, ADR, runbook, or task. Send a link in chat and email. Messages are for discussion and notification, not the sole storage for agreements.
58+
Decisions, agreements, and instructions belong with the correct canonical owner; chat and email carry links and notifications. Code owns implementation, operational systems own transactional state, and documentation owns intent, rationale, and contracts.
5259

53-
### KAC-07 — Make changes visible
60+
### KAC-07 — Upstream first, downstream in sync
5461

55-
Do not rewrite history silently. Material changes have an intelligible diff, author, and date; superseded decisions are marked as such.
62+
Change meaning at the canonical owner first. Then inspect direct dependants and update, invalidate, or explicitly leave them unchanged. Conflicting active knowledge is a defect, not an alternative truth.
5663

57-
### KAC-08 — Schema before prose
64+
### KAC-08 — Make schema and lifecycle explicit
5865

59-
Use templates and required fields for recurring entities: `owner`, `status`, `source`, `as_of`, `access`, `supersedes`. Prose explains context; it does not replace structure.
66+
Repeating record kinds use a small schema with conditional fields. Separate document status from decision or delivery status; record `as_of`, review dates, and `supersedes` only where time or replacement is meaningful.
6067

61-
### KAC-09 — Keep knowledge units small and clear
68+
### KAC-09 — One artifact, one responsibility
6269

63-
Do not combine a customer record, meeting minutes, plan, and report in one document. One entity or assertion deserves one clear record with explicit links.
70+
The useful atomic boundary is an independent owner, lifecycle, or change boundary—not every sentence. Split monoliths without creating a maze of fragments.
6471

65-
### KAC-10 — Knowledge has freshness
72+
### KAC-10 — Index first, details on demand
6673

67-
Name an owner, a verification date, and a review interval. Stale knowledge is not erased without a trace: mark it `superseded` or `archived`.
74+
Every durable record is reachable from a relevant index. Start readers with a compact map and annotated links, then disclose deeper context only when the task requires it.
6875

69-
### KAC-11 — AI answers from evidence
76+
### KAC-11 — Outputs trace back to evidence
7077

71-
AI searches authorised sources, cites them, separates quotation from inference, and returns `UNKNOWN` when evidence is insufficient. Confidence is not a substitute for evidence.
78+
A human or AI answer, report, and decision identifies supporting evidence, separates quotation from inference, and preserves unknowns. Confident language is not a substitute for verification.
7279

7380
### KAC-12 — Context and access follow the source
7481

75-
A knowledge link carries its author, scope, version, and access rights. Search, catalogues, and AI must not turn a local record into context-free “common knowledge”.
82+
Scope, effective date, provenance, and access restrictions survive indexing, summarisation, and retrieval. Search and AI must not turn a local record into context-free common knowledge.
83+
84+
## Minimal record example
7685

77-
## Minimal record template
86+
This example records exactly what the evidence proves: a customer made a statement. It does not silently promote that statement into proof that the money exists.
7887

7988
```yaml
80-
id: DEC-042
81-
type: decision
82-
status: current
83-
owner: product-lead
84-
as_of: 2026-08-14
85-
source:
86-
- repo://company/project/meetings/2026-08-14.md#decision-3
87-
supersedes: null
89+
id: AST-042
90+
record_kind: assertion
91+
status: active
92+
canonical_for:
93+
- customer_budget_status
94+
steward: sales-lead
95+
as_of: "2026-08-14"
96+
epistemic_state: claim
97+
generation_mode: human_authored
98+
evidence:
99+
- path: correspondence/client-message.md
100+
supports: customer_stated_that_budget_is_approved
101+
derived_from: []
102+
supersedes: AST-037
103+
access: internal
88104
```
89105
90-
For a longer Russian explanation, see [«Корпоративная память, пригодная для AI»](article.md).
106+
For a longer Russian explanation derived from this registry, see [«Корпоративная память, пригодная для AI»](article.md).
91107
92108
## Foundations
93109
94110
- [W3C PROV Primer](https://www.w3.org/TR/prov-primer/) — provenance through entities, activities, and agents.
95-
- [FAIR Guiding Principles](https://doi.org/10.1038/sdata.2016.18) — knowledge should be findable, accessible, interoperable, and reusable by people and machines.
96-
- [Pro Git: About Version Control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) — the history of change is part of the working object.
111+
- [FAIR Guiding Principles](https://doi.org/10.1038/sdata.2016.18) — findable, accessible, interoperable, and reusable data for people and machines.
112+
- [Pro Git: About Version Control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) — change history as part of the working object.

0 commit comments

Comments
 (0)