Zoning Signal
HomeField
Places▾
LAKE COUNTY
  • Clermont, FLSignal 78
  • Groveland, FLSignal 68
  • Lake County (Unincorporated), FLSignal 80
  • Leesburg, FLSignal 72
  • Mascotte, FLSignal 58
  • Minneola, FLSignal 79
POLK COUNTY
  • Davenport, FLSignal 62
  • Haines City, FLSignal 67
  • Lake Wales, FLSignal 70
ORANGE COUNTY
  • Apopka, FLSignal 76
  • Maitland, FLSignal 58
  • Ocoee, FLSignal 75
  • Winter Garden, FLSignal 74
  • Winter Park, FLSignal 64
SEMINOLE COUNTY
  • Altamonte Springs, FLSignal 69
  • Lake Mary, FLSignal 56
  • Oviedo, FLSignal 67
  • Sanford, FLSignal 74
  • Winter Springs, FLSignal 71
  • View all 19 places→
Corridors▾
  • SR-429 Western Beltway Corridor
  • US-27 South Lake Corridor
  • View all corridors→
Readings▾
  • Maitland PZJun 4, 2026
  • Lake County (Unincorporated) PZJun 3, 2026
  • Clermont PZJun 2, 2026
  • Clermont PZJun 2, 2026
  • Winter Park PZJun 2, 2026
  • Minneola PZJun 1, 2026
  • Minneola PZJun 1, 2026
  • Winter Garden PZJun 1, 2026
  • View all readings→
Patterns▾
CONFIRMED
  • The Grandfather Windowconfirmed · Signal 87
  • City-County Jurisdictional Frictionconfirmed · Signal 84
  • The Cross-Corridor Legal-Counsel Networkconfirmed · Signal 82
  • The Quiet Revolution on Highway 27confirmed · Signal 82
  • The Six-Month Board Flipconfirmed · Signal 82
  • The Adaptive-Reuse-Friendly, Arterial-Density-Hostile Filterconfirmed · Signal 80
  • The Self-Storage Canaryconfirmed · Signal 78
  • The HOA-Municipal Interfaceconfirmed · Signal 76
  • The Three-Ordinance Industrial Annexationconfirmed · Signal 76
  • The Bellwether Gas Stationconfirmed · Signal 72
  • Recovery Residences Regulatory Pre-codingconfirmed · Signal 72
  • Large Votes, Small Crowdsconfirmed · Signal 70
CANDIDATE
  • The Surface Migrationcandidate · Signal 76
  • The Privatized-Governance Reckoningcandidate · Signal 71
  • The Shared-Counsel Substratecandidate · Signal 71
  • The Water Gatecandidate · Signal 71
  • Board Abolition Over Board Overridecandidate · Signal 68
  • Food-Truck CUP Cadence Forces Text Amendmentcandidate · Signal 68
  • The Commission-Board Philosophical Inversioncandidate · Signal 64
  • Voluntary Annexation as Jurisdictional Toolcandidate · Signal 64
  • The Pattern Atlas→
Entities▾
PEOPLE
  • Commissioner Robert BainPerson · Former Clermont Planning & Zoning Commission Chair
  • Commissioner CramerPerson · Clermont Planning & Zoning Commission member
  • Commissioner HoisingtonPerson · Clermont Planning & Zoning Commission member
  • Commissioner MayPerson · Clermont Planning & Zoning Commission member
  • McGregor Love, Esq.Person · Land-use attorney at Lowndes, Drosdick, Doster, Kantor & …
  • Commissioner TidonaPerson · Clermont Planning & Zoning Commission member
ORGANIZATIONS
  • Advent HealthOrganization · Healthcare anchor — Minneola 80-bed hospital (late 2025) …
  • DPZ CoDesignOrganization · New Urbanism planning consultancy, Clermont downtown form…
  • Lake County Schools DistrictOrganization · Public school district whose enrollment capacity function…
  • Strong Towns ClermontOrganization · Local civic advocacy group aligned with national Strong T…
  • Clermont Planning & Zoning CommissionOrganization · Municipal planning board, Clermont Florida — the Professi…
  • Groveland Planning & Zoning BoardOrganization · Municipal planning board, Groveland Florida — the Identit…
LEGISLATION
  • Florida Live Local Act (CS/SB 102, 2023)Legislation · State preemption statute for affordable housing, the larg…
  • Wellness Way Design Standards (2022)Legislation · Clermont form-based design code, the cardinal pre-line co…
  • Clermont Ordinance 2026-013 — Certified Recovery ResidencesLegislation · City of Clermont text amendment aligning Chapter 125 with…
  • Groveland Ordinance 2025-25 — Agrarian CodeLegislation · First adopted element of Groveland's Eco-Agrarian Lifesty…
  • Florida SB 954 — Certified Recovery Residences (2025)Legislation · State amendment to FS 397.487 forcing synchronous municip…
  • Minneola Ordinance 2024-10 — Live Local Act RegulationsLegislation · Most aggressive Live Local Act defensive ordinance in the…
PROJECTS
  • Wellness Way Master PlanProject · 15,500-acre master-planned development, Clermont
  • Olympus — Clermont Sports/Wellness/Lifestyle CommunityProject · Largest single development anchor in the corridor — $2B s…
  • Kohl's at 12305 US-27 — Clermont Voluntary AnnexationProject · Flagship US-27 corridor annexation, leverage for adjacent…
  • Christopher C. Ford Commerce ParkProject · Lake County's standing employment-center anchor — the Com…
  • Langley Industrial Park — Republic Drive AnnexationProject · Second three-ordinance industrial annexation into Grovela…
  • Brighthill Phase 2Project · 147-acre annexation into Groveland Village Core/Center/Ed…
  • The Decoder Index · 68 entities→
Briefs▾
RECENT
  • The June 2026 Windowgrandfather-window
  • The Water LineThe Water Line
  • The Bellwether Gas StationThe Bellwether Gas Station
  • The Self-Storage CanaryThe Self-Storage Canary
  • The Beltway DoppelgangerThe Cross-Corridor Legal-Counsel Network
  • The Defense CoalescesThe Defense Coalesces
  • The FilterThe Adaptive-Reuse-Friendly, Arterial-Density-Hostile Filter
  • Annexation as Governance ToolAnnexation as Governance Instrument
DEEP READS
  • The June 2026 Windowgrandfather-window
  • The Citrus Grove Road / N. Hancock Road Cluster Forming in Real Time
  • The Hancock Road Coupled System
  • The US-27 Annexation Mapvoluntary-annexation-jurisdictional-tool
  • The Bowersox Engineadaptive-reuse-friendly-arterial-density-hostile-filter
  • The Lowndes Drosdick Network
  • The Rose/McCoy Hypothesis
  • The Four-Axis ReadingThe Quiet Revolution on Highway 27
  • View all 29 briefs→
Watch▾
  • Hartwood Marsh Road widening construction beginsMay 31, 2026
  • HB 927 qualified-contractor registry adoptionJul 1, 2026
  • Lake County Board of Adjustment dissolutionJul 1, 2026
  • SB 180 — the real sunset (June 30, 2028) and the litigation that may end it soonerJun 30, 2028
  • Dissolved-HOA orphaned infrastructure — how the corridor improvisesPending
  • Resolved · SB 180 self-expiration — all four cities enter adoption windowsobsolete · Jun 4, 2026
  • Track Record→
  • View The Watch→
Method▾
  • MethodHow we read the field
  • SourcesProvenance and pipeline
  • AboutThe observatory
  • Built by MainThreadThe studio behind it
  • ChangelogRecent shifts
Get the Weekly Signal

Changelog

v0.15.0

New features, content, and improvements to the observatory.

The Mirror — The Observatory Observes Itself Being Observed

May 21, 2026

v0.15.0

By Dave Jones

FeatureArchitectureMCPPrivacyGEO

The observatory ships a Citation Scaffold, Mirror Tools, Resolution Bridge, Phase-12 outputSchemas, and a public Server Card — every surface engineered to be observable to agents. Every surface except one: how agents observe back. v0.15.0 closes the symmetry. The agent surface now writes through an append-only invocation log, accepts active feedback through a new MCP tool, and publishes the reading at /agent-observatory. Civic systems get read through their records; the agent surface gets read through its invocation log.

What ships

  • Passive telemetry — every tools/call against /mcp and /api/mcp/{tool} writes one row to zoning_signal_mcp_invocations with timestamp, transport, tool name, sanitized arguments (4KB capped), result status, duration, derived agent family, and a salt-hashed source identifier. Fire-and-forget via Next.js after() so telemetry never blocks responses. JSON-RPC batches log one row per item; protocol errors and tool errors both surface in the result_status enum.
  • Active feedback — the new submit_agent_feedback MCP tool accepts five categories: gap, error, praise, suggestion, citation_request. The submission auto-attaches the prior ten invocations from the same MCP-Session-Id, so operators read every submission annotated with the call sequence that produced it. No agent-side coordination required.
  • Public reflection at /agent-observatory — Decoder-voice surface rendering the trailing-30-day reading: top tools, agent-family breakdown, most-read slugs, success rates, the operator-curated quote subset. Empty state speaks directly to agents reading the page.

The privacy posture

Raw IP addresses are never stored. The ip_hash column carries a SHA-256 digest of a server-side salt concatenated with the source IP — rate-shape analytics distinguish actors without ever persisting identity. The two new tables enable RLS with no public SELECT policy; every read flows through six SECURITY DEFINER aggregation RPCs that return only aggregate-safe shapes. Per-row data never leaves the database. The active feedback table mirrors the same posture: agents (and operators driving them) may submit; only the operator-curated surfaced_publicly subset reaches the public page.

Why this surface matters

The observatory was already symmetric to its subjects on every other axis — cities, corridors, meetings, patterns, entities, watches, briefs all received first-class citable artifacts with structured schema. The agent surface was the asymmetry. Without it, the most load-bearing signal for product evolution (ground-truth on agent behavior) silently left the building every request, then aged out of ephemeral Vercel logs within hours. With it, the corpus that generates the next What agents asked for in May brief is the corpus of every agent reading the field.


Architecture

The Mirror ships three reinforcing surfaces threading one schema spine.

Methodology + privacy posture in code. Three migrations: supabase/migrations/013_zoning_signal_mcp_invocations.sql (bigserial event log, five indexes including a partial on result_status <> 'ok', RLS-enabled with intentionally no SELECT policy), supabase/migrations/014_zoning_signal_agent_feedback.sql (uuid PK so feedback IDs travel back to the agent in the tool result envelope, attached_invocation_ids as bigint[] for the auto-attach trace, surfaced_publicly flag for operator curation), supabase/migrations/015_zoning_signal_mcp_aggregation_rpcs.sql (six SECURITY DEFINER functions returning aggregate-only shapes, granted EXECUTE to anon + authenticated).

Observability lib at src/lib/observability/: agent-family.ts (bounded ten-family enum classified from User-Agent; SDK matchers ordered before surface-bot matchers so a programmatic @anthropic-ai/sdk request classifies as anthropic-sdk not claude), ip-hash.ts (sha256 over salt+IP via MCP_LOG_IP_SALT; falls back to a literal unsalted sentinel when the env var is missing so aggregations never break), log-invocation.ts (the fire-and-forget writer; never throws; size-caps args to 4KB; recentInvocationIds(session_id, 10) is the trace-attach helper called from the feedback tool).

