Settings clean-up: the 21 remove-candidates, resolved

Board row sr-trim · checked against main on 2026-09-26

The Settings redesign inventory marked 21 settings "remove?". Each one is now either removed or kept for a recorded reason.

Result: 5 removed or never built, 16 kept with a reason, 0 still open. No new removal PR was needed, because nothing still present is clearly dead.

How each was judged. Remove only what has no effect. Otherwise keep it, with one line saying why. The board row adds three constraints:

The full table (21 rows)
#Setting (design wording)ResolutionReason / evidence
1tourChannelMatchEnabledRemoved #11894Flag deleted, winning path kept. 0 references on main.
2tourTemplateDeferralEnabledRemoved #11894Flag deleted, winning path kept. 0 references on main.
3tourPipelineV2EnabledRemoved #11917Flag and legacy branch deleted (unset everywhere). 0 references on main.
4applicationLeasePolicyRemoved as a setting #5577Moved into PropertyKnowledge.leasePolicy (one home). The field stays declared only so migrate-property-lease-policy.ts can read unmigrated rows; lease-policy-single-home.drift.test.ts blocks any new reader or writer.
5How changes are written back to AppFolio (coming soon)Not presentNever built: no screen, no stored field on main. The admin-only coming-soon component from #11889 exists, but no settings page renders it (its only callers are tests).
6AppFolio sync status on the building pageMoved, kept #12420A property-level fact by owner decision (2026-09-09); a report with no controls. Now on Building › Settings › Connections.
7Company mailbox status line on the building pageMoved, kept #12420Tells a building that its mail comes from the company mailbox; no controls. Now on Building › Connections.
8Send renewals without my approval (Property.autonomousLeaseSendingEnabled)KeptRenewals owner's call (row constraint).
9renewalOutreachInitialDaysKeptRenewals owner's call (row constraint).
10tourWindowMatchingEnabledKeptPending Fede's rollout decision b90283511 (row constraint).
11tourInviteV2EnabledKeptThe second tour flag covered by the same decision b90283511 (driver, 2026-09-25: "the two tour flags stay"). A registered per-property arm.
12tickerSelfHealEnabledKeptA live per-property rollout arm (arms registry, set-ticker-self-heal-flag.ts), fail-closed, currently being rolled out. One per-property switch is allowed (CLAUDE.md rule 8).
13turnIntegrityTypedToolResults / SingleWriter / ReviewGate / OutputGateKeptEmergency kill switches for live safety gates, on by default, in Admin › Arms. Stored-no-screen rule: they stay code/Admin only.
14aiAutoApproveThreshold (leasing copy)KeptNot dead: settings-resolver.ts:236 and settings-source.ts:105 still fall back to it for a building with no maintenance-settings row. Removing it first needs a production data backfill, which is the owner's call.
15Prospect record owner (per building)KeptLive: resolveProspectRecordOwner reads it and a staff-only admin route writes it (Option D). Stored-no-screen rule: it stays in Admin.
16Reminder emails on for this company (+ which address)KeptA PropFlow-set opt-in with no customer screen, as the rule says. Where reminder settings live is pending Gera ("reminder settings to You").
17Company connections status on ProfileKeptFede's ruling, 2026-09-14: admins see the company's connection status (and AppFolio's) on their personal settings.
18Dashboard layout and card time windowsKeptSaved by the dashboard's own drag and resize, not a Settings-page row; nothing to declutter.
19My calendar (shown on the company page for non-admins)KeptThe only card a non-admin sees on the company overview. You › My calendar is its home; dropping the duplicate needs a replacement for that overview (sr-polish).
20Feature modules pointer cardKeptSettings › Admin's link to the module switches in the Access Inspector; static and staff-only.
21Old /admin/settings URLKeptThe bookmark redirect (307) from Gera's 2026-09-16 move, pinned by the nav-stub tests; staff-only.

Row 13 is one design row covering the four turn-integrity switches.

PropFlow Docs