Santa Barbara Civic Platform
Positions · Records · Receipts

Method & governance

How this platform works, all of it, written down so you can check it. If a rule isn't here, it isn't a rule. If one is wrong, the fix gets published at the bottom of this page.

Final authority over framings and alignment mappings is planned for a review committee, not one person. Until that committee exists, a single editor holds the gate, stated here so the critique can start with the governance itself.

The two layersRecord · Issues

The Record is every Council decision: comprehensive, factual, source-linked, no opinion attached. Its credibility comes from completeness: a ledger you can't cherry-pick.

Issues are the small, framed questions residents take positions on. Their credibility comes from curation: neutral framing, education, and the gate below. Residents never vote on raw motions. The issue layer is the translation between what people want and what appears on an agenda.

What the Record coversThree bodies · Stated limits

Which bodies the ledger includes and which it does not, published because an unstated gap in coverage reads as "nothing happened."

CITY COUNCIL: every regular and special meeting, 2019 to the present, with per-member roll calls. This is the body residents elect, so it is the only one carrying alignment scorecards.

PLANNING COMMISSION: every meeting, 2019 to the present. Appointed, not elected: votes are recorded with their tallies, and no member scorecards are built from them.

HISTORIC LANDMARKS COMMISSION: every meeting of the full commission, 2019 to the present, on the same tally-only basis.

NOT COVERED: the HLC's separate two-member consent sessions, which review alterations to individual private properties. The block vote by which the full commission ratifies each consent calendar is in the Record, with the item count; the per-address detail is not, and the minutes for it are public and linked.

ALSO NOT COVERED: the Architectural Board of Review, same design-review character. And the Staff Hearing Officer, which is a single city official issuing administrative determinations: there is no roll call and no tally, so nothing there can honestly be recorded as a vote.

Where a body is covered, coverage is every meeting in the range, not a sample. Where it is not, this section says so, so that the absence of a decision from the Record is never mistaken for the absence of a decision.

Four ways an issue is bornAll four end at the same gate

An editor frames it. The original curated issues entered this way, and several were later archived by the same editorial authority, which is the point: curation is visible and reversible.

2. Escalated

Verified residents flag any decision in the Record: 'this should be an issue.' Crossing a published threshold makes it a candidate for review. The mechanism is built and was dry-run with simulated signals; it reopens when verified residents can flag decisions.

A machine trawl of every agenda clusters recurring matters and scores them by a published rubric. Detection proposes; it never publishes.

A resident idea with no meeting attached: structured ask, verified backing, and at a published threshold a guaranteed review: researched packet, audit, gate decision published either way. The founding proposal is kept as the worked example of the stages.

The gate is the same for all four: a neutral framing is drafted, an adversarial neutrality audit runs and is published verbatim, and an editorial decision, eventually a committee's, makes it live or doesn't. Machines and thresholds propose; people decide. Archived issues re-enter through the same gate, and no path skips it. What is waiting at the gate right now is public too: the packets in review sit on the emerging-issues page, complete with their audits, before anyone has said yes or no to them.

Standing rulesEach with its why

The escalation and guaranteed-review threshold is relative to the residents actually on the platform, published as a formula, and identical for every path, flagged decisions and resident proposals alike.

Cold-start fairness. A fixed bar is wrong at both ends: impossible with forty residents here, trivial with five thousand. A share of the active population is never impossible and never trivial, and the floor and cap stop it from being gamed at either extreme.

An issue's factual state, meaning whether any body still has a decision pending, is tracked separately from the editorial decision to show it, and a resolved issue keeps its page and says so.

An issue never dies; it loses its open question. Deleting it would delete the record of what the town wanted before the decision was made, which is the only thing that makes a later scorecard mean anything.

Visibility ranks by decision proximity plus verified backing, never engagement volume.

Engagement-ranked civic discourse is rage-bait machinery. Proximity keeps attention anchored to real decisions.

Positions are private; only aggregates are public. Backing a proposal is private; only counts are public.

The product is what the town thinks, not who thinks it.

Profile fields (name, age, neighborhood, housing, occupation) are optional, chosen field-by-field, and attach only to public speech, never to positions or backing.

Attribution adds weight to arguments; it must never become surveillance of votes.

Discourse is capped, structured statements ranked by endorsements. No threading, no replies. Removals stay visible as removal notices.

Arguments should compete on backing, not stamina. Moderation itself stays on the record.

Every vote, tally, and claim links to a primary source. Machine-extracted records carry an unverified flag until a human spot-checks them; vote records carry explicit confidence levels.

Provenance is the entire credibility asset.

AI drafts are auditable, never 'unbiased': every machine-drafted framing ships with an adversarial neutrality audit published verbatim, and a human gate makes the only publish decision.

The drafter has erred in every run so far; the published audit caught it every time. That track record is the pitch.

Impact sections describe who is affected, symmetrically, never 'who benefits.'

Benefit-framing smuggles a verdict.