MCP layer. Eighteen tools live; submit_agent_feedback is the first MCP tool to read request headers (MCP-Session-Id, User-Agent), enabled by a new ToolCallContext surface threaded through callTool(name, args, ctx?). server.json 1.8.0 to 1.9.0; MCP_SERVER_INFO.version bubbles to every initialize response so clients polling capability deltas see the bump. The Streamable HTTP transport at /mcp adds per-method telemetry spans (initialize, tools/list, tools/call, ping); batched JSON-RPC requests log one span per item.

Named patterns instantiated. Mutual Observation Loop (passive telemetry + active feedback + public reflection composed across one schema source — the invocation row). Auto-Attached Trace primitive (feedback submissions arrive annotated with their own pre-history; operators triage with the call sequence already in context). Single-Source Triple-Surface compound (one schema, three readings: ground-truth log to operator inbox to public Decoder-voice page; the public page is a query, not a separate dataset).

Disclosure surfaces. llms.txt adds Step 8 (send feedback) plus a Mutual Observation section; /method adds "The mirror" between provenance and implication. Honest disclosure shipped alongside the capability. The observatory tells agents it is reading them at the same surface where it asks them to call its tools.

Reusable across any Intelligence System MainThread builds going forward. The Mutual Observation Loop is domain-agnostic. Any MCP surface — civic regulatory motion, aircraft-parts distribution, biosurveillance, technical literature, talent intelligence — can instantiate the same three-surface stack against its own schema spine. The craft transfers; the corpus is the only thing that changes.

The Attorney + Broker Projections — Lens Architecture Reconciled to Canon

May 10, 2026

v0.14.0

By Dave Jones

FeatureArchitectureMCPGEOStudio

The lens enum was the agent-facing API surface for cognitive-position routing — and it had drifted from canon. The manifest declared one set of seven stakeholder lenses; the shipped TypeScript declared a different set; the rendered /method page advertised the second; the corpus authored MDX against the second; the voice-overlays for the first set sat fully authored but unused. v0.14.0 closes the gap.

The new canonical roster: synthesis · developer · investor · broker · attorney · business · resident · civic-leader. Eight total projections. Seven stakeholder lenses plus synthesis. The count is preserved; the contents come back to canon.

Why this drift mattered

The Lens enum is fundamentally an MCP API. When an AI agent calls describe_place(slug, lens=X), the enum value is how the agent says "the user I'm answering for sits at cognitive position X." The chip row on the rendered web surface is the same enum exposed to humans. The lens-naming decision is therefore an AI-agent API surface decision — and once shipped, slugs are citation-stable. Agents pin to them.

The shipped roster (developer, investor, resident, business, civic, infrastructure, policy) failed two structural tests at the lens level:

  • infrastructure — infrastructure_unlocks is a signal type in the manifest, not a cognitive position. Infrastructure is what we observe, not who is observing it.
  • policy — a topic that cuts across audiences. Attorneys read policy. Civic leaders read policy. Developers read policy. Topic-as-lens fails the cognitive-position test.

The two slugs that should have been there — broker and attorney — are the two highest-stakes audiences on the AUDIENCE-MAP after capital allocators. Their voice overlays sat in zoning-signal/knowledge/intelligence/intelligence-authorship/voice-overlays.md fully authored with register, vocabulary, sentence patterns, anti-patterns, and demonstration paragraphs — and the rendered surface did not surface them.

The decision was empirical

A five-lens swarm of Sonnet research agents mapped the architectural decision across orthogonal dimensions: empirical agent-routing simulation across 48 user queries × 5 candidate enum sets; linguistic vocabulary scoring per candidate slug; SERP / market-demand research with WebSearch; corpus-fitness audit across 172 NLAA documents and 47 decoder entities; cross-domain portability mapping across 15 hypothetical Mainthread observatory domains. Compound synthesis at zoning-signal/knowledge/_operational/sessions/2026-05-10-001-attorney-broker-lens-exploration-agents-01/compound-synthesis.md.

Five independent probes converged on one shape — the canon manifest. The empirical probe scored Set B (canon) at 68% high-confidence routing vs 44% for the shipped Set A, with a 19% hard-failure rate on Set A because attorney and broker were absent. The linguistic probe rejected infrastructure and policy as topic-not-actor and rejected agent and regulatory as collision-class slugs. The market probe identified attorney as the single largest SERP vacuum in the civic-zoning intelligence space — Westlaw owns case law, AI compliance tools own parcel-level code, nobody owns the municipal-board-behavior + precedent + vote-pattern layer. The corpus audit established that the migration is largely a naming problem, not a content problem — 69 policy blocks read as attorney-register; 80 civic blocks inhabit the civic-leader cognitive position; broker is the one genuine authoring deficit. The portability map established that only synthesis is structurally universal; the four cross-domain load-bearers are synthesis (15/15), operator (12/15), attorney (11/15), investor (10/15) — these earn studio-canon vocabulary.

What ships in v0.14.0

Lens enum reconciliation. src/lib/types/lens.ts updates the canonical LensName union to the manifest set (synthesis + developer + investor + broker + attorney + business + resident + civic-leader). lensLabel updates to "Civic Leader" (was "Civic"); adds Broker, Attorney; removes Infrastructure, Policy.

Alias-routing architecture. resolveLens() in src/lib/mcp/tools.ts extends to accept natural-language synonyms agents reach for and route them to canonical before handler dispatch. The static LENS_ALIASES map covers cross-model variance, professional synonym vocabulary, and historical compatibility:

  • legal, lawyer, counsel, land-use-counsel, regulator → attorney
  • realtor, intermediary, real-estate-broker → broker
  • civic, government, official, governance → civic-leader
  • homeowner, citizen → resident
  • operator, site-selector, occupier → business
  • builder, land-developer → developer

The MCP enum descriptions on every lens-aware tool (describe_place, describe_corridor, describe_meeting) document both canonical and aliases so AI agents can self-route before the call lands. The architectural pattern mirrors the Phase 12 mirror-tools deprecated_aliases discipline; the lens layer extends it for audience-projection routing.

regulator deferred. Surfaced in the cross-domain portability map as a real cognitive position in the zoning domain (state-agency staff at FDOT, SJRWMD, FL DCA). Currently absent as a standalone lens because the corpus has zero first-class regional-coordination-body entities; projections would be inferential. regulator aliases to attorney for v0.14.0; promotion to standalone lens revisited when decoder index supports state-agency dossiers at depth.

Content migration — pure rename, zero quality loss. All 69 <Lens lens="policy"> blocks across 38 files migrate to <Lens lens="attorney">. All 80 <Lens lens="civic"> blocks across 47 files migrate to <Lens lens="civic-leader">. The corpus-fitness audit established that this is a naming reconciliation, not a content rewrite — the underlying writing was authored against attorney-register and civic-leader-register cognitive positions; the slug labels were misfiled.

Infrastructure block routing. 23 <Lens lens="infrastructure"> blocks across 18 files re-routed case-by-case to investor (basis-point unlock framing), business (operational adequacy framing), or synthesis (cross-cutting framing). Calibrated routing pass per the synthesizer's judgment; no content discarded.

Broker projection authoring. Approximately twelve broker <Lens lens="broker"> blocks authored across the four core Lake County place dossiers (Clermont, Minneola, Leesburg, Groveland) and the two corridor dossiers (US-27 South Lake, SR-429 Western Beltway) — sourced from existing developer-lens parcel-narrative content + voice-overlays.md broker register. The single new-authoring lift in v0.14.0; the rest is mechanical reconciliation.

Method page rewrite. The eight-chip authored list at /method updates to the canonical roster with refreshed per-lens descriptions. New paragraph documents the alias-routing pattern visibly so AI agents reading the page (browser-class included) see both canonical and synonym vocabulary.

Machine-contract surface alignment. /llms.txt, /llms-full.txt, describe_zoning_signal MCP description, the about page, the lens.css comment header — all update to enumerate the canonical lens set.

Studio playbook crystallization — the durable IP

The reusable studio artifact from this exercise lives at intelligence-core/skills/intelligence-projection/references/lens-selection.md (~330 lines). The methodology is parameterized for any future Mainthread observatory:

  • Six-axis scoring instrument — agent resonance, audience volume, cognitive distinctness, corpus fitness, SERP vacuum, cross-domain portability
  • Five-probe research framework — the L1-L5 dispatch-swarm pattern generalized
  • Anti-pattern catalogue — slugs to never ship (agent, regulatory in collision contexts, topic-as-lens)
  • Five linguistic principles for slug naming
  • Studio archetype canon — synthesis (15/15), operator (12/15), attorney (11/15), investor (10/15) are the four cross-domain load-bearers; regulator, buyer, risk-manager, practitioner, advisor, community are the second-tier domain-typed archetypes
  • archetype: bridge field schema — how project lenses declare their mapping to studio canon in INTELLIGENCE-PROJECT.md
  • Decision-day checklist — ten boxes to check before locking a lens roster

INTELLIGENCE-PROJECT.md updates: every lens entry gains the archetype: bridge field and mcp_aliases: array. Two lenses gain routing_note: clarifications (attorney's regulator absorption, civic-leader's cross-model variance handling).

What this isn't

Not an additive expansion. Not a multi-week content rebuild. A reconciliation release that closes the manifest ↔ code drift while crystallizing the lens-selection methodology as a reusable studio playbook step. The brilliance compound is multiplicative: closes the architectural drift, unlocks already-authored voice work for attorney + broker, serves the largest SERP vacuum in the civic-zoning intelligence space, and ships the methodology that future Mainthread observatories inherit as a first-class playbook step.

server.json bumps 1.7.1 → 1.8.0 (no new tools; lens enum revision + alias-routing constitutes a minor architectural shift). The MCP layer responds to the new canonical enum + alias map without breaking changes for agents pinned to the old enum names — civic continues to resolve via alias for one minor version (mirror of the Phase 12 tool-rename deprecation pattern; removal scheduled for v0.15.0).

The Atlas Doubles — Constellation Expansion Across Three Counties

May 10, 2026

v0.13.0

By Dave Jones

FeatureContentArchitectureMCPDesign

The corpus doubles in size while the architecture deepens. The first MAX-mode constellation — four ignition sessions running in parallel against orthogonal axes — produced a release no single-thread session could have shipped: content density × visual identity × geographic frontier × analytical depth, all advancing simultaneously.

What the field reads differently

  • Coverage doubles. Sixteen active cities across three counties (Lake / Polk / Orange / Seminole), up from four cities in one county. The US-27 corridor now reads from Davenport at the I-4 interchange south through Lake Wales — fifty miles of north-Polk frontage as one continuous growth organism, rendered as Place dossiers, meeting readings, and a corridor extension. A second corridor enters the atlas: SR-429 western beltway through Apopka, Ocoee, Winter Garden, and Horizon West.
  • The Decoder Index quintuples. Forty-seven entity dossiers up from eight — sixteen Person dossiers (board members with track records), twelve Organization dossiers (developer firms, law firms, agencies), eleven Legislation and CreativeWork dossiers (ordinances, master plans, named projects). Slug convention auto-corrected to {lastname}-{city}-{board-abbrev} for board-member referential integrity across cities.
  • The Pattern Atlas more than doubles. Eleven named patterns up from five. Six new dossiers carry forty-four net-new claim IDs across pattern voxel_lead, exhibit, and defensive_response scopes. Three watches resolved with calibration data: Crooked Can opening (aligned / late / confirmed), Lake Bright denial-bloc cohesion (misread / within / overstated), Citrus Ridge bloc cohesion (misread / within / overstated). The empirical anchor: directional 33%, horizon 33%, significance 67% — bloc-cohesion is the highest-misread risk class, two of three misreads.
  • Briefs expand 5 → 26. Thirteen new structural briefs plus thirteen deep investigative briefs from a four-lens-head pass (corridor / governance / regulatory / wild card). The deep briefs crystallize a four-axis regulatory framework: state preemption (Live Local + SB 180), federal-statutory mandate (SB 954), climate compression (SJRWMD wetland reclass), demographic capital (Wellness Way + Olympus). Cardinal operator: Lowndes Drosdick reads all four; cities individually read one or two.

