A discipline that makes results accumulate. Only one thing is prevented — re-buying what is already known.
§0 Tradeoffs
This discipline chooses accumulation over throughput. For a one-off check or a single exploratory question, it is overkill. Only turn it on when the research program lasts more than several days and results must reference each other.
§1 Three-layer separation — goal / hypothesis / means
If you mix the three into one document, hypothesis replacement looks like a goal change, and you end up circling around a falsified hypothesis.
| 층 | Who changes it | Frequency |
|---|---|---|
| Goal (why we do it) | Humans only | Almost never changes |
| Hypothesis (by what) | Humans adopt/discard · agents design falsification | Replaced immediately once falsified |
| Means (how) | Agent autonomy | Free |
★What needs approval is not the "launch" but the "hypothesis." Within the scope of a registered hypothesis, launches are autonomous. Outside the scope, approval is required. If you get approval for every launch, the loop cycle is decided by humans, and time leaks into activities that need no approval (writing documents).
Replacing a falsified hypothesis with a different hypothesis in the same slot is not a goal change. Without this distinction, you get trapped in dead paths.
§1.1 The goal is split into a ladder— without splitting, no experiment reaches the goal
A single-sentence goal cannot be aimed at by experiments. A chain of independently verifiable links
Split it into (A expression → B acquisition → C retention → D retrieval → E use → F gain),
and put the status of each link on one screen. Frame · status notation · maintenance: references/constitution-template.md
Two ways to read it.
- Every experiment below a broken link is meaningless — if C is broken and you run an arm that uses C, nulls are guaranteed.
- ★If there is a broken link but F is positive, the value is coming through a path that bypasses that link. Finding that bypass path is the next experiment. Measured: with C·D broken, F was +1, and the verdict statement had even written down the name of the bypass candidate, yet no one opened it for 9 days.
§2 Eight pre-launch gates — all machine checks
If you cannot answer even one, do not launch. Do not write passes in a document; verify with a commanddoes.
| gate | question | on failure | |
|---|---|---|---|
| G1 | CLAIMS grep | this experiment which claim does it open? | if you can't answer, an answer probably already exists — find it first |
| G2 | utterance check | is the declared component actual loss graphin it? | it's a dead lever. start from the wiring |
| G3 | resolution | does the primary metric have floor, ceiling, noise floor? | with a metric that can't move, whatever you do is 0 |
| G4 | control group | for this claim, is the strongest existing methodthe control group? and is the category the same? | even though a control group existed the headline flipped 5 times — because it's weak or the category differs |
| G5 | regression bench | did this change break something that already worked? | G1~G4 only check "can it be read." no one checks breaking |
| G6 | link declaration | which link of the goal ladder which linkdoes this open? | if you can't answer, it's noise — don't launch an experiment without a link |
| G7 | sign check | the intermediate metric intermediate metricto intervene on is attached to the final metric with what sign? | if negative, don't design an intervention that raises that metric. existing log regression 2 min |
| G8 | arm identity | do the two arms' full-key diff of manifests match exactly what I believe I'm manipulating exactly match? | don't trust the name — the name is a cached conclusion. if inconsistent, stop |
★G5~G8 were all created by failures that passed every prior gate. just one line each:
- G5 measured: with 918 tests green, one capability was 0 for 4 weeks — ten days to discovery.
- G6 measured: of 8 preregistrations, 1 was above the goal link, and that 1 was the only positive. chasing noise is by definition a local mini every time.
- G7 measured: the intermediate metric I was trying to raise was, in the existing log regression 2 min, −0.90 with the final metric.
- G8 measured: trusting the arm name, the money I spent 9 hours and 66 runs were entirely invalid — the identity was in plain text in the manifest.
implementation, snippets, and the full origin story of each gate: references/gates.md
§2.1 metrics are derived from the hypothesis — do not use a metric that exists
The most common failure is not failing to keep the gate but standing in front of the gate holding a metric that cannot be measured.
Measured: with the primary metric fixed as 0/419 while the primary metric remained fixed as 11일, it ran — no matter what was done, it was 0, so the experiment could not distinguish anything.
Five-step elicitation procedure — ① Turn the hypothesis into a discriminating statement ("In what do a model that learned X and a model that did not learn X diverge?")
② Find a discriminating manipulation, and ③ actually run the floor, actually run it, ④ build the ceiling, and ⑤ wire-check the manipulation itself.
Each step is confirmed by command. Procedure, manipulation table, example (color substitution): references/gates.md G3-0
Three discriminating questions — if any one is triggered, do not use it as the primary metric. ① Can this number be raised by memorization(Measured: the rule component of a model with 1.0000 by memorization is 0) ② Is the floor–ceiling gap wider than the noise floor — before comparing arms, measure A-vs-A first ③ Is it causally linked to the final metric — if it is only correlated, it is a proxy metric (measured: a discrepancy of 22 orders of magnitude).
One metric per hypothesis, fixed for the entire program. Measured: 76 preregistrations made the primary metric nearly 76 of them, and so results did not stack upward but lined up sideways. Introducing a new primary metric is left as an approval item(§9).
§3 Two tracks — different gears for exploration and confirmation
Registered-Report discipline is confirmation-oriented. Applied to exploration, a single observation costs as much as a clinical trial.
| Exploration (EXP) | Confirmation (CONF) | |
|---|---|---|
| Preregistration, approval, verdict statement | None | All |
| Output | Log 한 줄 | Verdict statement |
| Use of results | ⛔Headline prohibited | Claim allowed |
| Purpose | Choose direction | Fix direction |
| Frequency | Free | Rarely |
Only what exploration selected goes up to confirmation. If the discard rate is 0, it is evidence not of discipline but of not having explored.
§3.1 Slot reservation — so noise cannot push the goal aside
Concurrent experiments are limited to two, and at least one of them is placed on the goal link (G6).
It is not discipline but attention allocation device. That regression bug hunts beat goal experiments is not because of laziness but because bug hunts are structurally more attractive — the question is sharp, the answer is definitive, it closes quickly, and it is right next to you. Without a reservation, it loses every time.
⚠If unresolved experiments exceed the number of slots, no new launches. Actual measurement: with 8 unresolved items piled up the arm that narrows again the already-closed negative spaceproduced four more.
§3.2 Slot enforcement — reservation is not a declaration but preemption(established 2026-08-06)
A registered G6 goal-link experiment always preempts one slot. Before that slot runs and terminates, new exploration/literature/audit commits are only one allowed, and launches within the registered scope cannot be halted in approval-wait for more than 15 minutes.
Actual measurement (0806): because §3.1 had only a declaration and no enforcement, the GPU sat idle for 9 hours. — each launch permitted by §9 was asked about again per launch, and exactly as §1 foretold, time leaked away into writing documents. Full story: references/case-studies.md §12
⚠Do not confuse: even with 0 training, if there is a preregistration, a judgment band, and a judgment statement, then cheap CONF . Cheap confirmation is encouraged, and only approval-wait is forbidden.
Three machine enforcements:
- In every commit,
EXP/CONF/OPS· G6 link · GPU estimated time · approval grade are written. - GPU idle 15 minutes → alarm. Immediately halt document/approval-wait activity and launch the reserved slot.
- Only when the CONF judgment opened a learnable target is a training experiment preferentially reserved for the next slot. (The ratio rule is not used — it unjustly forces cheap CONF into training.)
§4 Post-experiment obligation — no judgment statement without updating CLAIMS
If a record is narrative(what happened), it does not accumulate. normative(what is now forbidden) it must be.
Every claim must necessarily have three fields:
- What it closes — experiments that are now meaningless. Because this is missing, people knock on closed doors.
- What it opens — the next move that the negative result designates. Without it, the negative simply ends.
- Reconfirmation counter — the number of times the same conclusion was bought again. If 2 or more, §7.
Corrections overwrite. If ⛔ blocks are piled up in the claim ledger, "what is true now" becomes unreadable.
Spec/examples: references/claims-schema.md
§5 Code principle — a new experiment = not a new file but a new config
If there is an approval gate, creating a new file that requires no approval is always cheaper. So orphans pile up.
- If it can be done by combination, do not write code. If it is a registered combination of loss, ruler, and conditioning, config만.
- if a new atom is needed,
core/register it in. One file = one concept. Once registered, all experiments use it. - A one-off diagnostic
probes/is quarantined in Enforce the learning ban in code, and once the deadline passes,archive/. - ★the tool is also registered — a tool not hooked into a gate is not "complete" but "unwired". Once built, on the spot hook it to one of the gates, CI, or CLAIMS. If it can't be hooked, record it as incomplete. The measured set (auditor not updated · wall protocol script absent · invariant machine fired 0 times) all later almost got rebuilt from scratch.
- Discard budget. When opening a new experiment directory, close one closed experiment — absorb the script into the shared harness or delete it and leave only the verdict. Measured: in some interval, files added 113 / deleted 3 (2.7%) and the diagnostic script directory had 0 deletions.
Pinning the canonical copy applies not only to the architecture but also to the trainer. Otherwise forks arise to avoid the locked files.
§5.6 Repository layout — don't put things with different lifespans in the same place
The reason tidying doesn't happen is not laziness but the absence of a deletion criterion.
Measured: 43/59 orphan scripts, yet not a single one could be deleted — files with different lifespans mixed in one directory, so "is it okay to delete this" could not be answered.
When the five zones (core/runners/experiments/probes/artifacts) are separated, the deletion rules
are determined automatically — that is all there is to tidying.
Layout diagram · per-stage experiments/ · migration protocol (move≠modify commit · G5 after every move) · git policy (result
json is committed) · four self-checks: references/repo-layout.md
§6 Red flags — stop when this thought occurs
(The 7-line modification discipline flag at the end of §10 has been merged into this table. ①~⑥ below are the rule numbers from §10.)
| Thought | Reality |
|---|---|
| "I haven't measured this yet" | Did you grep CLAIMS? Measured: of 6 missed concepts, 5 were in the records |
| "It's in the code, so it works" | Did you look at the firing logs? In two projects, 9 cases were declared only and fired 0 times |
| "Tidying the docs is progress" | Does this deliverable change any remaining decision? Otherwise it's a substitute activity |
| "The metric went up" | Did you write down where that metric was taken from? A conditional metric cannot see the cost of destruction |
| "Let's create a new probe file" | Can it be done with an existing runner flag? (§5.1) |
| "I'll write docs while waiting for approval" | The exploration track does not need approval (§3) |
| "Let's add the control group later" | In this project, the headline 세 번 This is an inverted item (G4) |
| "Just multiply by the average" | It is an independence assumption. Count the intersection directly |
| "This axis is blocked, so use another axis" | of the remaining axes already reached the global optimummay have happened. What is needed then is not optimization but adding a dimension다 |
| "I know what this arm does" | Did you diff all keys before the manifest (G8). The arm name is a cache made by a previous session |
| "I confirmed with grep" | Have you ever looked at a single record as a whole. Key lookup cannot refute its own frame |
| "Let's measure what this machine chooses" | Did you count the size of the choosing set. If |S|=1 then that machine is the identity element |
| "Let's run an experiment to confirm" | Does the answer come out from §12 ladder ①~④. The 9 hours spent going to ⑤ today came out of 3 hours in ①③ |
| "Let's report all at once when it's done" | §13. A postponed explanation gets organized within its own frame — errors hide |
| "This is professional content so it can't be written in plain terms" | While writing it in plain terms, there were three cases where absurdity was revealed. If you can't explain it, you haven't understood it yet |
| "I put it behind a flag to avoid touching the existing stuff" | You created debt. Does it have a lifetime and an owner (④) |
| "Let's leave the old path in place for now" | That is not a replacement but a branch. A branch means both must be tested |
| "This is a pure addition so it's safe" | A pure addition the reader's burdenincreases. Did you fill in the subtraction column (①) |
| "While refactoring, this too" | You wore two hats at the same time(②⑤). Split the commit |
| "I'll clean it up later" | A scheduled cleanup fails(④). If you can't delete it now, write down its lifetime |
| "You just need to fix this part" | Did you draw a component map(⑥). Did you count how many paths enter this component |
| "Each one is correct" | Correct. what they become when combinedtry writing in one sentence (⑥) |
§7 When do you fix this skill
- When the recheck counter exceeds 2 — not the index but you fix this skill. Why the gate couldn't catch it is the defect.
- If it failed after passing the gate, — add a gate.
- ★Do not create a new skill. Improve this skill. When skills multiply, skills do not accumulate either — it is the same failure this discipline prevents.
§8 How to report to people
Interim reports are determined by whether there is a decision, not by length. Protocol: references/briefing.md
Only the essentials: If there is no decision, 5 lines; if there is a decision, options and costs. Listing progress is not a report.
§9 Execution discipline — what approval hangs on and in what units changes are cut
The discipline for writing code (simple, surgical, verification loop) is karpathy-guidelines handled by .
What is decided here is approval boundary와 change unit. (The "four forms of change" that were in §10 have been merged here.)
Approval boundary — three grades. As per §1, approval is not attached to launch but to 층.
| what | approval |
|---|---|
| Launch, analysis, exploration (EXP) within the scope of a registered hypothesis | not required |
| Adopting a new hypothesis · Discarding · canonical code change | required |
| Goal change · Constitutional amendment | required + number before and after G5 |
Stage splitting — one approval = one revertible chunk. A single chunk has all four of these: ① What is changed (file·line) ② What proves success (command) ③ what it is reverted with if broken ④ The link this opens (G6). If ③ is missing, the chunk is too big.
Four legal forms of change. Before writing new code, declare which form it is. There is no fifth.
| Form | What | Accompanying obligation |
|---|---|---|
| Promotion | Experiment flag → default value | Remove the flag and the opposite branch in the same commit |
| Replacement | Put in the new one | The old one removed in the same commit. If left, it is not a replacement but a branch |
| Wiring | Connect what already exists but is not running | Also create the firing check (G2) test |
| Removal | Delete it | Write what replaces this. If there is nothing, it is a loss of capability, so write it as such |
Pure addition (append) only when it is truly a new concept is allowed, and even then attach lifetime·owner·firing check all three together.
Approval form — four fields. If you cannot fill them, the request itself is invalid.
1 차분 프롬프트·헌법·정본 코드의 바이트 차분
2 G5 회귀 벤치 전 → 후
3 G2 이 변경이 발화하는가 (기록된 런에서 ≥1회)
4 G3·G6 주 지표 해상도 / 여는 링크
⚠An agent must not obtain approval with numbers it picked. Measured: the approval basis was "main metric 2.8→1.0, accuracy 0.32→0.95" and both were true,, and the same change made another capability 0 for 4 weeks. Only one cell was missing — No. 1 (calm).
§10 Modification discipline — appending is the exception, not the default
§5가 new filesis blocked and §9 cuts change units, then here continually piling onto existing filesis blocked. (Your format table was merged into §9, and the red-flag table into §6.)
① Write the subtraction first. Every change proposal writes "what do we delete?" on the first line . If it is blank, the proposal is not finished.
Humans systematically miss subtraction (Nature 2021), and only when given a signal do they change — which is why the prescription is a checklist line, not willpower. Measured: files added 113 / deleted 3(2.7%).
② Do not put structural changes and behavioral changes in the same commit.
Tidy First? — structure (behavior unchanged) and behavior are different commits. Measured: into an 80-commit grand refactor, one prompt sentencegot mixed in, making one capability 0 for 4 weeks and localization take ten days. If they had been separated, it would have been caught that day.
③ The default is the truth — a fix measured to be right is promoted immediately. A fix behind a flag is the same as not existing.
Measured: the regression cause was confirmed (0727), and it was even measured that there was no cost (0.009 vs 0.009), yet it was not promoted to the default. Such default-OFF flags are 21개 — default execution = the behavior from weeks ago + everything after it turned off.
④ Attach a lifetime and an owner to flags. If not, do not create them.
Temporary toggles must expire within a few weeks, and ★"let's clean it up later" fails — the lifecycle must be automatic. Measured: the most-toggled flag was toggled 39 times and produced 0 outputs(an ineffective lever).
⑤ Make the place first, fill it later. Do not wear two hats at the same time.
"Make the change easy (this may be hard), then make the easy change." If you pile on without fixing the structure, you only in places easy to pile onto end up piling on, and those places are rarely the right ones.
⑥ After fixing, reread the whole thing — the sum of partial fixes is not the whole. If you fixed some component (grader, selector, trigger), one sentence on what that entire component does nowis written. If you cannot write it, the fix is not finished.
Procedure — component map. into that component all paths in one table and for each path write ① when does it arrive ② what does it use ③ under what conditions, then two questions: are there overwriting pairs · are there canceling pairs. Measured: on one grader the paths numbered eightand as soon as they were put in one table two defects were immediately visible — read separately they are invisible. ⚠Locally correct fixes combine to be wrong. Full story:
references/case-studies.md§13
§11 verification ladder — if an answer comes out above, you do not go down below
Experiments are the most expensive means of verification. But if that is all the harness provides, habitually you start there.
| What does it answer | Measured cost | |
|---|---|---|
| ① Manifest/log field lookup | What actually ran | 초 |
| ② Unit tests | Is the wiring alive | 초 |
| ③ Log replay (offline regrading) | What would this intervention in past data have changed | 분 |
| ④ Module verdict (1 input → output by eye) | Can this be solved based on this response | 분 |
| ⑤ Full run | Final metrics/downstream behavior only | Time |
★If you skip ①, ⑤ can become entirely invalid.★ Measured: because ① (one manifest line) was not looked at, after running ⑤ for 9 hours, the identity of the arm was different from what was believedwas revealed. On the same day, with only ①③, 7 defects in the same project came out in 3 hours · 0 new runs.
Two rules. ⑤는 One set per day. Before ⑤, always G8 (arm difference).
§12 Intent cross-check — instructions are not context but a checklist
A design sentence given by a person ("four elements, A is code, the rest is natural language, evaluation on two axes") if classified as background explanation, from that moment the code takes the place of the spec. Then deviation from intent is in principle invisible — because the deviation is inside the very thing taken as the standard.
★Convert it into a checklist immediately upon receiving it, and attach grep one line to each item and execute it.★
Measured: all four items were one-line lookups and would have taken 10 minutes. Instead 9 hours were spent, and
during that time two of the four items had been deleted two days earlier(it was written in plain text in a code comment).
One fix = one intent cross-check. For each commit write "which checklist item does this change satisfy." If you cannot write it, that change is not above intent. This checklist is the seed of the open-items inventoryin §13.
⚠Humans know intent and code knows history. When the two diverge, looking only at the code mistakes history for intent. A one-sentence question ("what exactly does this arm do") is the cheapest gate.
§12.1 Single intent contract — keep only one research document as the canonical source
In long experiments, README, the plan, prompts, and verdicts easily copy the intent and end up stating different
goals. For each project, keep the single human-approved INTENT.md as the intent canon,
and manage only the following fields.
목표(불변) · 가설(교체 가능) · 수단(자율 변경) · 소유 경계
평가 정의 · 목표 사다리 · G1–G8 상태 · 미결 inventory · 다음 확인 명령
- Other documents must not restate the intent; instead,
INTENT.mdlink it. The plan holds only the launch order, the prompts only the per-role behavior rules, and the verdict only the actual results. - If code and documents diverge, first
INTENT.mdcheck the utterance against each field's command. If a component the document mentions is absent from the logs, record it as "unimplemented/unwired" and do not interpret it as success. - When changing hypotheses or means without changing the goal, update only the intent document's status and its closing/opening/reconfirmation counters. Do not create auxiliary documents that quietly add a new goal.
- In the launch manifest, leave
INTENT.mdhash, actor/editor/planner prompt hashes, arm, seed, and budget. If the hash is missing or a different intent document was read, invalidate the launch.
The minimal verification of this rule is the following four commands: rgfind the canon link, check the
contract with unit tests, replay previous logs, and only last do a new run. The intent document is
not a report that embellishes experiment results but a contract that constrains the next decision.
§13 In-progress audit — do not wait for landing
Long tasks (workflows, multi-agent, long-running) are too late once they finish. Hang two cycles.
10 minutes · in-progress audit — canon (constitution) · ledger (CLAIMS) · compare against user instructions · this skill
There are only five things to look at. If there is nothing, write "nothing" and stop — writing a document when there is nothing to look at is displacement activity.
| Question | If divergent | |
|---|---|---|
| ⑴ | Is what I am measuring now what the canon requires | Fix the prompt on the spot |
| ⑵ | (If parallel) Does it respect ownership boundaries — are two people touching the same file | Stop immediately |
| ⑶ | Hard constraints — net increase, tests, protected list | Stop immediately |
| ⑷ | Has one's own clause been overturned by measurement | Fix the clause first |
| ⑸ | ★Omissions — what is missing relative to the canon, ledger, user instructions | If it was omitted, tell a human now, and if it was forgotten, put it in the inventory |
⑴~⑷ are all "Is what's spinning correct" . ⑸only "what is absent" sees.
Measurement (0807): because ⑸ was missing, out of 22 instructions only 10 were implemented and 9 were silently dropped,
and none of the checks caught it. Full story: references/case-studies.md §15
★If you find something misaligned, don't wait for landing.★ Measurement: in the two workflows that waited for landing +146 lines net increase과 misreading the audit outputwas discovered only after it was over, and reverting cost one more cycle. Conversely, the 10-minute audit before launch caught one clause — measured, it was a design that discards 88% of what could be used .
Open inventory — this table is the source of truth for long tasks
At the start, all declared items(user instructions · preregistration · constitutional duties) are made into one table and maintained to the end.
- One status per item:
BLOCK / OPEN / DECIDE / CLOSED. - ★Also record what was decided not to do. If you narrow the scope, say the removed items and the reason to the person on the spot. Measurement (0807): "narrowing that had a reason but was not stated" happened 두 번 twice in one day.
- In the 30-minute output,
인벤토리 n/m donealways include numbers. If the numbers don't move, that's the signal.
30분 · In language a child can understand produce the output
What was tested · what worked · what didn't · 왜 · what's next · 인벤토리 n/m done.
If you use jargon, unpack it right there.
★This is not a reporting format but an error-detection device — postponed explanations get organized within their own frame and errors hide.
Three measurements: "green" was used as a single word with 세 뜻meanings revealed (the third meaning is not 'correct') ·
When the cutoff rule was unpacked as "tested with only 8 of 43 reference books" , a design that discards 88%became immediately visible ·
count loss and selection loss split apart (the latter 2.9배). Full story: references/case-studies.md §14
§13.1 Parallelism is wagered on measurement, not on implementation
| in parallel | 왜 | |
|---|---|---|
| module tests | ★Yes — exhaustively★ | the judgments are mutually independent and read-only. Measurement: 20 concurrent, 0 incidents |
| ★Does the result match intent★ | ★Yes — as a separate layer★ | Even if all modules pass, it can diverge from intent. If you split the lenses, each digs deep |
| ★omission auditor★ | ★Yes — one standing arm★ | The only question: "what is absent relative to what was declared". See below |
| Implementation that carries the specification | ⛔It is not | Even if files are split, "Does this match the specification" does not get split |
★Module testing and intent checking are different layers. Run both in parallel, separately.★ The module layer "does this component run", and the intent layer "is what runs the thing it was told to do" — those are the questions. All components can be green yet it might not be what was asked for — measured: while many of the 27 modules were ✅, 3 specification violations were alive at the same time.
★The omission auditor is one permanent arm. For the inventory every itemis forced to have done / not-done / reason one line each— that is enforced. "The decision not to do it" is itself also subject to verification — if the reason differs from the facts, it is pointed out. Measured (0807): because this arm was absent, a machine committed as "restored" had 0 callers while that arm was byte-identicalto the control group (an accident overlapping with G8 not being run).
⚠The price of running implementations in parallel was measured. Across 21 simultaneous implementations, specification violations 3건 — 1 case of substituting the specification for cost reasons (caught by the user), 1 case caught just before landing, 1 misjudgment. Even if file ownership is split, specification cross-checking must be done by one person. If that one person looks at 21 at once, they cannot see it.
⇒ Measure broadly in parallel, implement narrowly and sequentially. The output of parallel measurement is "what to fix" , not "what was fixed" . The order of fixing is decided after seeing all the verdicts.
The two cycles are upper limits, not alarms
When a commit comes in or a stage changes, that is when you look. 10·30 means "do not leave it unlooked at longer than this" . ⚠Do not call tools with nothing to look at just to keep the cycle — that too is a substitute activity.
§14 The human's role — five. Only what agents structurally cannot do
| Question the human asks | Why the agent cannot do it | |
|---|---|---|
| ① | Four fields of the approval form are enforced | It ends up verifying itself with numbers it chose itself |
| ② | "What does this prevent from being done?" | The agent is structurally biased toward the gain axisof its own changes. Even if you show it two metrics, it picks both from the gain axis |
| ③ | "Delete it" | append-only bias. The discard rate converges to 0 |
| ④ | "Where on the ladder is this experiment?" | The only lever preventing noise from beating the goal |
| ⑤ | "Didn't we do this before?" | If CLAIMS exists, grep; if not, thousands of lines of prose |
② is the cheapest and the strongest. A single measured worst incident would have been caught by this one question.
Basis: These rules are all bought by failures. For each rule, "What did we lose because this wasn't there" 는
references/case-studies.md is measured in If the rules feel excessive, read from there first.
⚠This skill itself came out of a postmortem diagnosis, and whether it actually prevents failures going forward is untested. The test method is the re-confirmation counter in §4 — since introduction, "bought the same conclusion again" if the number of cases does not decrease, this skill has failed. Do not fix the index, and per §7 fix this skill.