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
5 changes: 2 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ effect. State the numbers, not "benchmarked".
- [ ] **Rejected an alternative** with reasoning that would otherwise be
re-litigated? File it as an ADR in [`docs/adr/`](../docs/adr/), numbered
`NNNN-slug.md`, with a revisit trigger — not here.
- [ ] **Found real work you are not doing now?** File it in
[`planning/deferred/`](../planning/deferred/), self-contained, with a
revisit trigger — not here.
- [ ] **Found real work you are not doing now?** Open a GitHub issue,
self-contained enough to pick up cold — not here.
- [ ] `just lint-ci` and `just test-ci` pass.
14 changes: 8 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,15 @@ verification); it is reviewed with the diff. There is no change file and no lane
to choose. A trivial PR (typo, dep bump, formatter) deletes the template and
ships a conventional-commit title.

Two things outlive the PR: an alternative **rejected** with reasoning becomes an
ADR in [`docs/adr/`](docs/adr/) (`NNNN-slug.md`, sequential — see
Two things outlive the PR, and there are exactly two places to put them: an
alternative **rejected** with reasoning becomes an ADR in
[`docs/adr/`](docs/adr/) (`NNNN-slug.md`, sequential — see
[`docs/agents/domain.md`](docs/agents/domain.md)), and real work **not
scheduled** goes to `planning/deferred/` (self-contained, with a revisit
trigger). There is no separate truth-home directory — the living truth about
behaviour is the code and its `INVARIANT:`-marked tests, and a behaviour change
is reviewed with the diff, not promoted to a page. See
scheduled** becomes a GitHub issue (see
[`docs/agents/issue-tracker.md`](docs/agents/issue-tracker.md)). There is no
third state. There is no separate truth-home directory either — the living truth
about behaviour is the code and its `INVARIANT:`-marked tests, and a behaviour
change is reviewed with the diff, not promoted to a page. See
[`planning/README.md`](planning/README.md) for the admission check that decides
where a given fact belongs.

Expand Down
11 changes: 6 additions & 5 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,12 @@ Strawberry, Quart, RQ, APScheduler, Jobify, Flet, ag2.
measurement drift. The bound stated when this was planned held: it trimmed the
cell, it did not close it. dependency-injector's ~48 ns is a C-level slot read
on a Cython core, which pure Python does not reach.
A third step remains open and is **deliberately deferred**: an APP-scoped
resolver could close over its `CacheItem` and reach ~16 ns, but the target is
only invariant because one registry belongs to one root, so the registry would
have to reference its root — the container reference cycle removed in 3.1.1.
That needs a weakref and a proof, for ~30 ns.
A third step remains open and is tracked in
[issue #434](https://github.com/modern-python/modern-di/issues/434): an
APP-scoped resolver could close over its `CacheItem` and reach ~16 ns, but the
target is only invariant because one registry belongs to one root, so the
registry would have to reference its root — the container reference cycle
removed in 3.1.1. That needs a weakref and a proof, for ~30 ns.

### Docs & ecosystem
- **Canonical on-ramp per integration** — every official integration ships a
Expand Down
3 changes: 2 additions & 1 deletion docs/adr/0017-exec-hot-path-declined.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ row, and dissolving the dependency-purity framing manufactures no win the measur
**Revisit trigger:** a user-reported, real-world resolve bottleneck on a high-arity node or a deep
singleton/scoped chain — the two forms where `exec` could pay — that the closure resolver provably
cannot close. A synthetic micro-benchmark or a hypothetical does not qualify. This is the
codegen-ceiling half of the open warm-singleton perf-headroom question.
codegen-ceiling half of the open warm-singleton perf-headroom question,
[issue #434](https://github.com/modern-python/modern-di/issues/434).
14 changes: 5 additions & 9 deletions planning/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ the template and ship a conventional-commit title.

- an alternative you **rejected** with reasoning → an ADR in
[`docs/adr/`](../docs/adr/), numbered `NNNN-slug.md`
- work that is real but **not scheduled** → `deferred/`
- work that is real but **not scheduled** → a GitHub issue (see
[`docs/agents/issue-tracker.md`](../docs/agents/issue-tracker.md))

**3. Run `just check-links` before pushing.**

Expand Down Expand Up @@ -66,11 +67,6 @@ whether that test or a sibling one catches a given regression.

## Artifacts

- **[`deferred/<YYYY-MM-DD>-<slug>.md`](deferred/)** — one file per open item,
each **self-contained**: it inlines the evidence and reasoning needed to pick
it up cold. A required `**Revisit trigger:**` section — an item with no trigger
is abandoned, not deferred. This directory is being retired in favour of GitHub
Issues; do not add to it.
- **[`releases/<version>.md`](releases/)** — one file per curated release, from
`_templates/release.md`. Used **verbatim** as the GitHub Release body by
[`release.yml`](../.github/workflows/release.yml), which fails a stable tag
Expand All @@ -83,6 +79,6 @@ whether that test or a sibling one catches a given regression.
`just check-links` and by `just lint-ci`. It covers the trees a site builder
never sees.

A **deferred item's presence in `deferred/` is its status**. When it resolves: if
it ships, delete the file (its truth is now in the code and the release notes); if
it is declined, write the refusal as an ADR under [`docs/adr/`](../docs/adr/).
This directory holds no work queue. Open work is a GitHub issue and refused work
is an ADR under [`docs/adr/`](../docs/adr/); there is no third state and nothing
here to add a file to.
62 changes: 0 additions & 62 deletions planning/deferred/2026-07-17-warm-singleton-perf-headroom.md

This file was deleted.

66 changes: 0 additions & 66 deletions planning/deferred/2026-07-19-free-threaded-throughput.md

This file was deleted.

108 changes: 0 additions & 108 deletions planning/deferred/2026-07-29-upstream-lean-convention.md

This file was deleted.

Loading
Loading