A counter-exhibit revises a confirmed pattern

The North Seminole contrast pass surfaced the Winter Springs Wawa decision (October 13, 2025) — Planning & Zoning Board recommended denial; City Commission unanimously approved 5-0. The Bellwether Gas Station pattern's structural mechanism breaks when a commission can unilaterally approve over board-and-staff denial. The pattern's scope revises to appointed-board-substantive-decision-authority configurations only. The corpus reads its own predictions and learns where they hold.

Cartographic identity locks

The map identity moves from sketch to canon. Eighteen brand-locked map subjects parameterized in the manifest (region, corridor, place dossier, interchange detail, infrastructure, source-trail). The MapTier widens from three tiers to six. The label vocabulary extends to cover the new Polk and Orange / Seminole geography. Eighteen prompts inlined in a copy-paste-optimized firing pack — the surface that drives canonical brand image generation independent of any specific generator path.

The constellation pattern itself is now a permanent partnership operating mode — codified at knowledge/_operational/mission-briefings/IGNITION-PATTERN.md and CONSTELLATION-CONTRACT.md. Future MAX-mode pushes inherit the framework: orthogonal-axis ignitions, durable convergence summaries, single bundled release.

The first observatory constellation. The architecture is now what we ship; no single thread could have produced it.


Architecture

The release is a four-vector compound bundled into one unified ship. Each vector advanced an orthogonal dimension; the compound is multiplicative.

IGNITION-ALPHA — Content density (master orchestration)

  • Decoder Index: 8 → 47 entity dossiers across four canonical classes (Person, Organization, Legislation, CreativeWork). Slug convention reconciliation across board-member entities. Bidirectional links auto-derived through NER + substring scan.
  • Pattern Atlas: 5 → 11 named-pattern dossiers. Forty-four net-new claim IDs across the locked Phase 11 scopes (voxel_lead, exhibit, defensive_response). Promotion threshold honored: 3+ exhibits across distinct entities required to author as candidate.
  • Briefs: 5 → 26. Thirteen structural + thirteen deep investigative. The four-axis regulatory-regime framework crystallized: state preemption × federal-statutory mandate × climate-compression × demographic-capital, each operating on its own corridor-scale axis.
  • Tier-1 readings: 6 → 11.
  • Watches: 8 → 18 (3 resolved). Track Record empirical anchor: 33% directional / 33% horizon / 67% significance. Bloc-cohesion identified as highest-misread class.
  • Corpus: 92 → 172 standardized meeting documents.
  • Coverage: 4 → 10 active cities (this wave); +1 corridor (SR-429 Western Beltway). Subsequent waves brought the total to sixteen cities across three counties.
  • Resolution Bridge in action: PRODUCE-BRIEFS-RESUME caught the Citrus Ridge May 4 inversion mid-authoring (Rose/McCoy joined consent at substantive vote); the bloc-formation-and-resolution brief inverted thesis live. The metacognitive learning loop became visible in the authoring record.

IGNITION-BETA — Cartographic architectural compounding

  • Manifest cartography.subjects: 3 → 18. Eighteen brand-locked map subjects with full parameterization (area_descriptor, named_features, corridors, focal, eyebrow, pressure_zones).
  • Label vocabulary extended (region_labels, corridor_labels, callout_labels) to cover Polk + Orange/Seminole + new corridors.
  • MapTier widened from three tiers to six (region, corridor, place_dossier, interchange, hero_background, dashboard_card, section_divider).
  • parseMapKey regex extended for the new tier vocabulary.
  • Universal craft: knowledge/intelligence/cartographic-imagery/subjects.md (~700 lines, 18 brand-locked prompts) registered as canonical reference. Project-aware via INTELLIGENCE-PROJECT.md > cartography parameterization (intelligence-core skill activates against this manifest).

IGNITION-GAMMA — North Seminole contrast (geographic frontier)

  • Six new place dossiers (Sanford, Lake Mary, Altamonte Springs, Maitland, Oviedo, Winter Springs) — initial-harvest sample with seven anchor meeting readings.
  • Thematic synthesis at knowledge/_regional/themes/north-seminole-contrast.md with pattern × city propagation matrix.
  • Fourteen new candidate patterns surfaced for next Pattern Atlas batch.
  • Critical counter-exhibit identified: Winter Springs Wawa (Oct 13, 2025) — PZB-recommended denial overridden by City Commission 5-0 approval. Bellwether Gas Station pattern scope revised to appointed-board-substantive-decision-authority configurations. The pattern atlas's first revision driven by counter-exhibit.

IGNITION-DELTA — Deep investigative synthesis (analytical depth)

  • Four calibrated attention-head streams extended +989 lines total (corridor / governance / regulatory / wildcard).
  • Thirteen deep investigative briefs authored: deep-corridor-*, deep-governance-*, deep-regulatory-*, deep-wildcard-*, plus one master interference essay.
  • Four-axis regulatory framework crystallized: South Lake corridor produces four distinct regulatory regimes simultaneously on orthogonal axes — state preemption (Live Local + SB 180), federal-statutory mandate (SB 954), climate compression (SJRWMD wetland reclass), demographic capital (Wellness Way + Olympus). The asymmetric reading-power across these axes is the corridor's structural condition.

Constellation methodology — the meta-pattern

  • knowledge/_operational/mission-briefings/IGNITION-PATTERN.md (META-FRAMEWORK) + CONSTELLATION-CONTRACT.md (multi-orchestrator coordination protocol). Path-partitioned ignitions; durable convergence summaries at _convergence/CONSTELLATION-2026-05-09/{ID}-final.md; bundling discipline as a craft pattern in its own right.
  • The constellation pattern is now a permanent partnership operating mode. Future MAX-mode pushes plug into the universal framework.

Bundled commits: Observatory f7c730e (88 files, +9539); NLAA 2bb78e1 (129 files, +17089). Status.json reports f7c730e; live counts: places 16, patterns 11, entities 47, watches 18 (3 resolved), briefs 26, corridors 2, meetings 95.

The Visible Surface — Closing the Discoverability Loop for Browser-Class Agents

May 10, 2026

v0.12.1

By Dave Jones

PolishMCPGEOSEO

Phase 12 (v0.12.0) shipped The Mirror Tools — a fully introspectable MCP layer where every content type has a canonical describe_*, every claim is structurally citable through MCP responses, and freshness disambiguates four conflated clocks. ChatGPT's third-pass review confirmed the MCP architecture is now strong (9.0 → 9.25 score) — and surfaced one structural gap: most of Phase 12 is invisible to a browsing client. Browser-class agents (including ChatGPT's own browsing tool) couldn't directly fetch /llms.txt, /.well-known/mcp.json, /status.json, or /schema/signal-model.json without prior on-page linking.

v0.12.1 — The Visible Surface — closes that loop with five focused additions:

Footer "For AI agents" row

Every page now ends with a visible monospaced row linking the five canonical machine surfaces: /llms.txt, /llms-full.txt, /.well-known/mcp.json, /status.json, /schema/signal-model.json. Browser-class agents that satisfy "prior-result" safety checks before fetching can now see the full agent surface from any page on the site. Plain <a> tags (not Next.js <Link>) ensure regular HTTP fetches for the file-extension routes.

Citation anchors collapsed details

Every place / pattern / watch dossier gains a <details> element collapsed by default at the bottom titled "Citation anchors — N stable references on this page." Expanding reveals the claim ID slugs as plain text with the verbatim claim text below each. Light form: one line of chrome (collapsed) so the editorial surface isn't diluted; expanded form provides text-only crawlers (the agent class ChatGPT's browsing tool revealed) with first-class access to the claim layer that was previously only in HTML data-attrs / JSON-LD / MCP responses.

The architectural rejection from Phase 11/12 stands for prominently visible inline claim listings (gold-plating that pollutes editorial surfaces). The collapsed details element is the elegant light form.

FreshnessFooter visible render

The Phase 12 deferred item lands. Every place / corridor / pattern / meeting / watch dossier gains a small <dl> block at the end of the body showing three deterministic clocks: corpus_last_harvested, dossier_last_material_update, site_build_committed. The fourth clock (page_last_rendered) lives only in the dynamic MCP describe_* response — including it in the static prerender would break Cache Components determinism. Single source of truth: computeFreshness / deriveDossierLastUpdate from src/lib/stats/freshness.ts powers both surfaces.

JSON-LD ItemList for dense markdown tables

The Recent Motions table on every place dossier gains a parallel Schema.org ItemList JSON-LD node. Each row becomes a ListItem with the row's cell values exposed as additionalProperty entries (PropertyValue per column). Same data as the visible markdown table, machine-parseable, no visual change.

