# Blacksite verification matrix

| Changed area | Fast loop | Slice gate | Candidate impact |
|---|---|---|---|
| Markdown only | docs audit | docs audit | Rust gates remain valid |
| `AGENTS.md`, Skills, workflow scripts | script self-tests/dry run | docs audit and workflow acceptance | No Rust gate unless Rust changed |
| `crates/content_pipeline/**` | pipeline check and focused tests | pipeline tests and strict Clippy; processing if output changed | Full gate later |
| `crates/shared/**` schemas/types | shared check and focused tests | shared tests, dependent checks, migration dry run if needed | Full gate later |
| `crates/editor/src/ui/**` | editor library check; focused wiring tests | editor tests/Clippy and named native scenario | Full gate later |
| `crates/blacksite_surface/**`, shaders | surface check/tests | surface Clippy and relevant renderer scenarios | Full gate later |
| `xtask/**` packaging | focused xtask/package test | repeat package test and package dry run | Package candidate required |
| Registry/catalog inputs | processing check | validators and deterministic write/check | Package/native as relevant |
| Migration/schema versions | focused migration tests/dry run | fixture apply, idempotence, rollback | Full gate later |
| Gitea only | No Cargo | Tracker readback | No code gate |
| Session/evidence only | No Cargo | Evidence integrity | No code gate |

Fast checks normally use the `dev` lane. Candidate, package, hot-reload, and full-debug work use their named disposable lanes. A docs-only edit never invalidates a code gate whose recorded input digest is unchanged.

Rust gate digests fingerprint the owning package and its local dependency closure, relevant Cargo and workflow configuration, the exact gate/lane, tool versions, and build-affecting environment. Documentation and unrelated packages are excluded, so their edits preserve valid focused Rust evidence; changes to a dependency, relevant configuration, toolchain, or environment invalidate it.
