diff --git a/AGENTS.md b/AGENTS.md index 20872565..6bb4ed2e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -39,6 +39,8 @@ Before making nontrivial changes, agents should read: 7. [`docs/research/NEXT_100_PR_MAP.md`](docs/research/NEXT_100_PR_MAP.md) — PR-sized backlog. 8. [`docs/trust/TRUST_CENTER.md`](docs/trust/TRUST_CENTER.md) — trust architecture. +Then route the task with [`AGENT_TASKS.json`](AGENT_TASKS.json) — the machine-readable map of safe paths, forbidden zones, review class, and the exact checks each task class must pass. It is the fastest honest answer to "what am I allowed to change here, and what must go green before I open a PR?" If your change touches a `forbidden_zone`, that is a stop condition, not a task. + If these docs conflict, safety and claim discipline win. ## The agent role @@ -90,6 +92,39 @@ read relevant docs A good agent task should leave the repo easier for the next human or agent. +## Executable contract — every rule needs an enemy + +A rule that nothing can catch you breaking is a wish, not a contract. Wherever this repo can *check* a rule, it does; where it cannot yet, **you are the guard** and the reviewer reads that line by hand. Know which is which before you rely on it. + +| Rule from this contract | The command that catches a violation | +|-------------------------|--------------------------------------| +| Claims must not exceed evidence | `make claim-check` (advisory) · `make claim-check-strict` (fails on findings) | +| Every advanced method beats a cheap enemy | `make bench-cheap-enemies` · `make bench-charge-matched` · `make bench-leakage` | +| Ranking gates are respected | `make gate-check` · `make bench-gate` | +| Outputs are reproducible | `make cert-quality-check` · `make full-reproducibility-report` | +| Docs link where they claim | `make doc-links-check` | +| Deprecated benchmarks stay dead | `make bench-deprecation-check` | +| Code is green and typed | `make ci` (lint + test) · `make coverage` · `make typecheck` | +| Fast pre-PR bundle | `make agent-check` then `make doctor` | +| Preserve negatives, caveats, failure modes | **you are the guard** — no scanner catches a deleted caveat | +| Don't touch safety/release/threshold/calibration policy | **you are the guard** — these are stop conditions below | + +### Checks are a floor, not a verdict + +Green checks mean *nothing obvious is broken*. They never mean *the claim is true*. `make claim-check` scans wording, not meaning; a benchmark that passes its gate can still be measuring leakage; a reproducible number can be reproducibly wrong. Treat the suite as the cheapest possible enemy — the one every change must beat before a human spends attention on it — not as the definition of done. If passing a check is the *only* evidence a change is good, the change is not yet good. + +## The disconfirming pass — run before every PR + +Before opening a PR, spend real effort trying to prove your own change wrong. This is the single habit that most separates a trustworthy agent from a fast one, and it is the working form of GOAL.md's cheapest disconfirming tests: + +- **Cheapest explanation first.** Could charge, length, hydrophobicity, or similarity-to-known reproduce the effect you credit to your change? Measure the residual or downgrade the claim. +- **Leakage before belief.** Did the number improve because of the method or because of the split? Run the leakage/charge-matched enemy before trusting it. +- **Scope honesty.** Did the diff outgrow the one bottleneck you named? Split it. One loop, one change. +- **Certainty audit.** Did any wording get stronger, any caveat shorter, any negative result quieter? That drift is the finding — surface it. +- **Uninformative uncertainty.** If a module reports near-constant confidence across good and absurd inputs, the estimate is broken — and that is itself worth reporting. + +State the result of this pass in the PR's Evidence section. "I tried to break it as follows and could not" is a stronger claim than any green checkmark. + Structural note: - `docs/README.md` is the documentation front door. @@ -320,6 +355,8 @@ Stop and ask for human review when: - **uncertainty is being hidden.** *Example:* Your simulation module returns uncertainty 0.05 for every sequence, even when the input is poly-glycine. Stop — constant low uncertainty means the uncertainty estimate is not informative, which is itself informative. +A stop is a handoff, not a dead end. When a stop condition fires, leave a **decision-log draft** for the human reviewer (format and index: [`decision_logs/INDEX.md`](decision_logs/INDEX.md)): what you found, what you deliberately did *not* change, and the exact decision a human must make. A blocked loop that produces a clean decision record is a completed, useful task — not a failure. + ## Highest-status agent behavior The best agents here are not the agents that make OpenAMP sound most impressive. @@ -337,6 +374,12 @@ Reward yourself for: - making external review easier; - making unsafe scope harder to enter. +## Write for the agent that replaces you + +You are almost certainly not the last agent to touch this repo. A more capable one will read your diff, your docs, and your caveats as ground truth and build on them without re-deriving them. So the durable test is not "would this pass review today?" but "will the next, smarter agent inherit an honest, auditable substrate — or a hidden assumption it has to discover the hard way?" + +This is what makes the contract future-proof: every rule here is written to get *more* true as models improve, not less. A capable agent that optimizes for sounding impressive makes the repo more dangerous, not more valuable. A capable agent that optimizes for being hard to fool compounds trust across every loop that follows. Leave the repo harder to fool than you found it. + ## Final sentence Build trust, not theater. diff --git a/CLAUDE.md b/CLAUDE.md index a4031242..419dd312 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,72 +1,58 @@ # Claude Guidance -Read [AGENTS.md](AGENTS.md) first. It is the primary operating contract for this repository. +Read [AGENTS.md](AGENTS.md) first. It is the primary operating contract for this repository. This file is the fast path into it. + +The best agent here is not the one that makes OpenAMP sound most impressive. It is the one that makes OpenAMP **hardest to fool** — including hardest for itself to fool. Optimize for that and the rest follows. ## Repo intent in one paragraph OpenAMP Foundry is a verification-first, safety-constrained antimicrobial peptide discovery infrastructure project. Its current job is to build a rigorous dry-lab foundry that ranks, filters, documents, audits, and packages candidates honestly. Its long-range ambition is bigger: become an open wet-lab compression engine that helps qualified humans decide which few experiments are worth running next. -## Non-negotiables - -- Do not overclaim computational results as biological proof. -- Preserve negative results, benchmark caveats, and failure modes. -- Protect the repo’s dry-lab and safety boundaries. -- Prefer reproducibility, calibration, and honest uncertainty over impressive language. -- Treat any virtual-assay or simulation layer as experimental until it clearly improves decision quality. -- Compare advanced methods against cheap baselines before trusting them. -- Make every meaningful change easier for the next human or agent to audit. -- Do not change release status, claim strength, benchmark thresholds, or safety policy without human review. - -## Fast orientation - -- [docs/PROJECT_INDEX.md](docs/PROJECT_INDEX.md) — navigation hub for humans and agents. -- [docs/trust/TRUST_CENTER.md](docs/trust/TRUST_CENTER.md) — trust architecture. -- [docs/getting-started/COMMAND_SURFACE.md](docs/getting-started/COMMAND_SURFACE.md) — command workflows and claim boundaries. -- [docs/operations/HUMAN_AGENT_COLLABORATION.md](docs/operations/HUMAN_AGENT_COLLABORATION.md) — human-agent division of labor. -- [docs/getting-started/REVIEWER_ONBOARDING.md](docs/getting-started/REVIEWER_ONBOARDING.md) — review expectations. -- [docs/research/NEXT_100_PR_MAP.md](docs/research/NEXT_100_PR_MAP.md) — PR-sized backlog. -- [docs/evidence/PROOF_LADDER.md](docs/evidence/PROOF_LADDER.md) — claim ladder and evidence levels. - -## Key docs - -- [README.md](README.md) -- [VISION.md](VISION.md) -- [GOAL.md](GOAL.md) -- [MISSION.md](MISSION.md) -- [GOVERNANCE.md](GOVERNANCE.md) -- [AGENTS.md](AGENTS.md) -- [SAFETY.md](SAFETY.md) -- [RESPONSIBLE_USE.md](RESPONSIBLE_USE.md) -- [MODEL_RELEASE_POLICY.md](MODEL_RELEASE_POLICY.md) -- [DATA_LICENSE_NOTICE.md](DATA_LICENSE_NOTICE.md) -- [docs/engineering/ARTIFACT_VERSIONING.md](docs/engineering/ARTIFACT_VERSIONING.md) -- [docs/evidence/BENCHMARK_GOVERNANCE.md](docs/evidence/BENCHMARK_GOVERNANCE.md) -- [docs/engineering/CI_AND_QUALITY_GATES.md](docs/engineering/CI_AND_QUALITY_GATES.md) -- [docs/evidence/CLAIM_REVIEW_CHECKLIST.md](docs/evidence/CLAIM_REVIEW_CHECKLIST.md) -- [docs/trust/DATA_GOVERNANCE.md](docs/trust/DATA_GOVERNANCE.md) -- [docs/trust/MODEL_CARD_TEMPLATE.md](docs/trust/MODEL_CARD_TEMPLATE.md) -- [docs/trust/RELEASE_CHECKLIST.md](docs/trust/RELEASE_CHECKLIST.md) - -## Verification commands - -Before creating a PR, run: - -```bash -make agent-check # claim scan + doc link check + benchmark deprecation -make doctor # environment diagnostic -make bench-calibration # verify calibration hasn't degraded (optional) -``` +## First 60 seconds of any session + +1. `git pull`, then read [AGENTS.md](AGENTS.md) and the required first reads it lists. [docs/PROJECT_INDEX.md](docs/PROJECT_INDEX.md) is the navigation hub when you need a doc this file doesn't name. +2. Route the task with [`AGENT_TASKS.json`](AGENT_TASKS.json) — the machine-readable map of safe paths, forbidden zones, and the exact checks each task class must pass. If your change touches a `forbidden_zone`, stop and request human review. +3. Pick **one** bottleneck. Prefer an unfinished, highest-leverage one from [docs/operations/HIGH_LEVERAGE_TASKS.md](docs/operations/HIGH_LEVERAGE_TASKS.md) or [docs/research/NEXT_100_PR_MAP.md](docs/research/NEXT_100_PR_MAP.md). One loop, one change. +4. Before writing anything, state — in one sentence each — the bottleneck, the evidence it exists, the smallest change that removes it, and how you will *try to prove that change wrong*. No plan, no edit. + +## Non-negotiables — and the enemy that catches each one + +A rule with no way to catch its violation is a wish. Every rule below names the command that would catch you breaking it — or is marked **you are the guard**, meaning no automated check exists yet and your judgment is the only gate. Passing a check is a floor, never proof (see the anti-Goodhart clause in AGENTS.md). + +| Rule | Enemy that catches a violation | +|------|-------------------------------| +| Do not overclaim computational results as biological proof. | `make claim-check-strict` (scans language); **you are the guard** for meaning the scanner can't parse | +| Preserve negative results, benchmark caveats, and failure modes. | **you are the guard** — deletions of caveats/negatives get a line-by-line reviewer note in the PR | +| Every advanced method must beat a cheap baseline before it gets ranking authority. | `make bench-cheap-enemies`, `make bench-charge-matched`, `make bench-leakage` | +| Reproducibility metadata travels with every major output. | `make cert-quality-check`, `make full-reproducibility-report` | +| Docs point where they claim to. | `make doc-links-check` | +| Deprecated benchmarks are not silently revived. | `make bench-deprecation-check` | +| Do not change release status, claim strength, thresholds, calibration, or safety policy without human review. | **you are the guard** — these are stop conditions, not tasks (see below) | + +Fast bundle before any PR: `make agent-check` (claim + doc-links + deprecation) and `make doctor`. Green here means *nothing obvious is broken* — it does not mean *the change is right*. + +## Prove your change wrong before you ship it — the disconfirming pass + +This is the highest-leverage habit in the repo and the one most agents skip. Before opening a PR, spend real effort trying to break your own change. Adapted from GOAL.md's cheapest disconfirming tests: + +- **Cheapest explanation.** Could a one-line heuristic (charge, length, hydrophobicity, similarity-to-known) produce the same result you're crediting to your change? If yes, the residual is what matters — measure it or downgrade the claim. +- **Leakage.** Did the improvement come from the method or from the split? Run the leakage/charge-matched enemy before believing a number. +- **Silent scope creep.** Did the diff grow past the one bottleneck you named? Split it. One loop, one change. +- **Hidden certainty.** Did any wording get stronger, any caveat get shorter, any negative result get quieter? If so, that is the finding — surface it, don't smooth it. +- **The uninformative-uncertainty trap.** If a module reports the same confidence for good and absurd inputs, the estimate is broken, and that fact is itself worth reporting. + +If the disconfirming pass changes nothing, say so explicitly in the PR. If it changes something, that change is usually the real contribution. ## Default work loop ```text -read relevant docs +read relevant docs (AGENTS.md required reads + AGENT_TASKS.json routing) -> pick one bottleneck - -> define evidence of improvement - -> implement smallest useful change - -> add tests or explain docs-only status - -> update source-of-truth docs - -> preserve limitations + -> define the evidence of improvement AND how you'll try to disprove it + -> implement the smallest useful change + -> add tests, or explain the docs-only status + -> run the disconfirming pass; run the enemy checks above + -> update source-of-truth docs; preserve every limitation -> run make agent-check -> stop before scope creep ``` @@ -75,10 +61,14 @@ read relevant docs When uncertain, downgrade the claim. -Use “computationally nominated,” “dry-lab candidate,” “selected for review,” or “evidence package” unless qualified evidence supports stronger language. - -Never convert model confidence into biological proof. +Use "computationally nominated," "dry-lab candidate," "selected for review," or "evidence package" unless qualified evidence supports stronger language. Never convert model confidence into biological proof. ## Stop rule Stop and request human review if a change touches safety policy, release policy, candidate release, model release, non-toy data, external-facing artifacts, benchmark thresholds, calibration policy, or public scientific claims. + +A stop is not a dead end — it has an artifact. When a stop condition fires, leave a **decision-log draft** for the human (format and index: [`decision_logs/INDEX.md`](decision_logs/INDEX.md)): what you found, what you did *not* change, and the specific decision a human must make. That turns a blocked loop into a reviewable handoff. + +## Write for the agent that replaces you + +Every rule here should get *more* true as models get smarter, not less. You are almost certainly not the last agent to touch this repo — a more capable one will read your diff, your docs, and your caveats as ground truth. So the durable standard is not "would this pass review today?" but "will the next, smarter agent find this honest, auditable, and easy to build on — or will it inherit a hidden assumption it has to discover the hard way?" Leave the repo harder to fool than you found it. Build trust, not theater. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fb853138..ef1b2483 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,19 +10,19 @@ Before contributing, read the path that matches your role: | Role | Start here | |---|---| -| New human contributor | [`docs/FIRST_RUN_WALKTHROUGH.md`](docs/FIRST_RUN_WALKTHROUGH.md), [`docs/HUMAN_ONBOARDING.md`](docs/HUMAN_ONBOARDING.md) | -| AI agent | [`AGENTS.md`](AGENTS.md), [`docs/AGENT_ONBOARDING.md`](docs/AGENT_ONBOARDING.md) | -| Reviewer | [`docs/REVIEWER_ONBOARDING.md`](docs/REVIEWER_ONBOARDING.md) | -| Data contributor | [`docs/DATA_GOVERNANCE.md`](docs/DATA_GOVERNANCE.md) | -| Model or adapter contributor | [`docs/MODEL_CARD_TEMPLATE.md`](docs/MODEL_CARD_TEMPLATE.md), [`docs/ADAPTER_AUTHOR_GUIDE.md`](docs/ADAPTER_AUTHOR_GUIDE.md) | -| Maintainer | [`GOVERNANCE.md`](GOVERNANCE.md), [`docs/MAINTAINER_GUIDE.md`](docs/MAINTAINER_GUIDE.md) | +| New human contributor | [`docs/getting-started/FIRST_RUN_WALKTHROUGH.md`](docs/getting-started/FIRST_RUN_WALKTHROUGH.md), [`docs/getting-started/HUMAN_ONBOARDING.md`](docs/getting-started/HUMAN_ONBOARDING.md) | +| AI agent | [`AGENTS.md`](AGENTS.md), [`docs/getting-started/AGENT_ONBOARDING.md`](docs/getting-started/AGENT_ONBOARDING.md) | +| Reviewer | [`docs/getting-started/REVIEWER_ONBOARDING.md`](docs/getting-started/REVIEWER_ONBOARDING.md) | +| Data contributor | [`docs/trust/DATA_GOVERNANCE.md`](docs/trust/DATA_GOVERNANCE.md) | +| Model or adapter contributor | [`docs/trust/MODEL_CARD_TEMPLATE.md`](docs/trust/MODEL_CARD_TEMPLATE.md), [`docs/engineering/ADAPTER_AUTHOR_GUIDE.md`](docs/engineering/ADAPTER_AUTHOR_GUIDE.md) | +| Maintainer | [`GOVERNANCE.md`](GOVERNANCE.md), [`docs/getting-started/MAINTAINER_GUIDE.md`](docs/getting-started/MAINTAINER_GUIDE.md) | Everyone should also read: - [`SAFETY.md`](SAFETY.md) — safety posture and disallowed contributions; - [`RESPONSIBLE_USE.md`](RESPONSIBLE_USE.md) — allowed and disallowed use; - [`docs/PROJECT_INDEX.md`](docs/PROJECT_INDEX.md) — navigation hub; -- [`docs/PROOF_LADDER.md`](docs/PROOF_LADDER.md) — claim boundaries. +- [`docs/evidence/PROOF_LADDER.md`](docs/evidence/PROOF_LADDER.md) — claim boundaries. ## Quickstart for contributors @@ -36,7 +36,7 @@ make lint make ci ``` -For interpretation of commands and outputs, read [`docs/COMMAND_SURFACE.md`](docs/COMMAND_SURFACE.md). +For interpretation of commands and outputs, read [`docs/getting-started/COMMAND_SURFACE.md`](docs/getting-started/COMMAND_SURFACE.md). ## What high-leverage contributions look like @@ -48,7 +48,7 @@ High-leverage work improves at least one of these: 4. **External usefulness** — easier onboarding for labs, scientists, engineers, and reviewers. 5. **Compounding** — changes that make future agents and humans faster without lowering standards. -See [`docs/HIGH_LEVERAGE_TASKS.md`](docs/HIGH_LEVERAGE_TASKS.md) and [`docs/NEXT_100_PR_MAP.md`](docs/NEXT_100_PR_MAP.md). +See [`docs/operations/HIGH_LEVERAGE_TASKS.md`](docs/operations/HIGH_LEVERAGE_TASKS.md) and [`docs/research/NEXT_100_PR_MAP.md`](docs/research/NEXT_100_PR_MAP.md). ## Types of contributions @@ -68,7 +68,7 @@ See [`GOVERNANCE.md`](GOVERNANCE.md) for decision classes. ## Claim policy -When contributing documentation, code comments, commit messages, PR descriptions, or releases, use [`docs/CLAIM_REVIEW_CHECKLIST.md`](docs/CLAIM_REVIEW_CHECKLIST.md). +When contributing documentation, code comments, commit messages, PR descriptions, or releases, use [`docs/evidence/CLAIM_REVIEW_CHECKLIST.md`](docs/evidence/CLAIM_REVIEW_CHECKLIST.md). Allowed for dry-lab outputs: @@ -125,7 +125,7 @@ Pipeline-sensitive: make regenerate-all ``` -Future checks are described in [`docs/CI_AND_QUALITY_GATES.md`](docs/CI_AND_QUALITY_GATES.md). +Future checks are described in [`docs/engineering/CI_AND_QUALITY_GATES.md`](docs/engineering/CI_AND_QUALITY_GATES.md). ## PR requirements diff --git a/DATA_LICENSE_NOTICE.md b/DATA_LICENSE_NOTICE.md index d531d536..041c574d 100644 --- a/DATA_LICENSE_NOTICE.md +++ b/DATA_LICENSE_NOTICE.md @@ -46,7 +46,7 @@ Dataset cards should include: - safety-release status; - reviewer and review date. -Use `docs/DATA_GOVERNANCE.md` for the full standard. +Use `docs/trust/DATA_GOVERNANCE.md` for the full standard. ## Data classes @@ -87,7 +87,7 @@ Before using data for a benchmark, review: - confidence intervals; - claim being gated. -See `docs/BENCHMARK_GOVERNANCE.md`. +See `docs/evidence/BENCHMARK_GOVERNANCE.md`. ## Final standard diff --git a/GOVERNANCE.md b/GOVERNANCE.md index ab44185f..b002b8f7 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -167,7 +167,7 @@ revisit_condition: text ## Release governance -All releases should follow [`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md). +All releases should follow [`docs/trust/RELEASE_CHECKLIST.md`](docs/trust/RELEASE_CHECKLIST.md). A release should include: @@ -181,7 +181,7 @@ A release should include: ## Agent governance -Agent work should follow [`AGENTS.md`](AGENTS.md) and [`docs/AGENT_ONBOARDING.md`](docs/AGENT_ONBOARDING.md). +Agent work should follow [`AGENTS.md`](AGENTS.md) and [`docs/getting-started/AGENT_ONBOARDING.md`](docs/getting-started/AGENT_ONBOARDING.md). Agents may work independently on low-risk issues labeled `agent-safe`. diff --git a/MODEL_RELEASE_POLICY.md b/MODEL_RELEASE_POLICY.md index 0dd3bdd7..ecf795be 100644 --- a/MODEL_RELEASE_POLICY.md +++ b/MODEL_RELEASE_POLICY.md @@ -124,7 +124,7 @@ Before releasing any model, candidate batch, dataset, or sensitive artifact, ans Every nontrivial model, scorer, simulator, predictor, generator, or adapter should have a card before release or ranking authority. -Use `docs/MODEL_CARD_TEMPLATE.md`. +Use `docs/trust/MODEL_CARD_TEMPLATE.md`. A model card must include: @@ -180,7 +180,7 @@ Non-toy datasets require: - intended use; - safety-release status. -Use `docs/DATA_GOVERNANCE.md`. +Use `docs/trust/DATA_GOVERNANCE.md`. ## Labeling diff --git a/RESPONSIBLE_USE.md b/RESPONSIBLE_USE.md index f9395299..51a2c9c2 100644 --- a/RESPONSIBLE_USE.md +++ b/RESPONSIBLE_USE.md @@ -61,7 +61,7 @@ Not allowed before sufficient evidence: - proven; - AI-discovered antibiotic. -Use `docs/PROOF_LADDER.md` and `docs/CLAIM_REVIEW_CHECKLIST.md`. +Use `docs/evidence/PROOF_LADDER.md` and `docs/evidence/CLAIM_REVIEW_CHECKLIST.md`. ## Data and artifact rules diff --git a/SAFETY.md b/SAFETY.md index aedacbf6..41d9c9a3 100644 --- a/SAFETY.md +++ b/SAFETY.md @@ -138,7 +138,7 @@ Do not claim: - AI-discovered antibiotic; - proof without qualified evidence. -Use `docs/PROOF_LADDER.md` and `docs/CLAIM_REVIEW_CHECKLIST.md`. +Use `docs/evidence/PROOF_LADDER.md` and `docs/evidence/CLAIM_REVIEW_CHECKLIST.md`. ## Agent safety @@ -165,7 +165,7 @@ Agents must not autonomously change: - claim strength; - artifact release decisions. -Use `docs/AGENT_ONBOARDING.md` and `.github/ISSUE_TEMPLATE/agent_safe_task.md`. +Use `docs/getting-started/AGENT_ONBOARDING.md` and `.github/ISSUE_TEMPLATE/agent_safe_task.md`. ## Safety review questions diff --git a/SECURITY.md b/SECURITY.md index 5aeb3cb3..f4e67305 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -68,8 +68,8 @@ If an issue affects users, artifacts, or downstream consumers, maintainers shoul - [`SAFETY.md`](SAFETY.md) - [`RESPONSIBLE_USE.md`](RESPONSIBLE_USE.md) - [`MODEL_RELEASE_POLICY.md`](MODEL_RELEASE_POLICY.md) -- [`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md) -- [`docs/SAFETY_DOC_AUDIT.md`](docs/SAFETY_DOC_AUDIT.md) +- [`docs/trust/RELEASE_CHECKLIST.md`](docs/trust/RELEASE_CHECKLIST.md) +- [`docs/trust/SAFETY_DOC_AUDIT.md`](docs/trust/SAFETY_DOC_AUDIT.md) ## Final rule diff --git a/decision_logs/INDEX.md b/decision_logs/INDEX.md index 3fe32e4c..616cb707 100644 --- a/decision_logs/INDEX.md +++ b/decision_logs/INDEX.md @@ -12,7 +12,7 @@ This index lists all governance decision logs. Each log records a human-reviewed ## Adding a new log -1. Create `DECISION_LOG_.md` following DECISION_RECORD_TEMPLATE.md. +1. Create `DECISION_LOG_.md` following [`docs/operations/DECISION_RECORD_TEMPLATE.md`](../docs/operations/DECISION_RECORD_TEMPLATE.md). 2. Add a row to the index above. 3. Update this index when the log is added.