From d8620afe818ce74a64f3973c7d9af93d4debdc11 Mon Sep 17 00:00:00 2001 From: Eli Salamie Date: Tue, 15 Sep 2026 03:38:02 -0500 Subject: [PATCH] fix(matrix): named refusals and whole-pixel floors; POST body reaches every field --- .gitignore | 1 + CHANGELOG.md | 21 ++ .../hw-data-connectors-matrix-inlay.svg | 262 +++++++++--------- src/hyperweave/compose/geometry/text.py | 6 +- src/hyperweave/compose/matrix/layout.py | 84 ++++-- src/hyperweave/compose/resolver.py | 12 +- src/hyperweave/core/cell_layout.py | 9 +- src/hyperweave/core/paradigm.py | 8 +- src/hyperweave/core/text.py | 16 +- src/hyperweave/data/paradigms/cellular.yaml | 2 +- src/hyperweave/serve/app.py | 241 ++++++++++------ tests/compose/geometry/test_text_fit.py | 12 + tests/compose/test_matrix_layout.py | 96 ++++++- tests/compose/test_render_regressions.py | 1 - tests/compose/test_specimen_parity.py | 27 +- tests/fixtures/spatial/characterization.json | 88 +++--- .../specimens/loop-flywheel-accumulate.json | 2 +- tests/fixtures/specimens/loop-flywheel.json | 2 +- .../specimens/loop-hillclimb-turn.json | 2 +- tests/fixtures/specimens/loop-hillclimb.json | 2 +- .../fixtures/specimens/loop-nested-laps.json | 2 +- tests/fixtures/specimens/loop-nested.json | 2 +- .../fixtures/specimens/loop-retry-budget.json | 2 +- .../specimens/loop-retry-unrolled.json | 2 +- tests/fixtures/specimens/loop-retry.json | 2 +- tests/fixtures/specimens/loop-runloop.json | 2 +- .../specimens/loop-shuttle-swimlane.json | 2 +- tests/fixtures/specimens/loop-shuttle.json | 2 +- tests/fixtures/specimens/loop-tap.json | 2 +- tests/render/test_chart_engine.py | 13 + tests/serve/test_compose_body.py | 231 +++++++++++++++ 31 files changed, 829 insertions(+), 327 deletions(-) create mode 100644 tests/serve/test_compose_body.py diff --git a/.gitignore b/.gitignore index fc4d342..e978658 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ node_modules/ # testing .coverage +_test_*.svg .coverage.* .fastest.coverage htmlcov/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b98b58..0daf62f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,11 @@ reflects what actually animates, and deploys only ship from a green build. - **JSON validation errors:** `validate --json` returns `{valid, error}` for setup failures such as bad JSON, unknown presets, and missing files. - **Title in compose output:** the artifact's name now ships alongside the text roles. +- **POST body reaches every field:** `font_mode`, `pair`, `state_glyph_shape`, `data`, `format`, + `telemetry_data`, `receipt_display_name`, `connector_data`, `stats_username`, `chart_owner`, + `chart_repo`, `edge_motion`, and `motion_register` are `POST /v1/compose` body fields on every + response shape. An unknown key is reported in `warnings` (json, envelope, report) or the + `X-HW-Warning` header (svg) instead of being dropped. ### Security - **Markup injection via `genome_override`:** a hostile genome could inject `