Campaign finance appears only on member bio pages, complete and primary-sourced, never beside vote records. (Planned, Phase 2.)

Adjacency is insinuation. Completeness or nothing.

Everything simulated is labeled, everywhere, until real verified residents replace personas.

The disclosure is the credibility pitch, not a caveat to it.

The threshold, in full

threshold = clamp( ceil(8% × verified residents active in the last 90 days), floor 5, cap 150 )

CURRENT VALUE: 5 backers or signals, from 2 residents active between 2026-05-29 and 2026-08-27. The denominator is real signed-in activity, attested accounts until ID verification opens.

ACTIVE: a resident who registered a position, published an argument, or wrote a proposal statement inside the window. Backing is aggregate-only by design and so cannot be counted here; the denominator is a floor, never an overcount.

WHERE IT APPLIES: every path to the gate: decisions escalated from the Record and resident proposals, one bar for both.

HISTORY: anything already reviewed keeps the bar it actually cleared, recorded as a frozen threshold on the review itself. Published history is never rewritten when the live number moves.

CONSTANTS: ratified 2026-07-28. Changing them is a one-line, dated edit to src/lib/threshold.ts, and every surface follows from there.

Crossing the threshold never publishes anything. It guarantees a review and a published answer. The gate still decides, and it can say no.

The life of an issueFive states · One test · Nothing disappears

Two different things are tracked separately. Status, which is draft, live, or archived, is the editorial decision about what this platform is currently asking residents. Lifecycle is a claim about the world: whether any body still has a decision pending. They can disagree, and when they do the disagreement is itself a flag for review rather than something to quietly reconcile.

Pre-docket2 OF 13 ISSUES

No body has a pending decision. The question exists as resident demand, or as a matter still ahead of any agenda.

Active9 OF 13 ISSUES

A decision is pending or recurring before some body.

Scheduled review0 OF 13 ISSUES

A decisive instrument passed, but it carries a term, sunset, or pilot end, and the date it comes back is on the record.

Dormant2 OF 13 ISSUES

Nothing is pending and the settled test does not pass, including an instrument too recent to have cleared the quiet period. Can reignite.

Settled0 OF 13 ISSUES

All four conditions below hold. The page stays up and says so; settled issues do not vanish.

The settled test

An issue is only declared settled when all four of these hold at once. The first is one editorial judgment, made once and written down; the other three are recomputed from the record on every build, so an issue that reignites stops passing on its own. Passing the test does not settle anything. It puts the issue in front of a human, who decides.

WORKED EXAMPLE · SUM-010: 3 OF 4 CONDITIONS MET, SO NOT SETTLED

1. A decisive instrument was enacted, matching one of this issue's position options.

Ordinance No. 2026-6212, enacted 2026-02-24, matched to “Keep it as adopted”.

2. Nothing new has docketed for 12 months.

Newest docket activity 2026-02-24 (city council item 1: Ordinance to Regulate Single-Use Materials [Ordinance Adoption]). Too recent: the requirement is nothing after 2025-08-27, so this condition is first satisfiable 2027-02-24.

3. No pending term, sunset, or litigation.

Nothing dated is outstanding.

4. Resident escalation signals are below the published threshold.

0 of 5 (SIMULATED residents).

Shown against The Single-Use Materials Ordinance, the issue currently closest to settled. The quiet period is 12 months, ratified 2026-07-28: Council business is seasonal, and a quiet summer is not a resolved question.

Reactivation is the gate in reverse.

Four sources are watched on every issue the platform is not treating as a live question: a new agenda item, a new detection- trawl hit, a pre-agenda notice, and resident escalation crossing the published threshold. Anything dated after the day an issue's state was last confirmed raises an automatic flag, and so does an issue held out of the live set while a body is actually deciding it. A flag changes nothing on its own; it puts the issue back in the review queue, where the same gate that publishes an issue decides whether to bring it back. Never automatic, never live by itself.

The verification ladderWhat the flags mean

What each verification flag means and how much weight it carries, so you can tell a real resident's position from a computer-generated one.

SOURCE LINK: every claim's floor: the primary document, one click away.

CONFIDENCE HIGH / MEDIUM / LOW: how a vote was established: explicit roll call in an official document · clear video · ambiguity remains (stated in notes).

✓ SOURCE-CHECKED: an independent automated re-derivation found no discrepancy against the cited source.

SPLIT PENDING MINUTES: outcome confirmed; the exact abstain-vs-no split waits for approved minutes rather than being guessed.

HUMAN VERIFIED: the final flag, flipped only by human spot-check. Most records in this build honestly remain unverified drafts.

SIMULATED: persona-generated resident activity, labeled everywhere it appears, until real verified residents replace it.

Public corrections log5 entries · Corrections never disappearReport an error →

Errors that reached a published surface, what was wrong, how it was found, and what changed. Pre-publication catches live inside each packet's published audit; this log is for what got through. Report an error and it lands here: dated, permanent, above the fold of this page.

