New Proposal (Developers)

Developer-authored proposals should include the exact gates and test impact.

Checklist

This is intentionally manual: copy templates, answer the Q/A, and submit for review.

Focus: define gates, attach reproducible artifacts under audit/proposals/<SCP>/..., and reference adoption log/spine changes when needed.

  1. Create folder proposals/SCP-YYYY-NNN-slug/
  2. Copy the appropriate template files (proposal.yaml and evidence_refs.yaml)
  3. Fill required fields: scp_id, proposer, affected_controls, claim
  4. open a PR

Q/A Session (your inputs)

  • Q: What is the scp_id? A: Pick SCP-YYYY-NNN-slug.
  • Q: Who is the proposer? A: Fill proposer.
  • Q: Which obligations/controls are affected? A: Fill affected_controls.
  • Q: What is your claim? A: Fill claim with a single testable sentence.
  • Q: What gates prove the change is safe? A: Fill gates with the exact commands and the expected outcomes.
  • Q: How can someone reproduce the result? A: Put instructions and artifacts under audit/proposals/<SCP>/ and reference them in evidence_refs.yaml.
  • Q: Does this require adoption log/spine changes? A: If yes, list the touched paths in spine_or_adoption_log_changes.

Copy/Paste Package (output)

Use this as your starting point. The source-of-truth repo templates live under docs/dao/templates/.

Folder tree

proposals/
  SCP-YYYY-NNN-<slug>/
    proposal.yaml
    evidence_refs.yaml
audit/
  proposals/
    SCP-YYYY-NNN-<slug>/
      README.md
      (repro steps, diffs, logs, exports, etc)

proposal.yaml

schema_version: "1.0"

# Required
scp_id: "SCP-YYYY-NNN-<slug>"
proposer:
  name: "<name>"
  contact: "<email or handle>"
affected_controls:
  - "<obligation/control reference>"
claim: |
  <One clear sentence: what should change?>

# Developer-specific: define gates and where reproducible artifacts live.
gates:
  - name: "ruff"
    command: "python -m ruff check"
    expected: "pass"
  - name: "pytest"
    command: "pytest"
    expected: "pass"
  - name: "portable_bundle"
    command: "CLEAN=1 bash scripts/build_site_bundle.sh"
    expected: "link_check.json status PASS; manifest.sha256 updated"

reproducible_artifacts:
  required_root: "audit/proposals/SCP-YYYY-NNN-<slug>/"
  required_files:
    - "audit/proposals/SCP-YYYY-NNN-<slug>/README.md"

spine_or_adoption_log_changes:
  required: false
  paths:
    - "<only if needed: adopt/... or adopted/... or docs/regulation/...>"

notes: |
  <Optional: implementation notes>

evidence_refs.yaml

schema_version: "1.0"

# Required
scp_id: "SCP-YYYY-NNN-<slug>"

evidence:
  - id: "E1"
    kind: "repo_path"  # repo_path | bundle_path | external
    ref: "<e.g. audit/proposals/SCP-YYYY-NNN-<slug>/README.md>"
    sha256: ""  # Optional: pin a specific file version
    note: "<Why this evidence matters / how to reproduce>"

audit/proposals/<SCP>/README.md (developers)

# Reproducible artifacts (SCP)

SCP: SCP-YYYY-NNN-<slug>

## Goal
- Explain what change is being validated.

## How to reproduce
1) Run the relevant tests (ruff/pytest).
2) Build the portable bundle.
3) Verify link_check.json is PASS and manifest.sha256 updated.

## Included artifacts
- Diffs / patches (if applicable)
- Logs / exports / screenshots (if applicable)
- Notes that tie artifacts back to proposal.yaml claims

Related Views