Writing conventions for kb/reports/ (report collection)
Type: types/collection-contract.md
Purpose and scope
This collection contains analytical outputs, evaluation records, and local operational evidence that are consumed as reports rather than as library claims or system definitions. Placement here is justified by the output's retention policy and consumer, not by its filename or by the fact that a tool generated it.
A report belongs here only when a named operation consumes the report itself.
Transferable claims belong in kb/theory/; descriptions of the shipped system
and its decisions belong in kb/reference/; executable procedures belong in
kb/instructions/; and reasoning whose value is consumed by unfinished work
belongs in kb/work/.
Policy areas
Every report artifact lives in exactly one first-level policy area:
| Area | Retention policy | Typical contents |
|---|---|---|
state/ |
Ignored, one directory per producing workflow. Not disposable merely because it was generated: the owning workflow decides when an output may be removed, and the state README states per workflow what deletion loses. | Review results, packets and runs; fix dispositions; ingest working directories; connect, critique, friction, premise-decomposition and promotion-candidate reports. |
retained/ |
Durable report records kept with the project. Payloads are tracked. | Evaluation corpora, experiment reports, measurements, and exact records cited by later work. |
types/ |
Collection-local structural contracts, not report payloads. | Optional project-authored report contracts; command-produced generic report types are global. |
The published site includes retained/ and leaves out state/. Inside retained/, a subtree carrying a
.commonplace-validation-ignore marker is left out of the site as well as
validation; mark exact captures and trial bundles so, keeping the report that
interprets them published.
Do not put report payloads directly at the collection root. Moving an artifact between policy areas is a change in its retention contract, not a filing-only rename.
Quality goal
Make the report sufficient for the operation that consumes it without making it impersonate a durable knowledge claim. State the subject, inputs or source state, method, result, and material limits to the degree needed to interpret or reproduce the output. Record the model and prompt or instruction identity when an LLM judgment is part of the evidence and the producing workflow does not already retain them.
state/ must satisfy the owning workflow's authority, integrity, and cleanup
rules. retained/ must remain
understandable from a clean checkout without relying on ignored files.
Titles, descriptions, and exact records
- Use a title that names the analysis, experiment, or result. A title such as "Report" does not distinguish the artifact.
- When frontmatter is present, write a retrieval-oriented
descriptionthat identifies the subject and why the exact output is retained. - Frontmatter-free Markdown is permitted for deliberate unstructured output.
- Preserve an exact capture when fidelity is the report's purpose. If a copied
artifact carries another collection's local type only as captured data, put
a
.commonplace-validation-ignoremarker at the capture-set root rather than presenting that copy as a live typed artifact of this collection.
Maintenance semantics
- A state producer owns cleanup and states, in the state README, what deleting its output loses: nothing unique (rebuild from retained inputs), one paid judgment (rerun when needed) or current coverage, an unresolved disposition or decision evidence (preserve). Generated state may contain non-reproducible judgments or the only current disposition, so Git ignore status never licenses deletion.
- A retained report is changed according to its declared role. Correct a living report in place; preserve a dated or frozen observation as an exact record and create a new observation when the measured state changes.
- Local evidence notes are the one interpreted form
retained/keeps as durable artifacts: atypes/note.mdartifact whose bounded inference concerns only Commonplace's own choices or their measured effects, beside the raw records it interprets. Its formal edges use this collection's labels below. An inference that keeps a free variable belongs inkb/theory/evidence/. - If a report develops a transferable claim, binding rule, system premise, or
unfinished-work lifecycle, extract that content to its proper collection.
Do not broaden
retained/into a second notes, reference, instructions, or workshop collection.
Outbound links
Reports may inspect any project surface. Use relative Markdown links for live navigation and state in prose why the target matters. Inline links may carry ordinary evidential or procedural context. Footer-shaped formal edges use this small authorized set:
| label | destinations | reader need |
|---|---|---|
derived-from |
sources, external | inspect the source material from which the report was produced |
is-evidence-for |
theory, reference, reports | inspect the durable claim, decision, or report record on which this output bears |
compares-with |
theory, reference, sources, reports | compare two artifacts on a named shared axis |
see-also |
any durable collection, external | inspect useful adjacent context when no stronger relation applies |
The destination collection separately decides whether it may author a
reciprocal edge. A formal edge into this collection targets retained/;
state/ may be mentioned inline only as local operational context.
Tracked library artifacts must not depend on an ignored state/ file being
present. Summarize the needed evidence in the tracked artifact or
promote the exact report to retained/ first. Tracked artifacts may cite a
retained/ report when the exact record is useful to their reader.
Validation markers
The tracked .commonplace-validation-ignore marker at state/ excludes its
data-bearing subtree from collection-scoped validation. The marker does not
hide files from ordinary discovery, and explicit validation of
one typed report still applies its type contract.
A file under state/ may declare any valid type spec, including another
collection's local type. Workflows stage candidates there for other
collections, and a candidate must validate against its destination's contract.
The type spec itself stays in the owning collection's types/ directory.
retained/ does not share this exception.
What does not belong here
- A generated explanation or synthesis whose claim should survive the run →
kb/theory/orkb/reference/according to its consumer. - A procedure named "report" because it produces one →
kb/instructions/. - Drafts, deliberation, and run traces consumed by an unfinished investigation
→
kb/work/. - External source captures and their durable analyses →
kb/sources/. - Build outputs with no report consumer → their build cache, not
kb/reports/.