City SeCUReD Hook-up Register
City SeCUReD · new UI prototype × reworked back end · 26 Oct 2026

What the prototype does not hook up yet

Every feature in the prototype page (index.html, 4,491 lines), checked against the back-end contract on the reworked branch (window.gis: 210 methods, 46 push events, documented in docs/CONNECTORS.md). Each row says what powers the feature today, which back-end channel should power it, and what has to happen.

WHICH BRANCH

reworked (PR #52, 25 Oct). It removed the old UI, runs the back end headless, and carries ui/command (the rebuild) and ui/dashboard (the default first window).

HOW IT PLUGS IN

browser/ already runs the whole back end in a Web Worker and gives a plain page the real window.gis. The prototype can sit on that bridge without Electron, except for PDF, opening files, the phone server and GeoPackage import.

WHAT IS REAL TODAY

82 of 175 prototype features run real logic in the page. 46 are simulated or sample data, 16 live only in one browser, 5 call Claude directly, and 21 controls have no effect.

Register

FeaturePrototype todayBack end on reworkedStatusNext action

In the back end, missing from the prototype

Built, tested and reachable over window.gis, with no place in the new design yet. Each one needs a panel or a deliberate decision to leave it out.

CapabilityChannelsNote

Back-end blockers to clear before stitching

      On-screen wording to correct in the design pass

      Per CLAUDE.md, operator-facing words come from src/nims/terminology.js. These prototype strings do not.

      Prototype saysSayWhere (line)

      Proposed order of work

      1. Unblock the bridge. Teach browser/shims/electron.js:53 to show the new page. Add a fork check to world:command so incidents can't be declared on a live city.
      2. Design pass as an artifact. Keep the prototype's shell, docking and themes. Swap the 13-step HSEEP rail in for the 9 UX steps, correct the wording table above, and remove every "live" label over sample data.
      3. Stitch the WIRE rows (green) behind one adapter module, so every panel reads from window.gis and nothing keeps authoritative state in the page.
      4. Decide the PARTIAL rows (amber). Most of them are a choice between two rubrics, two position catalogues, or two doctrine searches.
      5. Build the BUILD rows (red) as new channels, added to Appendix A of CONNECTORS.md in the same change, so npm run test:connectors keeps passing.