Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
- **Build:** `cargo build --workspace --locked` (Cargo.lock is committed; always `--locked`).
- **Test:** `cargo test --workspace`.
- **Lint:** `cargo clippy --workspace -- -D warnings` · **Format:** `cargo fmt --all`.
- **Project gates:** `cargo xtask ci` — every gate lives here in Rust, never in YAML (D56/D65): the dependency-frontier check (D47), the DDL binary-collation grep (D64 cond. 1), the retired-vocabulary check (D65), and the fixture corpus lock (sha256 **and** orphan detection, both directions). The `architecture-views.md` staleness hash reports `ℹ STALE` and still exits 0 — that is by design, and **it must not be regenerated inside a story**; regenerate at a milestone. *(Some other xtask subcommands are still stubs.)*
- **Project gates:** `cargo xtask ci` — every gate lives here in Rust, never in YAML (D56/D65): the dependency-frontier check (D47), the DDL binary-collation grep (D64 cond. 1), the retired-vocabulary check (D65), and the fixture corpus lock (sha256 **and** orphan detection, both directions). The `architecture-views.md` staleness hash reports `ℹ STALE` and still exits 0 — that is by design, and **it must not be regenerated inside a story**; regenerate at a milestone. **Tracked as GitHub issue #50**, which carries the measured drift (two commits, 59 insertions, no decision body touched) — the debt no longer lives only in these notes. *(Some other xtask subcommands are still stubs.)*
- **Toolchain:** Rust 1.96+, edition 2024. **Stack:** axum 0.8 · askama 0.16 · sqlx `=0.9.0` (MariaDB-only, `mysql`+`tls-rustls-ring`) · tokio · `config` · `rust-i18n` (YAML) · `prometheus` (raw) · Tailwind standalone CLI via `cargo xtask css`. **Never invent a version — pin from the real `Cargo.lock`.**

### The dependency frontier is load-bearing (D47), and it is a gate
Expand Down
16 changes: 13 additions & 3 deletions docs/project-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,14 @@ the MANIFEST, dated notes in `epics.md`, and
`_bmad-output/implementation-artifacts/epic-4-correct-course-2026-07-25.md`. ⚠️ **The one
milestone task now DUE and not done: regenerating `architecture-views.md`** (its `sourceSha256`
has not matched since commit `da23f9f`, which predates Epic 4 — the staleness is inherited, not
caused by this epic; the end of Epic 4 is the milestone the project chose for it).
caused by this epic; the end of Epic 4 is the milestone the project chose for it, and it passed).
**Now tracked as GitHub issue #50** rather than in these notes alone. The drift was MEASURED on
2026-07-29 and is smaller than the hash suggests: **two commits, 59 insertions / 11 deletions**, and
neither touches a decision body, a dissent or a renunciation — one corrects the source-tree diagram
(D64 fallout), the other adds a D65 post-completion section. ⚠️ **There is no generator** — `cargo
xtask` exposes only `ci`, whose `views-hash` check merely VERIFIES the frontmatter hash. The bulk of
the real work is re-checking that the 883 view file's line citations still resolve, since the source
grew by 236 lines.

**The fixture corpus was the epic's centre of gravity.** `fixtures/` at the workspace root is a
SPEC, not test data, locked by `MANIFEST.toml` in both directions. A replay stream carries
Expand Down Expand Up @@ -142,8 +149,11 @@ one. The two sqlx traps it warned about were both real and are both handled in t

> **Note on `architecture-views.md`:** it is STILL stale, deliberately — `cargo xtask ci` reports
> `ℹ views-hash STALE` and exits 0, because the mismatch IS the staleness signal. Regenerate it at a
> MILESTONE (the end of Epic 4 is the natural one), not per-decision or per-story. **Do not
> regenerate it inside a story**; several story files say so explicitly.
> MILESTONE, not per-decision or per-story. **Do not regenerate it inside a story**; several story
> files say so explicitly. **Tracked as GitHub issue #50**, which carries the measured scope.
> _(This note named "the end of Epic 4" as the natural milestone. Epic 4 closed on 2026-07-25 and
> the regeneration did not happen, so that sentence had become a plan rather than a fact — which is
> exactly why it is now an issue and not only a note.)_

## Locked, non-negotiable decisions (do not reopen)

Expand Down