Gatekeeper: what production shows, row by row

For the 11 gatekeeper-build rows that read "merged · untested": what each switch-off rule does, what real production data shows since it merged, and a verdict.

2026-10-01, read at about 12:30Z · window 2026-09-29 00:00Z to now · read-only (DynamoDB reads and CloudWatch Logs Insights; no writes, no sends, no calls) · board: gatekeeper-build · model: collections evidence

Details

Verdicts

RowVerdictWhat prod shows
gk-maint-front-door-fallbackShown working13 real Western Slope calls read Maintenance off; a repair caller was connected to their own maintenance line; 0 work orders filed. Plus the two live test calls.
gk-leasing-gatesShown working3 live test calls, and 78 refusals that all fell inside the test building's off windows. 0 bookings at a Leasing-off building. No real-customer traffic yet.
gk-exempt-triageShown workingAll 189 real texts and emails since 9/29 named a module or an always-on kind; 0 unlabelled.
gk-retire-overlapping-switchShown workingAll 73 buildings that carried the old switch carry Maintenance off as a building setting; 0 log lines from the deleted readers.
gk-drafts-modeShown dark0 of 11 companies and 0 of 223 buildings have ever been set to Drafts, so it changes nothing yet.
gk-appfolio-writer-gateNo traffic yet0 maintenance writes to AppFolio at off buildings (4 at on buildings, as normal). Nothing tried to write, so the refusal has not fired.
gk-maint-inflight-quietNo traffic yetNo in-progress PropFlow work exists at an off building. 13 rating texts at Western Slope were refused by the earlier rating gate.
gk-maint-turned-on-ruleNo traffic yetNo building or company has switched Maintenance back on since the merge.
gk-maint-action-listNo traffic yetThis row is a code check that runs in CI. No real-building maintenance tool has been refused yet.
gk-renewals-gatesNo traffic yet0 renewals started, prepared or sent at Renewals-off buildings, and 0 refusals logged.
gk-settings-pageNo traffic yetNo staff member has used the back-office module cards in prod.

Who is switched off right now

This is the real exposure. A gate is only tested where a module is off and traffic arrives.

CompanyBuildingsMaintenanceLeasingRenewalsCollections
Western Slope (customer)80offon at 70, off at 10*offoff
Situs (customer)52offoffoffoff
JPCO (customer)2off at 1 buildingononon
Test companies (Fairhaven, Module Gate Probe, Test Client Co, mirrors)87mostly offmixedmixedmixed

* The 10 Leasing-off Western Slope buildings were created today (2026-10-01) by AppFolio discovery with the building switched out of PropFlow. Situs had 0 active conversations in the window, so Situs exercised nothing.

Row by row

gk-maint-front-door-fallback · Shown working

Behaviour. When Maintenance is off, the phone sends callers to the building's own maintenance line or team, an unknown caller is pointed to the office, email and text get one short reply, and no work order is filed. Emergencies still get the safety script.

2026-09-30 21:59Z Voice: maintenance is OFF at PROP#<western-slope-building> — a call-center forward stands; with none, callers are told maintenance isn't handled on this line (safety carve-out unchanged)

gk-leasing-gates · Shown working

Behaviour. At a Leasing-off building Clara answers tour, reschedule and rent questions with the property-team disclosure. She does not offer or book a tour, and nothing is written to AppFolio.

ClaraLeasingTool: schedule_tour at property <fairhaven-test>: refusing schedule_tour — leasing.prospects_module_off

gk-exempt-triage · Shown working

Behaviour. The open "none" label is closed. Every send names its module or one of the always-on kinds. A promise or a Clara reply whose module is stored off is held, and disclosures always send.

gk-retire-overlapping-switch · Shown working

Behaviour. The old rollout-stage switch is gone, and the module setting is the only switch.

gk-drafts-mode · Shown dark

Behaviour. At a building set to Drafts, Clara's maintenance texts wait for staff approval. Until staff set a building to Drafts, nothing changes.

gk-appfolio-writer-gate · No traffic yet

Behaviour. At a Maintenance-off building PropFlow writes nothing to AppFolio for maintenance. That covers create, note, update and close, plus the dev catalog, close-all and turnover move-out writes.

2026-09-30 23:10Z WoEnrichDispatch: WO wo_appfolio_<id> dispatch skipped (maintenance_module_off)

gk-maint-inflight-quiet · No traffic yet

Behaviour. Reminders, status relays, vendor completion messages and vendor chases stop for work already in progress at an off building.

gk-maint-turned-on-rule · No traffic yet

Behaviour. When Maintenance is switched back on, work created before that moment is treated as off.

gk-maint-action-list · No traffic yet

Behaviour. Every action tool declares its module, and a syntax-tree test fails any write tool that can act before its own module's refusal.

gk-renewals-gates · No traffic yet

Behaviour. At a Renewals-off building nothing is prepared in AppFolio, no renewal auto-starts or rolls to month-to-month, Clara's renewal tools refuse, and in-flight renewals close quietly.

gk-settings-page · No traffic yet

Behaviour. In the back office, staff set each module to Off, Drafts or Live, per company and per building.

Side notes (not leaks)

How this was measured

Module state: propflow-prod Organization rows (settings.enabledModules) and each building's live and history ATTACH#setting# rows, folded as company AND building-in-PropFlow AND building module. Leaks: WorkOrder rows (created and lastSyncFlushAt since 2026-09-28 23:59Z, by source), Tour, Prospect, renewal and NewLeasePackageReview rows, DispatchDecision rows, and MODULE_REFUSAL# rows. Sends: scripts/eval/replay-module-send-gate.ts --since 2026-09-29 --until 2026-10-01 run read-only on origin/main (0154406). Logs: CloudWatch Logs Insights on /propflow/vercel/runtime (production only), /aws/ecs/propflow-renewal-worker-prod and the prod lambdas (appfolio-sync, agent-runtime, inbound-processor, renewal-outreach). Each row is credited only with log lines its own PRs emit. Older gates are named as such. Resident names, phone numbers, AppFolio ids and company ids are left out.

PropFlow Docs