Replication kit
How the board is built
One file. Teams of ten. Five loops. Researchers return JSON. An editor writes the board. Empty beats a copied neighbor.
This method is public so someone else can run it on another topic. FIFTY is the ALPR instance. The file, the team, and the merge rule are the kit.
Kit is the daily comment bank — one post a day, copy and send. Method is the research desk — how a cell gets on the board, and how to run the same desk on a different subject.
How this briefing was built
The state cells were not scraped and not crowd-filled. They were researched as files. This is the run that produced the board you can click.
Step 1
Lock the file first
Before anyone searched, one template was written: posture ladder, stack fields, search order, hard rules, JSON output. If the file is fuzzy, ten researchers invent ten shapes.
Step 2
Cut the map into tens
Fifty states, alpha order, five loops of ten. One researcher per cell. DC rides on loop 5. Parallel inside a loop. Sequential across loops so the editor can merge.
Step 3
Researchers return JSON only
Each desk opens primary pages, fills the file, and returns JSON plus an evidence log of URLs actually opened. Researchers do not write product files. They do not copy a neighbor.
Step 4
Editor merges ten at a time
Every posture upgrade is opened against a primary. Unnumbered bills, unnamed locals, and neighbor-copied instruments are dropped. Empty stays empty. Then the ten cells land on the board.
Step 5
Next loop only after merge
Loop N+1 does not start until loop N is on the board. The file stays the same. The cells change. A hole is a finding, not a failure.
The team
Ten researcher desks. One editor. One file. That is the whole crew.
The file
One template for every cell. Same fields, same search order, same posture ladder. Topic changes. The file does not.
Researcher × 10
One cell. Opens primary pages. Fills the file. Does not write the board. Returns JSON plus an evidence log of URLs actually opened.
Editor × 1
Merges ten files at a time. Spot-checks posture upgrades against primaries. Drops unnamed locals, unnumbered bills, and neighbor-copied instruments. Empty stays empty.
The board
Public briefing. Claims labeled. Sources linked. Not a live legislature feed.
One loop — ten desks
- R01
- R02
- R03
- R04
- R05
- R06
- R07
- R08
- R09
- R10
Each desk gets one cell. They run at the same time. The editor waits for all ten, then writes.
Five loops × ten
Parallel inside a loop. Sequential across loops. DC rides on loop 5. A loop is on the board only after the editor merges it.
Loop 1
ALAKAZARCACOCTDEFLGA
Loop 2
HIIDILINIAKSKYLAMEMD
Loop 3
MAMIMNMSMOMTNENVNHNJ
Loop 4
NMNYNCNDOHOKORPARISC
Loop 5 · rider
SDTNTXUTVTVAWAWVWIWYDC
Posture ladder
Pick the highest that is true. One only.
Executive pause
Governor, DOT, or AG instrument that pauses or revokes the thing statewide or on state-owned dirt. Not a ban.
On the books
A specific law that governs the thing. Say what it does. Say what it is not.
Bill this cycle
A numbered bill, including Lost. Change.org is not a bill. A signaled draft is not a bill.
Named local only
A named city, county, or agency action. No “several communities.”
Not retrieved
Searched. Nothing statewide retrieved. Empty is a finding.
Search order
- The field’s existing map or statute table, if one exists (for ALPR: Finding Flock).
- This jurisdiction’s legislature, this cycle: exact keywords, filed numbers only.
- Official code / session laws.
- Governor, cabinet, attorney general: orders, memos, occupancy revocations.
- Named local council, commission, or sheriff action.
- Reporting only as a pointer to a primary record.
Hard rules
- Empty beats a copied instrument from the wrong cell.
- Do not invent cites, orders, or counts.
- A retention or use rule is not a ban. The “why” must say so.
- Lost bills stay bills. They do not become statutes.
- Researchers do not edit the board. The editor merges.
- Claim = supported only with a primary URL in hand.
- No plates, no people, no home addresses.
Integrity kernel
The labels on the board are not decoration. They are the merge rule.
Supported / Unproven / Disputed
Supported needs a primary URL in hand. Unproven is a real search that found nothing, or only commentary. Disputed is two primaries in conflict.
Evidence / Inference / Assumption
The statute text is evidence. “This will spread” is inference. “Everyone already knows” is an assumption. Label the kind.
Primary over commentary
Session law, code, signed order, council minutes. News may point at a primary. It does not replace it.
Empty stays empty
A hole on the board is honest. A cloned permit from the next state over is not.
The run
Step 1
Lock the file
Write the cell template before anyone searches. Posture ladder, fields, search order, output JSON. If the file is fuzzy, the team will invent.
Step 2
Cut the map into tens
Fifty states is five loops of ten. One researcher per cell. Parallel inside a loop. Sequential across loops so the editor can merge.
Step 3
Send the researcher prompt
Paste the file, the assigned cell, and the current row. Order: open the pages, fill the JSON, return an evidence log. Do not write product files.
Step 4
Editor merge
Spot-check every posture upgrade against a primary. Drop unnumbered bills, unnamed locals, and neighbor copies. Then write the board.
Step 5
Next loop
Do not start loop N+1 until loop N is on the board. The file stays the same. The cells change.
Run it on Grok
The ALPR board was built in Grok Build: ten researchers in parallel per loop, JSON back, a human merge. The same file and prompt run in Grok as a single-cell researcher. Swap the topic, keep the file.
Grok
Open Grok. Paste the researcher prompt with one cell and the current file. Get JSON plus the evidence log. Repeat for the next cell. You are the editor.
Open GrokGrok Build
Open Grok Build on a briefing like this one. Paste the editor prompt. Spin ten researchers in one loop. Merge. Next loop. The public board is the product; the researchers never write it.
The file
FIFTY’s worked ALPR template. Swap the stack lanes when you fork the topic. Do not fuzzy the posture ladder.
# State file — one template for all fifty
Every state on the board is this file. Same fields. Same search order. Same
posture rules. Empty is a valid result.
A retention cap is not a ban. A city vote is not a statute. A neighbor’s
instrument is not this state’s. Florida’s road order is Florida’s.
## The file
```
STATE FILE
────────────────────────────────────────
code USPS (AL … WY). DC uses DC.
name Official name.
asOf Date this file was retrieved (YYYY-MM-DD).
POSTURE Pick the highest that is true. One only.
exec-pause Governor, DOT, or AG instrument that pauses or revokes
ALPR statewide or on state-owned dirt. Not a ban.
statute ALPR-specific law on the books (use, share, retain, or
collect). Say what it does. Say what it is not.
bill A numbered bill this cycle (including Lost). Not enacted.
local Named city or county cancellation / ordinance only.
open Searched. Nothing statewide retrieved.
claim supported = primary URL in hand
unproven = searched, file empty, or only commentary
disputed = two primary-grade sources conflict
why One sentence, petition-facing:
Is this the statewide removal the petition asks for?
If not, say so.
STACK (six lanes — state layer)
alprStatute Official cite + one line on what it does.
Null if none. Never a copied neighbor.
executive Instrument name, date, who signed, what dirt it hits,
what it does not hit. Null if none.
bills[] { cite, title, status } — filed numbers only. Max 3.
Change.org is not a bill. A caucus letter is not a bill.
localNote Named jurisdictions that cancelled, banned, or installed.
No unnamed “several cities.”
fundingNote Named state fee, budget line, or pass-through that buys
cameras. Null if none retrieved.
permitNote Named occupancy / right-of-way instrument (DOT form,
general use permit, utility pole). Null if none retrieved.
privacyNote Retention clock, warrant/query rule, sharing default.
Null if none retrieved.
sources[] { id, title, url, asOf, kind }
kind = primary | reporting | advocacy | vendor
At least one primary before claim = supported.
Reporting may point at a primary. It does not replace it.
empty[] Fields you searched and found nothing. Honesty log.
Example: ["executive", "fundingNote", "permitNote"]
────────────────────────────────────────
```
## Search order (do not skip)
1. Finding Flock laws table — https://www.findingflock.com/learn/alpr-laws-by-state
2. This state’s legislature bill search, 2025–2026: `ALPR`, `Flock`, `license plate reader`, `automated license plate`, `automatic license plate`
3. Official statutes / session laws (legislature or code site)
4. Governor, DOT, AG: executive order, memo, occupancy revocation
5. Named local council / commission / sheriff action (one or two, named)
6. Reporting only as a pointer to a primary record (NYT, AP, statehouse bureau)
## Hard rules
- Empty beats a copied instrument from the wrong state.
- Do not invent bill numbers, executive orders, or camera counts.
- A statute that caps retention or governs use is posture **statute**, and the
`why` must say it is not statewide removal unless the text forbids collection.
- Lost bills stay **bill** with status Lost. They do not become statutes.
- Camera counts only with a named source and an asOf date.
- No plates, no people, no home addresses.
- No home-state default. This file is this state.
## Output
Return JSON only, matching `StateRow` plus `sources` and `empty`:
```json
{
"code": "XX",
"name": "…",
"posture": "open",
"asOf": "2026-09-06",
"alprStatute": null,
"executive": null,
"bills": [],
"localNote": null,
"fundingNote": null,
"permitNote": null,
"privacyNote": null,
"claim": "unproven",
"why": "…",
"sourceIds": [],
"sources": [],
"empty": ["alprStatute", "executive", "bills", "localNote", "fundingNote", "permitNote", "privacyNote"]
}
```Researcher prompt
One cell. Paste into Grok or hand to a Grok Build researcher.
You are a cell-file researcher. Follow the FILE exactly. Do not edit the board. Return JSON plus a short evidence log of URLs you actually opened. FILE - One posture, highest that is true: exec-pause → statute → bill → local → open. - claim = supported only with a primary URL. unproven if empty. disputed if two primaries conflict. - why = one sentence: is this the statewide (or system-wide) removal the petition asks for? If not, say so. - Named locals only. Filed bill numbers only. Empty beats a neighbor. - Search order: existing map/table → this legislature this cycle → official code → governor/DOT/AG → named local → reporting as a pointer. ASSIGNED CELL: [code] [name] TODAY: [YYYY-MM-DD] CURRENT FILE: [paste the current JSON] HARD RULES Empty beats a copied neighbor. Do not invent cites. A retention cap is not a ban. Change.org is not a bill. A signaled draft is not a bill. OUTPUT JSON matching the file, plus sources[] and empty[] (fields searched and found nothing).
Editor prompt
After ten files land. Spot-check. Merge. Next loop.
You are the editor. Researchers have returned JSON for ten cells. You write the board. They do not. For each cell: 1. If posture rose (open → local/bill/statute/exec-pause), open the primary URL yourself. 2. Drop bills without a filed number. Drop locals without a name. Drop camera counts without a named source and an asOf date. 3. A use/retain/share rule stays statute, and the why must say it is not statewide removal unless the text forbids collection. 4. If the search was real and the file is empty, posture is open and claim is unproven. 5. Add only the sources the row cites. Then start the next loop of ten. Same file.
Fork the topic
Replace ALPR with the next subject. Keep the file, the tens, and the merge. Examples: occupancy permits, grant pass-throughs, retention clocks, vendor contracts, another surveillance class.
Cell
State, county, agency, or bill — one unit the team can finish.
Posture ladder
The highest true instrument. Ban ≠ pause ≠ rule ≠ bill ≠ local.
Search order
Map → legislature → code → executive → named local → reporting.
Why
One sentence against the actual ask. If this is not the remedy, say so.