Skip to content

feat(settings): name Glass profile switches and announce roster errors - #1968

Draft
Cuarroc wants to merge 2 commits into
mainfrom
codex/kr09g2-profiles
Draft

Cuarroc wants to merge 2 commits into
mainfrom
codex/kr09g2-profiles

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Die Profil-Schalter tragen jetzt den jeweiligen Profilnamen und verwenden den vorhandenen Glass-Baustein.
Profil- und Budgetfehler werden getrennt als Warnmeldungen ausgegeben, während die bestehende Speicherlogik erhalten bleibt.
Der Draft bleibt bis zur Klärung des globalen Design-Nachweises, dem Plan-Nachtrag und den unabhängigen Reviews offen.

Report

Plan-ID: KR-09g-2-PROFILES-LEAF

  • Assignment: ticket W3-01b: drain sessions before database maintenance #335; execution owner srv-kr09g2-profiles; branch codex/kr09g2-profiles.
  • Fixed source base: 86401bd81ec62e5e684903f4d29db18730dfbd86; actual checkout matched before editing. Candidate: 679839e29feebdb97ef4073773a626483731d80a; RED test commit: 35f0cca46e5d2eeb4679f6251c8a2c8521679d50.
  • Own native header observed on 2026-10-27: OpenAI gpt-6.1-sol, effort high; native bounded source-handover goal created and read. Parent KR-09g and prerequisite KR-09a′ remain OPEN. No parent, native, installed/runtime or UAT completion is claimed.
  • RAW: 192 added+deleted lines against the merge base, including all tests (135 test + 44 panel + 13 local text). 15 lines reserved for the later own PLAN row: projected total 207/300. ROW_PENDING: no PLAN write during the Header serial window; same product branch requires the later row before RootReady.

Changes and public boundaries:

  • P1: existing src/design/forms/SwitchField, visible labels Profil <name> aktiv, stable profile-id input id/name, native checked/disabled, boolean callback carrying the original profile object. No render callback.
  • P2: roster names/ids/off state retained; profile and budget errors remain exact and separate, each with role="alert"; empty roster still says Keine Profile vorhanden. Profile and budget busy identities remain independent.
  • P3: ProfileBudgetFields import and all six props unchanged; budget state, parsing, blank/null/zero and persistence remain in the parent. No native seam, backend, budget policy, routing, shared design or stylesheet edit.
  • P4–P5: new public test imports real SettingsView, real roster and real budget child; navigates Agent-Kategorien with literal Alpha/Beta fixtures. Only Tauri core/event/app/updater boundaries are mocked. It rejects a real IPC toggle, checks rollback and separate alerts, exact write args, no read on refusal, subsequent authoritative roster readback and a pending profile alone locked. A public leaf-props test checks original object identity, boolean callbacks, focusability, unchanged budget bindings and honest empty state.
  • P6: only the existing consumed leaf is delivered; parent settings/routing, category/learning and full KR-09g/KR-09a′ acceptance remain open. Existing parent/budget tests were preserved byte-for-byte.

Evidence (2026-10-27; guarded foreground execution using assigned slot):

Command / observation Exit / result
bash scripts/sync.sh start 0; own clean branch and exact base
npm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5 0; resource check passed; quota/model checked separately from own native output
npm run test:unit -- src/components/settings/ProfilesPanel.public.test.tsx on unchanged BASE product code 1, intended compiling RED: missing named switches and separate alerts after the public refusal path
npm run test:unit -- src/components/settings/ProfilesPanel.public.test.tsx src/components/SettingsView.test.tsx src/components/SettingsView.categories.test.tsx src/components/settings/ProfileBudgetFields.public.test.tsx 0; 4 files, 25 tests passed
npm run typecheck 0
bash scripts/ci/red-first.sh 0 on actual candidate; both exact test names green at HEAD
git push -u origin codex/kr09g2-profiles with unmodified normal hook executing bash scripts/ci/gates.sh lane prepush 0; full own prepush lane, 307 seconds; Rust 2331 passed with 7 existing skips
git ls-remote origin codex/kr09g2-profiles 0; exact remote 679839e29feebdb97ef4073773a626483731d80a confirmed
git status --short --branch 0; clean own worktree
Finite file-based candidate fixture capture, real components/CSS and installed Chromium 0; light/dark screenshots personally inspected, 800×760; two switches/two alerts, Alpha profile busy and Beta budget busy; no preview service
Scope/foreign-byte/RAW checks and git diff --check 0; exactly the three assigned source files, 192 RAW; parent, budget child, existing tests and PLAN unchanged
bash scripts/ci/secret-scan.sh before each successful commit 0; no leaks; ordinary commit hooks also passed

Design evidence and unresolved acceptance:

