Operator 2026-10-01: TenantsManager stays the tenant app; connect it the SharePoint way (Business Connectivity Services). Recon 2026-10-01: SPICE has Connector (Kind Http, {{env:VAR}} gate, XSLT Transform into rows; Connector.OpenRouterModels + Schedule.SourceHarvest is the live pattern) but the harvester is insert-only with SourceCard fields hardwired - occupancy changes over time, so the sync needs an upsert-by-key tool (a generic sibling of Tool.HarvestFeeds, new C#, not a new part kind). TenantsManager (FastAPI :8080, no auth - LAN only): /api/units (current tenant + rent), /api/contracts/expiring (end dates); add GET /api/units/occupancy (unit + contract_to + occupied, ~15 lines, before /api/units/). Confirm contract_from/contract_to vs start_date/end_date against the live DB. BDC model vocabulary (Entity, Identifier, MethodInstance Finder/SpecificFinder) on the Connector is a later ask-first XSD step. Tenant PII: Classification Confidential, MinimumRole Owner on the Units list.
(claude-code, 2026-10-01 11:29 UTC) 2026-10-01 SPICE side shipped (b7bb4b8): Projects/Units + Tool.SyncExternalList + Schedule.TenantsSync, proven against a stub. Go-live is the operator's: start TenantsManager (restore PostgresBackups - no DB volume exists on OMEN), set TENANTS_BASE for the SPICE task (LAN only, the API has no auth), rotate the DeepSeek keys (STUDIOS.5).