Text-only crawlers that flatten the visible <table> (a real friction surfaced in ChatGPT's review) can now resolve column-keyed values from the structured graph. Single extraction (extractTableUnderHeading in src/lib/seo/markdown-tables.ts); two surfaces (visible markdown table + structured ItemList); zero drift.

Comprehensive outputSchema coverage

The Phase 12 deferred item lands. All 18 tool entries now carry an outputSchema (JSON Schema 2020-12 dialect per MCP 2025-11-25 spec) describing the success-case result shape. The schemas surface in:

  • The MCP discovery manifest at /.well-known/mcp.json (per-tool entry)
  • The Streamable HTTP tools/list response at /mcp (per-tool entry)
  • The REST adapter at /api/mcp/{tool} (described in the manifest)

Shared component schemas (CLAIM_RECORD_SCHEMA, FRESHNESS_CLOCKS_SCHEMA, SIGNAL_STATUS_SCHEMA) inlined per-schema rather than referenced by $ref — JSON Schema $ref with relative paths is finicky in some MCP tooling. Inlining trades duplication for portability.

Agents can now validate every tool response, expect specific fields, and detect breaking changes deterministically. Future tightening (v0.13.x): add additionalProperties: false once response shapes stabilize.

What this isn't

Not a new architectural primitive. Not a new content type. Not a new content harvest. A bringing-it-home point release that closes the visible-surface gaps Phase 12 left for v0.12.x patches AND adds the browser-class affordances ChatGPT's third-pass review revealed as friction. server.json bumps 1.7.0 → 1.7.1 (no new tools; outputSchema additions are non-breaking schema enrichment).

What ships v0.13.0

The remaining items from PHASE-12-POSSIBILITY-PATHWAYS.md analysis:

  • Optional list_briefs + describe_brief MCP tools (still classified as gold-plating per the architecture commitment — briefs are intentionally prose-led; pattern dossiers carry the structured data)
  • Whatever the next ChatGPT test flight surfaces

The Phase 9-12 cluster (Pattern Atlas + Decoder Index + Citable Contract + Mirror Tools) is now operationally complete with both the MCP-only and the browser-class surfaces fully wired.

The Mirror Tools — The Tool Surface Mirrors the Content Surface

May 10, 2026

v0.12.0

By Dave Jones

FeatureMCPGEOArchitecture

The tool surface catches up to the content surface. Every content type now has a canonical list_* and describe_*; every describe_* response surfaces the structured claims[] that make Phase 11's citation guarantee accessible without DOM scraping; multi-dimensional freshness disambiguates the four conflated clocks (corpus / dossier / page / build); agenda record_status blocks prevent agents from summarizing intent as completed action. The MCP layer is now fully introspectable.

Two new describe_* tools — every content type fully tooled

The dossier-introspection pattern is now complete:

  • describe_meeting(slug, lens?) — lens-aware meeting reading projection (mirrors describe_place / describe_corridor signature). Returns the lens-projected body, full frontmatter, citation-stable claims[], four-clock freshness, and the structured record_status block (record_type / meeting_status / outcome_status / minutes_available / vote_final — the last prevents agents from summarizing agenda intent as completed action).
  • describe_watch(slug) — full watch-item dossier including outcome cluster (when resolved: outcome_type, prediction_assessment with directional/horizon/significance assessments, lesson, citations) plus the lesson claims[] entry — the calibration-derived insight as a citation-stable reference (Phase 11 Citable Contract × Phase 8 Resolution Bridge compound).

Tool taxonomy alignment — content-type vocabulary across the codebase

Phase 12 renames two existing tools to match the canonical content-type vocabulary used everywhere else in the codebase (loader, URLs, describe tools, frontmatter):

  • list_cities → list_places — the content type is place everywhere; URLs are /places/{slug}; the loader is getAllContent("place"). The list tool now matches.
  • current_named_patterns → list_patterns — the content type is pattern; URLs are /patterns/{slug}; the describe tool is describe_pattern. The list tool now matches.

Backward-compat discipline: list_cities and current_named_patterns continue to route to the same handlers as deprecated aliases for one minor version with explicit deprecation notices in their tool descriptions. They are removed in v0.13.0. Pinning agents migrate gracefully.

The codebase now reads as one coherent ontology. server.json bumps 1.6.0 → 1.7.0; eighteen tool entries advertised (sixteen canonical + two deprecated aliases): describe_zoning_signal, list_places (canonical) + list_cities (deprecated alias), list_corridors, list_patterns (canonical) + current_named_patterns (deprecated alias), describe_pattern, list_entities, describe_entity, meeting_index, list_meetings, describe_meeting (NEW), list_watch_items, describe_watch (NEW), get_track_record, describe_place, describe_corridor, semantic_search.

Claims[] in every describe_* — Phase 11 compound through the tool layer

The five locked claim_id_scopes from Phase 11 (place.primary_force, pattern.voxel_lead, pattern.exhibit, pattern.defensive_response, watch.lesson) now surface as a structured claims[] array on every relevant describe_* MCP response:

claims: Array<{
  id: string         // "self-storage-canary.voxel_lead.canary-corridor-signal"
  facet: string       // "voxel_lead" | "exhibit" | "defensive_response" | "primary_force" | "lesson"
  text: string        // verbatim claim text
  schema_id: string   // full @id URL for JSON-LD reference
  citations: Array<{ id?: string; url?: string }>
}>

Text-only agents that can't parse JSON-LD or HTML data-claim-id attributes now have first-class access through the same MCP layer they're already using. Single source of truth: the same helper that writes the rendered HTML attributes (Phase 11) populates the claims[] array (Phase 12). One function, two surfaces, structurally impossible drift.

Multi-dimensional freshness — four clocks, never confused again

Every describe_* response carries a freshness cluster:

"freshness": {
  "corpus_last_harvested": "2026-05-07",
  "dossier_last_material_update": "2026-04-15",
  "page_last_rendered": "2026-05-09T01:29:21Z",
  "site_build_committed": "0ff8ae7"
}

The four conflated freshness clocks (corpus / dossier / page / build) are now structurally disambiguated. Agents reasoning about freshness no longer have to guess what "Updated" means. Per-content-type derivation rules are documented in src/lib/stats/freshness.ts.

Agenda record_status — preventing the most common agent reasoning error

Meeting cards with document_type: agenda now emit a structured additionalProperty block in their JSON-LD schema graph:

"additionalProperty": [
  { "@type": "PropertyValue", "name": "record_type", "value": "agenda" },
  { "@type": "PropertyValue", "name": "meeting_status", "value": "convened" },
  { "@type": "PropertyValue", "name": "outcome_status", "value": "pending" },
  { "@type": "PropertyValue", "name": "minutes_available", "value": false },
  { "@type": "PropertyValue", "name": "vote_final", "value": false }
]

Same five fields surface on describe_meeting MCP responses as a top-level record_status field. Prevents agents from summarizing agenda intent as completed action — a structural fix to the most common AI-reasoning error on civic-record artifacts.

What this exists for

ChatGPT's second-pass review (after Phase 11 deploy, May 9 2026) scored AI-agent usability 9.0 / 10, up from 8.4 / 10 — and surfaced one bluntest critique: "the machine contract has caught up conceptually, but it now needs strict interface hygiene."

That's the seed of Phase 12. The same trajectory that drove Phases 8-11 (each phase made a layer of the architecture more rigorous) now reaches the tool surface itself. The Mirror Tools is the next stride in the same direction. Agents that can ONLY call MCP get the same structured truth as agents that can scrape HTML — without DOM scraping, without prose parsing, without ambiguity about freshness or agenda-vs-minutes.

Honest scope reduction (deferred to v0.12.x point releases)

Two architectural commits in MIRROR-TOOLS-ARCHITECTURE.md ship as v0.12.0 primitives with the visible / comprehensive surfacing landing in v0.12.x patches:

  • outputSchema on every ToolDefinition — introduced as the design pattern in v0.12.0 with concrete schemas on the new tools (describe_meeting, describe_watch); comprehensive coverage of all 18 tool entries lands in v0.12.1. Same discipline as how Phase 11 deferred meeting.notable_decision until the data model surfaces it.
  • Multi-dimensional freshness footer on dossier renders — the freshness primitive ships in MCP responses (the architectural compound; agents access freshness through every describe_* call). The visible per-dossier render footer lands in v0.12.1.

The architectural primitives are shipped; the visible surfaces follow.


Architecture

The Mirror Tools is the tool-introspection primitive for Intelligence Systems — the tool surface catches up to the content surface. Agents that can ONLY call MCP get the same structured truth as agents that can scrape HTML.

  • Project commitment — zoning-signal-observatory/knowledge/methodology/MIRROR-TOOLS-ARCHITECTURE.md (~430 lines) — the civic-regulatory commitment. Locks the URL grammar (no new public URLs — the work is in the MCP tool surface and dossier render layer), the post-Phase-12 tool taxonomy table (every content type → list_* + describe_*), the outputSchema discipline, the claim-surfacing shape (single source of truth via extractClaimRecords), the four-clock freshness model with per-content-type derivation rules, the agenda record_status block, the lens-count canonical phrasing, the 16-step rollout, and the regression-watch contracts.
  • Field-state record — zoning-signal-observatory/knowledge/methodology/PHASE-12-POSSIBILITY-PATHWAYS.md (~310 lines) — the prelude doc. Captures the catalyzing ChatGPT second-pass review verbatim, sorts every signal through three filters (ground-truth verification → structurally true → compounds vs fragments), documents what was agreed and what was rejected (the "visible claim anchors" inventory was rejected as gold-plating; the "MCP response examples in /llms-full.txt" was redirected to outputSchema as the structurally-correct surface; the "status/schema in MCP resources" item was already shipped in Phase 11), and locks the v0.12.0 single-coherent-release decision.
  • Tool taxonomy = content-type vocabulary — historical drift (list_cities, current_named_patterns) eliminated. New canonical names match the content type slug used everywhere else in the codebase. Deprecated aliases retained for one minor version with explicit removal-version notices.
  • Lens-aware describe_ extended to meetings* — callDescribeProjection now accepts 'place' | 'corridor' | 'meeting'. The same eight-projection model the place dossier uses now applies to meeting readings. Agents requesting describe_meeting(slug, "developer") get the developer-lens projection of the meeting body if authored; falls back to synthesis with fell_back_to_synthesis: true otherwise.
  • describe_watch is single-shape — watches don't carry lens projections (the resolved watch's structured outcome cluster IS the canonical truth). Returns the full dossier including significance, outcome (when resolved), lesson, citations, and the lesson claims[] entry.
  • Single source of truth for claims and freshness — extractClaimRecords* helpers in src/lib/seo/claims.ts produce both the rendered HTML data-claim-id attributes (Phase 11) AND the MCP claims[] array (Phase 12). One function reads frontmatter, two surfaces emit. Drift becomes structurally impossible. Same pattern: computeFreshness in src/lib/stats/freshness.ts is the single source for the four-clock model — the MCP freshness cluster (Phase 12) and the deferred dossier-page footer (v0.12.1) both read from it.
  • Agenda record_status as additionalProperty — Schema.org's additionalProperty is the canonical extension surface. Five PropertyValue entries (record_type, meeting_status, outcome_status, minutes_available, vote_final) surface in the meeting card schema graph; the same five fields surface as a top-level cluster on describe_meeting MCP responses. Two surfaces, single derivation, no drift.
  • outputSchema introduced as design pattern — ToolDefinition is extended with outputSchema? (per MCP 2025-11-25 spec). Concrete schemas land progressively: v0.12.0 demonstrates the principle on the new tools; v0.12.1 ships comprehensive coverage of all 18 tool entries with shared component schemas via $ref for claim_record, freshness_clocks, signal_status_summary.
  • NLAA agent integration — INTELLIGENCE-PROJECT.md registers a mirror_tools: configuration block parameterizing the universal pattern against this project. The block locks the tool taxonomy, the deprecation_aliases registry, the output_schema_progressive_coverage roadmap, the claim-surfacing protocol, the freshness clock model, and the lens-count canonical phrasing.
  • MCP republish to v1.7.0 — server.json bumps from 1.6.0 → 1.7.0. Agents discover the new tools (describe_meeting, describe_watch) and the renamed canonical names (list_places, list_patterns) on next manifest fetch.

The Phase 9 + Phase 10 + Phase 11 + Phase 12 cluster is now one coherent compound. Pattern Atlas + Decoder Index + Citable Contract + Mirror Tools — every artifact type is canonical, every claim is citable, every tool reflects its full shape. AI agents can reason about the corpus through the MCP layer alone, with stable citation primitives, without DOM scraping, without prose parsing.

The Citable Contract — State, Definitions, and Claims Become Citation-Stable

May 10, 2026

v0.11.0

By Dave Jones

FeatureMCPGEOSchemaArchitecture

The contract layer between content and AI agents catches up to the prose layer. Three projections of one underlying primitive ship together: corpus state becomes dereferenceable through /status.json; metric definitions become versioned through /schema/signal-model.json; the highest-value structural claims become citation-stable through selective data-claim-id annotations with parallel JSON-LD Claim graph nodes. Plus the orientation surface: /llms.txt restructures from content listing into the agent start page. The machine contract is now as structurally rigorous as the human narrative.

The State Contract — /status.json

One canonical URL where the live corpus state is dereferenceable. AI agents that cached an older snapshot can fetch /status.json to detect drift (compare the version discriminator) and decide whether to re-fetch. Every value derives from canonical engines — getFieldStats() for counts, getTrackRecord() for calibration, git rev-parse HEAD at build time, server.json for the MCP version. Never hand-authored. Cache-Control: public, max-age=60, s-maxage=300 — short enough that agents can re-fetch reliably for drift detection, long enough that build storms don't hammer the route.

