Convention shift: epic folders + PRD filenames + frontmatter id
fields are now bare slugs. The created: timestamp (Phase 2) carries
the date; folder names don't repeat it. A future <task-id>-<slug>
shape (e.g. ClickUp) lands cleanly when that integration ships.
Renames (git mv preserves history):
- docs/work/2026-05-13-binder-wrap-helper/
-> docs/work/binder-wrap-helper/
- docs/work/2026-05-14-library-evaluation-policy/
-> docs/work/library-evaluation-policy/
- docs/work/2026-05-14-ci-security-and-supply-chain/
-> docs/work/ci-security-and-supply-chain/
- docs/work/prds/2026-05-13-binder-wrap-helper.prd.md
-> docs/work/prds/binder-wrap-helper.prd.md
- docs/work/prds/2026-05-13-coverage-architecture.prd.md
-> docs/work/prds/coverage-architecture.prd.md
- docs/work/prds/2026-05-14-library-evaluation-policy.prd.md
-> docs/work/prds/library-evaluation-policy.prd.md
- docs/work/prds/2026-05-14-ci-security-and-supply-chain.prd.md
-> docs/work/prds/ci-security-and-supply-chain.prd.md
Frontmatter updates inside the renamed files: epic id, epic prd,
story epic, PRD id, PRD builds-on all drop date prefixes.
System folder + state file move:
- New docs/work/_system/ holds framework-managed state.
- docs/work/_state.json -> docs/work/_system/_state.json.
- state-builder.mjs adds _system to SKIP_FOLDERS.
- cli.mjs + state-sync-guard.mjs + .husky/pre-commit point at the
new path.
template-reset-v1 epic deleted entirely (one-off cleanup epic from
the pre-date-convention era; status was already done).
Generator-template updates (so new artifacts ship in the right
shape):
- .sandcastle/decomposer.prompt.md emits bare-slug folder names +
ISO created: timestamp.
- .claude/skills/to-prd/SKILL.md template uses bare-slug filename +
bare-slug id field + ISO created: timestamp.
Doc reference updates: glossary, runbook, agent-first-workflow-
and-conformance, reviewer prompt, ADR-020, ADR-022, ADR-023 all
point at the new paths/slugs.
3.8 KiB
3.8 KiB
id, epic, title, type, status, feature, depends-on, blocks, created, updated
| id | epic | title | type | status | feature | depends-on | blocks | created | updated | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 09-ci-security-guide-and-docs | ci-security-and-supply-chain | CI security guide + CLAUDE.md | technical-story | done | docs |
|
2026-05-14T18:59:12+02:00 | 2026-05-14T19:16:52.691Z |
Goal
Write docs/guides/ci-security.md — the human reading-room for the four-pillar stack — and add a Key Conventions bullet to CLAUDE.md pointing agents and developers to ADR-023 + the guide.
Why
Each prior story lands a machine-enforced layer, but no single document explains the composed system to a developer or consumer who hasn't read all nine stories. docs/guides/ci-security.md fills that gap: it explains the four pillars, the failure-mode hierarchy, what settings are consumer-toggleable, and gives two worked examples so the mental model is concrete. The CLAUDE.md bullet ensures the enforcement stack is discoverable during every agent session via the startup context.
Done when
docs/guides/ci-security.mdexists and covers:- Overview of the four pillars (Renovate + Action SHA pinning, Socket, trace revalidation, GitHub-native gates).
- Per-pillar section with what the gate does, what it catches, and how to toggle it in a downstream consumer repo.
- Failure-mode hierarchy table (mirroring ADR-023 §5): pillar, trigger condition, action, label, who resolves.
- Consumer-toggleable settings list: GitHub native push protection, Socket GitHub App install, branch protection rules requiring
library-policy/*-labeled checks before merge. - Two worked examples: (a) a passing Renovate minor-bump PR (gates pass, auto-merges); (b) a blocked major-bump PR (Renovate opens PR →
check.mjsrequireslastRevalidatedrefresh → agent re-walksevaluate-library→ trace updated → PR unblocked) + a hard-divergence revalidation issue (weekly cron finds Socket-flagged dep → per-deplibrary-policy/re-evaluationissue opened → agent closes issue after re-walk). - Socket GitHub App install instructions for consumers.
gitleaksinstallation instructions for developers (OS package manager / brew; hook exits gracefully if binary absent).- Note that CodeQL requires GitHub Advanced Security on private repos.
CLAUDE.mdKey Conventions section has a bullet: "CI security + supply-chain enforcement: Renovate for bumps + Action SHA pinning, Socket for supply-chain behavior, weekly trace revalidation, CodeQL + audit signatures + gitleaks. See ADR-023 +docs/guides/ci-security.md."pnpm typecheck && pnpm lint && pnpm test && pnpm conformance && pnpm fallow:audit && pnpm coverage:diffall pass (docs + CLAUDE.md; no executable code).
In scope
docs/guides/ci-security.md— new guide file.CLAUDE.md— one bullet addition to Key Conventions.
Out of scope
- Configuring GitHub branch protection rules — documented as consumer action, not a tracked file change.
- Installing the Socket GitHub App — documented as consumer action in the guide; no config file change.
- Backfilling existing traces with
last-revalidated— handled by the first revalidation cron run (Story 05).
Tasks
- Write
docs/guides/ci-security.mdwith: four-pillar overview, per-pillar sections, failure-mode hierarchy table (ADR-023 §5), consumer-toggleable settings list, Socket GitHub App + gitleaks install instructions, CodeQL note for private repos, two worked examples (passing minor-bump PR; blocked major-bump PR + hard-divergence revalidation issue); one commit, all gates pass. - Add CI security Key Conventions bullet to
CLAUDE.mdreferencing ADR-023 +docs/guides/ci-security.md; one commit, all gates pass.