Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2830 commits
Select commit Hold shift + click to select a range
4f04b0f
test(ui): bulk migrate positive source-status disclosures
atulmgupta Oct 16, 2026
42e0abf
fix(i18n): exercise real locale providers and separate vehicle status…
atulmgupta Oct 16, 2026
3815607
fix(notifications): keep unresolved provider counts unknown
atulmgupta Oct 16, 2026
a788dfe
Remove unused freshness localization keys and update icons for offlin…
atulmgupta Oct 16, 2026
97874ea
wip: handoff from Codex (unverified, in progress)
atulmgupta Oct 16, 2026
a743865
feat(ui): complete extended icon-action sweep (row 13)
atulmgupta Oct 17, 2026
4588e34
feat(ui): restructure Map overview hero into one surface (row 14)
atulmgupta Oct 17, 2026
3dd19cf
feat(ui): trip replay layout fixes (row 15)
atulmgupta Oct 17, 2026
c50b384
feat(ui): dashboard widget shell overflow, padding and resize (row 16)
atulmgupta Oct 17, 2026
5088a2c
wip(ui): row 17 layout-collapse fixes and route guard (closeout pending)
atulmgupta Oct 17, 2026
07076a6
feat(ui): row 17 closeout - accept first sweep, guard artifact dir, g…
atulmgupta Oct 17, 2026
a168c21
fix(ui): open request 5 real regressions - services retry, integer ms…
atulmgupta Oct 17, 2026
36f84bc
test(ownership): repair group 19 - migrate TariffLab card-face assert…
atulmgupta Oct 17, 2026
52b3ace
test(driving): repair group 20 - migrate DriveScore disclosure/unavai…
atulmgupta Oct 17, 2026
dae0336
test(maps): repair group 22 - migrate navigation disclosure/context a…
atulmgupta Oct 17, 2026
e499412
test(climate): repair group 22 - migrate Refresh icon-only queries (7…
atulmgupta Oct 17, 2026
4667c21
test(battery): repair group 23 - migrate cycle/pack disclosure assert…
atulmgupta Oct 17, 2026
c93b52b
test(web): repair group 24 - queued singleton migrations (185/185)
atulmgupta Oct 17, 2026
371e1bf
test(ui): repair group 25 - migrate FreshnessDot suite to icon-only c…
atulmgupta Oct 17, 2026
7945c8d
test(science): repair group 26 - migrate ScienceLabPage disclosure as…
atulmgupta Oct 17, 2026
9f930bf
docs(ui): row-7 route gallery - 554 JPEGs, 277 routes x 1280/375, 0 g…
atulmgupta Oct 17, 2026
f0a5e74
test(ui): workflow stage 1 - bulk-pattern assessment, ClimateModerniz…
atulmgupta Oct 17, 2026
b47eda7
test(admin): stage-2 folder repairs (66 resolved)
atulmgupta Oct 17, 2026
1b94d34
test(dashboard): stage-2 folder repairs (114 resolved)
atulmgupta Oct 17, 2026
1d5a309
test(charging): stage-2 folder repairs (41 resolved)
atulmgupta Oct 17, 2026
49d2ba6
test(analytics): stage-2 folder repairs (23 resolved)
atulmgupta Oct 17, 2026
c76355d
docs(ui): record workflow stage 2+3 folder integration (244 resolved,…
atulmgupta Oct 17, 2026
916ab7a
test(resale-vault): stage-2 wave-2 folder repairs (26 resolved)
atulmgupta Oct 17, 2026
e479122
test(fleet-ops): stage-2 wave-2 folder repairs (24 resolved)
atulmgupta Oct 17, 2026
823a9fc
test(service-intelligence): stage-2 wave-2 folder repairs (23 resolved)
atulmgupta Oct 17, 2026
8d0fab6
test(trips): stage-2 wave-2 folder repairs (23 resolved)
atulmgupta Oct 17, 2026
724b825
test(home-energy): stage-2 wave-2 folder repairs (32 resolved)
atulmgupta Oct 17, 2026
75fc38f
test(automations): stage-2 wave-2 folder repairs (29 resolved)
atulmgupta Oct 17, 2026
cb4be20
test(diagnostics): stage-2 wave-2 folder repairs (37 resolved)
atulmgupta Oct 17, 2026
35ed1f5
test(settings): stage-2 wave-2 folder repairs (103 resolved)
atulmgupta Oct 17, 2026
92b33ed
test(vehicles): stage-2 wave-2 folder repairs (222 resolved)
atulmgupta Oct 17, 2026
c9acff6
test(notifications): stage-2 wave-2 folder repairs (134 resolved)
atulmgupta Oct 17, 2026
60e14b9
test(ownership): stage-2 wave-2 folder repairs (88 resolved)
atulmgupta Oct 17, 2026
f73d907
test(advanced-intelligence): stage-2 wave-2 folder repairs (111 resol…
atulmgupta Oct 17, 2026
dbca7e9
test(system): stage-2 wave-2 folder repairs (76 resolved)
atulmgupta Oct 17, 2026
4c85289
test(telemetry): stage-2 wave-2 folder repairs (146 resolved)
atulmgupta Oct 17, 2026
99a4ca7
test(battery): stage-2 wave-2 folder repairs (171 resolved)
atulmgupta Oct 17, 2026
90ade96
test(driving): stage-2 wave-2 folder repairs (219 resolved)
atulmgupta Oct 17, 2026
a680828
docs(ui): record wave-2 integration (1464 resolved, cumulative 2276) …
atulmgupta Oct 17, 2026
4888db5
docs(ui): post-wave2 full suite 55246/1700 (-1463)
atulmgupta Oct 17, 2026
3f25542
fix(backend): resolve lint findings without relaxing architecture rules
atulmgupta Oct 17, 2026
289184c
feat(maps): row 19 /live one-map two-mode merge + shared style-switch…
atulmgupta Oct 17, 2026
58d81f9
docs: rows 5/6 assessment + wave-3 kickoff (16 folders, 1211 actionab…
atulmgupta Oct 17, 2026
5795fad
wave3 power-user test repair
atulmgupta Oct 17, 2026
4afbe30
wave3 benchmarks test repair
atulmgupta Oct 17, 2026
e1bbc13
wave3 explore test repair
atulmgupta Oct 17, 2026
aec12f3
wave3 action-center test repair
atulmgupta Oct 17, 2026
53cb339
wave3 dashcam test repair
atulmgupta Oct 17, 2026
7e5895a
wave3 intelligence-packs test repair
atulmgupta Oct 17, 2026
08e1469
wave3 exports test repair
atulmgupta Oct 17, 2026
7504641
wave3 onboarding test repair
atulmgupta Oct 17, 2026
245e808
wave3 sharing test repair
atulmgupta Oct 17, 2026
ec26ae5
wave3 diagnostics test repair
atulmgupta Oct 17, 2026
1385973
wave3 dashboard test repair
atulmgupta Oct 17, 2026
987a327
wave3 maps test repair
atulmgupta Oct 17, 2026
4bb8c92
wave3 charging test repair
atulmgupta Oct 17, 2026
db72104
wave3 admin test repair
atulmgupta Oct 17, 2026
7c13084
wave3 system test repair
atulmgupta Oct 17, 2026
7f89731
test(ui): main-agent remainder - migrate 14 UI-caused fails, document…
atulmgupta Oct 17, 2026
34051d8
wave3 analytics test repair
atulmgupta Oct 17, 2026
bca2df7
docs: wave-3 closeout 16/16 (726 resolved, cumulative 3002)
atulmgupta Oct 17, 2026
a9a8de7
fix(i18n): regenerate required keys and report trio contract conflicts
atulmgupta Oct 18, 2026
e98cd95
fix(i18n): retain approved wording and recover missing English keys
atulmgupta Oct 18, 2026
6f207cd
test(i18n): checkpoint 90 translation-verified source contracts
atulmgupta Oct 18, 2026
0de3ba8
test(maps): migrate MapTileLayer suite to container-marker contract (…
atulmgupta Oct 18, 2026
8c2a57a
docs: wave-4 kickoff (4 partial folders, 392 fails)
atulmgupta Oct 18, 2026
b51fa65
fix(i18n): recover plural forms and align typographic defaults
atulmgupta Oct 18, 2026
25af126
fix(i18n): recover bounded dynamic defaults and verify producer check…
atulmgupta Oct 18, 2026
f44c30e
wave4 analytics test repair
atulmgupta Oct 18, 2026
499a185
test(i18n): checkpoint reviewed catalog and 139 verified producers
atulmgupta Oct 18, 2026
8ac1692
docs: wave-4 analytics closeout + reboot resume (cumulative 3011)
atulmgupta Oct 18, 2026
ce9c23b
wave4 dashboard test repair
atulmgupta Oct 18, 2026
2809bbc
wave4 dashboard: house touch-target class on 5 IconButtons
atulmgupta Oct 18, 2026
eaa5cd8
wave4 charging test repair
atulmgupta Oct 18, 2026
abbe267
fix(i18n): finish recovered defaults and verify six producer checkpoints
atulmgupta Oct 18, 2026
e615556
fix(i18n): verify final producer domains and checkpoint catalog
atulmgupta Oct 18, 2026
1b83dea
wave4 admin test repair
atulmgupta Oct 18, 2026
b6ffb54
docs: wave-4 closeout 4/4 (392 resolved, cumulative 3394)
atulmgupta Oct 18, 2026
0f455be
test(i18n): checkpoint verified combined producer contracts
atulmgupta Oct 18, 2026
33778c1
test(chore): row-7 exit fixes - drop 9 unused test imports, sr-only a…
atulmgupta Oct 18, 2026
ec304ba
docs: rows 5/6 closeout, E-suite 56374/583, row 7 pass 1
atulmgupta Oct 18, 2026
92541a1
docs(row7): guard sweep 277x4 green, gallery refresh, exit handoff
atulmgupta Oct 18, 2026
e512fc5
merge ui/i18n-trio: i18n trio 7672/0 + catalog alignment
atulmgupta Oct 18, 2026
4dc7407
merge-followup(trio): LF-normalize 4 checkpointed files, re-pin Dashb…
atulmgupta Oct 18, 2026
0a1cfa5
docs(sidenav): record original navigation and implementation plan
atulmgupta Oct 18, 2026
dbb81c8
docs(row7): refresh admin-flags gallery pair post-trio-merge
atulmgupta Oct 18, 2026
e15963e
feat(sidenav): add responsive icon rail panels and persisted navigation
atulmgupta Oct 18, 2026
9321183
wave5a charging trio-copy mop-up (25/25, folder 2064/2064)
atulmgupta Oct 18, 2026
420999c
fix(sidenav): finish focus persistence and responsive panel review
atulmgupta Oct 18, 2026
ccf7d55
fix(sidenav): close overlays from rail focus and outside clicks
atulmgupta Oct 18, 2026
a096653
wave5b driving trio-copy mop-up (23/23; TripReplay 3 pre-existing blo…
atulmgupta Oct 18, 2026
0b20b97
fix(sidenav): preserve group controls while filtering pages
atulmgupta Oct 18, 2026
5421d53
fix(sidenav): align accessibility primitives and route scroll behavior
atulmgupta Oct 18, 2026
a8d4618
wave5c system trio-copy mop-up (34: 32 fixed + 2 proven flakes untouc…
atulmgupta Oct 18, 2026
939aaa5
wave5d dashadmin trio-copy mop-up (29/29)
atulmgupta Oct 18, 2026
2cf61b4
docs: trio-merge record + wave 5 progress
atulmgupta Oct 18, 2026
64c248b
fix(sidenav): classify filter reset and pin committed source bytes
atulmgupta Oct 18, 2026
887511e
docs(row7): final suite G 56877/80, closeout totals
atulmgupta Oct 18, 2026
dce8f14
fix(sidenav): final step 7 fixes, LF-normalized fingerprints, screens…
atulmgupta Oct 18, 2026
f6150b0
merge ui/sidenav-redesign: responsive icon rail + persisted navigation
atulmgupta Oct 18, 2026
d16f9b9
docs: follow-ups plan skeleton
atulmgupta Oct 18, 2026
7e76253
docs(sidenav): refresh e2e evidence screenshots on merged tree
atulmgupta Oct 18, 2026
5e5af42
docs: follow-ups baseline 56831/168
atulmgupta Oct 18, 2026
f90a1f7
security(web): sharp 0.35.4 -> 0.35.5 (HIGH librsvg)
atulmgupta Oct 18, 2026
e9fb048
security(web): source-map-js 1.2.1 -> 1.2.2 (HIGH event-loop DoS)
atulmgupta Oct 18, 2026
37376ca
security(web): pin handlebars 4.7.10 via overrides (CRITICAL injection)
atulmgupta Oct 18, 2026
87bd48c
security(web): serialize-javascript 7.1.1 -> 7.1.2 (LOW); record tail…
atulmgupta Oct 18, 2026
17145de
security(docs): source-map-js + dompurify bumps (HIGH fixed); mermaid…
atulmgupta Oct 18, 2026
7749c93
security(mobile): overrides clear all 7 vulns (tar/sharp/uuid)
atulmgupta Oct 18, 2026
ad274a4
security(desktop): electron 44 + builder 26.15.3, all 19 vulns cleared
atulmgupta Oct 18, 2026
de6e642
security(go): toolchain 1.27.2 + x/net 0.60.0, 0 affecting vulns
atulmgupta Oct 18, 2026
48c9c47
docs: step 1 security closeout
atulmgupta Oct 18, 2026
1bd9e5f
fix(post-redesign-followups): 2a zero-rate drive cost uses recorded c…
atulmgupta Oct 18, 2026
1775b57
fix(post-redesign-followups): 2b skip prior-period comparison for All…
atulmgupta Oct 18, 2026
6cb2234
fix(post-redesign-followups): 2c missing data shows unknown, never zero
atulmgupta Oct 18, 2026
5ee0715
fix(post-redesign-followups): 2d clamp trip replay source age at zero
atulmgupta Oct 18, 2026
399c585
fix(post-redesign-followups): 2e no charge recommendation without pri…
atulmgupta Oct 18, 2026
5bf3638
fix(post-redesign-followups): 2f floor sub-\ currency at 2 decimals
atulmgupta Oct 18, 2026
2e7c065
Step 3: shared ticker isolates dashboard re-renders to age labels
atulmgupta Oct 18, 2026
153bf19
Docs: record step 3 completion in followups plan + progress log
atulmgupta Oct 18, 2026
4d23694
Step 4: pin worker TZ in JourneyAssurance departureZone test
atulmgupta Oct 18, 2026
82a5320
Docs: record step 4 completion in followups plan + progress log
atulmgupta Oct 18, 2026
8ee78b7
Docs: record step 5 inventory + work plan
atulmgupta Oct 18, 2026
c6a26b0
fix(step5e): keep lib-sanitized charge limit in ChargeAdvisorPage ove…
atulmgupta Oct 18, 2026
23e4741
Step 5b: migrate layout + tab-bar tests to the redesigned sidenav con…
atulmgupta Oct 18, 2026
a3856e0
Docs: record step 5 B+E integration
atulmgupta Oct 18, 2026
38dc639
step5h: fix 15 pre-existing failures + harden ChargingForensics flake…
atulmgupta Oct 18, 2026
ac98aa7
Re-pin i18n checkpoints for helix.tools.weeklyDigest key (generator)
atulmgupta Oct 18, 2026
897e05d
Step 5a: migrate CommandDeck tests to sidenav redesign contract
atulmgupta Oct 18, 2026
ba57eea
Step 5f: retry 8 blocked telemetry/trip-replay failures (6 fixed, 2 o…
atulmgupta Oct 18, 2026
5ec32bc
fix(step5d-shell-lib): resolve 7 of 8 shell/lib failures
atulmgupta Oct 18, 2026
e263b6c
Step 5g: fix 30 pre-existing hook test failures across 12 files
atulmgupta Oct 18, 2026
9afe9f4
fix(i18n): step5c trio-class copy-owner 3 + final-four 1 via blessed …
atulmgupta Oct 18, 2026
5e78b0d
Re-pin copy-owner + final-four checkpoints for weeklyDigest/last6h ke…
atulmgupta Oct 18, 2026
e8151ea
Docs: record step 5 full integration + decision list
atulmgupta Oct 18, 2026
660e268
Harden TeslaPhysicsPage flake: warm lazy section chunks in beforeAll
atulmgupta Oct 18, 2026
ad1e981
Step 6 fix batch: announcer plurals, session-toast namespace alignmen…
atulmgupta Oct 18, 2026
54e3315
Step 6 fix batch 2: as-02, privacy-02, tl08, sd-12, tu09, ss-011
atulmgupta Oct 18, 2026
63a6c2b
step-6 fix batch 3: sc-f01 SmartCharge live-mode gating, ex05 exports…
atulmgupta Oct 18, 2026
b9caf3a
docs: step-6 classification complete (264 done, 12 fixed, 8 decisions)
atulmgupta Oct 18, 2026
d692840
docs: step-7 final gates + summary (57050/24, guard 12/12)
atulmgupta Oct 18, 2026
d1a3b3b
ci(security): allowlist 66 confirmed-false-positive gitleaks findings…
atulmgupta Oct 18, 2026
3c7c8e5
ci(generated): regenerate stale SLO recording/alerting/dashboard arti…
atulmgupta Oct 18, 2026
d20df1c
ci(e2e): fix test-list load errors (dupe titles, window/localStorage …
atulmgupta Oct 18, 2026
44f2a9c
ci(e2e): fix visual pre-capture failures, regenerate 49 Windows basel…
atulmgupta Oct 18, 2026
3a0d210
ci(tests): fix CI-only failures (TZ pins, tableId scan timeout, GDPR …
atulmgupta Oct 18, 2026
0102d33
ci(tests): blessed re-pin of shell-preservation tripwire (C1-C7) via …
atulmgupta Oct 18, 2026
9ef0992
ci(tests): align D1/A4/G1/F1/F2 suites to deliberate new contracts
atulmgupta Oct 18, 2026
10b8e8c
ci(tests): certify ChargeAdvisor coverage from the history calendar (…
atulmgupta Oct 18, 2026
ef72175
ci(si-gate): migrate 53 legacy unit identifiers to SI (go 43 + fe 10)
atulmgupta Oct 18, 2026
60c2e1d
ci(workflow): bump golangci-lint v2.13.2 to v2.15.0 for go1.27 export…
atulmgupta Oct 18, 2026
e86a58e
perf(startup): lazy-load commandRegistry behind palette via commandSh…
atulmgupta Oct 18, 2026
fab4cab
docs(ci): record perf startup-diet fix and CI run 39161392364
atulmgupta Oct 18, 2026
08a970b
fix(lighthouse): width-matched sidenav Suspense fallback kills 0.19 C…
atulmgupta Oct 18, 2026
20dc21d
chore(i18n): re-checkpoint producer contracts for SI modernization + …
atulmgupta Oct 18, 2026
9aaff79
perf(ci): pre-filter nested-surfaces audit so shard 7 fits the 30s bu…
atulmgupta Oct 18, 2026
8c224d3
fix(codeql): explicit first-only regex in palette malformed-fixture b…
atulmgupta Oct 18, 2026
892dac2
docs(ci): record shard/codeql/CLS fixes and e2e triage
atulmgupta Oct 18, 2026
72625d1
fix(e2e): optimizer mock wire shape, themed tab-bar pin, focusable Ta…
atulmgupta Oct 18, 2026
dff4cdb
fix(e2e): migrate mobile-nav smoke journey to the redesigned deck
atulmgupta Oct 18, 2026
6294544
docs(ci): record e2e layer2 + smoke migration
atulmgupta Oct 18, 2026
36e11cb
fix(i18n): sentence-case Display mode fallback and spec to match cat…
atulmgupta Oct 18, 2026
3e856c2
fix(web): viewport-aware sidenav fresh default (tablet modal no longe…
atulmgupta Oct 18, 2026
fbe9e1e
fix(e2e): haspopup dialog hint, TH-proof row locators, Expand regex, …
atulmgupta Oct 18, 2026
7db8d41
fix(codeql): indexOf-slice first-array wrapper (byte-identical, no re…
atulmgupta Oct 18, 2026
2596f29
test(visual): regenerate charging baselines for rendered optimizer co…
atulmgupta Oct 18, 2026
1f84906
docs(ci): record e2e layer3 and visual baselines
atulmgupta Oct 18, 2026
6b25d6b
docs(ci): record Lighthouse 4-6 green, notice-shift values and blocke…
atulmgupta Oct 18, 2026
ca4a4ef
docs(ci): record full-suite green and CI wait state
atulmgupta Oct 18, 2026
7b4dc20
docs: record isolated sidenav polish plan
atulmgupta Oct 18, 2026
0c87f4b
feat(ui): polish sidenav density icons and phone navigation
atulmgupta Oct 18, 2026
d3ddeb2
test(ui): extend sidenav polish Edge and touch coverage
atulmgupta Oct 18, 2026
41a8824
fix(ui): preserve full phone tab icon and touch sizes
atulmgupta Oct 18, 2026
2ae4526
docs: record passing sidenav polish gates
atulmgupta Oct 18, 2026
23c23fc
docs(ui): publish sidenav polish screenshots and final verification
atulmgupta Oct 18, 2026
4329f42
test(e2e): fix responsive shard r2 failures and contracts setup drift
atulmgupta Oct 18, 2026
9569ffc
Merge origin/ui/sidenav-polish into ui/simplification
atulmgupta Oct 18, 2026
2be8c33
test(e2e): adapt collection-navigation to sidenav polish (no rail too…
atulmgupta Oct 18, 2026
fd112f2
docs: record sidenav-polish merge and gates
atulmgupta Oct 18, 2026
29f464c
fix(ui): keep wrapped button icons beside their labels
atulmgupta Oct 19, 2026
6c3f124
fix(ui): expand every navigation group with fresh persisted state
atulmgupta Oct 19, 2026
840e7fc
fix(ui): make Customize a ghost header action
atulmgupta Oct 19, 2026
b7ac616
fix(i18n): reuse catalog labels for quick command buttons
atulmgupta Oct 19, 2026
5240b2f
fix(ui): make repair case actions visible and resolution reliable
atulmgupta Oct 19, 2026
4bca6a2
fix(ui): keep Glance command loading icons inline
atulmgupta Oct 19, 2026
2dae755
fix(ui): surface repair transition conflicts without automatic replay
atulmgupta Oct 19, 2026
0c8590c
test(ui): verify batch fixes in Edge and preserve screenshot ownership
atulmgupta Oct 19, 2026
08c3d2d
docs(ui): publish batch fix verification and light dark screenshots
atulmgupta Oct 19, 2026
ba6fcfc
test(e2e): contracts tail batch - annotations fixture, query windows,…
atulmgupta Oct 19, 2026
0cf4c58
Merge remote-tracking branch 'origin/ui/ui-fixes-2' into ui/simplific…
atulmgupta Oct 19, 2026
5e41040
Re-pin i18n trio checkpoints after ui-fixes-2 merge (+2 leaves each, …
atulmgupta Oct 19, 2026
fed40c0
Record ui-fixes-2 merge + gates in plan and progress log
atulmgupta Oct 19, 2026
1930088
test(visual): regenerate 49 Windows baselines for sidenav redesign+po…
atulmgupta Oct 19, 2026
71e2caf
fix(e2e): migrate nav spec to always-expanded defaults; re-observe co…
atulmgupta Oct 19, 2026
1297899
fix(ui): distinguish Notifications inbox from pinned Alerts bell
atulmgupta Oct 19, 2026
7c93442
feat(ui): add selection-only multipart navigation icon motion
atulmgupta Oct 19, 2026
d09ca7b
fix(ui): clear nav playback when reduced motion changes
atulmgupta Oct 19, 2026
95921fb
perf(ui): defer animated section icons with the navigation panel
atulmgupta Oct 19, 2026
4aa2bf4
test(ui): verify navigation motion and capture light and dark states
atulmgupta Oct 19, 2026
cc81b44
fix(e2e): migrate vehicle-systems contracts (drawer text, withhold, q…
atulmgupta Oct 19, 2026
7a2ebe3
test(e2e): charging 91/91 + telemetry 84/84 contracts green (drawer c…
atulmgupta Oct 19, 2026
74c6def
test(e2e): driving 56/56 + vehicle-systems 100/100 + ownership 58/58 …
atulmgupta Oct 19, 2026
e7e342f
fix(e2e): widget-adoption green - tooltip overflow, guard/config, cat…
atulmgupta Oct 19, 2026
e347807
test(e2e): actions 34/34 + notifications 56/56 green; settings/trips …
atulmgupta Oct 19, 2026
03346e2
test(e2e): specialized 57/57 + advanced-intelligence 54/54 green; fix…
atulmgupta Oct 19, 2026
935eb84
Merge origin/ui/nav-motion into ui/simplification
atulmgupta Oct 19, 2026
7c43d5a
chore(i18n): re-pin shell preservation after nav-motion merge
atulmgupta Oct 19, 2026
034a4ec
test(e2e): migrate vehicles contracts to withhold + drawer-text rule …
atulmgupta Oct 19, 2026
7683373
fix(responsive): keep route-guard cards >=200px, stop perchar wrap
atulmgupta Oct 19, 2026
3bc550f
docs(e2e): refresh nav-motion + sidenav-polish evidence frames
atulmgupta Oct 19, 2026
849acc6
test(e2e): migrate science contracts to withhold + drawer-text rule (…
atulmgupta Oct 19, 2026
2b88cf8
wip: handoff - intelligence-packs contracts migration unfinished
atulmgupta Oct 19, 2026
3955a4b
docs: CI handoff for PR #198 continuation
atulmgupta Oct 19, 2026
5d594e0
fix(ui): preserve source recovery and keep fleet actions reachable
atulmgupta Oct 19, 2026
433c9ae
test(visual): refresh reviewed nav-motion Windows baselines
atulmgupta Oct 19, 2026
6f838a5
test(e2e): preserve operations contracts across drawer and table rede…
atulmgupta Oct 19, 2026
84c9da1
fix(layout): retain mobile workspace scope controls with typed route …
atulmgupta Oct 19, 2026
2ad07fe
fix(layout): distinguish query arrays from single optional-status sou…
atulmgupta Oct 19, 2026
ee8e1d1
fix(driving): distinguish unavailable pricing from a loaded unset rate
atulmgupta Oct 19, 2026
035395b
test(frontend): preserve chart export contracts through shared popove…
atulmgupta Oct 19, 2026
c658ec4
test(frontend): follow mobile scope, source disclosure and real repla…
atulmgupta Oct 19, 2026
f43b848
test(visual): refresh Windows mobile workspace header baselines
atulmgupta Oct 19, 2026
87ec274
test(browser): retain scoped evidence and responsive disclosure contr…
atulmgupta Oct 19, 2026
2ee49e9
fix(fsd): avoid perpetual busy sections for an empty fleet
atulmgupta Oct 19, 2026
3d54ce2
fix(dashboard): retain reachable actions and native editing geometry
atulmgupta Oct 19, 2026
b194c47
test(dashboard): make source-bound age geometry portable across runne…
atulmgupta Oct 19, 2026
07f9006
test(ui): preserve responsive source evidence through shared controls
atulmgupta Oct 19, 2026
28aa0e8
docs(ci): record verified responsive roots and unresolved overflow ev…
atulmgupta Oct 19, 2026
fb524ef
fix(layout): preserve intrinsic heading width beside dense desktop ac…
atulmgupta Oct 19, 2026
26cc83c
test(e2e): dispose polling shells before removing API mocks
atulmgupta Oct 19, 2026
b61aba8
docs(ci): record hermetic polling and intrinsic title regression evid…
atulmgupta Oct 19, 2026
f807382
test(e2e): review intrinsic-title visual and capture client-box overf…
atulmgupta Oct 19, 2026
2fb6bbf
docs(ci): record exact visual correction and unresolved native browse…
atulmgupta Oct 19, 2026
36a3b1f
feat!: designate workspace simplification as a major release
atulmgupta Oct 20, 2026
95300fd
fix(ui): position tooltip layout boxes inside scroll boundaries
atulmgupta Oct 20, 2026
c9da342
docs(ci): record native tooltip overflow fix and intact proxy blocker
atulmgupta Oct 20, 2026
5c4b514
test(ui): preserve physical tooltip placement across dependent contracts
atulmgupta Oct 20, 2026
8cdb873
docs(ci): record exact local red-green shard and proxy wrapper evidence
atulmgupta Oct 20, 2026
759339b
chore: remove transient agent and browser session artifacts
atulmgupta Oct 20, 2026
26b841d
fix(api): reject request starts from unloading documents
atulmgupta Oct 20, 2026
d94bcf4
fix(ui): retain scaled settings headings and visible pagination targets
atulmgupta Oct 20, 2026
bbd3bda
ci: distribute browser quality gates across balanced isolated shards
atulmgupta Oct 20, 2026
4ec8135
test(ci): pin complete expanded browser shard contracts
atulmgupta Oct 20, 2026
f0c6385
test(ci): align lint-owned workflow contracts with complete shard mat…
atulmgupta Oct 20, 2026
42b8a20
docs: close out verified PR 198 CI repairs
atulmgupta Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
8 changes: 8 additions & 0 deletions .github/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,14 @@ DECISION:
deployments must use one telemetry/FSM owner plus API-only reader pods, or
remain single-pod for telemetry/FSM.

Implementation note:
- App constructs one L1 + optional L2 LiveSignalStore before optional
telemetry initialization and passes it explicitly to RouterOptions.
- API-only reader pods use that boundary without subscriber/FSM startup.
The telemetry owner reuses the same L1 and boundary; its existing
Redis warmup, signal_log hydration, and startup ordering remain intact.
- This reader-layer lifetime does not provide active-active FSM ownership.

Rollback/degradation:
- `LIVE_SIGNAL_STORE_MODE=hybrid|local` is the runtime rollback switch.
- `hybrid` enables Redis-backed distributed live reads.
Expand Down
17 changes: 12 additions & 5 deletions .github/scripts/ci_workflows.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ test('existing aggregate names reject any required job that did not succeed', ()
['contract', 'browser-build', 'chromium-tests']],
[browser.jobs, 'visual', 'Deliberate visual snapshot gate (Windows baseline)',
['contract', 'browser-build', 'visual-tests']],
[browser.jobs, 'cross-browser', '${{ matrix.browser }} critical smoke',
['contract', 'browser-build', 'cross-browser-tests']],
]) {
const job = jobs[id];
assert.equal(job.name, name);
Expand All @@ -60,11 +62,16 @@ test('independent validation and Docker builds start together; final gate checks
test('browser shards reuse one build and retain isolated performance and Windows baselines', () => {
const shards = browser.jobs['chromium-tests'].strategy.matrix.include;
assert.deepEqual(shards.filter(shard => shard.suite === 'quality').map(shard => shard.shard),
Array.from({ length: 16 }, (_, i) => `${i + 1}/16`));
for (const suite of ['a11y', 'performance']) {
assert.deepEqual(shards.filter(shard => shard.suite === suite).map(shard => shard.shard), ['1/1']);
Array.from({ length: 64 }, (_, i) => `${i + 1}/64`));
for (const [suite, count] of [['a11y', 13], ['performance', 1]]) {
assert.deepEqual(shards.filter(shard => shard.suite === suite).map(shard => shard.shard),
Array.from({ length: count }, (_, i) => `${i + 1}/${count}`));
}
for (const id of ['chromium-tests', 'visual-tests', 'cross-browser']) {
assert.deepEqual(browser.jobs['cross-browser-tests'].strategy.matrix,
{ browser: ['firefox', 'webkit'], shard: [1, 2, 3] });
assert.match(commands(browser.jobs['cross-browser-tests']), /--shard=\$\{\{ matrix\.shard \}\}\/3/);
assert.match(commands(browser.jobs['visual-tests']), /--shard=\$\{\{ matrix\.shard \}\}\/64 --workers=2/);
for (const id of ['chromium-tests', 'visual-tests', 'cross-browser-tests']) {
const job = browser.jobs[id];
assert.equal(job.needs, 'browser-build');
assert.equal(job.strategy['fail-fast'], false);
Expand All @@ -73,7 +80,7 @@ test('browser shards reuse one build and retain isolated performance and Windows
}
assert.equal(browser.jobs['visual-tests']['runs-on'], 'windows-latest');
assert.deepEqual(browser.jobs['visual-tests'].strategy.matrix.shard,
Array.from({ length: 10 }, (_, i) => i + 1));
Array.from({ length: 64 }, (_, i) => i + 1));
assert.equal(Object.values(browser.jobs).filter(job => commands(job).includes('npm run e2e:build')).length, 1);
});

Expand Down
1 change: 1 addition & 0 deletions .github/skills/audit-violations/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ The audit covers these categories:

## Interpreting Results

- Exit **0** means every check passed; exit **1** means reported violations or TypeScript errors. Other nonzero statuses indicate execution failures.
- **0 violations** = file is clean
- Each violation shows: file, line number, rule ID, matched code
- Files inside `components/ui/`, `components/charts/`, `components/maps/` are EXCLUDED from raw HTML and library import checks (they are the shared components)
Expand Down
7 changes: 5 additions & 2 deletions .github/skills/audit-violations/audit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ echo ""
# --- 2. Raw HTML elements ---
echo "▸ [2/7] Raw HTML elements..."
# Exclude components/ directories (they ARE the shared components)
MATCHES=$(grep -rnP '<button\b|<input\b|<textarea\b|<select\b|<table\b' "$TARGET" --include="*.tsx" "${GREP_EXCLUDES[@]}" 2>/dev/null | grep -v 'components/ui/' | grep -v 'components/charts/' | grep -v 'components/maps/' | grep -v 'components/forms/' | grep -vP ':[0-9]+:\s*(//|/\*|\*)' || true)
MATCHES=$(grep -rHnP '<button\b|<input\b|<textarea\b|<select\b|<table\b' "$TARGET" --include="*.tsx" "${GREP_EXCLUDES[@]}" 2>/dev/null | grep -vE 'components[/\\](ui|charts|maps|forms)[/\\]' | grep -vP ':[0-9]+:\s*(//|/\*|\*)' || true)
COUNT=$(printf '%s\n' "$MATCHES" | grep -c . || true)
if [ "$COUNT" -gt 0 ]; then
echo " ❌ $COUNT violation(s):"
Expand All @@ -61,7 +61,7 @@ echo ""

# --- 3. Direct library imports ---
echo "▸ [3/7] Direct library imports..."
MATCHES=$(grep -rn "from 'recharts'\|from 'react-leaflet'\|from 'framer-motion'" "$TARGET" --include="*.tsx" --include="*.ts" "${GREP_EXCLUDES[@]}" 2>/dev/null | grep -v 'components/charts/index' | grep -v 'components/maps/index' | grep -v 'components/motion/' || true)
MATCHES=$(grep -rHn "from 'recharts'\|from 'react-leaflet'\|from 'framer-motion'" "$TARGET" --include="*.tsx" --include="*.ts" "${GREP_EXCLUDES[@]}" 2>/dev/null | grep -vE 'components[/\\](charts|maps|motion)[/\\]' || true)
COUNT=$(printf '%s\n' "$MATCHES" | grep -c . || true)
if [ "$COUNT" -gt 0 ]; then
echo " ❌ $COUNT violation(s):"
Expand Down Expand Up @@ -136,3 +136,6 @@ else
echo " ❌ AUDIT FAILED — $TOTAL total violation(s)"
fi
echo "═══════════════════════════════════════════════════════════"
if [ "$TOTAL" -gt 0 ]; then
exit 1
fi
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ jobs:
- name: Lint
if: matrix.check == 'lint'
run: |
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.13.2
# v2.13.2 cannot read go1.27 export data (v5 > max v4); v2.15.0 can.
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.15.0
golangci-lint run ./...
- name: Architecture tests and metrics
if: matrix.check == 'architecture'
Expand Down
141 changes: 116 additions & 25 deletions .github/workflows/frontend-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,23 +99,86 @@ jobs:
fail-fast: false
matrix:
include:
- {name: responsive-1, suite: quality, shard: '1/16'}
- {name: responsive-2, suite: quality, shard: '2/16'}
- {name: responsive-3, suite: quality, shard: '3/16'}
- {name: responsive-4, suite: quality, shard: '4/16'}
- {name: responsive-5, suite: quality, shard: '5/16'}
- {name: responsive-6, suite: quality, shard: '6/16'}
- {name: responsive-7, suite: quality, shard: '7/16'}
- {name: responsive-8, suite: quality, shard: '8/16'}
- {name: responsive-9, suite: quality, shard: '9/16'}
- {name: responsive-10, suite: quality, shard: '10/16'}
- {name: responsive-11, suite: quality, shard: '11/16'}
- {name: responsive-12, suite: quality, shard: '12/16'}
- {name: responsive-13, suite: quality, shard: '13/16'}
- {name: responsive-14, suite: quality, shard: '14/16'}
- {name: responsive-15, suite: quality, shard: '15/16'}
- {name: responsive-16, suite: quality, shard: '16/16'}
- {name: accessibility, suite: a11y, shard: '1/1'}
# Keep every partition required; the aggregate checks the entire matrix.
- {name: responsive-1, suite: quality, shard: '1/64'}
- {name: responsive-2, suite: quality, shard: '2/64'}
- {name: responsive-3, suite: quality, shard: '3/64'}
- {name: responsive-4, suite: quality, shard: '4/64'}
- {name: responsive-5, suite: quality, shard: '5/64'}
- {name: responsive-6, suite: quality, shard: '6/64'}
- {name: responsive-7, suite: quality, shard: '7/64'}
- {name: responsive-8, suite: quality, shard: '8/64'}
- {name: responsive-9, suite: quality, shard: '9/64'}
- {name: responsive-10, suite: quality, shard: '10/64'}
- {name: responsive-11, suite: quality, shard: '11/64'}
- {name: responsive-12, suite: quality, shard: '12/64'}
- {name: responsive-13, suite: quality, shard: '13/64'}
- {name: responsive-14, suite: quality, shard: '14/64'}
- {name: responsive-15, suite: quality, shard: '15/64'}
- {name: responsive-16, suite: quality, shard: '16/64'}
- {name: responsive-17, suite: quality, shard: '17/64'}
- {name: responsive-18, suite: quality, shard: '18/64'}
- {name: responsive-19, suite: quality, shard: '19/64'}
- {name: responsive-20, suite: quality, shard: '20/64'}
- {name: responsive-21, suite: quality, shard: '21/64'}
- {name: responsive-22, suite: quality, shard: '22/64'}
- {name: responsive-23, suite: quality, shard: '23/64'}
- {name: responsive-24, suite: quality, shard: '24/64'}
- {name: responsive-25, suite: quality, shard: '25/64'}
- {name: responsive-26, suite: quality, shard: '26/64'}
- {name: responsive-27, suite: quality, shard: '27/64'}
- {name: responsive-28, suite: quality, shard: '28/64'}
- {name: responsive-29, suite: quality, shard: '29/64'}
- {name: responsive-30, suite: quality, shard: '30/64'}
- {name: responsive-31, suite: quality, shard: '31/64'}
- {name: responsive-32, suite: quality, shard: '32/64'}
- {name: responsive-33, suite: quality, shard: '33/64'}
- {name: responsive-34, suite: quality, shard: '34/64'}
- {name: responsive-35, suite: quality, shard: '35/64'}
- {name: responsive-36, suite: quality, shard: '36/64'}
- {name: responsive-37, suite: quality, shard: '37/64'}
- {name: responsive-38, suite: quality, shard: '38/64'}
- {name: responsive-39, suite: quality, shard: '39/64'}
- {name: responsive-40, suite: quality, shard: '40/64'}
- {name: responsive-41, suite: quality, shard: '41/64'}
- {name: responsive-42, suite: quality, shard: '42/64'}
- {name: responsive-43, suite: quality, shard: '43/64'}
- {name: responsive-44, suite: quality, shard: '44/64'}
- {name: responsive-45, suite: quality, shard: '45/64'}
- {name: responsive-46, suite: quality, shard: '46/64'}
- {name: responsive-47, suite: quality, shard: '47/64'}
- {name: responsive-48, suite: quality, shard: '48/64'}
- {name: responsive-49, suite: quality, shard: '49/64'}
- {name: responsive-50, suite: quality, shard: '50/64'}
- {name: responsive-51, suite: quality, shard: '51/64'}
- {name: responsive-52, suite: quality, shard: '52/64'}
- {name: responsive-53, suite: quality, shard: '53/64'}
- {name: responsive-54, suite: quality, shard: '54/64'}
- {name: responsive-55, suite: quality, shard: '55/64'}
- {name: responsive-56, suite: quality, shard: '56/64'}
- {name: responsive-57, suite: quality, shard: '57/64'}
- {name: responsive-58, suite: quality, shard: '58/64'}
- {name: responsive-59, suite: quality, shard: '59/64'}
- {name: responsive-60, suite: quality, shard: '60/64'}
- {name: responsive-61, suite: quality, shard: '61/64'}
- {name: responsive-62, suite: quality, shard: '62/64'}
- {name: responsive-63, suite: quality, shard: '63/64'}
- {name: responsive-64, suite: quality, shard: '64/64'}
# Thirteen independent audits; don't create 51 empty runners.
- {name: accessibility, suite: a11y, shard: '1/13'}
- {name: accessibility-2, suite: a11y, shard: '2/13'}
- {name: accessibility-3, suite: a11y, shard: '3/13'}
- {name: accessibility-4, suite: a11y, shard: '4/13'}
- {name: accessibility-5, suite: a11y, shard: '5/13'}
- {name: accessibility-6, suite: a11y, shard: '6/13'}
- {name: accessibility-7, suite: a11y, shard: '7/13'}
- {name: accessibility-8, suite: a11y, shard: '8/13'}
- {name: accessibility-9, suite: a11y, shard: '9/13'}
- {name: accessibility-10, suite: a11y, shard: '10/13'}
- {name: accessibility-11, suite: a11y, shard: '11/13'}
- {name: accessibility-12, suite: a11y, shard: '12/13'}
- {name: accessibility-13, suite: a11y, shard: '13/13'}
# One explicit serial group: retain its performance measurement isolation.
- {name: performance, suite: performance, shard: '1/1'}
steps:
- uses: actions/checkout@v7
Expand All @@ -134,7 +197,8 @@ jobs:
env:
E2E_MOCKS: '1'
E2E_REUSE_BUILD: '1'
run: npm run e2e:${{ matrix.suite }} -- --shard=${{ matrix.shard }}
GUARD_RUN_ID: ${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.name }}
run: npm run e2e:${{ matrix.suite }} -- --shard=${{ matrix.shard }} ${{ matrix.suite == 'a11y' && '--fully-parallel' || '' }}
- name: Upload Chromium failure evidence
if: always()
uses: actions/upload-artifact@v7.0.1
Expand All @@ -144,6 +208,7 @@ jobs:
retention-days: 14
path: |
web/test-results/
web/test-results-guard/
web/playwright-report/

chromium-quality:
Expand All @@ -161,14 +226,15 @@ jobs:
run: |
python3 -c 'import json, os; results = json.loads(os.environ["RESULTS"]); print(results); assert all(job["result"] == "success" for job in results.values()), "A required browser job failed, was cancelled, or was skipped"'

cross-browser:
name: ${{ matrix.browser }} critical smoke
cross-browser-tests:
name: ${{ matrix.browser }} critical smoke (${{ matrix.shard }}/3)
runs-on: ubuntu-latest
needs: browser-build
strategy:
fail-fast: false
matrix:
browser: [firefox, webkit]
shard: [1, 2, 3]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v5
Expand All @@ -186,26 +252,51 @@ jobs:
env:
E2E_MOCKS: '1'
E2E_REUSE_BUILD: '1'
run: npm run e2e -- --project=${{ matrix.browser }}-smoke
run: npm run e2e -- --project=${{ matrix.browser }}-smoke --shard=${{ matrix.shard }}/3
- name: Upload engine failure evidence
if: always()
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ matrix.browser }}-smoke-report
name: ${{ matrix.browser }}-smoke-report-${{ matrix.shard }}
if-no-files-found: ignore
retention-days: 14
path: |
web/test-results/
web/playwright-report/

cross-browser:
# Preserve existing engine check names; neither can pass with a missing shard.
name: ${{ matrix.browser }} critical smoke
if: always()
needs: [contract, browser-build, cross-browser-tests]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
browser: [firefox, webkit]
defaults:
run:
working-directory: .
steps:
- name: Require every engine smoke shard
env:
RESULTS: ${{ toJSON(needs) }}
run: |
python3 -c 'import json, os; results = json.loads(os.environ["RESULTS"]); print(results); assert all(job["result"] == "success" for job in results.values()), "A required engine job failed, was cancelled, or was skipped"'

visual-tests:
name: Windows visual snapshots (${{ matrix.shard }}/10)
name: Windows visual snapshots (${{ matrix.shard }}/64)
runs-on: windows-latest
needs: browser-build
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
shard: [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v5
Expand All @@ -223,7 +314,7 @@ jobs:
env:
E2E_MOCKS: '1'
E2E_REUSE_BUILD: '1'
run: npm run e2e:visual -- --shard=${{ matrix.shard }}/10 --workers=2
run: npm run e2e:visual -- --shard=${{ matrix.shard }}/64 --workers=2
- name: Upload visual diffs
if: always()
uses: actions/upload-artifact@v7.0.1
Expand Down
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ docs/.vitepress/dist/
test-results/
web/test-results/
web/test-results-pwa-assets/
web/test-results-guard/
web/playwright-report/
web/blob-report/
web/e2e/.auth-state.json
Expand All @@ -75,6 +76,10 @@ coverage.txt
coverage-by-package.txt
web/coverage/
*.test.log
.agent-status/
qa-screenshots/
logs/
report.*.json

PROMPT_COMMANDS.txt

Expand Down Expand Up @@ -122,3 +127,23 @@ REDESIGN-NOTES.md
# transient commit-message files used by R-phase recipe
commit_msg.txt
commit_msg*.txt

state/

.runner/

# Worktree-local side navigation preview dependency cache.
/.sidenav-vite-cache/

# Local agent source copies and browser-session captures.
/.agents/artifacts/
/.agents/atomic-*/
/.agents/state.md
/.copilot-artifacts/
/files/atomic-*/
/files/page-source-cycle*-operationalbrief-*/
/files/parallel-statistics-page-live/
/.playwright-mcp/
/web/.playwright-mcp/
/web/precision-admin-analytics-*.log
/web/precision-admin-analytics-bounded.json
39 changes: 39 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,42 @@ condition = "AND"
regexTarget = "line"
paths = ['''(^|/)web/src/components/ui/__tests__/MaskedValue\.test\.tsx$''']
regexes = ['''sk_live_abcdef1234''']

[[allowlists]]
description = "Generated frontend audit evidence (SHA fingerprints, command transcripts, prose) — docs only, no maintained source or credentials."
paths = ['''(^|/)docs/frontend-audits/''']

[[allowlists]]
description = "Design-contract doc: file fingerprint and prose mentioning keys"
condition = "AND"
regexTarget = "line"
paths = ['''(^|/)docs/frontend-design-contract\.md$''']
regexes = ['''`[0-9a-f]{64}`''', '''keys, invalidation/broadcast and toast''']

[[allowlists]]
description = "Migration queue rows: phase-token list names and tokens test reference"
condition = "AND"
regexTarget = "line"
paths = ['''(^|/)migration-queue\.md$''']
regexes = ['''phase3-font-inheritance-tokens,phase3-''', '''phase3-side-panel-geometry-tokens''']

[[allowlists]]
description = "Work-items queue: task prose mentioning keys"
condition = "AND"
regexTarget = "line"
paths = ['''(^|/)work-items\.json$''']
regexes = ['''Continue the existing modernization, not a new page migration''']

[[allowlists]]
description = "Trio registry palette guard compares a route key name, not a credential"
condition = "AND"
regexTarget = "line"
paths = ['''(^|/)web/scripts/i18n-trio-registries\.mjs$''']
regexes = ['''key === 'route\.i18nKey'''']

[[allowlists]]
description = "Trio producer test pins per-file SHA fingerprints (frozen evidence, not secrets)"
condition = "AND"
regexTarget = "line"
paths = ['''(^|/)web/src/i18n/excluded-feature-owned-producers\.test\.ts$''']
regexes = ['''\["web/src/[^"]+", "[0-9a-f]{64}"\]''']
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ COPY --from=go-builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=go-builder /bin/teslasync /usr/local/bin/teslasync
COPY migrations /migrations
COPY docs/public/openapi.yaml /docs/public/openapi.yaml
COPY slo/catalog.yaml /slo/catalog.yaml
COPY --from=web-builder /app/dist /web/dist

USER nonroot:nonroot
Expand Down
Loading
Loading