untracked files on main: dceb101 feat(#63): IMP-34 R1 donor capacity measured bound (u1+u2)

This commit is contained in:
2026-05-21 22:07:41 +09:00
commit 8f085a28d3
3220 changed files with 985495 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
Executing unit: u1
[Claude #3] Stage 3 Round #1 — IMP-09 PR 2 u1
### unit_executed
- **id**: `u1`
- **summary**: Add `TOPOLOGY_AXIS_MAP` constant + `_TWO_D_TOPOLOGIES` frozenset (5 in-scope topology → row/col position groupings, no dispatch wiring)
### files_changed
- `src/phase_z2_pipeline.py` (+36 / -0)
### diff_summary
- Inserted after `_build_cols_dynamic` (HEAD line 1113) and before the existing comment at HEAD line 1116. No edits to any other surface; PR 1 helpers (`_parse_css_areas`, `_parse_fr_string`, `compute_zone_layout`, `compute_zone_layout_cols`, `_compute_per_zone_geometry`, `_build_fr_default`, `_build_rows_dynamic`, `_build_cols_dynamic`) untouched.
- New constants:
- `TOPOLOGY_AXIS_MAP: dict[str, dict[str, list[list[str]]]]` — keys = `{"T", "inverted-T", "side-T-left", "side-T-right", "2x2"}`; each value carries `"rows"` (row-track groupings for `compute_zone_layout` heights) and `"cols"` (col-track groupings for `compute_zone_layout_cols` widths).
- `_TWO_D_TOPOLOGIES = frozenset(TOPOLOGY_AXIS_MAP)` — 5-element membership-test surface for u6/u7 dispatch.
- Spanning-zone convention recorded in the docblock:
- `T."top"` spans both cols → excluded from `cols`.
- `inverted-T."bottom"` spans both cols → excluded from `cols`.
- `side-T-left."left"` spans both rows → excluded from `rows`.
- `side-T-right."right"` spans both rows → excluded from `rows`.
- `2x2` — no spanning, every zone participates on both axes.
- No dispatch wiring is added in this unit. `build_layout_css` normal path still routes only `topology in {"rows","cols"}` to dynamic sinks; everything else still falls through to `_build_fr_default`. u6/u7 will consume the new constants.
### evidence
- `git log -1 --format=%H``201099e53b0048f3040e17ee9b0394ba9ad6e940` (Stage 2 baseline confirmed).
- `git diff --stat src/phase_z2_pipeline.py``1 file changed, 36 insertions(+)` (≤50-line gate ✓; ≤3-file gate ✓ — single file).
- `python -c "import ast; ast.parse(open(...).read())"``PARSE OK`.
- Import-load smoke (without committing): `TOPOLOGY_AXIS_MAP` keys = `['2x2', 'T', 'inverted-T', 'side-T-left', 'side-T-right']`; `_TWO_D_TOPOLOGIES` = same 5 strings as a `frozenset`.
- Per-topology position-union vs `templates/phase_z2/layouts/layouts.yaml`:
- `T`: union `{top, bottom-left, bottom-right}` = `positions: [top, bottom-left, bottom-right]`
- `inverted-T`: union `{top-left, top-right, bottom}` = `positions: [top-left, top-right, bottom]`
- `side-T-left`: union `{left, right-top, right-bottom}` = `positions: [left, right-top, right-bottom]`
- `side-T-right`: union `{left-top, right, left-bottom}` = `positions: [left-top, right, left-bottom]`
- `2x2`: union `{top-left, top-right, bottom-left, bottom-right}` = `positions: [top-left, top-right, bottom-left, bottom-right]`
- Working-tree sketch stashed pre-unit as `stash@{0}: IMP-09 PR2 sketch (Stage 2 design reference; re-derive per unit)` (preserved for u2u7 consultation; Stage 3 re-derives from clean HEAD per Stage 1/2 contract).
- `src/space_allocator.py` untouched (Kei legacy `build_containers_type_b` invariant preserved at u26).
### scope_lock compliance
- ✓ AI=0 normal path (PZ-1) — pure data declaration, no LLM call surface.
- ✓ 1 turn = 1 unit (PZ-2) — only u1 executed.
- ✓ No hardcoding beyond the 5-preset whitelist that Stage 1 explicitly enumerated.
- ✓ No edits to `src/space_allocator.py`.
- ✓ No retry-gate behavioral change (this unit does not touch the gate path).
- ✓ No new commits / pushes (deliverable = this comment).
### remaining_units
`u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26` (25 units, total plan = 26)
### follow_up_issue_candidates
None — no out-of-scope axis discovered in u1. Stage 2 follow-ups remain as recorded:
- `single` topology dynamic promotion (separate PR).
- retry_gate extension to 2-D presets beyond skip semantics.
- B4 frame_selection evidence integration.
- Consumer audit for Step 8 `computation` label change (`"2d_dynamic_aggregated"` / `"user_override_2d"` — introduced later in u6/u7).
### next
`continue_same` — proceed to u2 (`_aggregate_axis_zone` helper) in the next turn. Stage 3 not yet complete.