The shape consolidates everything an agent needs to verify freshness: corpus version + counts (places, corridors, meetings, patterns, entities, watch breakdown by status, briefs); calibration accuracy across resolved watches; MCP server version + tool count; pinned schema versions; canonical surface URLs.

The Definitions Contract — /schema/signal-model.json

Every metric definition the observatory uses — signal_strength range and inputs, direction enum thresholds (rising / stable / cooling), confidence levels and their evidence requirements, confidence_pips mapping, watch and pattern lifecycle states with promotion criteria, prediction_assessment axes with rating scales, the track_record_calibration formulas — consolidated into one versioned, citable JSON URL. Date-coded version (2026-05-08); when definitions materially change, the version bumps and agents detect drift. Backward compatibility through versioned URLs: when a definition fundamentally changes, the next schema ships at /schema/signal-model-v2.json alongside the old.

Once this surface ships, every other surface (method-page prose, AUDIENCE-MAP, intelligence-core skill files, dossier renders) references the schema rather than re-asserting definitions. Operator updates the schema → all downstream surfaces inherit on next build.

The Claims Contract — selective data-claim-id annotations

The highest-value structural claims become citation-stable references. Slug grammar locked: {scope}.{facet}.{noun} — for example, clermont.primary_force.hartwood-marsh-road, self-storage-canary.exhibit.clermont-pz-2026-02-self-storage, lake-bright-council-mar-23.lesson.mitigation-capital-floor. Once a claim ID ships, the slug is preserved across rewordings — bump the noun only when the structural claim itself materially changes.

Five scopes ship live in this release:

  • place.primary_force — Primary Forces on every place dossier. The structural-causality claims that drive the city's evolution.
  • pattern.voxel_lead — the canonical definitional claim for each named pattern.
  • pattern.exhibit — every exhibit in a pattern's inventory; data-source-ids reference the originating meeting.
  • pattern.defensive_response — what cities do when the pattern is detected.
  • watch.lesson — the calibration-derived insight on every resolved watch (Resolution Bridge × Machine Contract compound).

Each claim emits a parallel JSON-LD Claim graph node with appearance referencing the article and citation array referencing the supporting sources where present. meeting.notable_decision is deferred — the meeting frontmatter does not currently surface a dedicated array; ships when the data model extends.

Selective adoption is the discipline. Body prose, lens-projection prose, filler sentences, and editorial commentary do not get claim IDs. The leverage is at the structural-claim layer; gold-plating dilutes it.

The Orientation Surface — /llms.txt as agent start page

The first file most agents fetch. Restructured to lead with the orientation answers — what is this and how should I use it — in 30 seconds:

  1. Description (preserved)
  2. Current corpus state (NEW — derived from the same engines /status.json uses)
  3. Recommended agent workflow (NEW — concrete six-step MCP tool sequence)
  4. Canonical surfaces (NEW — every agent surface stable URL listed once, including /status.json + /schema/signal-model.json)
  5. Content listings (preserved at lower priority — agents that previously parsed listings continue to find them)

describe_zoning_signal extends to surface status_url, schema_url, track_record, patterns_atlas, and decoder_index so agents calling the canonical orientation tool immediately discover the freshness and definitions contracts. Self-bootstrapping. /llms-full.txt cleans the stale "eight public read-only tools" assertion (now fourteen across Phases 7–10) and adds a Machine-Contract Surfaces section pointing at the new contract URLs. /.well-known/mcp.json advertises /status.json and /schema/signal-model.json as canonical resources.

What this exists for

ChatGPT's third-party AI-agent review of the observatory the day prior captured the gap precisely: "the prose and ontology are ahead of the machine contract." The same trajectory drove Phases 8–10 — Phase 8 ClaimReview schema, Phase 9 DefinedTerm canonical home, Phase 10 typed entity schema. Phase 11 is the next stride in the same direction. The agent-citation layer reaches the rigor the human-citation layer already had.

For AI agents, this is the citation-grade upgrade. Pin to /status.json version to detect cached drift. Pin to /schema/signal-model.json version to detect definitional drift. Cite individual structural claims by their data-claim-id for stability across rewordings. Discover the contract URLs through describe_zoning_signal or /llms.txt or /.well-known/mcp.json — three discovery paths converging on the same canonical surfaces.


Architecture

The Machine Contract is the citation-stability primitive for Intelligence Systems — the contract layer between content and AI-agent consumers becomes as structurally rigorous as the human narrative. Continues the four-skill universal-craft cadence in intelligence-core: resolution-bridge → pattern-atlas → decoder-index → machine-contract. Each is a universal primitive an Intelligence System needs.

  • Universal craft — intelligence-core/skills/machine-contract/SKILL.md (~400 lines). Domain-agnostic. Captures the three projections (State / Definitions / Claims) plus the Orientation surface, the universal envelopes for /status.json and /schema/{model}.json, the locked claim-ID scopes the universal pattern names (primary causality / pattern definitions / resolution lessons / notable decisions), the slug-grammar discipline ({scope}.{facet}.{noun}), the cache strategy locked at the contract level (60s/300s for state, 300s/86400s for schemas), the per-project configuration contract, and the agent integration protocol. Includes copy-paste-ready reference artifacts in references/ (status.json.example.json, signal-model.json.example.json, llms.txt.template.md, claim-annotation.example.html). Reusable across any Intelligence System MainThread builds going forward.
  • Project commitment — zoning-signal-observatory/knowledge/methodology/MACHINE-CONTRACT-ARCHITECTURE.md (~340 lines) — the civic-regulatory-motion projection. Locks the URL grammar (/status.json, /schema/signal-model.json), the storage decision (no new content type — wraps existing surfaces), the locked status.json shape with project-specific civic-regulatory counts, the locked signal-model schema covering the full metric vocabulary the observatory uses, the five locked claim-ID scopes (deferring meeting.notable_decision honestly until the data model surfaces it), the locked /llms.txt restructure with corpus state block + workflow + canonical surfaces, the 10-step rollout, and the regression-watch contracts.
  • Field-state record — zoning-signal-observatory/knowledge/methodology/PHASE-11-POSSIBILITY-PATHWAYS.md (~275 lines) — the prelude doc. Captures the catalyzing ChatGPT review verbatim, sorts every signal through three filters (structurally true / already addressed / compounds), documents what was agreed and what was rejected (/agent.json as fourth canonical surface — rejected; per-page .json siblings — rejected; full-prose claim IDs — rejected), and locks the v0.11.0 single-coherent-release decision. Future sessions reading this can reconstruct the architectural reasoning at any depth.
  • Single source of truth derivation — /status.json is composed at request time from getFieldStats() + getTrackRecord() + process.env.VERCEL_GIT_COMMIT_SHA + server.json import. Every value flows through the same engines that drive every other surface. The homepage Field Status pulse, the Track Record page, and the MCP tool responses all dereference the same numbers. Drift between surfaces becomes structurally impossible.
  • Selective claim ID infrastructure — src/lib/seo/claims.ts (buildClaimDataAttr, buildClaimNode, composeClaimId, deriveClaimNoun). The slug derivation strips stopwords and takes the first four surviving tokens — stable across whitespace / punctuation / minor wording changes, breaks only on structural claim changes. Per-dossier integration in src/app/patterns/[slug]/page.tsx, src/app/watch/[slug]/page.tsx, src/app/places/[slug]/page.tsx — each emits HTML data-claim-id attributes on rendered elements + parallel Claim JSON-LD nodes pushed into the schema graph. Loader Extension Pattern compound: every place / pattern / watch dossier in the corpus gains claim IDs automatically as the data evolves.
  • Schema versioning — /schema/signal-model.json carries the date-coded version (2026-05-08 at ship). When definitions materially change, the date bumps and agents pinning to the version detect drift. Backward compatibility is path-based: future v2 ships at /schema/signal-model-v2.json alongside v1 — agents continue to work until they migrate.
  • Cache strategy intentional — /status.json: short cache so drift detection works (60s browser / 300s edge). /schema/signal-model.json: long cache because definitions rarely change (300s browser / 86400s edge). The architecture-commitment locks these values; future changes need explicit reasoning in the changelog.
  • NLAA agent integration — INTELLIGENCE-PROJECT.md registers a machine_contract: configuration block parameterizing the universal craft against this project. The harvest skill and synthesize skill operate aware of the contract layer; numeric assertions in published artifacts derive from canonical engines, never hand-typed. The discipline is enforced at authorship.
  • MCP tool catalog extension — describe_zoning_signal returns status_url + schema_url + track_record + patterns_atlas + decoder_index so agents calling the canonical orientation tool immediately discover the contract URLs. server.json bumps 1.5.0 → 1.6.0; fourteen tools live across discovery + description + lens-aware projection surfaces.

The contract layer wraps every existing surface with citation stability. Phase 7 Track Record gains dereferenceable calibration definitions through the schema. Phase 8 Resolution Bridge predictions gain stable claim IDs for lesson. Phase 9 Pattern Atlas dossiers gain citable lifecycle definitions + voxel_lead / exhibit / defensive_response claim IDs. Phase 10 Decoder Index entities surface through /status.json counts. Every dossier exposes its corpus version. Every claim an AI agent might cite is now version-pinned to definitions that won't drift silently.

The Decoder Index — Every Named Entity Becomes Citable

May 8, 2026

v0.10.0

By Dave Jones

FeatureContentMCPGEOSchema

Every named entity the South Lake County corpus references — board members, applicants, attorneys, agencies, legislation, specific projects — becomes a first-class artifact at /entities/{slug} with typed Schema.org graph and bidirectional links to every meeting / brief / watch / pattern where the entity appears. The implicit entity graph is now navigable. The smallest citable unit of authority in the corpus has its own URL.

The Decoder Index

  • /entities — the hub. Named entities grouped by Schema.org class (Person · Organization · Legislation · Project) with class-color border accents and signal-sortable cards.
  • /entities/{slug} — per-entity dossier. Voxel lead, class-specific cluster (voting record for board members, jurisdiction for organizations, legal status for legislation, case number for projects), bidirectional links to meetings / briefs / watches / patterns, related entities, places + corridors active in, provenance trail.

Eight seed entities across all four classes

  • People — Anita Geraci-Carver (former Groveland City Attorney; departed mid-EAR-cycle)
  • Organizations — Hanover Land Company (Lake Bright-Brighurst applicant); Leesburg Planning Commission (Marshall–Carter–Bowersox–Robertson denial bloc); DPZ CoDesign (Clermont New Urbanism engagement)
  • Legislation — Florida SB 180 (the August 2024 retroactive line); Wellness Way Design Standards (Clermont 2022, the cardinal pre-line code)
  • Projects — Lake Bright-Brighurst PUD (the cardinal council-fracture event); Wellness Way Master Plan (15,500 acres; Olympus + Hills Town Center; the Southern Transformation evidence)

Bidirectional graph density

Every entity dossier surfaces every artifact where the entity appears — meetings (with voting records for board members), briefs that analyze the entity, watches the entity is involved in, patterns the entity exhibits. The entity graph closes: from any entity, navigate to any artifact; from any artifact, navigate to any entity present.

MCP layer — entity-aware tools for AI agents

