8a8e74561d
Pivot from the hardware/integrity layer to the parking operation. All wiki-only; no code yet. Core principle throughout: business entities are projections over the signed append-only event log, never mutable tables. New concepts: parking-session, tariff (composable/versioned, FX-ready), shift (manned-only Z-report), capacity-occupancy, validation-discounts, reporting-analytics, clock-integrity, ticket-encoding, anti-passback. New entities: permit, opencv-anpr-service, blocklist. Decisions: session-model, vision-service (host-side ANPR + vehicle verification; scoped AGPL exception for the isolated service). Updates: append-only-event-chain (new event types + vision witness), local-jwt-auth (drop 8h expiry -> until logout; code change pending), lpr-camera (host-side recognition supersedes edge-AI), standing-decisions (AGPL exception), open-questions (+FX, +pay-station money corners, backup). Deferred + flagged: intercom/help-call, receipts/refunds/change, FX engine, lane topology (#1).
1.9 KiB
1.9 KiB
type, tags, sources, updated, status
| type | tags | sources | updated | status | |||
|---|---|---|---|---|---|---|---|
| decision |
|
|
2026-06-14 | settled |
Standing Decisions (settled)
The decisions treated as settled in the design notes. (See parking-system-architecture "Summary of standing decisions".)
- Stack: turborepo · fastify (Node) · react-vite-spa · sqlite +
drizzle-orm · local-jwt-auth. All MIT/Apache/BSD — no vendor lock, no rug-pull
risk (see payload-cms). Full table in technology-stack.
- Scoped exception (2026-06-15): the opencv-anpr-service — a separate local process, not linked into the app — may use AGPL components (plate/vehicle models). The exception is bounded to that process; the Node/React app stays strictly MIT/Apache/BSD. See vision-service.
- Platform: a dedicated, hardened Linux appliance (LUKS + GRUB password + Secure Boot), not Windows/WSL — see disk-os-hardening.
- Integrity: append-only, hash-chained, atecc608-signed event log (append-only-event-chain); reconciliation is the anti-fraud control; encryption protects only at-rest (see threat-model).
- Access control: the dingtian-relay relay+input controller, on an isolated VLAN (network-isolation). Chosen because its inputs are decoupled from its relays, enabling host-in-the-loop ticket-first entry — the resolution to access-controller-button-flow. (The uhppote-controller and zkteco-controller were evaluated and rejected — kept as historical record. The esp32-custom-controller remains the documented prevention-grade alternative — the trust-boundary fork.)
- Readers: prefer wiegand-into-controller for permit holders (autonomous); host-in-the-loop for lpr-camera/QR/pure-network readers; both can share a relay (see entry-exit-readers).
Unsettled items live in open-questions.