# DEPS — mgf-django's bidirectional dependency manifest

> **§1** — what mgf-django depends on. **§2** — who depends on
> mgf-django. Knowing both directions makes deprecation,
> breaking-change blast-radius, and feature-prioritisation tractable.
>
> **Maintained by:** the mgf-common owner (Bassam — mgf-common owns the
> federation per the one-big-library mindset).
> **Per standard DOC-16** (v2.12): every project ships a `DEPS.md` at
> repo root. Replaces the former `USERS.md` (its roster is now §2).

Last verified: 2026-06-08.

---

## §1 What mgf-django depends on

| Dependency | Window | Why | Tier |
|---|---|---|---|
| `mgf-common` | `>=0.40,<0.42` | `AppError` / bootstrap / observability / settings / request-id contextvar | runtime |
| `django` | `>=4.2` | the framework these adapters integrate with (AppConfig + middleware + JsonFormatter + DjangoSettingsBridge) | runtime |

*Federation siblings depended on: `mgf-common` — the cornerstone. Per
AP-03's 0.x discipline the pin is walked one minor at a time; mgf-django
imports `bootstrap` / `observability` / `exceptions` from
`mgf.common.*`.*

---

## §2 Who depends on mgf-django

Consumer projects + federation siblings that import `mgf.django.*`.
(Inverse of each consumer's `MGF_ADOPTION.md`.)

| Project / sibling | Location | Import sites | Status | Surfaces used |
|---|---|---:|---|---|
| **inthewords** | `/home/bassam/PycharmProjects/inthewords` | 0 *(planned)* | Planned adoption — pinned to mgf-common 0.31 today | n/a yet |

**Zero-consumer reality (today).** mgf-django is shipped but has **no
runtime adopters yet**. inthewords is the only candidate consumer; it's
pinned to mgf-common 0.31 and hasn't picked up mgf-django middleware /
helpers yet.

**Why ship without adopters?** mgf-django was extracted from mgf-common
preemptively per the "split adapters by runtime shape" federation rule
(see `feedback_split_by_runtime_shape` memory). It lives so that when
inthewords does adopt Django-specific helpers, the surface is already
there.

mgf-django is also **not yet on PyPI** (blocker B-1 in
`docs/inprogress/pre_release_check.md` — first-publish gated on token
availability + private PyPI server setup).

**Federation siblings.** No siblings depend on mgf-django today. It is
leaf-only.

The current zero-consumer status gives mgf-django freedom to break shape
until the first adopter pins it — deliberate, not a problem. When
inthewords adopts the throttle middleware (the most likely first
adoption), update §2 and verify their `MGF_ADOPTION.md` declares the new
dependency.

---

## §3 Maintenance

Updated every MINOR release + when a dependency or consumer changes.
Import-survey methodology for `mgf.django`:

```sh
for proj in vm-vmanager-app inthewords PlasmaMapper figrecovery; do
  grep -rE "(from|import) +mgf\.django" "/home/bassam/PycharmProjects/$proj" \
    --include='*.py' | wc -l
done
```

The first non-zero count flips mgf-django from "preemptive surface" to
"real library with users".