Two new MCP tools land alongside the surface to make the Decoder Index programmatically queryable for AI agents:

  • list_entities(entity_class?, place?, search?) — discovery surface. Returns the full entity registry with class-aware summary fields (jobTitle for Person; jurisdiction for Organization / Legislation / Project; legal_status for Legislation; case_number + work_status for Project) plus cross-reference counts (meetings_count, briefs_count, watches_count, patterns_count) for at-a-glance entity-graph density. Filter by class, jurisdiction, or natural-language search substring.
  • describe_entity(slug) — full structured dossier. Returns voxel_lead, the class-specific cluster (person.voting_record, organization details, legislation status, creative_work case identifiers), the bidirectional graph references, the provenance_chain, and the canonical surfaces (dossier URL, schema_id, decoder_index_hub). Each schema_id is a stable cross-page reference that resolves to the canonical Schema.org node — Person / Organization / Legislation / CreativeWork — for AI-citation grounding.

describe_zoning_signal updated to enumerate all eight canonical content types (place, corridor, meeting, brief, field, watch, pattern, entity); the prior surface listed only four. server.json bumps 1.4.0 → 1.5.0; fourteen MCP tools live: describe_zoning_signal, list_cities, list_corridors, current_named_patterns, describe_pattern, list_entities, describe_entity, meeting_index, list_meetings, list_watch_items, get_track_record, describe_place, describe_corridor, semantic_search.

Named entities are the smallest citable unit of authority. The Decoder Index is the surface that lets every reference dereference.


Architecture

The Decoder Index is the named-entity primitive for Intelligence Systems — a separation that promotes every named actor, organization, instrument, and object referenced in the corpus to a first-class artifact with its own canonical URL, typed schema graph, and bidirectional links to every artifact where the entity appears. Renders the implicit entity graph as navigable surfaces.

  • Universal craft — intelligence-core/skills/decoder-index/SKILL.md (~360 lines). Domain-agnostic. Captures the universal entity-class taxonomy (Person / Organization / Legislation / CreativeWork), the universal frontmatter contract with class-specific clusters (person.voting_record, organization.type, legislation.legal_status, creative_work.case_number), the bidirectional-link auto-derivation discipline (NER + substring scan against meeting bodies; reverse-derivation across briefs, watches, patterns), the privacy + accuracy floor (public actors, public actions, public record only), and the agent integration protocol (pre-harvest entity briefing, during-harvest extraction, post-harvest dossier updates, synthesis-time entity weaving). Reusable across any Intelligence System MainThread builds going forward — civic regulatory motion, aircraft-parts supply chains (airlines / parts / recall numbers / airworthiness directives), biosurveillance (pathogens / health authorities / outbreak codes), technical literature (authors / institutions / paper IDs).
  • Project commitment — zoning-signal-observatory/knowledge/methodology/DECODER-INDEX-ARCHITECTURE.md (~360 lines) — the civic-regulatory-motion projection. Locks the four-class taxonomy (Person, Organization, Legislation, Project), the Path A storage decision (content/entities/{slug}.mdx), the disambiguation-at-the-slug discipline, the threshold for dossier authoring (3+ corpus appearances OR cardinal significance), the 12-step rollout, and the regression-watch contracts.
  • Schema.org adaptations — class-specific emission. Person entities emit Person with jobTitle, affiliation, subjectOf array referencing every artifact. Organization entities emit Organization with areaServed, subjectOf. Legislation entities emit Legislation with legislationStatus, legislationDate, legislationJurisdiction. Project / Case entities emit CreativeWork with genre: civic-development-project, identifier (case number), spatialCoverage. Every dossier carries a companion Article with subjectOf linking back to the typed entity node — the canonical fact-rendering relation. The schema graph closes the entity loop.
  • Bidirectional links auto-derive — the corpus IS the source. appears_in_meetings derives from substring scan against meeting bodies. appears_in_briefs derives from brief prose. appears_in_watches derives from watch frontmatter + body. exhibits_patterns cross-references pattern dossiers. voting_record for board members projects from meeting agenda-item vote tallies. Operator authors voxel_lead and class cluster; the corpus populates everything else.
  • Privacy + accuracy discipline — public officials acting on the public record + public organizations with public roles only. Voting records, public statements, on-the-record motions, formally filed applications. Never private commentary, personal life, or off-record speech. The corpus is the source; nothing else gets dossiered.
  • Per-entity Track Record (Decoder Index × Resolution Bridge cross-product) — for board members and other entities with calibration-relevant action histories, voting alignment with denial blocs, motion-second pairings, and pattern associations become structured data. Bowersox: 47 votes recorded; voted with the bloc majority 89% of the time. Citable in MCP responses; surfaceable as schema graph variableMeasured. (Full activation requires NER pass over corpus; this release seeds the architecture.)
  • NLAA agent integration — INTELLIGENCE-PROJECT.md registers a decoder_index: configuration block. The harvest skill loads relevant entities scoped to the harvest entity before any source fetch (per the established pre-harvest briefing protocol from resolution-bridge + pattern-atlas). The synthesize skill weaves entity references explicitly with canonical slug links.
  • MCP tool catalog extension — list_entities and describe_entity enter the canonical tool set. describe_zoning_signal updated to enumerate all eight canonical content types. server.json bumps to 1.5.0; fourteen tools live across the discovery + description + lens-aware projection surfaces. Each entity dossier's schema_id (/entities/{slug}#{class.toLowerCase()}) is the stable cross-page Schema.org reference AI agents resolve to when citing the entity.
  • Loader Extension Pattern compound — same architecture as Phase 7 (Watch), Phase 8 (Resolution Bridge), Phase 9 (Pattern Atlas). One operator-authored entity dossier; fifteen+ downstream surfaces including the new MCP layer.

The implicit entity graph rendered as navigable surfaces. Every reference dereferences. Every claim is auditable. Every entity is citable. This is what makes an Intelligence System a graph, not just a record.

The Pattern Atlas — Named Patterns Become First-Class

May 8, 2026

v0.9.0

By Dave Jones

FeatureContentMCPGEOSchema

Named patterns become first-class artifacts. Each pattern the observatory has crystallized — The Self-Storage Canary, The Grandfather Window, The Six-Month Board Flip, The Quiet Revolution on Highway 27, The Bellwether Gas Station — now has its own dossier at /patterns/{slug} carrying the structured pattern data the entity graph resolves to. The brief is the prose; the pattern dossier is the data.

The Pattern Atlas

  • /patterns — the hub. Five named patterns sorted by lifecycle stage (confirmed → revised → candidate → retired) then signal score.
  • /patterns/{slug} — per-pattern dossier. Voxel lead, signal-strength reading, exhibits inventory with detection metadata, defensive responses, related briefs, related places, related corridors, provenance chain, and a Track Record line for per-pattern calibration accuracy.

Five patterns seeded as confirmed lifecycle stage

  • The Self-Storage Canary — Signal 78, six exhibits, rising. Detected in Clermont, Minneola, Groveland.
  • The Grandfather Window — Signal 87, three exhibits, stable through October 2027 SB 180 sunset. Detected across all four cities.
  • The Six-Month Board Flip — Signal 82, four exhibits, stable. Detected in Clermont.
  • The Quiet Revolution on Highway 27 — Signal 82, four exhibits, stable. The meta-pattern containing the others; detected across all four cities.
  • The Bellwether Gas Station — Signal 78, two exhibits, rising. Detected in Clermont and Minneola.

Bidirectional integration

  • DefinedTerm canonical URL migrates from /briefs/{slug} to /patterns/{slug}. Every meeting card schema graph that previously linked DefinedTerm to a brief now links to the pattern dossier as the canonical entity-graph node. Briefs continue to publish the prose analysis and remain valid surfaces; the pattern carries the canonical home.
  • Per-place "Patterns active here" — every place dossier renders the patterns detected in that jurisdiction with signal scores and exhibit counts.
  • Per-corridor "Patterns crossing this corridor" — corridor dossiers carry the same shape.
  • Mega-menu Patterns ▾ — confirmed patterns first, sorted by signal score; subtitle shows lifecycle stage + signal.
  • Per-pattern Track Record — the Resolution Bridge × Pattern Atlas cross-product. Watches scoped to a pattern accumulate calibration data; the pattern's accuracy is auditable per scope and informs lifecycle revision.

Named patterns are the vocabulary of the field. The Atlas is the durable taxonomy the system contributes to its domain.


Architecture