npm run design:gate -- --out <private-evidence>/design-before ran before source edits: exit 1. The same command with design-after ran on the candidate source: exit 1. No baseline or production mock was edited; no --update was used.

Raw metric, sum over all cases Before After Delta
Slack 231 237 +6
Depth > 2 2647 2674 +27
Empty tabs 132 132 0
Eyebrows 376 376 0
1fr grids 23 25 +2

36 baseline ratchet findings before, 42 after. Every changing case is an MCP/notification tab capture outside this leaf; all other case counts, including classic settings, are identical. Personally inspected MCP/0/1440/light images show MCP selected before but General selected in the after image labelled MCP. Thus the global comparison captured different tabs. The required global nonincrease criterion is unproven and remains blocking; this report does not waive it or claim a green design gate. A proposed rerun was guard-denied and did not execute; no favorable result was selected. Root/Chief must repair or re-cut this out-of-scope capture issue. Private raw JSON, screenshots and delta were handed over.

Architecture drift: no seam/new backend method or allowlist change.

Review: ausstehend (Stufe B). Root commissions two different eligible non-OpenAI families under rule 5/E1. No author Ready, review-ok, review launch or merge.

NICHT ABGEDECKT:

  • Linux does not compile/run #[cfg(windows)] tests (run_in_pty, npm_shim, ConPTY, DPAPI) or Windows clippy arms. The Windows lane runs in the merge queue.
  • The prepush lane does not run the Linux lane's Browser-Smoke, frontend build or workflow gates. External services (updater endpoint, OmniRoute, mirror) are not verified by these gates; release verification is separate. Rust's 7 existing skipped tests were not enabled; no skip/retry/timeout/assertion was added or weakened here.
  • The isolated pictures are fixture evidence only: native execution, actual keyboard activation, assistive technology, UAT, performance, installation/effectiveness and full Glass acceptance are unproven.
  • Global design nonincrease remains unproven because tab captures differ; existing design failures are retained, not hidden.
  • Own PLAN metadata is ROW_PENDING; no claim about complete impact coverage or absence of all competing assignments. The lage-jetzt mirror was unavailable; live Git/GitHub state was consulted.
  • Independent reviews, Root acceptance and parent KR-09g/KR-09a′ completion remain open.

Root review record (2026-10-27, source head 679839e)

Candidate source head 679839e29feebdb97ef4073773a626483731d80a (192 RAW, 3 files, no seam). Tier B; author family OpenAI (Codex gpt-6.1-sol).

ID Source Model (observed) Verdict
R1968-K Kimi CLI 2.3.2 on the PC, 22:06:33–22:09:52Z, exit 0 kimi-code/k3.1-pro (Moonshot) REQUEST CHANGES (1 medium)
R1968-G .pa/review_transport.py, Ollama, exit 0 glm-5.2:cloud (Zhipu; self-label differs, noted) APPROVE (none; 14 checks)
ID Sev Finding Root disposition
R1968-T1 medium (claimed) ProfilesPanel.public.test.tsx:81-83: the accessible-name and alert assertions use expect.soft, which Kimi reads as weakened assertions. Rejected (with reason). In Vitest (^4.1.11), a failed expect.soft still marks the test failed. It only keeps collecting the remaining failures instead of stopping at the first one, so the pass/fail strength is unchanged and the assertions stay exact (toBe identity, literal toEqual alert list). That makes it neither a weakened assertion nor a C+ case. The pattern already exists elsewhere in src. Effective severity is low, with no change required.

Kimi's checks confirm the rest: the callback receives the original profile and the native boolean (ProfilesPanel.tsx:62); only the busy profile is disabled (:61); literal Alpha/Beta toggle expectations. GLM additionally confirms: SwitchField from src/design, stable ids, separate profile/budget alerts, rollback on IPC error, ProfileBudgetFields props unchanged.

Design gate (Root rule of 21:58Z): the classic settings cases are identical BASE→HEAD. The only changing cases are MCP/notification tab captures outside this leaf, i.e. the known harness error (DESIGN-GATE-MCP-CAPTURE). Design: accepted.

Source accepted by Root. Before ready, still required: its own PLAN row in this PR, checked as a Tier-C delta. review-ok is then bound to the final head.

Cuarroc and others added 2 commits October 27, 2026 22:39
Test-First: src/components/settings/ProfilesPanel.public.test.tsx::names profile activation controls and announces roster errors
Test-First: src/components/settings/ProfilesPanel.public.test.tsx::preserves original profile identity and boolean callbacks with an honest empty roster
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Plan-ID: KR-09g-2-PROFILES-LEAF

Test-First: src/components/settings/ProfilesPanel.public.test.tsx::names profile activation controls and announces roster errors
Test-First: src/components/settings/ProfilesPanel.public.test.tsx::preserves original profile identity and boolean callbacks with an honest empty roster
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant