Release: CDT workshop case studies + code-quality stack - #825
Merged
Merged
Conversation
…t numbering Aligns with GSN Community Standard v3 which permits recursive decomposition: Goal → Strategy → Claim → Strategy → Claim → Evidence. Strategies under property claims use "transparent" numbering — property claims are numbered as children of their nearest property claim ancestor, skipping intervening strategies. Strategies remain flat-sequential (S1, S2). Example: P1 → S2 → P1.3 (not P3) Changes: - Update VALID_CHILDREN to allow strategy under property_claim - Extend generateElementName() with one-hop ancestor lookup for transparent numbering - Extend calculatePropertyClaimLevel() with same ancestor logic - Make generateHierarchicalNames() pass through ancestor info for transparent strategies - Populate strategies array in buildPropertyClaimStructure() API response - Add "Add Strategy" option to property claim node popover - Fix handleStrategyAdd to use correct parent ID for property claim parents - Update tree traversal and orphan collection for nested strategies - Fix missing CONTEXT prefix in identifier-service TYPE_PREFIXES - Fix Dockerfile.dev missing patches directory during pnpm install
- Use exact error string in moveElement rejection test - Use raw SQL to create CONTEXT element, bypassing validation middleware
The Prisma model AssuranceElement maps to table assurance_elements. The raw SQL insert was using the model name instead of the table name.
Prisma model fields use camelCase but the actual DB columns are snake_case via @Map directives.
Runs pnpm run test:integration when TypeScript files are staged. Skips gracefully with a warning if PostgreSQL is not running on port 5432, so developers without Docker running can still commit.
Canonical architecture slice, hard rules, and do-not-imitate list for agent-maintained development. AGENTS.md documented the retired beads workflow. claude-dir.zip (pre-atelier config archive) is ignored as it contains a local seed credential.
Excludes generated code and MDX content, declares Next.js and MDX-imported entry points so dead-code analysis reports against an honest baseline.
- src/generated/prisma-new/: orphaned second Prisma client from the migration; nothing imports it - orphan-elements.tsx + _orphan-elements/: superseded by the inline orphan handling in flow.tsx/case-container.tsx; no importers - demo landing faq/mailing-list: unreferenced by the landing page Verified by import-graph analysis (fallow + MDX cross-check) against latest staging; typecheck and full unit suite green.
- lint/format scripts called ultracite verbs that do not exist (lint/format vs check/fix); CI bypassed them so it went unnoticed - .githooks/pre-push runs lint + typecheck before pushes to staging/main, armed via the prepare script; CI remains authoritative - ajv had zero references (zod is the sole validation library)
Runs fallow on files changed against the PR base and posts a sticky comment (dead code, duplication, cycles, complexity). Never fails the build; flip to blocking once the config has bedded in.
src/generated/prisma/ predates its gitignore entry, so 51 stale generated files were tracked. CI and both Dockerfiles run prisma generate; the committed copy only polluted diffs and quality metrics. Local dev regenerates via npx prisma generate.
…d-untrack-client ci: report-only fallow check + untrack generated Prisma client
…components
26 unreachable files (~9,400 lines) carried over from the Docusaurus
docs migration (Dec 2025) and never wired into the Nextra system:
- enhanced/{dialogs,handles,interactions,demos}: a case-editing
capability (add-block dialogs, node creation, drag handles) the live
read-only curriculum viewer never used
- exploration-checklist, task-checkpoint, concept-reveal and friends:
superseded by the content-local component pattern in content/curriculum/
- two-column-layout + CSS module: pre-Tailwind layout
Verified unreachable including MDX imports and the lazy-loaded viewer
chain; typecheck, lint, and full unit suite green.
…ice-2-curriculum-editor refactor: remove unshipped curriculum editor (~9,400 lines dead code)
ADR 0001 specifies the machine-writable evidence endpoint and claim-state model: orthogonal health/timeliness axes (green-but-stale), append-only hash-chained RuntimeEvidence, scoped ApiToken auth, SSE claim:state-changed events, a v1 scoring model (defeat-cascade deferred), staleness sweeper, and ReleaseSnapshot as audit anchor. DARTER's Interface C and a TEA v1.0 capability, designed to upstream. Extracted from #816 (authored 2026-06-04), which also carried since-retired beads tracker data; this supersedes that PR.
…vidence docs(adr): runtime-evidence endpoint and claim-state model
Removed (zero references, production build verified): @auth/prisma-adapter, @azure/identity, @tailwindcss/line-clamp, cmdk, neatjson, postgres, motion. Kept with ignore entries (used in ways static analysis cannot trace): @prisma/client-runtime-utils (peer of @prisma/client, imported by the generated runtime), axe-core (peer of vitest-axe, dynamically imported in test utils), conventional-changelog-conventionalcommits (string preset in .releaserc.json), @isaacs/brace-expansion override (live security floor). Quietens fallow's project-level PR findings so new ones stand out.
Two root causes, both inversions of dependency direction: - store/node-types.ts imported the four node components to build a React Flow registry that the store held as state — but nothing read it: flow.tsx already owns a module-level registry. Deleting the file and the dead state field removes every store↔component cycle (21). - lib/case/node-operations.ts imported siblings via the @/lib/case barrel, which re-exports node-operations. Importing the concrete modules (api, node-utils, types) directly breaks the self-reference. Verified: fallow reports 0 circular dependencies; typecheck and full unit suite green. New rule already in CLAUDE.md: no store→component imports.
…-dependencies chore: remove 7 unused dependencies
…re-component-cycles refactor: break all circular import cycles (22 → 0)
Two new hands-on case studies, each with a hero image: - Safe Adaptive Allocation in a Bayesian Platform Clinical Trial (safety + explainability) - Balancing Privacy and Utility in Census Disclosure Control (privacy) Register both in the case-studies index table, the domain sections (adding a Public Sector heading), and the sidebar (_meta.ts) so they are discoverable.
Census disclosure control: trim deliberative sections (considerations 7->5, prompts 6->5, strategies 5->4, techniques 8->5), tighten the top-level assurance goal, move the EU AI Act aside to a footnote, verify footnote citations, and balance the reconstruction/re-identification framing. Adaptive clinical trial: complete the FDA adaptive-designs citation, add DOIs for the REMAP-CAP and Proschan citations, correct the RECOVERY (platform vs critical-care) and ICH E9 framing, and soften the DMC-oversight description.
|
fallow: no structural-quality findings in changed files. |
This was referenced Jun 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Production release: CDT workshop case studies + code-quality stack
Promotes the accumulated
stagingdelta (23 commits) tomain. Chris has approved releasing the whole delta, not just the case studies. Follows the established release pattern (#799 / #796 / #792). Merging triggers Build → Release (semantic-release) and a live production deploy.Workshop content (Birmingham CDT, 24 June) — visually checked on staging
4b6121f3Refine census and clinical-trial case studies for CDT use2af5dc75Add adaptive clinical trial and census disclosure-control case studiesCode-quality / SSOT stack (the other 21 commits)
AGENTS.md→CLAUDE.mdas single source of truth; lint/format scripts repaired (ultracite check/fix) + pre-push gate; beads tracker retiredVerification
_workshop-evidence-mining.mdexample is untracked and absent from this diff — it does not ship..secrets.baselinechange is aline_number21→22 bump only (no plaintext secrets).145 files, +1,662 / −156,489— the large deletion is the now-untracked generated Prisma client, expected.🤖 Prepared with Claude Code