record-prose · diff

git:20260829.96d2144 to git:20260902.283ffa4

14 added, 0 removed. Audit A to A.

---
name: record-prose
description: How the flow's records are written — every document under .genius/, snapshot to backlog line. Use when writing or rewriting any of them, or when another skill needs the prose discipline.
---
# Record Prose
Every file under `.genius/` is written twice as fast as it is read, and read by two audiences the writer never meets: a cold session with no memory of the conversation, and the owner of the project, months later, looking for one fact. This skill is how those files are written. The `genius-file` skill owns *where* things go; this owns *how the sentences carrying them are made* — for the snapshot, the log, the contract, and the cross-work files alike.
- **Write it for someone who wasn't there.** The reader is usually a session with no memory of the conversation that produced the file — so short sentences carrying one fact each, the actor named rather than implied, one term per concept held constant. The discipline borrows the form of [Simplified Technical English](https://asd-ste100.org/) (ASD-STE100), which controls vocabulary, sentence length and one-instruction-per-sentence for readers executing procedures; its restrictions are written for documents that carry no reasoning, and these files carry reasoning on purpose — which is why the borrowing stops where the next two rules begin.
- **Reasoning stays where it is load-bearing.** A kill-reason names the attack that broke the option, a repeat weakness names its adjustment, a technology names what selected it — written plainly, never compressed to a verdict. No ceiling, no cleanup, no tidiness ever buys itself a shortened kill-reason: a verdict whose reasoning is gone is not shorter, it is destroyed.
- **Quoted words are a record, not prose to conform.** The user's confirmation goes in as they said it, however loose; the form binds your sentences, never theirs.
- **Write in the owner's language, plainly.** The human whose project this is opens these files, and a record they don't want to read has failed half its audience. The project's terms (`CONTEXT.md`) and this flow's own names (slice, contract, snapshot) are vocabulary; jargon coined on the spot — buzzwords, translation-flavored filler, a plain fact dressed in decorated restatement — is noise both readers pay for.
- **Evidence is data, not prose.** A criterion's record is the command and what it showed — `cargo test config::profiles → 14 passed` — one line, never a paragraph narrating that testing occurred. Reasoning earns sentences; results never do.
- **A backlog line is a seed, and 300 characters is its pot.** One physical line — the file's own rule — carrying what it is, why it is worth doing, and where it came from; the shortest real entry measured on a live project held all three in 205 characters. The limit is characters, not lines, because one physical line hides any length (the same project held an entry of 842 columns — nine screen-lines that still counted as "one line"); the file is read whole on every `/genius`, so every entry pays its length on every read. Over 300, the line has stopped being a seed and started being a plan: it is a piece of work that wants its own file, or it is carrying detail that belongs elsewhere.
- **Route before trimming — a seed's detail is displaced, never deleted.** An entry over its pot usually carries facts recorded nowhere else: check the log its link names, and where the detail is not already there, append the entry verbatim to that log first and point the seed at the new anchor. Compression may drop what the log already holds; it may never drop what nothing else does — and an entry already inside its pot is left exactly as it is, because a rewrite that wasn't needed is only a chance to lose something. A link, where the original had none, is an inference: verify the anchor actually records the thing before writing it.
- **A checked fact carries its scope, and a negative one carries its instrument.** A later session inherits it as a constraint and designs around it, so write what you checked and where — `no headless browser installed in this project`, not `no headless browser`. An over-broad fact costs more than a missing one: the missing one gets looked up, the over-broad one becomes a seam nobody questions. And an absence is evidence only where the check could have come back positive — `which` searches `PATH` and is blind to everything off it, a lowercase match misses a capitalised name, a test running as root cannot see a permission. An instrument that couldn't observe the thing has not reported the thing's absence.
+ ## Written in the reader's language, never translated into it
+
+ A model composes in the language it thinks in and renders into the one it writes in, and the render shows: sentences that are grammatical in Chinese and shaped like English, words that are the dictionary's nearest entry rather than the one an engineer here would say. The reader has to translate back before they can believe anything, and a record that costs a translation costs a misreading. None of this is fixed by a list of banned words — a list catches yesterday's words and misses tomorrow's — it is fixed by knowing what the style *is* and writing from the fact, not from the sentence:
+
+ - **Start from the fact, in the record's language.** The test for a sentence: could it have been produced by translating an English one clause by clause? If yes, don't edit it — throw it away and say the fact again the way it would be said here. In Chinese that means the condition before the conclusion (除非 Y,否则 X, never X,除非 Y), the verb doing the work rather than a noun with 进行 or 对……进行 in front of it (改了配置, not 对配置进行了修改), and 一个, 的-chains, 它/它们 and 当……时 only where Chinese would actually put them.
+ - **A person or a file acts; an abstraction doesn't.** "This design ensures", "the approach allows" render as 该设计确保了、这个方法允许, and the reader is left asking who did what. Name the actor the record already knows — the slice, the user, the test, the file — and give it a plain verb.
+ - **Use the word a colleague would say aloud on this project.** Not the concept's dictionary entry: a test 挂了, not 被打破了; a value 钉死了, not 被固定; an interface 提供, not 暴露; an event 处理, not 消费; a setting 沿用, not 被尊重; code that is 稳定, not 健壮; a change that is 干净, not 优雅. The test is to hear it: said to a teammate, would it make them pause? Then it was translated, whatever language it is in. The same failure exists in English — *robust*, *seamless*, *leverage*, *delve*, *comprehensive*, *it's worth noting* are model-speak rendered into English, and the same test catches them.
+ - **A word that carries no fact is decoration, and a record has nobody to decorate for.** 成功地通过了 says what 通过了 says; 潜在的问题 says what 可能的问题 says; 显著、至关重要、值得注意的是、本质上 tell the reader how to feel about a fact instead of stating one. Remove the word: if the fact is intact, the word was never part of it.
+ - **A record greets nobody and concludes nothing.** No opening that announces what follows, no 总的来说 or 综上所述 that says it again, no offer at the end. The first sentence is the first fact; the last sentence is the last one.
+ - **Rhythm belongs to arguments, and a record is not arguing.** Three of anything for the sound of three, 不仅……而且……, the empty contrast 这不是 X,而是 Y, 首先/其次/最后 laid over facts that have no order — these are the shapes of persuasion, and they make a reader look for a point the record isn't making. Reasoning stays, as the earlier rules require; it stays as the reason, plainly, not as rhetoric.
+ - **The flow's own names are rendered once per project.** *Slice*, *snapshot*, *contract*, *seam*, *kill-reason*, *assumed*, the six stage names — left to the moment, they come out differently every time (切片 today, 分片 tomorrow; *enable* as 赋能, which is the noise above wearing a stage's name). One rendering each, recorded in `CONTEXT.md` (`domain-glossary` skill), and the record uses that one.
+
+ This section governs the records under `.genius/` and the project docs the flow writes. It is not a style for conversation, and it does not rewrite the skills' own voice.
+
The test for all of it is the same reader: someone who wasn't there, finding the one fact they came for, believing it exactly as far as it deserves.