3.3 KiB
Root Tree Contract
The root tree is the explicit boundary between deep project analysis and Tech Log record generation.
Required document header
A root tree records:
schemaVersionprojectsourceDocumentsourceDocumentSha256sourceRevisiongeneratedAt
The hash/revision prevents a scheduled generator from treating a tree derived from old code as current.
Required human-readable tree
Each Topic has a title, slug, and four branches:
PROJECT
<project>
TOPIC
<Topic title>
<topic-slug>
├── CASE
├── REFERENCE
├── OPEN QUESTION
└── DECISION
Empty branches are allowed. Do not manufacture nodes to fill all four kinds.
Node source contract
Every candidate includes a specification after the human-readable tree.
Case
Required:
slugreadiness- one or more
sourceanchors classificationexplaining the concrete incident/experiment/diagnosis- relevant code/evidence when the conclusion depends on them
missing-verificationrelations
A Case with NEEDS_EVIDENCE, BLOCKED, or REJECTED is not generated.
Reference
Required:
slugreadinesssourceclassificationexplaining the reusable criterionscopeexceptionsrelations
A Reference must be useful beyond retelling one Case. If removing the originating project's names leaves no rule, it is probably still a Case.
Open Question
Required:
slugreadiness: OPENsourceknownunknownnext-verificationdecision-criterionrelations
Do not generate a Question when the detailed analysis already contains a verified answer. Move the material to Case/Reference/Decision as appropriate and update the tree first.
Decision
Required:
slugreadinessdecision-statussourcedecision-evidencegroundsclassificationrelations
decision-status is one of PROPOSED, ADOPTED, SUPERSEDED, NOT_DECIDED. A NOT_DECIDED candidate uses NEEDS_DECISION and is not generated as a Decision.
Readiness semantics
| readiness | meaning | generation |
|---|---|---|
READY |
grounded enough for the kind | allowed |
NEEDS_EVIDENCE |
material assertion still lacks verification | blocked |
NEEDS_DECISION |
direction sounds plausible but project has not decided | blocked |
OPEN |
legitimate unresolved Question | allowed as Open Question |
BLOCKED |
sources are incomplete or contradictory | blocked |
REJECTED |
should not become a record | blocked |
Derivation rules
- Start from sections and evidence already present in detailed analysis; do not begin by brainstorming titles.
- Prefer several narrowly grounded Cases over one broad Case that combines unrelated incidents.
- Extract References only after identifying the invariant/selection criterion that survives outside the incident.
- Extract Questions from explicit uncertainty, missing verification, operational unknowns, or conflicting constraints.
- Extract Decisions only from explicit project choice evidence: ADR, commit/history, configuration plus recorded rationale, issue/PR decision, or user-supplied decision record.
- A node may relate to several siblings, but each record has one primary purpose.
- If new runtime evidence changes the answer, update detailed analysis and regenerate/review the tree before editing downstream records.