editor: experiments QA panel (P0 of experiments plan)

New Experiments section in the rail: lists tracking experiment rules
(status, traffic, arms, targeting), shows this session's assignment via
evaluate-experiments, per-arm analytics with winner/significance, a QA
arm override (sets the storefront variant cookie), and a two-step
pause/resume kill-switch. Admin reads degrade when the tracking gate
refuses; eligibility always works. Mock tracking endpoints + harness
tests.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
This commit is contained in:
mats committed 2026-11-07 12:00:37 +01:00
1 parent 40b33f89a4
commit 922562e1c2
6 files changed
+325 -1

No files matched your search

+14
View File
@@ -255,6 +255,20 @@ input.cms-map__key { padding-top: 6px; }
.cms-noderow:active { cursor: grabbing; }
.cms-noderow__main { flex: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; white-space: nowrap; }
.cms-pad { padding: 10px 12px 4px; }
.cms-sectoggle { background: none; border: 0; padding: 0; font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
.cms-sectoggle:hover { color: var(--cms-accent); }
/* experiments QA panel */
.cms-explist { list-style: none; margin: 8px 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.cms-exp { border: 1px solid var(--cms-line); border-radius: 10px; padding: 8px 10px; display: flex; flex-direction: column; gap: 4px; }
.cms-exp__head { display: flex; align-items: center; gap: 8px; justify-content: space-between; }
.cms-exp__head strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cms-pill.is-off { border-color: #a33a4a; color: #ff8a8a; }
.cms-exp__meta { font-size: 12px; }
.cms-exp__assign { font-size: 12px; }
.cms-exp__actions { display: flex; align-items: center; gap: 8px; justify-content: space-between; margin-top: 2px; }
.cms-exp__actions .cms-input { max-width: 150px; }
.cms-exp__actions .cms-ico.is-on { border-color: #a33a4a; color: #ff8a8a; }
.cms-hint { font-size: 11.5px; margin-top: 6px; }
.cms-outline { list-style: none; margin: 0; padding: 4px; overflow: auto; }
.cms-outline li button { display: flex; align-items: center; gap: 8px; width: 100%; background: none; border: 0; border-radius: 6px; padding: 4px 8px; text-align: left; overflow: hidden; white-space: nowrap; }