Commit Graph

115 Commits

Author SHA1 Message Date
b5c16a76c1 chore(work): tick task in 05-backfill-template-collections 2026-05-18 21:09:27 +02:00
2f1aa849e7 chore(work): tick task in 05-backfill-template-collections 2026-05-18 21:05:30 +02:00
464df9aa9b chore(work): finish 04-retention-purge-job 2026-05-18 20:58:23 +02:00
d326270e1e chore(work): finish 03-adr-022-amendment-and-evaluate-library-skill 2026-05-18 20:46:04 +02:00
8486037f20 chore(work): finish 02-eslint-rule-pii-declaration-complete 2026-05-18 20:35:43 +02:00
fa1a10c88c chore(work): finish 01-pii-retention-type-primitives 2026-05-18 20:29:17 +02:00
c298f396b1 chore(work): decompose compliance-manifests epic
Generated 1 epic + 8 stories under docs/work/epics/ from the approved
PRD docs/work/prds/compliance-manifests-pii-retention-subprocessors.prd.md.
Stories cover type primitives, ESLint rule, ADR-022 amendment, retention
purge job, template backfill, three generator scripts, pre-commit + CI
integration, and docs/compliance/ reference files. Ready for
`pnpm work dispatch --execute` to begin implementation.
2026-05-18 20:06:14 +02:00
d3278c0aa1 docs: seed PRD for compliance manifests epic (ADR-025 Epic A)
Implementation seed for ADR-025 Epic A: declarative PII inventory +
retention + sub-processor manifests with three generators, pre-commit +
CI drift detection, background purge job, and ADR-022 trace
frontmatter extension for sub-processor fields (discriminated union).
Eleven user stories ordered for the decomposer; five open questions
with recommendations. Status: approved — ready for pnpm work decompose.
2026-05-18 19:55:37 +02:00
0c6f60fccf chore(work): finish epic product-analytics-channel 2026-05-18 18:05:29 +02:00
afe32c7d99 chore(work): tick task in 09-documentation 2026-05-18 18:03:08 +02:00
940a804944 chore(work): finish 08-react-provider 2026-05-18 17:56:52 +02:00
065ca1b6aa chore(work): finish 07-eslint-rule-no-undeclared-analytics-event 2026-05-18 17:44:55 +02:00
0f8e3b8caf chore(work): finish 06-analytics-protocol-bind-context 2026-05-18 17:40:19 +02:00
68d3d90d2d chore(work): finish 05-assert-feature-conformance-analyzed 2026-05-18 17:36:51 +02:00
81f75f756e chore(work): finish 04-manifest-schema-and-wire-use-case 2026-05-18 17:15:38 +02:00
ff1e0b052c chore(work): tick task in 04-manifest-schema-and-wire-use-case 2026-05-18 13:59:14 +02:00
edf354318b chore(work): finish 03-analyzed-brand-and-with-analytics-wrapper 2026-05-18 13:55:06 +02:00
a5ab698b41 chore(work): tick task in 03-analyzed-brand-and-with-analytics-wrapper 2026-05-18 13:46:48 +02:00
92294bc7ff chore(work): finish 02-recording-analytics 2026-05-18 13:38:16 +02:00
1434fe9d82 chore(work): finish 01-scaffold-core-analytics-package 2026-05-18 13:33:06 +02:00
80c702eb20 chore(work): tick task in 01-scaffold-core-analytics-package 2026-05-18 13:29:55 +02:00
b8d4cfe907 chore(work): decompose product-analytics-channel epic
Generated 1 epic + 9 stories under docs/work/epics/ from the approved
PRD docs/work/prds/product-analytics-channel.prd.md. Stories follow the
sequencing hints from the PRD (brand+wrapper → manifest+wireUseCase →
assertFeatureConformance → BindContext+ESLint → React provider → docs).
Ready for `pnpm work dispatch --execute` to begin implementation.
2026-05-18 12:46:25 +02:00
1595c9198e docs: seed PRD for product analytics channel epic (ADR-024)
Implementation seed for ADR-024. Nine user stories, ordered sequencing
hints for the decomposer (brand+wrapper → manifest+wireUseCase →
assertFeatureConformance → BindContext+ESLint → React provider → docs).
Status: approved — ready for `pnpm work decompose --execute` to generate
the epic + stories under `docs/work/epics/product-analytics-channel/`.
2026-05-18 12:35:00 +02:00
756e36c720 refactor(work): move epic folders into docs/work/epics/
The previous layout placed epic folders directly under docs/work/
alongside prds/ and _system/. Tightening: epics now live in their
own docs/work/epics/ subfolder, peer to prds/ and _system/. Same
shape as the existing prds/ bucket.