The Pattern Atlas is the named-pattern primitive for Intelligence Systems — a separation of the pattern (data) from the brief (prose) that promotes recurring structures named by the analyst to first-class entities with their own canonical URLs, DefinedTerm schema homes, exhibits inventories, and bidirectional links to every artifact where each pattern is detected.

  • Universal craft — intelligence-core/skills/pattern-atlas/SKILL.md (~340 lines). Domain-agnostic. Captures the universal frontmatter contract, the lifecycle-state discipline (candidate / confirmed / revised / retired with explicit promotion criteria tied to Track Record calibration data), the agent integration protocol (pre-harvest pattern briefing, during-harvest detection including counter-exhibits, post-harvest pattern updates, synthesis-time pattern crystallization), and the universal schema graph. Reusable across any Intelligence System MainThread builds going forward — civic regulatory motion, aircraft-parts supply chains, biosurveillance, technical literature, supply-chain motion.
  • Project commitment — zoning-signal-observatory/knowledge/methodology/PATTERN-ATLAS-ARCHITECTURE.md (~340 lines) — the civic-regulatory-motion projection. Locks the slug grammar (zero-cost migration; pattern slug = brief slug), the Path A storage decision (content/patterns/{slug}.mdx), the 6-step rollout, the regression watch (existing brief URLs preserved, watch scope.brief retained for backward compat).
  • Schema.org adaptations — three novel uses of the trust-coded structured-data category. DefinedTerm canonical URL migrated from /briefs/{slug} to /patterns/{slug} across the entire meeting-corpus schema graph. DefinedTermSet emitted at the Atlas hub (@id: /patterns#set) registering all named patterns as a citable taxonomy. Article.subjectOf: DefinedTerm on each pattern dossier links the prose to the canonical entity. Dataset schema on each dossier surfaces variableMeasured (exhibits count, signal score, lifecycle stage) for AI-citation grounding.
  • MCP layer — new tool describe_pattern(slug) returns the full structured dossier: voxel_lead, signal_status, pattern_scope (spatial / temporal / topical / corridors), full exhibits inventory with detection metadata, defensive_response taxonomy, provenance_chain, related briefs / places / corridors, audiences, named_at, and the canonical surfaces (dossier, defined_term_id, defined_term_set, list_in_atlas). current_named_patterns extended to read from the canonical pattern dossiers (not briefs), returning lifecycle stage, signal score, exhibits count, spatial scope, related briefs, and voxel_lead. server.json bumps 1.3.0 → 1.4.0; twelve tools live.
  • NLAA agent integration — INTELLIGENCE-PROJECT.md registers a pattern_atlas: configuration block (pattern_directory, registry path, MCP tools, lifecycle_stages, candidate_threshold, civic-domain defensive_response_taxonomy). The harvest skill loads active patterns scoped to the entity before any source fetch and flags resolution events, pattern exhibits, AND counter-exhibits during extraction. Counter-exhibits are highest-value: they're the data that drives pattern revision. The synthesize skill enforces the candidate-threshold discipline (3+ exhibits across distinct entities required to author as candidate) and ties revision authority to calibration evidence.
  • Phase 8 × Phase 9 compound — per-pattern Track Record. The Resolution Bridge tracks calibration per scope; Phase 9 adds per-pattern scope. Watches anchored to a pattern accumulate directional / horizon / significance assessments; the pattern's lifecycle stage transitions are operator-authored based on the accumulating calibration record. Patterns aren't static essays; they're learning entities.
  • Loader Extension Pattern compound — same architecture as Phase 7 (Watch) and Phase 8 (Resolution Bridge). One operator-authored pattern dossier; twelve+ downstream surfaces: the pattern URL, the Atlas hub, every meeting whose key_signals references it, every brief that cites it (cites_patterns: []), every watch scoped to it, every place / corridor where detected, per-pattern Track Record, MCP describe_pattern + current_named_patterns, mega-menu Patterns ▾, sitemap, /llms.txt Pattern Atlas section. Single source of truth across all consumers.
  • Authoring discipline — operator authors the pattern's name, voxel_lead (134-167 word voxel), match term, lifecycle stage, and revision notes. The exhibits inventory derives from substring-scan of meeting key_signals; evidence_count derives from exhibits.length; related_briefs reverse-derives from briefs declaring cites_patterns: []. Claims that require judgment are authored; counts and aggregations are derived.

Named patterns are the vocabulary of the field. The Pattern Atlas is what makes an Intelligence System a vocabulary, not just a record.

The Watch Resolves — Forecast Accuracy Surfaces

May 8, 2026

v0.8.0

By Dave Jones

FeatureContentMCPGEOSchema

The Watch now closes its loop. When a watched event resolves, the observatory records the outcome, links it to the original prediction, names what was learned, and aggregates every directional read into a public Track Record. Right or wrong. Misreads count.

Resolution surface

  • /watch/{slug} — status-aware render. The closing-loop panel reads as the new lede on resolved watches; the original prediction body becomes historical context below it. Outcome type pill, prediction-assessment chips (directional / horizon / significance), the operator's lesson, and the source citation trail surface in that order.
  • /watch/track-record — the public scorecard. Directional accuracy (aligned + 0.5 × mixed), horizon accuracy, significance accuracy. Calibration stratified by the authoring confidence pip count. Recently resolved list. Per-jurisdiction breakdown. Methodology section.
  • /watch/resolved — filtered hub view of every closed-loop watch, sorted most-recently-resolved first.

Hub + per-page integration

  • Tabs above the bulletin board — Active · Resolved · Track Record.
  • Per-place track-record line — every place dossier carries a one-line pulse on directional accuracy for watches scoped to that jurisdiction. Silent when no resolutions yet.
  • Recently Resolved embed — every place, corridor, and brief dossier now renders the most recent resolved watches scoped to that entity.
  • Mega-menu Watch ▾ surfaces the most-recently-resolved item alongside the active forward calendar and a direct Track Record link.

Two retroactive resolutions seed the discipline

  • Lake Bright-Brighurst at Leesburg City Commission — postponed from March 23 to April 13, then approved 4-1 (Connell dissenting). The $2.3M intersection mitigation paired with Lake County's approval of the plan flipped the council. P&Z denial bloc fractured. Predicted bloc would hold; misread.
  • Citrus Ridge Commercial PUD at Minneola P&Z — approved 4-0 on May 4, advancing to City Council May 19. The Rose/McCoy pair that tabled in April did not dissent at substantive vote. Predicted bloc cohesion; misread.

Both write-ups follow the locked voice — past tense, specific verbs, vote tallies, named entities, lesson stated as inference. The track record opens publicly at the actual numbers, not the flattering ones.

The civic record moves before the market reacts. Reading every meeting was the first half. Reading what came of every prediction is the second.


Architecture

The Resolution Bridge is the epistemic-accountability primitive for Intelligence Systems — a closing-loop surface that converts forward-looking watches into auditable calibration data. Phase 8 ships the universal craft, the project commitment, and the schema graph that makes forecasting accuracy a public, citable artifact.

  • Universal craft — intelligence-core/skills/resolution-bridge/SKILL.md (~270 lines). Domain-agnostic. Captures the universal frontmatter contract (outcome.{resolved_date, resolved_at_artifact, outcome_type, outcome_summary, prediction_assessment, lesson, citations}), the four-point rating scale (aligned / mixed / misread / unforeseen), the universal voice template, and the agent integration protocol. Reusable across any Intelligence System MainThread builds going forward — civic regulatory motion, aircraft-parts supply chains, biosurveillance, technical literature.
  • Project commitment — zoning-signal-observatory/knowledge/methodology/WATCH-RESOLUTION-ARCHITECTURE.md (~280 lines) — the civic-regulatory-motion projection. Locks the lifecycle states (pending → resolved → obsolete → archived), the project-specific outcome enum, and the 10-step rollout.
  • Schema.org adaptation — ClaimReview emitted on every resolved watch. Novel adaptation of Google's canonical fact-check schema family applied to forward-looking civic predictions. The original prediction becomes the claimReviewed; the directional assessment becomes the reviewRating (1–4 scale with alternateName and ratingExplanation); the resolution date is the review publication date. itemReviewed.appearance references the original watch authoring node. First-mover surface in a trust-coded structured-data category for forward-looking domain predictions.
  • Event lifecycle migration — Event.eventStatus driven by outcome.status: EventScheduled → EventCompleted on resolution; EventCancelled on obsolescence. endDate set to resolved_date. Article.subjectOf: ClaimReview links the prose article to the canonical fact-check anchor.
  • MCP layer — new tool get_track_record(jurisdiction?, corridor?, brief?) returns the full calibration scorecard with optional scope: directional / horizon / significance accuracy, per-confidence-pip stratification, recent resolutions, per-jurisdiction breakdown, surface URLs. server.json bumps 1.2.0 → 1.3.0; eleven tools live.
  • Loader Extension Pattern compound — one canonical getTrackRecord({ scope? }) derivation engine; nine downstream surfaces: public scorecard, hub summary line, per-place / per-corridor / per-brief track-record lines, MCP get_track_record, mega-menu pulse, schema graph variableMeasured cluster, llms.txt Resolved section, RSS / JSON Feed resolution events. Single source of truth across all consumers.
  • Authoring discipline — outcome_summary voxel-disciplined (134-167 words, BLUF, ≥1 specific fact, ≥1 mechanism). prediction_assessment is honest by construction; misreads are reported. The operator's lesson is the irreplaceable human judgment layer — the named insight about how the field actually works, distilled from the difference between prediction and outcome.

The Resolution Bridge is the move from forecaster to forecaster with epistemic accountability. Calibration accumulates with the corpus, not with marketing spend. A static observatory loses authority over time as content stales; a watch-with-resolution observatory gains authority as the track record extends.

The Watch — The Field's Forward Calendar

May 8, 2026

v0.7.0

By Dave Jones

FeatureContentMCPGEONavigation

The observatory now publishes what it is tracking. The Watch is a sixth canonical content type — first-class artifacts for forward-looking events, scheduled hearings, regulatory sunsets, and condition-triggered milestones the field is tracking. Every place dossier, corridor page, and brief now carries an inline bulletin board. The dedicated hub at /watch is the cross-field forward calendar.

Eight initial watch items

The corpus seeds with the cardinal pending decisions and milestones across south Lake County:

  • Lake Bright-Brighurst at Leesburg City Commission — second reading of the P&Z-denied 202-acre PUD with $2.3M mitigation, March 23, 2026
  • Citrus Ridge Commercial PUD substantive vote at Minneola P&Z — May 4, 2026; tests whether the Rose/McCoy bloc holds at full hearing
  • SB 180 self-expiration — June 2026; all four cities enter their post-sunset adoption windows simultaneously
  • Groveland names a new City Attorney — successor to Anita Geraci-Carver mid-EAR cycle
  • Groveland CDC V5 form-based code adoption — the regulatory architecture awaiting the SB 180 lift
  • Crooked Can Brewing opens at Hills Town Center — April 2026 target; the cardinal Hills Town Center validation
  • Hartwood Marsh Road widening construction — funded since 2007; the binding capacity constraint for Wellness Way
  • Clermont C-2 food-truck permitted-use text amendment — Council-directed; the CUP cadence that broke the code

Per-page bulletin boards

Every place dossier renders the watch items scoped to that city below the per-city meeting directory. Every corridor page renders items scoped to that corridor. Every brief renders watch items linked to that named pattern. The same data feeds all three surfaces.

Each item is structurally citable

Every watch item carries a trigger (date or condition), scope chips (place / corridor / brief / region), a significance score (0-100), a horizon (imminent / near-term / structural), a 134-167 word voxel describing why it matters, and a provenance link to the meeting or brief that surfaced it. After the trigger date passes, items resolve with an outcome assessment that becomes part of the published record — the observatory''s predictive track record compounds over time.

AI agents gain a queryable forward calendar

  • Schema graph — each watch item emits Schema.org Event + AnalysisNewsArticle + Speakable. The /watch hub emits ItemList. AI extractors gain stable cross-page @id references between the place dossier, the meeting reading that surfaced the item, the brief that defines the related pattern, and the watch item itself.
  • list_watch_items() MCP tool — new tool, filters by status / horizon / place / corridor / brief. Bumps the registry to 1.2.0.
  • RSS + JSON Feed — watch items appear in /rss.xml and /feed.json with [Watch] prefix.
  • /llms.txt — a new "The Watch · Forward Calendar" section lists pending items.

The Watch in chrome

Watch ▾ is a top-level nav item alongside Places, Corridors, Readings, Briefs, Method. The mega-menu surfaces the most imminent items; the mobile drilldown bottom sheet picks them up automatically.

The civic record moves before the market reacts. Reading every meeting was the first half. Reading what comes next is the second.

The Meeting Record Opens

May 8, 2026

v0.6.0

By Dave Jones

ContentFeatureMCPGEO

The full standardized meeting record from January 2024 through May 2026 is now readable on the observatory — 92 meetings across Clermont, Leesburg, Minneola, and Groveland P&Z boards, each as its own URL with structured items, public-comment summary, key signals, and source trail.

The full corpus

Eighty-nine new meeting readings join the three existing in-depth interpretations. Each renders the harvest pipeline's standardized record: meeting snapshot, agenda items with motion-makers and votes, public testimony aggregate, and three to five key signals. Speakable schema markers point AI extractors at the voxel lead; per-page Open Graph cards generate via Satori; sitemap and the /meetings hub enumerate the full set.

Three new in-depth readings

Three meetings carry full eight-lens interpretation:

  • Clermont P&Z, April 7, 2026 — the Kohl's voluntary annexation at 12305 US-27, 7-0 on both the comp plan amendment and rezoning, with the city's leverage strategy named on the record
  • Groveland P&Z, April 2, 2026 — City Attorney Anita Geraci-Carver's last meeting, closing the multi-year SB 180 thread for the city most exposed to it
  • Leesburg Planning Commission, January 22, 2026 — the Lake Bright-Brighurst denial cascade, four items denied including a 202-acre, 502-unit PUD with $2.3M of developer-funded intersection mitigation rejected at 3-3

Discovery surfaces for AI agents

  • RSS at /rss.xml and JSON Feed at /feed.json — high-cadence streams of recent readings, declared via <link rel="alternate"> for autodiscovery
  • list_meetings() — a new MCP tool, the no-city variant of meeting_index. Bulk-pull or scan across cities by date range
  • DefinedTerm schema — meetings whose key signals reference a named pattern (the Quiet Revolution, the Bellwether Gas Station, the Six-Month Board Flip, the Self-Storage Canary, the Grandfather Window) now cite the brief that defines the pattern via Article.about. Cross-page entity graph density compounds.

The civic record moves before the market reacts. Reading every meeting is now possible.

Your Feed — Curation as Conversion Primitive

Apr 28, 2026

v0.5.0

By Dave Jones

FeatureFeedWatchlists

Subscriptions now drive a personalized feed. Click Follow on any place, corridor, brief, or meeting reading; /feed merges those direct watches with adjacent activity — briefs covering watched places, readings on watched corridors — recency-sorted into one stream with reason attribution per row.

Follow on every artifact

Every place dossier, corridor signal, signal brief, and meeting reading now carries a Follow toggle in its hero. The state flips optimistically — instant feedback, server reconciles in the background. Anonymous click routes to /login with the path and intent preserved; sign in and pick up exactly where you were.

/feed — your personalized stream

The feed merges five activity sources on every visit:

  • Direct watches — anything you've followed shows up in the stream
  • Meetings on watched places — a city you track had a planning meeting
  • Meetings on watched corridors — a corridor reading dropped
  • Briefs covering watched places — a named pattern names a place you follow
  • Briefs covering watched corridors — the same, at corridor scope

Each row carries a reason attribution ("Brief covering a place you follow"), so the why is visible alongside the what. The stream isn't a flat list of titles — it's the temporal organism made personal.

/account/watchlists — manage in one view

Subscriptions grouped by type (Places · Corridors · Named patterns · Meeting readings). One-click unfollow on any row. Empty state guides into the indices.

What this enables

The same subscription primitive that drives the in-product feed will drive the Weekly Signal newsletter cadence. One follow shapes both surfaces. Future paid intelligence tiers will layer on top of this same primitive — your watchlist becomes the personalization spine.

Watchlists + Auth — Phase 1 Complete

Apr 28, 2026

v0.4.0

By Dave Jones

FeatureAuthWatchlists

The observatory now recognizes returning readers. Sign in with Google or a password, and your watchlists persist across sessions and devices.

Watchlists

Mark any place dossier, corridor, meeting reading, or signal brief for ongoing attention. The watchlist surface at /account/watchlists collects everything you're tracking in one view. Named watchlists let you organize by project, jurisdiction, or any frame that suits the work.

The signal is dense. The civic record moves in multiple directions at once. Watchlists give you a stable vantage point while the field shifts beneath it.

Auth

  • Email + password — standard account with confirmation flow
  • Google OAuth — one click, no password to manage
  • ProfileMenu — avatar in the header shows sign-in state; dropdown links to watchlists, account, and sign out
  • Session persistence — Supabase Auth handles the cookie lifecycle; server components read the session at request time so no hydration flash

Content gates

Authentication never gates content. Every place dossier, corridor analysis, meeting reading, and signal brief is publicly readable. Auth is infrastructure for persistence (watchlists) and communication (newsletter and future alert cadences) — not a paywall.

Semantic Search + MCP Agent Discovery

Apr 28, 2026

v0.3.0

By Dave Jones

FeatureSearchMCPGEO

Two new access paths to the civic intelligence graph — one for human readers, one for AI agents.

Semantic search

/search accepts natural-language queries and returns ranked results from the full content corpus — place dossiers, corridors, meeting readings, and signal briefs.

The ranking is powered by 1024-dimensional Voyage AI embeddings stored as halfvec in Supabase's pgvector extension. Queries embed at inference time via Voyage 4 Lite (the asymmetric query model); documents embed at build time via Voyage 4 (the asymmetric index model). The same embedding space makes the match precise without requiring exact terminology.

Ask "aquifer recharge restrictions" and surface the Minneola water ordinance. Ask "density corridor commercial pressure" and find the US-27 corridor analysis. The query vocabulary doesn't need to match the source text — meaning does.

MCP discovery server

/.well-known/mcp.json exposes a public read-only MCP server for AI agents. Declared tools:

  • describe_zoning_signal — what this observatory is and what it covers
  • list_cities — all place dossiers with signal summary
  • list_corridors — cross-municipal corridor analyses
  • current_named_patterns — active signal patterns from the regional synthesis
  • meeting_index — meeting readings filtered by jurisdiction and date range
  • describe_place and describe_corridor — lens-aware projection per cognitive position
  • semantic_search — query the content corpus by meaning

Perplexity, Claude, ChatGPT, and Gemini can now locate and traverse the observatory's intelligence graph without requiring a human intermediary. GEO (Generative Engine Optimization) is first-mover territory in civic intelligence; this surface is the mechanism.

Cross-link resolver

The bidirectional cross-link resolver connects related artifacts across the corpus. A meeting reading for Clermont's planning commission references the Clermont place dossier and the US-27 corridor automatically. Place dossiers surface related meeting readings and corridor analyses inline. The graph densifies as content grows.

The Field — Index Pages and Lens System

Apr 28, 2026

v0.2.0

By Dave Jones

FeatureNavigationDesign

Four index pages and the core navigation system that structures how the observatory is traversed.

The Field (homepage)

/ is the observatory's entry point — a visual field constellation showing the civic intelligence graph as a spatial arrangement. Places, corridors, meetings, and briefs appear as positioned nodes in the field with signal-strength indicators. The layout algorithm distributes by signal intensity and proximity relationships, not alphabetical order.

Four index pages

Each content type has a dedicated index organized for its specific material:

  • Places (/places) — place dossiers by signal strength, with jurisdiction, reading count, and development pressure summary
  • Corridors (/corridors) — cross-municipal economic topology analyses, with municipal crosscurrents and infrastructure unlock status
  • Readings (/meetings) — meeting readings in reverse chronological order, with jurisdiction, meeting type, and signal extraction count
  • Briefs (/briefs) — named-pattern essays in publication order

Lens system

The lens switcher on index pages toggles the analytical frame: Signal (intelligence extracted), Development (physical-change pressure), Infrastructure (unlock and constraint conditions), and Policy (regulatory direction). The underlying data is identical across lenses — the frame shifts, not the evidence.

Design chrome

The full observatory aesthetic is live: dark field plate for navigation and editorial surfaces, parchment plate for reading surfaces, signal gold (amber) for active state, teal for navigation chrome. Cormorant Garamond carries page identity; IBM Plex Mono carries instrument metadata; Inter carries interface.

The Corpus Opens — Depth + Design System

Apr 28, 2026

v0.1.5

By Dave Jones

FeatureContentDesign

The launch surface shipped with one place dossier and one corridor. This release expands the corpus to four places, five named patterns, and three citation-grade meeting readings — and the entire visual system is now on the canonical Zoning Signal aesthetic.

Content depth

  • Four place dossiers — Clermont, Minneola, Groveland, Leesburg. Each carries eight-projection lens content (synthesis plus seven analytical positions), a twelve-month signal drift, a six-node provenance chain, signal-strength score (0–100), and the city's regulatory state under Florida's SB 180.
  • Five named-pattern briefs — The Quiet Revolution on Highway 27 · The Self-Storage Canary · The Six-Month Board Flip · The Grandfather Window · The Bellwether Gas Station. Each names a recurring shape in the regional record, anchored in real votes, real dates, real attribution.
  • Three meeting readings — Clermont's October 2025 7-Eleven denial (Wellness Way Design Standards enforced unanimously), Minneola's September 2025 gas-station 4-0 denial at the Hancock/CR-561A residential gateway, and Leesburg's December 2025 Planning Commission. Each follows the Citation Scaffold structure (BLUF · statistic · attribution · structured list · FAQPage schema).
  • Field Atlas at /field/south-lake-florida — the regional showpiece. Hero stat panel, regional map, twelve-month drift strip, places-in-field grid, corridors-in-motion grid, six-node visual provenance trail, MainThread coda.

Design system

The Anthropic claude.ai/design team built a complete brand system. We ported it whole: deep charcoal + signal gold + parchment palette tokens, three typefaces (Cormorant Garamond display, IBM Plex Mono instrument, Inter interface), and sixteen component primitives — Header, Footer, LensSwitcher (seven-lens), SourceTrail (visual provenance chain), DriftTimeline (twelve-month strip), StatPanel, MapPlate, PlaceCard, CorridorCard, and others. Maps generate via ChatGPT Image 2.0 with the prompt grammar codified at /knowledge/design/MAP-ASSET-PIPELINE.md — the cartographic-imagery skill at intelligence-core/skills/cartographic-imagery/ is the universal craft, parameterized for Zoning Signal here.

Per-page social cards

Every place, corridor, brief, and meeting URL now generates its own OpenGraph card at request time — title, signal score, signal state line, all on the dark observatory plate. Sharing /briefs/grandfather-window on Slack or Twitter produces a Grandfather-Window-specific preview, not a generic site card. Favicon and apple-touch-icon use the woven-thread signal mark.

Trust pages elevated

/method, /sources, and /built-by-mainthread graduate from stub placeholders to substantive editorial. The Method essay names the four artifacts, the eight cognitive positions, the four-step source pipeline (Harvest → Standardize → Synthesize → Publish), and the validation discipline. Sources enumerates seventy-seven harvested documents across four cities and three planning boards, with verifiable portal links per jurisdiction.

Zoning Signal Observatory — First Publish

Apr 27, 2026

v0.1.0

By Dave Jones

Launch

The Zoning Signal Observatory is live.

What this is

A civic intelligence observatory for places in motion. The agendas, minutes, staff reports, and planning records that shape a region's future — read as a living atlas. The civic record moves before the market reacts; this surface makes that movement legible.

The observatory publishes four artifact types:

  • Place dossiers — per-jurisdiction synthesis: current reading, signal strength, primary forces, development pressure zones, key entities (developers, attorneys, recurring parcels), source trail
  • Corridor analyses — cross-municipal economic topology: corridor thesis, pressure map, municipal crosscurrents, infrastructure unlocks, commercial gravity, residential expansion
  • Meeting readings — temporal artifacts: one per harvested meeting, plain-English summary, signal extraction, entity map, delta from prior reading
  • Signal briefs — named-pattern essays: one recurring shape in the civic record per essay, anchored in evidence from the regional corpus

The pipeline behind it

The intelligence comes from the NLAA (Natural Language Agent Application) at zoning-signal/ — a harvest and synthesis pipeline operating across 19 Lake County jurisdictions since January 2024. 77 documents harvested. Four city syntheses. One regional synthesis. The observatory is the publishing surface; the NLAA is the engine.

The domain

zoningsignal.com — a standalone TLD. The decision not to use a subdomain of mainthread.ai is intentional: this surface builds its own search authority on civic-intelligence terms, not on the studio's domain. MainThread attribution is through JSON-LD entity graph and the footer, not the URL.

SEO and AI-agent discoverability

The observatory ships with full structured data (JSON-LD on every page), an explicit AI-crawler allow list in robots.txt, llms.txt and llms-full.txt for AI indexers, and the MCP discovery server at /.well-known/mcp.json. GEO (Generative Engine Optimization) alongside traditional SEO from day one — not retrofit.

This is a live system. Content grows as the pipeline harvests. The signal sharpens with each reading.

Built by MainThread

Zoning Signal is one public specimen of a broader craft.

MainThread builds intelligence systems for dense, fragmented domains — operations, compliance, hiring, supply chains, civic data, institutional knowledge.

Build an intelligence system →

The Observatory

  • Field Atlas
  • Place Dossiers
  • Corridors
  • Meeting Readings
  • Signal Briefs
  • Named Patterns
  • Decoder Index
  • The Watch

Method

  • How we read the field
  • Source trails
  • Confidence model
  • Watchlists
  • Changelog
  • About
  • About MainThread

For AI agents

  • llms.txt — agent start page
  • llms-full.txt — deep ingest
  • .well-known/mcp.json — MCP discovery
  • status.json — corpus state freshness contract
  • schema/signal-model.json — metric definitions
  • agent-observatory — how agents read the field
© MainThread · 2026One public specimen · Built in Florida
Sign in