SIGN IN SIGN UP

chore(m177): close — Dimension 2.3, and 25 of 25 marked against real tests

Dimension 2.3 had no test. `test_lease_money_gate_refusal` drives an exhausted
tenant through the pull path over real HTTP: the wallet is drained AFTER the
seed so the row exists holding ZERO — the case the credits gate refuses, as
distinct from the absent row it admits, because an unprovisioned tenant is an
operator gap and refusing every one of them would turn that into an outage. The
poll answers 200 with a null lease, no lease row is written, and nothing is
charged against a wallet with nothing to give.

The other 24 rows were marked by AUDIT, not by assumption. Eighteen of the 33
tests the spec names do not exist under those names; most exist under the
prose-style names the implementer chose, and each row now cites the test that
actually proves it — `a_mintable_credentials_handle_never_reaches_the_map` for
2.4, `concurrent_cold_callers_cost_exactly_one_upstream_mint` for 4.5,
`past_the_capacity_everything_lands_in_one_series` for 6.4, and so on. Rows
whose spec-named test does exist are marked plainly.

Dimension 5.1 is DONE for the half this milestone owns and its corpus half is
DEFERRED to M178, which is where §5's own note already put it: the frontmatter
reader `parseTriggerMarkdownWithJson` has four non-test callers and none is a
route this PR owns, so porting it here would add a YAML crate and ~610 lines
with zero callers — refused by `unused_crate_dependencies` and the Dead Code
Sweep alike, with `serde_norway` fixed there as the default travelling with that
half. The `tests/fixtures/fleetbundle/` corpus is real and is read today by
`frontmatter_fixtures_test.zig`; reading it from Rust on this branch would mean
asserting against a conversion invented for the test rather than the one
production runs. What holds here is the `config_json` half — the shapes
`fleet_session.zig` resolves — via the twenty-eight `afd_fleet_runtime::config`
cases and, end to end, `test_runner_suite_vs_rust_daemon`. M178 inherits
`test_fleet_config_corpus_parity` alongside the reader it ports.

Spec moves to `docs/v2/done/` at Status DONE. The ephemeral handoff is deleted.
Orphan sweep (RULE ORP): `PROMPT_M182_SUBSTRATE_SPEC.md` cited the spec at its
`v2/active/` path and now cites `v2/done/`; no other reference to the moved or
deleted files survives anywhere in the tree.

No changelog entry and no `~/Projects/docs` branch: this milestone is a PORT at
a frozen wire (version 2), so no endpoint, command, flag or behaviour a user can
observe changed. `orly gate pr` agrees — `docs.updated: no user-surface files on
this branch`. The architecture diff this close requires is
`docs/architecture/data_flow.md`, revised earlier on this branch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
K
Kishore Kumar committed
d04e9cf77f5b29eb23ec58c140a37d6c71db856f
Parent: 9291b1d