Final docs/work/ layout:
  README.md
  prds/<slug>.prd.md
  _system/_state.json
  epics/<slug>/_epic.md + <story-folder>/_story.md

Renames (git mv preserves history):
- docs/work/binder-wrap-helper/
    -> docs/work/epics/binder-wrap-helper/
- docs/work/library-evaluation-policy/
    -> docs/work/epics/library-evaluation-policy/
- docs/work/ci-security-and-supply-chain/
    -> docs/work/epics/ci-security-and-supply-chain/

Tooling updates:
- state-builder.mjs walks workRoot/epics/ directly; SKIP_FOLDERS
  obsoleted (no more sibling folders to filter out).
- dispatch.mjs's findNextTask, tickStoryBulletInEpic, and
  flipEpicDoneIfAllStoriesDone all join with "epics" segment.
- prd-ship.mjs's deriveShippingCommits walks workRoot/epics/ and
  git-logs docs/work/epics/<epic>/.
- decomposer.prompt.md emits epics under docs/work/epics/<epic-id>/.
- handoff + grill-with-docs glossary references updated.
- Glossary entry for Epic updated.

Reserved future shape: when a task-tracker integration (ClickUp,
Linear) ships, the epics/ subfolder hosts <task-id>-<slug>/
folders. Today it just hosts bare slugs.
2026-05-14 21:21:51 +02:00
bae4b66fa4 refactor(work): drop date prefixes + move _state.json into _system/
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.
2026-05-14 21:16:51 +02:00
90fc2853f2 feat(work): add ISO timestamps + auto-bump on staged work-doc changes
- New scripts/work/bump-updated-timestamps.mjs stamps the `updated:`
  frontmatter field to the current ISO 8601 UTC timestamp on every
  staged docs/work/**/*.md file. Idempotent; adds the field after
  `created:` if missing.
- .husky/pre-commit invokes the bump script as step 2 (before
  rebuild-state) so _state.json sees the fresh timestamp.
- Backfill all existing work docs (4 PRDs + 3 epics + 21 stories):
    * created: promoted from \`YYYY-MM-DD\` -> ISO timestamp using
      git log --diff-filter=A on each file (first-commit date for
      stories that had no \`created:\` line, midnight UTC for PRDs
      and epics that had date-only created).
    * updated: added from \`git log -1 --format=%aI\` on each file
      (last-commit timestamp); will be re-stamped to "now" by the
      pre-commit hook on this commit.

Stories that had no \`created:\` line now get one.
2026-05-14 21:10:34 +02:00
3fc5c0f1ca feat(work): auto-tick epic story bullets when a story finishes
- Add tickStoryBulletInEpic(workRoot, epic, story) helper that finds
  the bullet in the parent epic's `## Stories` section linking to the
  given story folder and flips `- [ ]` to `- [x]`. Idempotent.
- applyApprovedState now ticks the parent epic bullet whenever a
  story flips to status: done (alongside the existing per-task tick
  and epic-status flip). Epic file gets staged on either ticked-or-
  flipped, not just flipped.
- Backfill all 3 existing epics: 21 bullets ticked to match their
  already-done story statuses (binder-wrap-helper x3, library-
  evaluation-policy x9, ci-security-and-supply-chain x9).