2026-07-28 · CORR-002Issue VTR-007 — On the Record (Replacing the Vic Trace Reservoir)CORRECTED

What was wrong: The issue's Record was empty and carried the note "No city body has voted on this project yet." That was false. City Council had approved six pre-construction service contracts for the project between June 2023 and August 2025 — environmental consulting, public outreach, design and environmental services, professional planning, and final design — one of them pulled off the consent calendar and carried 6–0 with an abstention.

How it was found: The full-corpus detection trawl, run blind against the Record, surfaced the project as an active Council thread and reported that the issue page linked none of it.

The fix: All six reservoir-replacement items are now linked to the issue and appear in On the Record with their source documents; the record note was rewritten to state what Council has decided so far and what remains undecided. The extraction had missed them for a mechanical reason worth publishing: the scanned minutes OCR the project name inconsistently as "Vic Trace" and "Vie Trace," so a name-matched sweep recovered only part of the thread. A seventh item sharing the site name — the Vie Trace radio tower FEMA replacement, a separate communications project — was reviewed and deliberately not linked.

2026-07-28 · CORR-003Issue ADU-005 — On the Record (Accessory Dwelling Units)CORRECTED

What was wrong: The Record listed the April 21, 2020 Coronavirus Update, on the strength of a motion directing staff to return with a program timeline. The acronym in the minutes is AUD — the Average Unit-Size Density Incentive Program — not ADU. The extraction had read it as a clerk's typo for ADU. It is a different housing program, so the item did not belong to this issue.

How it was found: The full-corpus detection trawl, run blind against the Record, flagged the link as implausible on its face; re-reading the source minutes and the follow-up the motion ordered settled it.

The fix: The link was removed. The reading is confirmed by what came back a week later: the April 28, 2020 item the motion asked for is "Focused Work Effort To Facilitate Downtown Housing Development," which the minutes describe as expediting Average Unit-Size Density Incentive (AUD) Program zoning-ordinance amendments — carried on the same 6–1 split, with the same dissenter. The extraction record now carries the corrected reading and the reasoning behind it.

2026-07-28 · CORR-004On the Record — issues carrying multi-motion agenda items (VCS-004, RST-002)CORRECTED

What was wrong: Records were linked to issues one agenda item at a time, so an issue's Record showed every vote taken under that item — including votes about something else. Under a heading that reads "Every Council vote tied to this issue," Vacant Storefronts displayed ten motions from the FY2023 budget hearing unrelated to commercial vacancy (Waterfront slip fees, an Eastside Library allocation, credit-card processing fees), and Rent Stabilization displayed two motions about ratifying a local-emergency proclamation.

How it was found: Checking a link the detection trawl had flagged as spurious. The flagged link itself was sound — the FY2023 budget hearing did take a separate motion directing staff to develop a commercial-vacancy program — but reviewing it exposed the structural defect around it.

The fix: A link can now name the specific motions that are on the issue instead of claiming the whole agenda item; twelve unrelated motions dropped out of two issues' Records. The scoping is checked when the data is built — a link naming a motion that does not exist, or one belonging to a different item, fails the integrity gate rather than quietly hiding a vote.

2026-07-28 · CORR-005The Radar — packet cross-links on detected threads (SNC-009, SUM-010)CORRECTED

What was wrong: Two approved issue packets — Shelter and Navigation Centers, and the Single-Use Materials Ordinance — pointed at radar thread ids that no longer existed. The threads they were drafted from came from the first, seven-month detection run; the full-corpus re-run in July regenerated every thread with a new id. The packets kept the old ids, so the radar rendered those threads with no link back to the packet that became an issue, and the genesis trail from detection to live issue was broken on the public page.

How it was found: A new integrity check added while drafting the current packet batch — it requires every packet anchor to resolve to a thread, signal, or proposal that actually exists — failed the build on both records.

The fix: Both packets were repointed at their current threads. Because the shelter matter now arrives as four separate threads, packets gained the ability to name more than one anchor, and all four cross-link the packet rather than only the highest-scoring one. The check now runs on every build, so a re-run of the trawl can no longer silently orphan a packet.

2026-07-09 · CORR-001Issue MSD-003 — framing (Development Behind the Mission)CORRECTED

What was wrong: The issue's original framing treated a large residential project near the Mission (505 E. Los Olivos St., PLN2024-00299) as if it were moving through city decision bodies. The record shows it never reached one: the application was deemed incomplete four times, is in litigation, and environmental review is still under way. The framing rested on neighborhood word-of-mouth, not documents.

How it was found: A records-extraction run attempting to pull the issue's vote history returned an honest empty set; the follow-up decision-space search reconstructed the project's actual status from planning records and court filings.

The fix: The framing was rewritten prospectively — what would happen if the project advances, and where the real decision points are. The vote history stays honestly empty. Structurally, a pre-agenda detection layer (planning applications, statutory notices, environmental-review windows) was added to the radar so matters living before any agenda are seen before their framings are written.