← Files MightShapeARCHIVED FILE
references/state-contract.md
4.53 KB · Sep 30, 2026 · 23:14 UTC
# Project state contract
## Canonical location
Store sustained journey state under the project being designed:
```text
.design-council/
├── project.json
├── history/
│ ├── rev-000001.json
│ └── rev-000002.json
├── council-rounds/
├── artifacts/
│ └── VA-001/
├── participation/
├── inquiry/
│ ├── internal-studies/
│ ├── external-packets/
│ └── disclosure-reviews/
└── exports/
```
`project.json` is canonical. Each mutation increments `revision`, writes atomically, appends a history event, and saves a complete revision snapshot. Never edit an older snapshot. Keep secrets and direct identifiers out of state.
After Intake infers or receives a starting point, persist it without changing the current mode:
```sh
python3 <skill>/scripts/dc.py orient --project-root <root> \
--starting-point PROTOTYPE --basis USER_DECLARED \
--current-decision "Decide whether the failed recovery requires a changed frame"
```
Reorientation without `--current-decision` preserves the existing decision focus. Use
`--clear-current-decision` only when the current focus is intentionally retired.
## Main domains
Track:
- challenge, original prompt, original proposed solution, current problem frame, desired outcome;
- archetypes, operating depth, process view (`COMPACT`, `VISIBLE`, or `WORKSHOP`), complexity, reversibility, cost/consequence of error;
- starting point (`EARLY_HUNCH`, `GROUNDED_EXPLORATION`, `FRAMED_CHALLENGE`, `CONCEPT`, `PROTOTYPE`, `LIVE`, or `UNSURE`), whether user-declared or inferred, current decision, current mode, cycle, completed modes, and backward transitions; starting point and mode are separate;
- stakeholders, evidence, assumptions, unknowns, observations, needs, insights;
- POV history and supersession, HMW prompts, ideas, clusters, outliers, selected concept portfolio;
- prototypes, experiments, inquiry studies, Reality Packets, synthetic personas, participant IDs, Reality Checks;
- generated visual-artifact manifests, input hashes, source IDs, and versioned HTML/SVG/Markdown paths (never platform UI state);
- optional participation sessions with mode, facilitator level, one-open-prompt ledger, guidance checkpoints, `USER_PROVIDED` contributions, meaningful board revisions, controls, supersessions, and sealed-round disposition;
- participant-source selections, private internal studies, minimized external packets, disclosure reviews, exposure levels, and conflict-policy references;
- decisions, Minority Reports, Build Gate, Design Debt, Evidence Debt;
- each Council member's project memory;
- append-only history explaining why material state changed.
## Identity and IDs
Use stable prefixes: `E-` evidence, `A-` assumption, `N-` need, `I-` insight, `POV-`, `HMW-`, `IDEA-`, `PROTO-`, `EXP-`, `STUDY-`, `RP-`, `SP-`, `P-`, `RC-`, `DEC-`, `MR-`, `DD-`, `ED-`, `CR-` Council round, `VA-` visual artifact, `PS-` participation session, `UP-` facilitator prompt, `UC-` user contribution, `UG-` guidance checkpoint.
Never recycle an ID. Participant IDs default to `P-001`; do not require names or email.
Keep internal studies, sanitized external packets, and disclosure reviews as distinct versioned records under `inquiry/`. Never replace a private study with its redacted packet. Never store future Exchange identity-verification material in researcher-visible project state.
## Historical integrity
Supersede rather than overwrite:
```json
{
"id": "POV-001",
"status": "superseded",
"superseded_by": "POV-004",
"changed_because": ["EXP-003", "E-041"],
"superseded_at": "..."
}
```
Falsified assumptions remain visible. A changed Council belief retains both positions. Removed concepts become `retired`, with a reason; outliers are never silently deleted.
Participation undo follows the same rule: mark the prior `UC-` record `SUPERSEDED`, link an optional replacement in both directions, and record a board revision. Never delete the original words. Contributions remain `USER_PROVIDED` design material and must not enter human interview or observation records.
## Assumption Burn-down
Allowed assumption states:
- `RESOLVED`
- `TESTING`
- `OPEN_HIGH_RISK`
- `OPEN_LOW_RISK`
- `FALSIFIED`
Every resolved or falsified state links evidence or an experiment. Do not resolve an assumption from Council agreement or synthetic repetition.
## Optional state hook
The bundled SessionStart hook emits a compact summary only when `.design-council/project.json` is present. It is trust-gated and may be disabled. Always read canonical state directly before consequential work.
SHA-256: 9d22c9004404639134f8d452f6130b5b093c2674823d7a0b0268448d3f188cb4