clay-borg/workplans/CB-WP-0043-a-problem-sits-where-its-stress-lands.md
tegwick 471de44632
Some checks failed
ci / check (push) Failing after 3s
Sync hub id for CB-WP-0043
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 17:30:59 +02:00

3 KiB

id kind title status state_hub_workstream_id
CB-WP-0043 product A Problem sits where its Stress lands done 9b80b371-d947-41e4-a027-4c3ee9dbc542

Purpose

structural tier  M   (adds a field to the projection, which is a
                      canonical interface)
declared tier    M

No chaos roll — retired by ADR-0021.

The report

"We need to place the problems next to the player that is affected. Only global problems affecting all should go to the middle of the table. Problems attached to people that also affect their bonds should be placed close to the bond lines of the player."

The picture had become a lie. A row of Problems across the middle says these are the table's, which is true under the baseline and false under H2, where three of five cards fall on particular seats.

Task: place them where the Stress lands

id: CB-WP-0043-T01
status: done
priority: high
state_hub_task_id: "9e7a24de-b392-402a-aa08-8b20906c1f0f"
scope where
global the middle — it really is everyone's
personal beside its owner, 52% of the way from the seat to the table centre
bond the mean midpoint of the owner's Bond edges — on the lines

Controls:

  • the baseline page is unchanged. A variant that redraws the baseline invalidates every prior look at it — the scoped layout is taken only when a non-global scope exists;
  • a bond Problem with no Bonds is drawn as personal, because that is the rule (bond_network falls back to the owner at degree 0) and the picture must agree with the arithmetic;
  • the placement is asserted, not the fact that something was drawn.

Done 2026-08-08.

The scope reaches the view as a separate marker, not as a field on ProblemView: the delta says "place owner marker on the card" — a token beside a card — and it is public while the card is face down, which a variant of ProblemView could not express.

The coverage probe forced a real improvement. It demanded a text token for the new fields, and a position is not a token. That is the probe being right: position alone is invisible to text_of and to a screen reader, and illegible when two anchors coincide. So each scoped Problem now says whose it is — "everyone's", "P1's alone", "P2's Bond network", and "P1's alone — no Bond to share it" at degree 0.

The fixture gained a third Problem. With two, one of the three placement rules was unexercised and the probe unsatisfiable — a fixture that cannot reach a branch is how a rule ships untested.

Not done

  • Nothing tells a player what the scope means — that an unclaimed personal card ticks only its owner. The position and the label say whose, not what happens. That is a rules-legibility question and the edition's Rules_Text.csv for H2 is vendored and unread.
  • No felt-play. Whether the placement reads as intended at a table is exactly the class ADR-0010 D5 says only a human answers.