Skip to content

Port boundary diagram, PolicyBench, design principles, and capabilities from the app-v2 draft - #2

Merged
vahid-ahmadi merged 10 commits into
mainfrom
feat/port-boundary-principles-capabilities
Aug 12, 2026
Merged

Port boundary diagram, PolicyBench, design principles, and capabilities from the app-v2 draft#2
vahid-ahmadi merged 10 commits into
mainfrom
feat/port-boundary-principles-capabilities

Conversation

@vahid-ahmadi

@vahid-ahmadi vahid-ahmadi commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Ports the material worth keeping from the app-v2 draft of this article (PolicyEngine/policyengine-app-v2#1073) into this version.

Comparing the two, they are independent articles rather than two drafts of one: this version has the better spine, the maintainable source, and a real computed result; the app-v2 draft carries a stronger case for why the calculation boundary holds. This PR brings across the parts of that case we want to keep, and reworks the two card pickers while it is in here.

What this adds

The boundary diagram — ported as-is from the app-v2 draft. Predictive language model on one side, deterministic PolicyEngine on the other, the typed tool boundary between them, and tool call / typed result crossing it. The article previously argued this across three sections of prose without ever drawing it. Connectors have been given rounded caps and a sharper arrowhead for this context.

PolicyBench — first-party evidence for the article's premise. The piece asserted that models cannot compute reliably and cited only external commentary (Wikipedia, POST, the NAO); it now leads with our own measurement and the 80.3% exact-match result, and notes that computed amounts were the hardest cases.

"What you can ask" — four kinds of question, each with a worked prompt and the tool chain it fires. The article had one worked example and nothing showing breadth.

What this also changes

Both card pickers are now real tabs. The Select a family to inspect its tools and Select a kind of question to see an example hints described an interaction that was never exposed to the keyboard. They are replaced by a labelled toolbar naming the cards and their count, and the pickers themselves are a proper tablist: roving tabindex, arrow/Home/End keys, and a tablist/tabpanel pairing. Both share one component rather than repeating the markup.

The worked example's headline figure is in billions, matching the units in its own table.

Notes

Almost all of the CSS this needed was already in the legacy stylesheet and unused — .iteration-num, .agent-flow-container and friends come from the original article, since both versions descend from it. Only the boundary diagram's label rules, the tab header, and the question-card layout are new.

Considered and deliberately left out: the five design principles, the stack table, and the Rules question kind.

One thing still worth settling, which this PR does not touch: the app-v2 draft is framed as a beta throughout and this version has no beta framing at all. Both are currently dated 11 August 2026, and whichever publishes should be consistent about product status.

bun run check passes.

vahid-ahmadi and others added 10 commits August 12, 2026 10:39
The app-v2 draft of this article (PolicyEngine/policyengine-app-v2#1073)
carries material this version does not, all of it about why the calculation
boundary holds rather than what the stages are. Bring the substantive parts
across.

- The boundary diagram, ported as-is: predictive language model on one side,
  deterministic PolicyEngine on the other, with the typed tool boundary between
  them and tool call / typed result crossing it.
- PolicyBench as first-party evidence for the article's premise. The piece
  previously asserted that models cannot compute reliably and cited only
  external commentary.
- Five design principles, plus the handle rule that makes the privacy boundary
  structural: a simulation returns an opaque identifier and metadata, never
  household rows, survey weights, or a serialisable object.
- "What you can ask": five kinds of question with a worked prompt and the tool
  chain each one fires.
- The stack, and GET /version reporting the engine versions behind any answer.

Almost all of the CSS this needs was already in the legacy stylesheet and
unused: .principles-grid, .principle-card, .iteration-num, .insight-box, and
.agent-flow-container all come from the original article. Only the boundary
diagram's label rules and the question-card layout are new.

Note that the typed-surface principle states there is no model-authored Python
execution tool, which is at odds with the "reviewed Python" fallback mentioned
under What's next. Both cannot be right.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The paragraph above it already makes the point; the callout restated it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Removed at review: the five design principles section, the stack table, and
the Rules entry under What you can ask, which leaves four kinds of question.

Replaced both "Select a … to …" hints with a labelled toolbar naming the cards
and their count. The hint described an interaction the cards never exposed to
the keyboard, so the pickers are now a real tablist: roving tabindex, arrow,
Home and End keys, and a tablist/tabpanel pairing. Both pickers share one
component instead of repeating the markup.

The boundary diagram's connectors get rounded caps and a concave arrowhead,
which reads as an arrow rather than a blunt triangle at this scale.

The worked example's headline figure now matches the table's units.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The arrow into Weighted outputs turned a hard corner and entered the right
edge with a 6px stub. It now sweeps out of Simulate's base into the top edge.

"Verified, tool-backed answer" restated what the panel header and the diagram
beneath it already say.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Left at .tool-cards' three columns they wrapped 3 + 1. The breakpoint rules
below still collapse them to two columns and then one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The subtitle read as an announcement rather than a description, and several
claims leaned on adjectives the piece does not need: work the model "excels
at", parts models are "genuinely good at", tools "narrow by design", inputs
the user "actually" supplied. The PolicyBench line now reports what was
measured, that computed amounts scored lowest, rather than calling them the
hardest cases.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ents

Rendered the diagram and looked at it: the curve between the two box centres
put the arrowhead in at an angle, floating short of the box. Simulate and
Weighted outputs overlap horizontally between x=700 and x=765, so they are now
joined by a plain vertical drop through the middle of that overlap.

The boundary section split the system two ways and the next section split it
three ways, with nothing connecting them. Name the gateway as the thing sitting
on the boundary, deciding whether a proposed plan may cross, which makes the
two- and three-part descriptions the same picture.

What you can ask now opens by referring back to the worked example, so it reads
as widening the scope rather than starting over.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The plugin ecosystem is not tied to one vendor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Applied across the h1, subtitle, opening paragraph, page title, social
metadata, and the Markdown reference copy.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reverts the subtitle rewrite from the neutral-language pass; the h1 keeps the
AI wording.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vahid-ahmadi
vahid-ahmadi merged commit 6e439bc into main Aug 12, 2026
1 check passed
@vahid-ahmadi
vahid-ahmadi deleted the feat/port-boundary-principles-capabilities branch August 12, 2026 09:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant