Skip to content

Add the APPAM 2026 roundtable deck - #95

Merged
MaxGhenis merged 32 commits into
mainfrom
appam-2026
Nov 5, 2026
Merged

MaxGhenis merged 32 commits into
mainfrom
appam-2026

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Max presents this deck at the APPAM 2026 roundtable "State Policy Impacts on Family Resources: Tools to Improve Policy Analysis". The roundtable meets on Thursday, November 5, from 10:15 to 11:45am ET in the Wellesley room, and he has 10 to 12 minutes. On November 4, he asked us to publish it at policyengine.org/slides/appam-2026 and keep editing after that, so later edits land in follow-up PRs.

Slides

The deck in slideshows/appam-2026 runs thirteen slides:

  1. Cover
  2. What PolicyEngine computes
  3. One family across 51 jurisdictions
  4. Which budget lines differ, with the Texas subsidy and SNAP interaction
  5. Benefit cliffs by earnings
  6. A real parameter file
  7. Simulated eligibility on your own microdata
  8. A Massachusetts reform
  9. CliffWatch and Build, two of our web apps
  10. Where PolicyEngine sits beside the other panelists' tools
  11. What we leave out
  12. The Axiom Foundation's Georgia SNAP rule, run on the Axiom engine
  13. Close

We wrote the talk in SPEAKER-NOTES.md, and in EVIDENCE.md we trace each claim to a computed result or to code at a named commit. We computed every PolicyEngine US figure with 2.90.2 at 469ad12, apart from the 2.2.1 runs, using the scripts in analysis/. For slides 3 to 5 we run one family, and for slide 7 we sample the default Populace US file. We run slides 8 and 11 on the Populace US local-area file, which policyengine.py uses for state regions, and keep their default-file runs in data/*_default.json. For their effective samples, we count each survey household once, merging an ASEC record with its tax-data clone (analysis/effective_samples.py). Slide 12's figures come from the Axiom Rules Engine 0.2.2, and the Census rates from P60-290 Table 18.

The PDF

The moderator asked for slides by Wednesday evening, November 4, to load on a laptop. Max sends the link, and we export a PDF if he needs one to post or if the room's laptop can't reach the site. Export it from the deployment that serves the slides you want, then finish it:

bun run export appam-2026 raw.pdf --url <deployment URL> --size 1440x810 --scale 2
uv run slideshows/appam-2026/analysis/finish_pdf.py raw.pdf Ghenis-PolicyEngine-APPAM-2026.pdf

finish_pdf.py trims each page to its image, links the addresses the slides print, and names the deck and its author in the file. On November 3, we exported the current PDF from Vercel deployment dpl_9X9zS2oSQnTQFbxgNbo27UVnmcxF of e07b7b8, whose slides match 2fb11e9's, and finished it with finish_pdf.py at 2fb11e9. We used headless Chrome 156 and pypdf 6.21.4. The finished file hashes to sha256 dd073b554414349b236e43acb0409a9013109830254a7285f9135d9a70806923, and the raw export to 080e09f9c86c00cdbd9c82ef021e66f9239c8ef532d4768b3b90f60af4a5123a. After 2fb11e9, we changed two slides in the web deck alone. We wrapped the closing slide's QR code and address in anchors without moving either out of the rectangle its PDF link covers. On slide 6, we now cite the 2023 act's sections as main's amount.yaml does, while the PDF's excerpt still reads "Section 22 & Section 45", as in 2.90.2. We then added slide 9, so the current PDF runs twelve pages and lacks it. finish_pdf.py now expects thirteen pages.

Invariants

  • Net resources reconcile with household_net_income and spm_unit_net_income to within two cents, across random states and earnings (analysis/test_invariants.py).
  • Slide 5's "up to" holds across all 51 jurisdictions over the $15,000 to $100,000 range its caption names. cliff_ranking records each state's largest one-step drop in that range, and the slide lists the top three.
  • The sampler gives a household it draws twice fresh ids, so each fixed-sample entry counts once (analysis/test_sample_families.py).
  • Each fixed-sample run records the state the model read, and mean employment income holds constant across all 51 runs. State income tax comes to zero in Alaska, Florida and Texas and exceeds zero in Alabama and California.
  • No household loses under the Massachusetts reform, and the poverty gap falls by no more than the state spends on it. The child poverty rate falls only when some children's records cross the poverty line, and here it falls (content.test.ts).
  • The figures typed into the speaker notes and the ledger match the runs' data, and six that they repeat match at every copy. The ledger's rank for the size of Massachusetts's gap from Census matches the state baseline run (content.test.ts).
  • We answer a question on sampling error in the speaker notes and verify three comparisons in content.test.ts. Massachusetts's standard error exceeds twice Census's margin of error there. A normal error of that size would miss Census by more, on average, than our state estimates do, and the median state holds fewer effective households with children than Massachusetts.
  • state_file reads blank parent links as 0 and keeps every other id. The model reads 0 as an unknown parent, and any nonzero id that matches no one as an absent parent (analysis/test_state_baseline.py).
  • We put state payroll taxes and paid leave contributions on the state line, and the lines add up to net resources (analysis/test_invariants.py).
  • Each effective sample stays between one and its record count, and equals the count when weights match. Counting each source household once never raises the sample and keeps it between one and the number of sources. When no two records share a source, it returns the record-level sample, and record order and weight scale leave it unchanged (analysis/test_state_baseline.py).
  • effective_samples.py stops unless records that share a source household pair one ASEC record with one tax-data clone whose members have the same ages. It keeps matching ids on the local-area file's two spines apart (analysis/test_effective_samples.py).
  • A group-quarters record needs both the record type and the relationship that policyengine.py names (analysis/test_state_baseline.py).
  • Standard errors stay nonnegative, scale with their values, vanish across identical households and count a household once however its people split its value. Each SPM unit, tax unit and person takes the source of the one household its members share, in any member order. A unit whose members span two households stops the run (analysis/test_standard_errors.py).
  • Every finished PDF page fills 16:9, and each link stays inside its slide's page, over the ink of the address it opens. An export with another page count or size, or a page that already has links, stops the script (analysis/test_finish_pdf.py).
  • Slide 4's end labels count DC apart from the states, and slide 7's name both states that tie (content.test.ts).

Differential checks

  • On the default file, a Massachusetts cut returns the national run's household gain, gaining share and poverty rates (data/massachusetts_national_check.json).
  • The 51-state rates on the local-area file match the separate run in Trace how calibration, sampling noise and rent imputation move state child SPM poverty rates microcosm#1445 to within 0.000001 points in 48 of 51 jurisdictions. That run fills blank parent links with −1 and this one with 0, which moves California 0.56 points, Delaware 0.006 and Missouri 0.00001 (content.test.ts).
  • The fixed sample rebuilds to the same rows. Restoring the stored computed variables it leaves out returns the same SNAP and child Medicaid or CHIP shares in Tennessee, Oregon and Hawaii (analysis/audit_sample_columns.py).
  • The code slides 7 and 8 print returns the Arkansas and Maryland shares and the Massachusetts cost to every digit (analysis/check_slide_code.py). content.test.ts matches each printed line to that script, apart from the sample file and the state loop.
  • Slide 6's values end at the amount slide 8 doubles, and slide 12 prints the 20% rate the Axiom engine applied (content.test.ts).
  • A ratio's standard error agrees to within 2% with a jackknife that drops one household at a time (analysis/test_standard_errors.py).
  • On a four-person file, each SPM unit's and tax unit's cluster matches the household that policyengine-core reads from its first member. map_to from households to SPM units would instead split household 7's id into 7/3 and 14/3 (analysis/test_standard_errors.py).
  • Wisconsin's 2026 subsidy from the schedule run equals the family run's (analysis/wisconsin_schedules.py, content.test.ts).
  • The same reform on the same records at policyengine-us 2.2.1 returns $657 million, which the ledger reports beside the deck's $577 million (data/massachusetts_reform_221.json).
  • We recompute the median marginal rates from the sweep, and slide 5 prints the sweep's $500 step. The Census rates match the ones the cpid-webinar-2026 deck maps (content.test.ts).
  • The precision run recomputes the slide's child rate, fall, poverty gap and cost from its own sums over people, SPM units and tax units. content.test.ts holds it to the reform run's JSON, file, model version and parent-link fill. It clusters each person, SPM unit and tax unit by the source household of the one household its members share, and stops if a unit's members span two households. We treat the calibrated weights as fixed, so the standard errors leave out what calibration adds. They also leave out errors that every record shares, such as a data-wide error in rent, and those that every clone shares through the model that imputes its tax detail (analysis/massachusetts_precision.py).
  • Record-level Kish values in data/effective_samples.json reproduce the simulation runs' values to within one part in a million on both files. Massachusetts's source-level values match the reform run (content.test.ts).
  • On each page, the PDF holds one link for each anchor its slide renders in the web deck, and the slide prints every address its PDF page links to (content.test.ts).

Slide 2

Slide 2's reform line reads "Who would gain or lose if lawmakers adopted a proposed reform." The session blurb's line reads "How proposed reforms would change poverty and household incomes in each state," and Max can switch the slide back to it with one edit in WhatItDoesSlide.tsx.

Slide 9

Slide 9 shows two of our web apps. In CliffWatch, we entered a single parent, 33, with children aged 6 and 10 in Cambridge, Massachusetts, and kept its default programs. In Build, we set the Massachusetts child and family tax credit amount from slides 6 and 8 to $880 from 2026. We captured both from the live sites on November 4. For Build, we set the browser's time zone to UTC: in New York time, Build labels each gridline in its chart of historic values with the year before.

We keep CliffWatch's figures off the slide. CliffWatch runs PolicyEngine US 1.755.5 and counts Medicaid and CHIP in net income. We computed the deck's figures with 2.90.2 and leave health coverage out of net resources. In the speaker notes, we cite one CliffWatch result: this family loses TAFDC, Massachusetts's cash assistance, when its earnings pass $18,000.

Review

Reviewers in rounds 1 and 2 requested changes, and we recorded what we changed in RESOLUTION-r2.md. In round 3, five reviewers read the deck at 0129c2a, one of them the PDF alone. Skeptics then tried to refute each finding, and a critic looked for gaps. The skeptics confirmed 89 findings, four of them must-fix, and refuted two. Three findings needed a microsimulation, which we ran on November 3: we now cluster the standard errors by source household (A3), and the column audit lists 181 undefined names (A11). We also reran the reform with blank parent links read as 0, recorded that fill, and found slide 8's figures unchanged (A7).

On November 5, an Opus 5.5 reviewer approved slide 9's commit (8d86641..236e809). It replayed CliffWatch's household on the live API, compared the screenshots with the capture run's stills, checked every slide reference and ran vitest and pytest. Its four smaller findings go in a follow-up PR.

With the Codex lanes closed, an Opus 5.5 reviewer then read the deck at d07f110 and requested changes, with one must-fix, five should-fix and six optional findings. Max decides one of them: whether slide 8 keeps its $169 million poverty gap card or moves that figure into the footer. We fixed or answered the rest, and recorded what we did with each round-3 and final finding in RESOLUTION-r3.md. Both resolution files sit in ~/reviews/appam-2026/ on Max's machine.

We now count each survey household once in the effective samples. Massachusetts's falls from 395 to 301 households, or from 173 to 132 among those with children. Among households with children, the median state's falls from 125 to 108 on the local-area file and from 75 to 63 on the default file. We also fixed a bug that had mislabeled the SPM-unit and tax-unit clusters. With the source-household clusters and that fix, the standard errors rise to $64 million on the cost, $42 million on the gap and 4.6 points on the 2026 child rate. They had read $54 million, $34 million and 3.8 points.

Two verification reviewers then read the deck at 2fb11e9. The statistics reviewer approved it and asked for a test that holds the cluster fix, so we added one to analysis/test_standard_errors.py. When we reran analysis/massachusetts_precision.py, it wrote the same data/massachusetts_precision.json. The PDF reviewer could open the page images but not the text files, so it checked how the pages look and found nothing to fix there. We extracted each PDF link and cropped the page image under it for a second PDF reviewer.

On November 4, that reviewer approved the deck at 8f07254. It compared all 12 page images with the slide source and found no differences, checked all nine link boxes, and asked for no new export. We fixed its findings on the closing slide's anchors, the link test and two ledger sentences in 8d86641, and corrected two sentences in this description. It had no network, so we checked the outside sources ourselves: the TAXSIM cutoff, the dashboard's reform options, the 2035 horizon, the RuleSpec excerpt and the Department of Labor's wage table. Each matches the deck and the ledger. Another reviewer then checked those fixes and our source checks. It asked for no change to the PDF and found no fault in the deck, and we corrected the records it flagged.

Impact

The PR adds one registry entry in lib/slideshows.ts and the QR image and two screenshots in public/images/appam-2026/, and everything else sits in the deck folder. GitNexus impact failed on a storage version mismatch, and its change detection reads the main checkout rather than this worktree. So we checked the scope by hand, and git diff --stat origin/main shows no other shared code.

axiom: n/a: slides and analysis, no change to a country model

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
policyengine-slides Ready Ready Preview Nov 5, 2026 2:50am UTC

Request Review

Adds the one-family household, its 51-state earnings sweep, the property and
differential tests, and a real Axiom engine run of Georgia SNAP 3612.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds the family, program-line and earnings charts, the Texas subsidy run, the
tools and scope slides, the Axiom slide, and speaker notes. Reconciles net
resources against household_net_income as well as spm_unit_net_income.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Runs one fixed sample through every state's rules, keeps household roles in the
flat file, and restores a space the JSX compiler dropped on the first chart.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reform slide scores a doubled Massachusetts child and family credit on the
state's own records. The scope slide reports the state baseline check against
Census, which is why the deck prints no state poverty rate from Populace US.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits November 1, 2026 14:40
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slide 2's reform line now reads "Who would gain or lose if lawmakers
adopted a proposed reform.", so it no longer promises state poverty
results that slides 8 and 10 warn against. d2291 decides the same
sentence for the paragraph to Cynthia.

The fixed sample now draws with replacement in proportion to weight and
gives each draw fresh ids. The old draw without replacement took 72% of
the weight in 3,000 of 23,407 records, so it was not proportional. The
script reads the pinned file's tables, which matches the old route to
every digit on the same households and needs no national simulation.

Slide 5 ranks all 51 states, slide 8 prints the Massachusetts baseline
its gap rests on, and slide 10 gives the Census gap's direction and an
effective sample of households with children. Slide 4 credits Congress
for the SNAP deduction, and slide 11 dates the encoded section.

Tests that could not fail went away. New ones check the 51-state cliff
ranking, the subsidy attribution, marginal rates from the sweep, the
state each run read, the national comparison, the Census source, and
the typed figures in the notes and ledger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slide 7's caption and the ledger drop reduced passives, slide 8 gives
the model its own verb, and the notes' longest spoken sentences split
where they held two thoughts. The ledger's $30,000 line now matches the
fixed hours in the sweep.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slides 8 and 10 described the national default file, but policyengine.py
routes state regions to the Populace US local-area file. Rerun the
Massachusetts reform and the 51-state baseline on that file, keep the
default-file runs in the ledger, and move the notes, slide copy and tests
to the new figures. Fix ruff findings in the analysis scripts and load the
QR code eagerly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Correctness:
- Read blank parent links as 0, the value PolicyEngine US treats as an
  unknown parent, and rerun all 51 state baselines and the Massachusetts
  reform. California moves 0.56 points, Delaware 0.006, Missouri 0.00001;
  no slide figure changes.
- Count state payroll taxes and paid leave contributions on the state
  line. Rerun the family sweeps; the rug's end labels change.
- Say that we take earnings and paid leave benefits as inputs on slide 10.
- Say "any state" and "wherever a state taxes income" for the Child Poverty
  Impact Dashboard's reforms, from its option list at 977661f.
- Add committed sources for every ledger figure: the 2.2.1 Massachusetts
  run, the fixed sample's column audit, the slide code check, Wisconsin's
  schedules, and the group-quarters column. Wisconsin's ledger figures now
  match the committed run.

Voice: give fiscal claims, deductions and held-fixed inputs their actors,
take "we estimate" on PolicyEngine's figures, introduce the local-area
file and SPM once, and rewrite the ledger's concept subjects and passives.

Tests: property tests for parent-link fill, effective samples and group
quarters; a state-line payroll test; typed-figure checks across the ledger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slide 8 overflowed at 1280x720 after the round 2 title and footer. Shorten
the dashboard sentence to "state by state", drop a blank code line and
tighten the gaps.

A sibling session found state reform effects too thin to quote to the
tenth, so compute household-clustered standard errors for the slide's
figures, say "about 0.2 points" on the slide and in the notes, and record
the errors in the ledger. Property tests cover the estimator, and
content.test.ts ties its output to the slide's run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- finish_pdf.py: measure slide 6's link again after its text moved up, and
  add links for slide 7's TAXSIM interface and slide 11's axiom.org.
- content.test.ts: check the code slides 7 and 8 print against the script
  that runs it, slide 6's values against the reform run, slide 11's rate
  against the Axiom run and slide 5's step against the sweep. Name the
  three cliff states in the notes and ledger, rank Massachusetts's gap from
  Census, and count each figure the notes and ledger print twice.
- EVIDENCE.md: say Massachusetts's gap ranks third in size, since
  Louisiana's runs below Census.
- SPEAKER-NOTES.md: join and trim sentences for rhythm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- EarningsChart.tsx: a label below the lines moves left of its drop when
  the next drop leaves no room, so "Iowa" no longer runs into "Idaho".
- CliffsSlide.tsx: each cliff reads "Maryland, $97,000 to $97,500", so the
  reader sees the raise that costs the family its subsidy.
- SPEAKER-NOTES.md: say slide 8's estimate the way its footer prints it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slide 3's base segment moves from gray-300 to gray-400, which lifts its
contrast on white from 1.45:1 to 2.5:1 and brings it inside the palette
validator's lightness band. The rug marks on slides 4 and 7 rise from 40%
to 70% opacity, so a single jurisdiction's mark reads on a washed-out
projector, and both captions say that overlapping marks darken.

The ledger names the four Social Security variables the sample renames.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slide 10 counts effective households with children, about 125 in the
median state, so slide 8 now gives Massachusetts's figure on the same
base: about 395 households, or 173 among households with children. The
notes, the ledger's slide 8 row and the shared figure test follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
policyengine-us#10573 adds the Alaska dividend and New Jersey's ANCHOR
payment to the SPM unit totals, so the comment beside
CASH_OUTSIDE_SPM_TOTALS tells whoever moves the pin past it to empty the
tuple.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The estimates, not the jurisdictions, fall outside Census's margin of error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Populace stores some CPS ASEC households twice, as the ASEC record and as a
puf_tax_detail clone whose members have the same ages. We now merge each pair
before taking Kish's effective sample, and we cluster the Massachusetts standard
errors by source household.

- Slide 8: about 301 effective households, or 132 among those with children
  (was 395 and 173).
- Slide 10: a median of 108 effective households with children (was 125). On
  the default file the median falls from 75 to 63.
- Standard errors: 4.6 points on the 2026 rate, $42 million on the fall in the
  poverty gap and $64 million on the state cost (was 3.8 points, $34 million and
  $54 million). The run now reads each group's household from its first member,
  because map_to between two groups splits the id across members.
- effective_samples.py writes data/effective_samples.json and stops if a shared
  source holds anything but one ASEC record and one clone with the same ages.
  Property tests cover source_kish's bounds and its invariance to record order
  and weight scale.
- audit_sample_columns.py treats only *_id columns as ids, as sample_families.py
  does, which leaves 181 undefined names (was 179).
- Review fixes: smaller state codes under the family chart, the sweep's earnings
  range on the cliffs slide, the 2.2.1 provenance of the national 16.6%, the
  column-mapping step on the microdata slide, Congress's 20% deduction on the
  Axiom slide, "Any parameter" on the tools card, "household records" on slide 8,
  and policyengine.py 6.12.0 in the ledger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits November 3, 2026 04:33
The S6 comment ran past the code box on slide 7, so it now takes two lines.
Slide 11's paragraph gained a line, which moved axiom.org down 14.13 pixels
at 1440x810; finish_pdf.py's link box follows it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The S6 comment ran past the code box on slide 7 and lost "geography." It now
takes two lines. 06ef06f's message described this change, but the edit missed
that commit and lands here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The two-line comment adds a line to slide 7's code block, which moves the
policyengine.org/us/taxsim address down 11.51 pixels at 1440x810.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
We moved the precision run's unit-to-source lookup into
standard_errors.unit_clusters, which reads each unit's household from its
members and stops if they span two households. We test it on a toy file,
over random unit sizes and member orders, and against the household that
policyengine-core reads from each unit's first member. On that file,
map_to from households to SPM units would split household 7's id into 7/3
and 14/3. When we reran massachusetts_precision.py, it wrote the same
data/massachusetts_precision.json.

In the ledger, we now say the fixed sample holds 2,075 distinct household
records. There and in the precision docstring, we also name the errors
that every clone shares through the model that imputes its tax detail. We
added a Questions section on sampling error to the speaker notes, and
content.test.ts pins its figures and both of its comparisons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n to main

The second PDF reviewer found that slide 12's QR code and deck address had
PDF links but no web anchors, and our link test passed anyway. We wrap both
in anchors to the deck. In content.test.ts, we now render every slide and
require the PDF to link each target on a page as often as the matching slide
holds an anchor to it. At 1440x810, the QR box and the address still fill
the rectangles that finish_pdf.py links, to the pixel.

On slide 6, we now cite Sections 21, 22, 45 and 49 of the 2023 act in the
excerpt, matching amount.yaml on main since policyengine-us#10651 merged. In
the ledger, we split the standard-error sentence and count each ASEC
household and its clone as one household.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slide 9 shows CliffWatch's net income chart for a single parent of two in
Cambridge, and Build's editor with the Massachusetts child and family tax
credit amount at $880 from 2026. The address under each screenshot links
to its app, and finish_pdf.py links both addresses on page 9 of the PDF.

The deck now runs 13 slides. In the speaker notes, we give slide 9 45
seconds and cut the tools slide to one sentence. In the ledger, we record
how we captured the screenshots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Max asked on November 4 to publish this deck at policyengine.org/slides/appam-2026 so he can send the moderator the link, and to keep editing after that. Merging at 236e809.

  • gh pr checks exits 0 on this head, and GitHub reads the PR as mergeable with no changes requested.
  • An Opus 5.5 reviewer approved slide 9's commit (8d86641..236e809) with nothing to fix before publishing. GPT-6.1 Sol approved the deck at 8f07254, and 8d86641 fixed that review's smaller findings.
  • The slide 9 reviewer's four smaller findings and the speaker-note fixes land in a follow-up PR, since this merge also opens the deck's address to edits from main.

@MaxGhenis
MaxGhenis merged commit 90d60d2 into main Nov 5, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview – policyengine-slides — 236e809d Deployed Nov 5, 2026 by vercel[bot]
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