Threat And Privacy Checklist
Status: internal release review procedure.
Purpose
Cite2Site's primary release risk is trust erosion: the tool must not mutate cited artifacts, leak accepted evidence through public projections, or imply that generated files are authoritative. This checklist is completed before a release candidate is tagged and whenever publication, export, adapter, schema, or packaging behavior changes.
Assets
| Asset | Protection Goal |
|---|---|
| Cited artifacts | Must remain byte-for-byte outside C2S mutation. |
.c2s/citation-history.jsonl |
Append-only citation authority; hash chain must remain valid. |
.c2s/handle-bindings.jsonl |
Append-only handle authority; aliases must remain auditable. |
.c2s/project.json |
Repository metadata and publication policy must be explicit. |
.c2s/exports/ |
Generated projection; must not be treated as authority. |
.c2s/site/ |
Generated static site; must default to metadata-safe output. |
| Package artifact | Must not contain local private artifacts, temporary repositories, or secrets. |
Source-Clean Review
- Identify every command changed since the prior release.
- For each mutating command, verify it appends to authority history only.
- Confirm cited artifact hashes are checked before and after smoke flows.
- Confirm adapters do not persist markers, comments, hidden metadata, or bookmarks into the source artifact.
- Confirm generated projections can be deleted and recreated from authority histories.
Release blocker: any C2S command mutates a cited artifact without an explicit ADR changing the source-clean invariant.
Publication Privacy Review
- Confirm
metadata_onlyis the default export mode. - Confirm grouped JSON indexes and MkDocs group pages remain metadata-safe.
- Confirm
hash_onlyomits accepted evidence text. - Confirm
snippetfails unlesspublication.allow_snippetis true. - Confirm
private_linkfails unless an authorized HTTPS base URL is present. - Confirm private-link bases reject credentials, queries, and fragments.
- Confirm notes, accepted evidence, observed evidence, snippets, and private links are absent from metadata-safe query output.
Release blocker: public default output contains accepted evidence text, observed evidence text, notes intended to remain private, or private-link URLs.
Schema And Migration Risk
- Confirm schema-version checks reject unknown authority schema versions.
- Confirm corrupt JSON and JSONL inputs fail with stable structured errors.
- Confirm migration procedures back up authority files before writing.
- Confirm migrations never rewrite history in place without a recoverable backup and explicit release notes.
- Confirm generated projections are rebuilt after migration.
Release blocker: a migration can silently drop events, rewrite cited artifacts, or make rollback impossible without being recorded in the release notes.
Packaging And Dependency Risk
- Build the package artifact locally.
- Inspect the artifact file list if packaging configuration changes.
- Confirm runtime dependencies remain empty unless an ADR approves a change.
- Install from the built artifact with
--no-deps. - Run the installed CLI smoke flow.
- Confirm no
.c2srepositories, generated exports, editor files, virtual environments, credentials, or local temp paths are packaged.
Release blocker: the artifact cannot be installed cleanly, includes private local state, or requires an undeclared runtime dependency.
Error And Diagnostic Review
- Confirm user-facing failures return the common structured JSON error envelope.
- Confirm stable error codes exist for newly introduced failure paths.
- Confirm messages do not expose local secrets, full private evidence, or unrelated filesystem contents.
- Confirm ambiguous mutating actions still require a concrete
citation_id.
Release blocker: a recoverable user error exits with only prose or an ambiguous mutation can modify citation history.
Sign-Off
| Reviewer | Area | Result | Notes |
|---|---|---|---|
| Source-clean | PASS | 98 tests; artifact hash unchanged after smoke | |
| Privacy | PASS | metadata_only default; snippet/link policy-gated; grouped indexes metadata-safe | |
| Migration | PASS | 9 migration fixture tests; schema version validation; tamper/hash-chain rejection | |
| Packaging | PASS | check_package_artifact.py: wheel builds, installs, smoke flows, export deterministic | |
| Errors | PASS | 38 C2SError codes cataloged; structured JSON envelope; no path leaks in messages/details |