docs(wiki): catch-up sweep — five pages lagging the log
Build & push images / images (push) Successful in 2m52s
CI / check (push) Successful in 43s

rongta-printer still named the cashino driver id (→ escpos + migration
0023 note); tariff-time-tiers listed the composer price preview as
deferred (→ delivered by the lab fee breakdown); tariff.md lab section
gained the breakdown + composer increment-guard paragraph; i18n.md now
records the "25 Qer 14:30" date standard + never-toLocaleString-for-
dates rule; fleet-deployment-komodo gained the park-lab stack + tier
table (the park-lab addition had also slipped the log — both fixed).

Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
2026-07-07 13:08:55 +02:00
parent 3a85483e6c
commit 5287be5278
6 changed files with 57 additions and 6 deletions
+13 -1
View File
@@ -201,7 +201,19 @@ The admin authors the rate card at runtime — no hand-seeding:
- Ships **blank** — until a version is published, `GET /api/tariff` returns `active: null` and the
pay station returns `409 no active tariff`. Verified end to end (publish → pay station prices).
### Tariff Lab (simulator, as-built 2026-06-20; drafts redesign 2026-07-05)
### Tariff Lab (simulator, as-built 2026-06-20; drafts redesign 2026-07-05; fee breakdown 2026-07-06)
> **Fee breakdown ("how is this sum produced").** The lab's Outcome panel lists the fee's LINE
> ITEMS: banded same-price increment runs (time window · N × unit · tier-card name), window-package
> occurrences, stepped day totals (top-tier repeat flagged), daily-cap clamps as NEGATIVE
> adjustments, entry grace, plus a rounding note (raw min → billed min at the increment). Produced
> by `explainFee` in `@parking/shared` — the SAME computeFee walk with a trace collector, so
> Σ items ≡ the amount by construction (golden V1 regression unchanged). `/api/tariff/simulate`
> returns it as `breakdown` (null when settled). Also the composer grew INCREMENT-UNIT guards
> (2026-07-06): price labels state the real unit live ("Çmimi / orë" at 60, "Çmimi / N min"
> otherwise), an amber warning fires when increment ≠ 60, and each ladder/flat price shows its
> "= X / orë" equivalence — closing the 60→10 ×6-prices trap; example defaults are
> currency-scaled (ALL: 200/100, not the euro-scale 2.00/1.00).
The tariff engine is a **pure function of time**, but you could previously only *exercise* it by
waiting (the only clock the booth reads is the real wall-clock). The **Tariff Lab** closes that gap: