You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(planning): flatten changes/ + generated index (#74)
* chore(planning): flatten changes/ + backfill summary + rewrite cross-links
Move all bundles from changes/archive/ to changes/ (flat), remove
active/.gitkeep and archive/.gitkeep, backfill summary: in all 55
bundle frontmatters, and rewrite bundle-path archive/ links in 6 plan/design
files to the flat path.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore(planning): add index.py generator and just index recipe
Copy planning/index.py verbatim from faststream-outbox (stdlib only, no
PyYAML). Extend the top noqa line to add D212 for this repo's ruff config.
Add the `just index` recipe to Justfile after lint-ci.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore(planning): update README Conventions/Index + templates with summary field
Replace ## Conventions through end of ## Index with the portable shipped
convention from faststream-outbox (generated Index, no committed copy).
Keep repo intro (lines 1-6) and ## Other section intact. Add summary: field
to both design.md and change.md templates.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore(docs): update CLAUDE.md workflow for flat changes/ (no folder move)
Replace active/<id>/ with <id>/ in the workflow line. Replace the archive-move
instruction with set status/pr/outcome in-branch + run just index. Also update
the "Where to find what" pointer that still referenced {active,archive}.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(planning): repair release/audit links to flattened bundles
The flatten rewrote bundle-path links inside planning/changes/ but missed
links in planning/releases/ and planning/audits/ pointing at the old
changes/archive/<bundle>/ paths. Repoint them to the flat changes/<bundle>/.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore(planning): drop obsolete convention-migration plan.md
The migration plan held one-time setup commands referencing the old
changes/archive/ layout (now flat). Its design.md remains as the convention
rationale and the indexed entry; the obsolete plan is removed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,14 +10,14 @@ Guidance for AI agents (Claude Code, etc.) working in this repository.
10
10
11
11
-[`architecture/`](architecture/) (repo root) — the per-capability living truth (overview, client, middleware, decoders, errors, resilience, optional extras, testing); the promotion target on every ship. **Read the relevant file before changing that capability.**
12
12
-[`planning/README.md`](planning/README.md) — the planning conventions (two axes, change bundles, three lanes, frontmatter) + the change Index.
13
-
-[`planning/changes/{active,archive}/<YYYY-MM-DD.NN-slug>/`](planning/changes/) — per-change bundles (`design.md` + `plan.md`, or `change.md` for the lightweight lane).
13
+
-[`planning/changes/<YYYY-MM-DD.NN-slug>/`](planning/changes/) — per-change bundles (`design.md` + `plan.md`, or `change.md` for the lightweight lane).
**Per-feature workflow:** brainstorming → `design.md` in `planning/changes/active/<id>/` → writing-plans → `plan.md` in the same bundle → executing-plans (or subagent-driven-development) → requesting-code-review → finishing-a-development-branch. On ship, promote the conclusions into the affected `architecture/<capability>.md` by hand and move the bundle to `planning/changes/archive/`. Topic slugs are kebab-case descriptions (`msgspec-decoder-adapter`), not story IDs.
20
+
**Per-feature workflow:** brainstorming → `design.md` in `planning/changes/<id>/` → writing-plans → `plan.md` in the same bundle → executing-plans (or subagent-driven-development) → requesting-code-review → finishing-a-development-branch. On ship, promote the conclusions into the affected `architecture/<capability>.md` by hand and set `status: shipped` + `pr` + `outcome` in the implementing PR — there is no folder move. The change listing is generated: run `just index`. Topic slugs are kebab-case descriptions (`msgspec-decoder-adapter`), not story IDs.
`outcome`. `plan.md`: `status`, `date`, `slug`, `spec`, `pr`. Files in
69
+
`architecture/`carry **no** frontmatter — living prose, dated by git.
68
70
69
71
## Index
70
72
71
-
### Active
72
-
73
-
_None._
74
-
75
-
### Archived (shipped)
76
-
77
-
-**[delta-audit-followups](changes/archive/2026-06-16.04-delta-audit-followups/change.md)** (#71, 2026-06-16) — Closed the [2026-06-16 delta audit](audits/2026-06-16-delta-audit.md) Low findings: rate-mode HALF_OPEN probe-failure re-open test + document-as-intended note. Tests + doc only, no release.
78
-
79
-
-**[circuit-breaker-state](changes/archive/2026-06-16.03-circuit-breaker-state/design.md)** (#70, 2026-06-16) — Read-only `state` property + public `CircuitState` enum on the circuit breaker. Shipped 0.14.0; closed the read-only-state half of the deferred CircuitBreaker introspection item.
80
-
81
-
-**[circuit-breaker-rate-mode](changes/archive/2026-06-16.02-circuit-breaker-rate-mode/design.md)** (#69, 2026-06-16) — Added an opt-in time-based failure-rate trip mode to the circuit breaker (classic stays default). Shipped 0.13.0; closed deferred item "CircuitBreaker v2 (a)".
82
-
-**[per-verb-with-response](changes/archive/2026-06-16.01-per-verb-with-response/design.md)** (#68, 2026-06-16) — Added `get_with_response` … `request_with_response` siblings (required `response_model`, returns `(Response, T)`) to both clients. Shipped 0.12.0; closed the deferred "Per-verb-with-response siblings" item.
83
-
-**[custom-decoder-guide](changes/archive/2026-06-15.01-custom-decoder-guide/change.md)** (#67, 2026-06-15) — Docs: a "write your own `ResponseDecoder`" guide for Seam B, mirroring `docs/middleware.md`. Closed deferred item G6.
84
-
-**[audit-doc-fixes](changes/archive/2026-06-14.06-audit-doc-fixes/change.md)** (#66, 2026-06-14) — Closed the [deep-audit](audits/2026-06-14-deep-audit.md) doc-accuracy findings: `Client.stream()` docs, terminal-call attribution, the four auto-raise sites, the pydantic upper bound, and root import paths.
85
-
-**[audit-test-quality](changes/archive/2026-06-14.05-audit-test-quality/change.md)** (#65, 2026-06-14) — Closed 11 [deep-audit](audits/2026-06-14-deep-audit.md) test-quality findings: sync-terminal + CookieConflict coverage, the `StatusError.__init__` invariant, missing status constructions, sync mirrors, typing overloads, a deterministic bulkhead barrier, a pinned budget clock, an observability assertion, and the `TimeoutError` circuit trigger.
86
-
-**[audit-correctness](changes/archive/2026-06-14.04-audit-correctness/change.md)** (#64, 2026-06-14) — Closed 8 [deep-audit](audits/2026-06-14-deep-audit.md) correctness + public-API findings: RetryBudget token ordering, two `OverflowError` crashes, the redaction triple-slash, the msgspec guard, streaming-body symmetry, the RetryBudget docstring caveat, and `middleware/__all__`.
87
-
-**[security-hardening](changes/archive/2026-06-14.03-security-hardening/design.md)** (#63, 2026-06-14) — Closed the [deep-audit](audits/2026-06-14-deep-audit.md) security cluster: URL secret redaction centralized at the `_emit_event` chokepoint (userinfo + sensitive query/fragment keys), opt-in `max_error_body_bytes` + `ResponseTooLargeError` bounding the `stream()` error pre-read, and `trust_env` + header-reachability docs. Non-streaming hard body cap deferred.
88
-
-**[pydantic-import-isolation](changes/archive/2026-06-14.02-pydantic-import-isolation/change.md)** (#62, 2026-06-14) — Guarded the pydantic import so the decoder module loads without the extra and the `architecture/extras.md` Seam-C invariant holds for pydantic. Closed the [deep-audit](audits/2026-06-14-deep-audit.md) High + 2 folded Mediums.
89
-
-**[deep-audit](changes/archive/2026-06-14.01-deep-audit/design.md)** (2026-06-14) — Full-codebase deep audit (perf/security/supply-chain gaps + correctness/concurrency/refactoring/test quality). [Report](audits/2026-06-14-deep-audit.md): 35 confirmed; all remediated across #62–#66 (non-streaming hard body cap deferred).
-**[docs-audit-followups](changes/archive/2026-06-13.05-docs-audit-followups/change.md)** (#58, 2026-06-13) — Second docs-audit batch: corrected the overstated invariant-enforcement claims in `CLAUDE.md` + `architecture/overview.md` (only `print()`/blanket-`type: ignore` are machine-checked), readability findings R1–R3, and documented the public `STATUS_TO_EXCEPTION` (G5).
-**[pydantic-optional-extra](changes/archive/2026-06-04.01-pydantic-optional-extra/design.md)** (#21, 2026-06-04) — Shipped 0.3.0 — pydantic moves to an extra
120
-
-**[thin-httpx2-wrapper](changes/archive/2026-06-03.02-thin-httpx2-wrapper/design.md)** (#20, 2026-06-03) — Shipped 0.2.0 — the thin-wrapper pivot
-**[auth-coercion](changes/archive/2026-06-01.01-auth-coercion/design.md)** (#16, 2026-06-01) — Shipped (Epic 2); removed by the v0.2 pivot *(superseded by thin-httpx2-wrapper)*
125
-
-**[release-0.1.0-prep](changes/archive/2026-05-31.09-release-0.1.0-prep/design.md)** (#14, 2026-05-31) — 0.1.0 released
126
-
-**[recordedtransport](changes/archive/2026-05-31.08-recordedtransport/design.md)** (#13, 2026-05-31) — Shipped in 0.1.0; removed by the v0.2 pivot *(superseded by thin-httpx2-wrapper)*
127
-
-**[asyncclient](changes/archive/2026-05-31.07-asyncclient/design.md)** (#12, 2026-05-31) — Shipped in 0.1.0; rewritten by the v0.2 pivot *(superseded by thin-httpx2-wrapper)*
128
-
-**[msgspec-decoder-via-extras](changes/archive/2026-05-31.06-msgspec-decoder-via-extras/design.md)** (#11, 2026-05-31) — Shipped in 0.1.0; carry-forward decoder
129
-
-**[request-immutability-helpers](changes/archive/2026-05-31.05-request-immutability-helpers/design.md)** (#10, 2026-05-31) — Shipped in 0.1.0; removed by the v0.2 pivot *(superseded by thin-httpx2-wrapper)*
130
-
-**[phase-shortcut-decorators](changes/archive/2026-05-31.04-phase-shortcut-decorators/design.md)** (#9, 2026-05-31) — Shipped in 0.1.0; survived the v0.2 pivot
131
-
-**[middleware-protocol-and-chain](changes/archive/2026-05-31.03-middleware-protocol-and-chain/design.md)** (#8, 2026-05-31) — Shipped in 0.1.0; survived the v0.2 pivot
132
-
-**[shipped-work-review](changes/archive/2026-05-31.02-shipped-work-review/design.md)** (#7, 2026-05-31) — 0.1.0-era review of shipped stories
133
-
-**[bmad-to-superpowers-transition](changes/archive/2026-05-31.01-bmad-to-superpowers-transition/design.md)** (#6, 2026-05-31) — Bootstrapped the planning workflow
73
+
The change listing is **generated**, not maintained — run `just index` to
74
+
print it (grouped by `status`: In progress / Shipped / Superseded). The
75
+
frontmatter in each bundle is the single source of truth; there is no
0 commit comments