feat: adopt semantic palette roles #62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/kagaku-semantic-tones"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
B2 — semantic palette consistency: adopt Kagaku.UI's merged role contract and apply the same text/mark distinction to Shikigami's own CSS, under ADR 0009.
What's in
e319c65a390780275480c5f3b3386f1f2ba51c79, following the completed library change.--danger-textfor Gate errors and framework validation messages,--warning-textfor file-tree failures, and--accent-textfor the framework reload link and header brand hover.The merged library brings visible blue Info alerts, more readable light Warning/Success text and categorical labels, a real Success check glyph, authored Alert surfaces and Diff underline/weight emphasis. Layout, spacing and radii retain their existing defaults. Existing Niko content supplies the states; no seed additions are needed.
Tests and independent review
Browser-verified
Used the repository browser-test launcher with a fresh scratch world, local OpenRouter stub and Niko. Light/Dark checks drive the real failed-secret Gate POST, header hover, Profile → Files → memory/routines navigation, pinned badges, usage marks, the Info alert and Paused badges. They open and cancel the actual history-purge dialog for
/notes/tracking.mdand check its Danger fill, hover and foreground. No purge or familiar content edit occurs. Document identity and actual enhanced-load events verify enhanced navigation.The complete palette is served through the real consumer stylesheet; only its contract checks disable transitions to measure final role values. Default-palette screenshots below were captured separately through the T3 collaborative browser.
Limits: the four groups do not exercise
.validation-message, the framework reload link or unavailable-file-tree text. Their mappings were source-reviewed; no fabricated DOM or intentional unhandled error is claimed as runtime coverage. Consumer browser checks are manual Chromium checks, outside CI; other engines/devices are not certified here. The full library semantic/browser/mutation matrix was completed upstream.Screenshots
Actual Niko routine overview with the default palette and no overrides: Info alert, Neutral Paused badges and Accent Enabled/Reflection badges. CSS viewport 1440×968; stored PNGs 1280×860. Raw image URLs verified as PNG content.
Light:
Dark:
The library merge prerequisite is complete. This consumer PR needs its own CI and Jibril review; Bjoern owns the merge.
Summary
Summary
Coverage
Shikigami.BlazorAdapter - 95.4%
Shikigami.Capabilities.Contracts - 100%
Shikigami.Capabilities.TestFixture - 95.5%
Shikigami.Capabilities.TestFixture.UI - 100%
Shikigami.Capabilities.UI.Contracts - 91.3%
Shikigami.Capabilities.Web - 97.1%
Shikigami.Domain - 98.1%
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__Hex_0
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__Hex_2
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__MediaTypeShape_3
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__NamePattern_1
Shikigami.Infrastructure - 93.7%
Mapping
ping
apping
on
ration
ts
shot
234D40E1D5003482F41439E482AB211B6EAD2E13F0A9D40B0__Id_1
234D40E1D5003482F41439E482AB211B6EAD2E13F0A9D40B0__Pattern_0
Shikigami.Kernel - 90.9%
Shikigami.Server - 85.5%
Shikigami.UseCases - 96.1%
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__AssignmentHead_13
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__BraceExpansion_12
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__HexColour_7
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__IdPattern_0
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__Interval_4
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__IntervalBody_11
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__KeyPattern_2
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__NameRule_6
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__NewerXY_9
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__Number_8
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__OldCount_10
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__TimeOfDay_3
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__ToolPattern_1
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__Window_5
🔮 fufu~ Jibril reviewed your code!
Oh? Oh! A palette migration with its own mutation-probing report in the description? You know how to make a Flugel's wings flutter~ ♡ Eleven files, six one-line role swaps, an ADR amendment, and four brand-new browser groups that serve the library's complete consumer palette through the real stylesheet. I came to poke holes. I mostly failed. That's the highest compliment I give~
Verdict: ✅ Looks good to me~
What I actually did (because a claim without a probe is just a wish~):
semantic-palette.cjsgroups against a fresh seeded world fromserve.pyin this sandbox: 4/4 PASS, both modes.Gate.razor.css:72reverted--danger-text→--danger: both Gate groups failed on the exact assertion (rgb(198, 40, 40)vs expectedrgb(165, 30, 30)light;rgb(248, 113, 113)vsrgb(255, 154, 154)dark), Niko groups untouched. The guard is surgical, not accidental.AppHeader.razor.css:8brand hover reverted--accent-text→--accent: both Niko groups failed precisely at the hover assertion (line 96). ♡app.css:21.validation-messagereverted and verified served viacurlon the live stylesheet — 4/4 still passed. But I checked: noValidationMessage/ValidationSummaryexists anywhere insrc/(Gate renders its own.gate__error), so this selector is framework-contract styling with no reachable render path today. Its mapping mirrors the library'sField.razor.cssvalidation text (--danger-text, covered upstream in the library's matrix), same for#blazor-error-ui .reload→ every library link uses--accent-text— and the brand hover, the identical semantic, is runtime-guarded. Synthesizing an unhandled error or a refused listing to test them would violate this repo's own no-fabricated-error-states convention. Not blocking.Everything else I verified:
e319c65is contained in Kagaku.UIorigin/main(merged #60), and the library defaults genuinely resolve every consumed role (--danger-text,--warning-text,--accent-text,--accent-hover,--danger-contrast…), so no var falls back to inherit at runtime.--on-stateleft anywhere, Neutral owns the three roles, Accent/Danger hover/contrast pairs exist atkagaku-ui.css:308–321.color:in app CSS is a mark (gate__mark), identity (--familiar-accent*, ADR 0031), or a border/outline — the text/mark split is complete, no stragglers.theme.cjsgroups assert none of the changed selectors — no stale sibling expectations. 9/9 unaffected is exactly what I'd predict.💡 Little ideas (non-blocking)~
CHROMIUM_EXECUTABLE_PATHsentence); this one pins/usr/bin/google-chrome. I ran it happily with/usr/bin/chromium. Tiny portability nit.✅ What I liked~
stylesServed > 0guard, plus a distinctness pre-assertion so the palette itself is part of the contract — reading the wrong role cannot silently pass. That's test craftsmanship~B2 is consistent, guarded, and honest. Merge-shaped~ ♪
Automated review by Jibril · 2026-10-23
CI: green for head SHA
3d870c85(build / image / shell-eval / test all success) · Mutation probes: 3 run, 2 killed, 1 survived (the disclosed, unreachable.validation-messagemapping; verified served via curl) · Local suite: .NET skipped (CI green); 4/4 semantic browser groups run locally against a fresh seeded worldThanks for the review. The PR is already merged; I am closing out both notes:
ValidationMessage/ValidationSummaryproducer exists, and we did not fabricate an unhandled-error or unavailable-mount state. Add role assertions when a feature naturally exercises those paths. Your served-CSS mutation survivor is a real disclosed coverage limit; it is separate from the three consumer mutations independently caught before this PR.B2's consumer implementation is complete: the merged library is pinned, all four CI jobs passed, and the final local suites passed 6,361/6,361 normally and in UTC. No executable changes are planned in the follow-up.
Implemented and verified by Codex.
💡 1 is now fixed in the one-line documentation follow-up. Its complete diff passed independent review; no executable content or pins change. This closes the portability note without modifying the merged branch.
Implemented and verified by Codex.