2026-05-14 21:05:06 +02:00
dd58974067 chore(work): finish epic 2026-05-14-ci-security-and-supply-chain 2026-05-14 20:17:29 +02:00
bb5502737c chore(work): tick task in 09-ci-security-guide-and-docs 2026-05-14 20:14:57 +02:00
33ed9e97e4 chore(work): finish 08-reviewer-prompt-update 2026-05-14 20:05:17 +02:00
41bf107fc4 chore(work): finish 07-gitleaks-precommit 2026-05-14 20:01:16 +02:00
2f57003b55 chore(work): finish 06-codeql-and-audit-signatures 2026-05-14 19:56:40 +02:00
1979041197 chore(work): tick task in 06-codeql-and-audit-signatures 2026-05-14 19:54:42 +02:00
331573bc4f chore(work): finish 05-trace-revalidation-workflow 2026-05-14 19:53:07 +02:00
a7a4299213 chore(work): tick task in 05-trace-revalidation-workflow 2026-05-14 19:50:49 +02:00
88d3d4b362 chore(work): finish 04-major-bump-reevaluation 2026-05-14 19:34:44 +02:00
3d98a14e45 chore(work): finish 03-renovate-adoption 2026-05-14 19:18:20 +02:00
0e748ae714 chore(work): finish 02-socket-integration 2026-05-14 19:16:31 +02:00
49619931d5 chore(work): tick task in 02-socket-integration 2026-05-14 19:11:34 +02:00
f704cc5a01 chore(work): finish 01-trace-schema-extensions 2026-05-14 19:06:11 +02:00
c17d3f147d chore(work): decompose 2026-05-14-ci-security-and-supply-chain epic
Decomposer produced 9 stories under docs/work/2026-05-14-ci-
security-and-supply-chain/, ordered to land the schema foundation
first and the cross-referencing content (reviewer prompt, guide)
last:

01 - trace schema extensions (socketRisk + lastRevalidated)
02 - Socket integration (skill + CI)
03 - Renovate adoption
04 - major-bump re-evaluation flow
05 - trace revalidation workflow
06 - CodeQL + audit signatures
07 - gitleaks pre-commit
08 - reviewer prompt update
09 - CI security guide + docs

Also fixes a one-char status typo in the PRD frontmatter
(\`appoved\` -> \`approved\`) that landed with the decompose run.

Anchored by ADR-023 + the approved PRD at
docs/work/prds/2026-05-14-ci-security-and-supply-chain.prd.md.
Sequencing: depends on stories 01/02/04/06 of the in-flight
library-evaluation epic landing first.
2026-05-14 18:59:12 +02:00
90341ff475 docs: introduce CI security + supply-chain stack (ADR-023 + PRD)
- ADR-023 codifies the four-pillar enforcement stack: Renovate for
  bumps + Action SHA pinning via pinGitHubActionDigests, Socket.dev
  as a 9th hard filter in evaluate-library (free App + self-hosted
  socket-cli + reviewer-prompt enforcement), weekly trace
  revalidation cron with two-tier divergence action (rolling
  dashboard issue + per-dep re-evaluation issues), and the baseline
  GitHub-native gates (CodeQL, pnpm audit signatures, gitleaks
  pre-commit + native push protection). Failure-mode hierarchy is
  the single source of truth referenced by the sandcastle reviewer.
- Section 6 amends ADR-022 in place: major-bump re-evaluation
  trigger (minor/patch bumps skip), last-revalidated frontmatter
  field (preserves original date for adoption provenance), and
  Socket as the 9th hard filter. ADR-022 stays unedited; both ADRs
  read as a composed policy.
- PRD at docs/work/prds/2026-05-14-ci-security-and-supply-chain.prd.md
  seeds the implementation epic; explicit sequencing -- depends on
  the in-flight library-evaluation epic's stories 01/02/04/06
  landing first.
- Glossary gains "Trace revalidation" + "Major-bump re-evaluation"
  entries referenced by both ADRs.

Catalyst: 2026-05-14 audit confirmed zero security tooling in the
repo + GitHub Actions pinned to major-version tags (the tj-actions/
changed-files attack class). ADR-022 closes the adoption-time gate;
ADR-023 closes the post-adoption drift gate.
2026-05-14 18:47:25 +02:00
bb9983f10b chore(work): finish epic 2026-05-14-library-evaluation-policy 2026-05-14 12:14:21 +02:00
085bb2ad29 chore(work): finish 08-backfill-traces 2026-05-14 12:12:37 +02:00
b0f1db8151 chore(work): tick task in 08-backfill-traces 2026-05-14 12:03:07 +02:00
112df2cfe7 chore(work): tick task in 08-backfill-traces 2026-05-14 11:57:10 +02:00
68426b83b0 chore(work): tick task in 08-backfill-traces 2026-05-14 11:42:09 +02:00
543412ea42 chore(work): finish 07-generator-pre-shipped-traces 2026-05-14 11:37:37 +02:00
090410e9c3 chore(work): finish 06-sandcastle-reviewer-prompt 2026-05-14 07:58:55 +02:00
6890526ced chore(work): finish 05-human-guide 2026-05-14 07:53:06 +02:00