Skip to content

Unified /sk-cli-design output for the notion CLI surface#794

Draft
schickling-assistant wants to merge 6 commits into
mainfrom
schickling-assistant/2026-06-17-notion-md-edit-output
Draft

Unified /sk-cli-design output for the notion CLI surface#794
schickling-assistant wants to merge 6 commits into
mainfrom
schickling-assistant/2026-06-17-notion-md-edit-output

Conversation

@schickling-assistant

Copy link
Copy Markdown
Collaborator

Status: in progress (draft). Slice A (the shared kit) + OTEL diagnosability landed; edit/put/status/plan/sync wiring in flight. Do not review for completeness yet.

Problem

notion-md's CLI output is non-idiomatic and inconsistent:

  • JSON-by-default: edit/put/status/plan/sync hardcode logJson (pretty JSON.stringifystdout) with no --output flag. A user in a terminal gets a wall of JSON, not a scannable result — the exact inversion /sk-cli-design forbids (JSON should be an explicit mode).
  • Raw stderr writes: edit's sync progress is hand-written via process.stderr.write, bypassing the tui-react render seam — so it ignores NO_UNICODE/mode detection and hand-rolls a TTY gate the seam already provides.
  • Design fiction: the full /sk-cli-design vocabulary (CRITICAL/WARNING badges, fix:/skip:, · summary, status symbols) already exists in notion-md/src/stories/ but no live command renders through it.
  • Drift is invisible-ish: an edit conflict exits 0 (it's the result) yet renders as a flat lowercase note: with no badge and no actionable fix: for the recoverable .conflict.md.
  • Separately, the post-editor push was hard to diagnose in traces (its several pulls emitted byte-identical spans).

Goal

One unified output system the whole notion CLI surface renders through:

  • A shared /sk-cli-design kit in @overeng/tui-react (badges, problem-items, summary line, status glyphs, stage-list, CommandOutput assembly), consumed by notion-md (and available to notion-cli/megarepo).
  • Every write command becomes the app/schema/view triple notion-cli already uses: one tagged state per command drives the human view AND --output json from a single source.
  • --output auto|log|ci|json|ndjson, default auto (human view; JSON only via --output json).
  • Drift (conflict / auto-merge) renders as a WARNING badge + actionable fix:.
  • cat stays a pure-stdout Markdown pipe (excluded).

Decisions

  • Kit lives in @overeng/tui-react (not a new package or notion-md-local): co-located with TaskList/useSymbols/the OutputMode seam; the only option that unifies notion-cli + notion-md.
  • Renderer = animated TaskList via run (not runResult, which always JSON-serializes to stdout), behind the existing ProgressReporter Context.Tag — the engine stays render-agnostic (R45). A bridge Layer turns engine reportStage*/reportNote emits into tui.dispatch.
  • Mode-exclusive stdout: under run, the human view and the json payload both go to stdout, switched by mode (a pipe → json/log, never animated). The old "progress-on-stderr + json-on-stdout simultaneously" model is replaced.
  • Five-tag per-command state (Running | Success | Warning | Conflict | Error) for precise exit-code mapping.
  • --output default flips to auto — a breaking change to current default stdout (JSON → human view). Accepted deliberately (the feature only just merged as notion-md: $EDITOR-based editing — VRS + implementation epic #786).
  • The redundant status↔observe pull-collapse is kept out of this PR (purely presentational scope); tracked under notion-md: single-page save/push issues ~4 redundant full page pulls (edit-save latency) #788.

Verification

Per-slice: package-local typecheck + tests + lint, and (per /sk-cli-design) tui-stories stories with ALL_OUTPUT_TABS + headless tui-stories render … --output json|log|ci assertions. Landed so far:

  • Slice A (kit): 17 unit tests (ci/log/ascii-fallback rendering pinned); full @overeng/tui-react suite 242 pass; tsc/oxlint clean.
  • OTEL diagnosability: notion-md 198 pass; capture regression test pins five distinct pull purposes + the editor-session span.

(Full end-to-end verification + the pre-flip checklist will be completed before this is flipped ready.)

Complexity

The kit + per-command apps add structure, but it removes a parallel mechanism: today progress (raw stderr) and result (logJson) are two ad-hoc paths; the refactor collapses progress + human result + json payload into one state schema per command. Net: fewer bespoke output code paths, and the /sk-cli-design vocabulary stops being duplicated between stories and (absent) runtime.

Concerns

  • Breaking default output: notion-md edit/status/plan/sync default stdout changes from pretty-JSON to a human view; machine callers must pass --output json.
  • The kit widens @overeng/tui-react's public surface (new components every CLI can depend on).

Follow-ups

References

Refs #786 (the merged $EDITOR-editing epic this builds on), #788.

Posted on behalf of @schickling
field value
agent_name 🏔️ cl1-ridge
agent_session_id dd0a9ae0-bba8-43ad-8c01-449bd0bdca58
agent_tool Claude Code
agent_tool_version 2.1.165
agent_runtime Claude Code 2.1.165
agent_model claude-opus-4-8
runtime_profile /nix/store/4p78dsfk8riqcgk91zzjlgraibyf1hd4-coding-agent-runtime-profile/share/coding-agents/profile.json
skills_manifest /nix/store/cly1vi1qvxfyk37gmdk4qw4j33zrfpny-agent-skills-corpus/share/agent-skills/manifest.json
worktree effect-utils/schickling-assistant/2026-06-17-notion-md-edit-output
machine dev3
tooling_profile dotfiles@e7e383b

schickling-assistant and others added 2 commits June 17, 2026 09:37
…n (trace diagnosability)

Close two tracing gaps on the `edit` push path so its latency is visible
in a trace BEFORE we fix it:

- The init/status/observe/preflight/settle `gateway.pullPage` round-trips
  emitted byte-identical `notion-md.gateway.pull-page` spans, so the
  redundant status↔observe duplicate (#788) was indistinguishable from
  the legitimate preflight/settle pulls. Add an optional `purpose?` on the
  gateway `pullPage` arg (non-edit callers default to `other`, no churn),
  surfaced as `notion_md.pull.purpose` and folded into the span label.
- Wrap the interactive editor wait in `notion-md.editor.session` so the
  previously-dark editor-exit→push boundary is a separable sibling under
  `notion-md.edit`.

Instrumentation only — additive spans/attributes, zero behavior change.
A capture regression test (editor-observability.unit.test.ts) pins the
five distinct purposes + the editor-session span. notion-md 198 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Slice A of the unified notion-CLI output refactor. Promotes the
/sk-cli-design vocabulary — currently "design fiction" living only in
notion-md's stories (a story-local `displayLines`) — into a real,
reusable kit in @overeng/tui-react that every CLI can render through.

Schema pieces (JSON-encodable SSOT for per-command state schemas):
Severity, ProblemItem (with fix:/skip:), DetailSection, StatusSymbol.
Components (all route through useSymbols/useRenderConfig, so unicode/
ascii + color honor the active OutputMode): SeverityBadge, ProblemList,
DetailSections, SummaryLine, StatusGlyph, StageList (thin wrapper over
the existing TaskList, reusing TaskItemSchema), and CommandOutput — the
assembly enforcing problems-first → CRITICAL → WARNING → separator →
content → summary with the conditional-display rules.

Pure addition — no existing command or renderer changed. 17 unit tests
(ci/log/ascii-fallback rendering pinned); full tui-react suite 242 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 17, 2026

Copy link
Copy Markdown

Storybook Previews

No storybooks were deployed.

github-actions Bot added a commit that referenced this pull request Jun 17, 2026
github-actions Bot added a commit that referenced this pull request Jun 17, 2026
@github-actions

github-actions Bot commented Jun 17, 2026

Copy link
Copy Markdown

CI Measurements

partial - advisory gate - readiness partial (17/26 enabled observations gateable) - commit 6c92fdc - protocol devenv-perf-warm-median-v2

No regressions. Comparable movement is below the semantic impact threshold; neutral rows are collapsed below.

Measurement change vs baseline chart

SVG source

nix / closures / packages

What changed? Group Probe Baseline -> current Raw change Impact Confidence
unchanged nix / closures / packages Nix sources closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Nix sources closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Nix sources closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Node / pnpm closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Node / pnpm closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Node / pnpm closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Rust closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Rust closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
unchanged nix / closures / packages Rust closure size 0 B -> 0 B +0 B / n/a n/a unknown, baseline n=17, current n=1
Unchanged / 0-impact measurements (17)

These rows had compatible baseline data, but their semantic impact rounded to 0.00x because the movement was below the configured budget, below the noise floor, or inside the robust noise band.

devenv / devenv cli

Group Probe Baseline -> current Raw change Impact Gate Evidence Why hidden
devenv / devenv cli devenv processes --help 0.018 s -> 0.018 s +0 s / 0% 0.00x yes paired n=9, 25-75% delta 0 s..0.001 s Too small to matter
devenv / devenv cli devenv tasks list 0.037 s -> 0.037 s +0 s / 0% 0.00x yes paired n=9, 25-75% delta -0.001 s..0.001 s Too small to matter

devenv / devenv shell

Group Probe Baseline -> current Raw change Impact Gate Evidence Why hidden
devenv / devenv shell Warm shell eval 1.836 s -> 1.837 s +0.001 s / 0.1% 0.00x yes paired n=5, 25-75% delta 0.001 s..0.008 s Too small to matter

devenv / genie

Group Probe Baseline -> current Raw change Impact Gate Evidence Why hidden
devenv / genie Genie check direct 5.748 s -> 5.736 s -0.012 s / -0.2% 0.00x yes paired n=5, 25-75% delta -0.198 s..0.076 s Too small to matter
devenv / genie Genie run task 1.131 s -> 1.123 s -0.008 s / -0.7% 0.00x yes paired n=5, 25-75% delta -0.014 s..0.025 s Too small to matter

devenv / quality gates

Group Probe Baseline -> current Raw change Impact Gate Evidence Why hidden
devenv / quality gates Forced check:quick 12.439 s -> 11.652 s -0.787 s / -6.3% 0.00x yes paired n=3, 25-75% delta -1.583 s..-0.597 s Unchanged
devenv / quality gates Warm cached check:quick 3.317 s -> 3.259 s -0.058 s / -1.7% 0.00x yes paired n=5, 25-75% delta -0.067 s..0.027 s Too small to matter

devenv / workspace setup

Group Probe Baseline -> current Raw change Impact Gate Evidence Why hidden
devenv / workspace setup pnpm install task 0.622 s -> 0.616 s -0.006 s / -1% 0.00x yes paired n=5, 25-75% delta -0.008 s..0.003 s Too small to matter

nix / closures / packages

Group Probe Baseline -> current Raw change Impact Gate Evidence Why hidden
nix / closures / packages Total closure size 144.4 MiB -> 144.4 MiB +60 KiB / 0% 0.00x yes noise_floor, baseline n=17, current n=1 Too small to matter
nix / closures / packages Total serialized NAR size 144.4 MiB -> 144.4 MiB +60 KiB / 0% 0.00x yes within_budget, baseline n=16, current n=1 Slightly higher, ok
nix / closures / packages Total closure size 535.8 MiB -> 535.9 MiB +48 KiB / 0% 0.00x yes noise_floor, baseline n=17, current n=1 Too small to matter
nix / closures / packages Total serialized NAR size 535.8 MiB -> 535.9 MiB +48 KiB / 0% 0.00x yes within_budget, baseline n=16, current n=1 Slightly higher, ok
nix / closures / packages Total closure size 156.3 MiB -> 156.3 MiB +9.8 KiB / 0% 0.00x yes noise_floor, baseline n=17, current n=1 Too small to matter
nix / closures / packages Total serialized NAR size 156.3 MiB -> 156.3 MiB +9.8 KiB / 0% 0.00x yes within_budget, baseline n=16, current n=1 Slightly higher, ok
nix / closures / packages Total closure path count 79 count -> 79 count +0 count / 0% 0.00x yes noise_floor, baseline n=17, current n=1 Too small to matter
nix / closures / packages Total closure path count 5 count -> 5 count +0 count / 0% 0.00x yes noise_floor, baseline n=17, current n=1 Too small to matter
nix / closures / packages Total closure path count 8 count -> 8 count +0 count / 0% 0.00x yes noise_floor, baseline n=17, current n=1 Too small to matter
Diagnostic / ungated measurements (7)

source / effect-utils

Group Probe Current Baseline Impact Gate Reason Evidence
source / effect-utils Genie runtime lines 20266 lines 19809 lines diagnostic disabled Diagnostic only diagnostic, baseline n=18, current n=67
source / effect-utils Genie CI workflow helpers lines 7418 lines 7318 lines diagnostic disabled Diagnostic only diagnostic, baseline n=18, current n=9
source / effect-utils Nix workspace tools lines 3694 lines 3632 lines diagnostic disabled Diagnostic only diagnostic, baseline n=18, current n=14
source / effect-utils Genie runtime files 67 count 66 count diagnostic disabled Diagnostic only diagnostic, baseline n=18, current n=67
source / effect-utils Genie CI workflow helpers files 9 count 9 count diagnostic disabled Diagnostic only diagnostic, baseline n=18, current n=9
source / effect-utils Nix workspace tools files 14 count 14 count diagnostic disabled Diagnostic only diagnostic, baseline n=18, current n=14

devenv / devenv shell

Group Probe Current Baseline Impact Gate Reason Evidence
devenv / devenv shell Shell eval with OTEL trace 106.467 s n/a n/a missing_baseline No baseline yet missing_baseline, baseline n=0, current n=1
All measurements
Status Gate Target Observation Dimensions Baseline Current Delta Ratio Impact
pass yes Megarepo package Total closure size bucket=total 144.4 MiB 144.4 MiB +60 KiB 0% 0.00x
pass yes Megarepo package Total serialized NAR size bucket=total
sizeKind=nar
144.4 MiB 144.4 MiB +60 KiB 0% 0.00x
pass yes Genie package Total closure size bucket=total 535.8 MiB 535.9 MiB +48 KiB 0% 0.00x
pass yes Genie package Total serialized NAR size bucket=total
sizeKind=nar
535.8 MiB 535.9 MiB +48 KiB 0% 0.00x
pass yes oxlint npm package Total closure size bucket=total 156.3 MiB 156.3 MiB +9.8 KiB 0% 0.00x
pass yes oxlint npm package Total serialized NAR size bucket=total
sizeKind=nar
156.3 MiB 156.3 MiB +9.8 KiB 0% 0.00x
pass disabled effect-utils repository Genie runtime lines scope=genie_runtime 19809 lines 20266 lines +457 lines 2.3% diagnostic
pass disabled effect-utils repository Genie CI workflow helpers lines scope=genie_ci_workflow 7318 lines 7418 lines +100 lines 1.4% diagnostic
pass disabled effect-utils repository Nix workspace tools lines scope=nix_workspace_tools 3632 lines 3694 lines +62 lines 1.7% diagnostic
pass disabled effect-utils repository Genie runtime files scope=genie_runtime 66 count 67 count +1 count 1.5% diagnostic
pass yes Dev shell Forced check:quick aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=3
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=3
phase=warm
probe=task_check_quick_forced
probeLabel=Forced check:quick
sampleCount=6
status=0
taskCacheMode=refresh
warmupCount=0
workload=forced-task-cache
12.439 s 11.652 s -0.787 s -6.3% 0.00x
pass yes Dev shell Warm cached check:quick aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=5
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=5
phase=warm
probe=task_check_quick_warm
probeLabel=Warm cached check:quick
sampleCount=11
status=0
taskCacheMode=warm
warmupCount=1
workload=cached-no-op
3.317 s 3.259 s -0.058 s -1.7% 0.00x
pass yes Dev shell Genie check direct aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=5
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=5
phase=warm
probe=genie_check_direct
probeLabel=Genie check direct
sampleCount=11
status=0
warmupCount=1
5.748 s 5.736 s -0.012 s -0.2% 0.00x
pass yes Dev shell Genie run task aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=5
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=5
phase=warm
probe=task_genie_run
probeLabel=Genie run task
sampleCount=11
status=0
warmupCount=1
1.131 s 1.123 s -0.008 s -0.7% 0.00x
pass yes Dev shell pnpm install task aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=5
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=5
phase=warm
probe=task_pnpm_install
probeLabel=pnpm install task
sampleCount=11
status=0
warmupCount=1
0.622 s 0.616 s -0.006 s -1% 0.00x
pass yes Dev shell Warm shell eval aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=5
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=5
phase=warm
probe=shell_eval_warm
probeLabel=Warm shell eval
sampleCount=11
status=0
warmupCount=1
1.836 s 1.837 s +0.001 s 0.1% 0.00x
pass yes Dev shell devenv processes --help aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=9
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=9
phase=warm
probe=processes_help
probeLabel=devenv processes --help
sampleCount=19
status=0
warmupCount=1
0.018 s 0.018 s +0 s 0% 0.00x
pass yes Dev shell devenv tasks list aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=9
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=9
phase=warm
probe=tasks_list
probeLabel=devenv tasks list
sampleCount=19
status=0
warmupCount=1
0.037 s 0.037 s +0 s 0% 0.00x
pass disabled effect-utils repository Genie CI workflow helpers files scope=genie_ci_workflow 9 count 9 count +0 count 0% diagnostic
unknown missing_baseline Genie package Nix sources closure size bucket=nix-sources 0 B 0 B +0 B n/a n/a
unknown missing_baseline Megarepo package Nix sources closure size bucket=nix-sources 0 B 0 B +0 B n/a n/a
unknown missing_baseline oxlint npm package Nix sources closure size bucket=nix-sources 0 B 0 B +0 B n/a n/a
pass disabled effect-utils repository Nix workspace tools files scope=nix_workspace_tools 14 count 14 count +0 count 0% diagnostic
unknown missing_baseline Genie package Node / pnpm closure size bucket=node 0 B 0 B +0 B n/a n/a
unknown missing_baseline Megarepo package Node / pnpm closure size bucket=node 0 B 0 B +0 B n/a n/a
unknown missing_baseline oxlint npm package Node / pnpm closure size bucket=node 0 B 0 B +0 B n/a n/a
unknown missing_baseline Genie package Rust closure size bucket=rust 0 B 0 B +0 B n/a n/a
unknown missing_baseline Megarepo package Rust closure size bucket=rust 0 B 0 B +0 B n/a n/a
unknown missing_baseline oxlint npm package Rust closure size bucket=rust 0 B 0 B +0 B n/a n/a
pass yes Genie package Total closure path count bucket=total 79 count 79 count +0 count 0% 0.00x
pass yes Megarepo package Total closure path count bucket=total 5 count 5 count +0 count 0% 0.00x
pass yes oxlint npm package Total closure path count bucket=total 8 count 8 count +0 count 0% 0.00x
missing_baseline missing_baseline Dev shell Shell eval with OTEL trace aggregation=median
devenvRev=2cf62a010000b70f15c78a72761fad7c9e6fb47a
measuredSampleCount=1
measurementProtocol=devenv-perf-warm-median-v2
otelServiceName=devenv-perf-ci
pairedOrderProtocol=balanced-seeded-alternating-v1
pairedOrderSeed=27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d
pairedSampleCount=1
phase=warm
probe=shell_eval_traced
probeLabel=Shell eval with OTEL trace
sampleCount=2
status=0
warmupCount=0
n/a 106.467 s n/a n/a n/a
Previous runs
Commit Status Gate Top changes
286f007 partial advisory Slightly higher, ok Dev shell Forced check:quick +1.23 s / 11.5%
Too small to matter Megarepo package Total closure size +60 KiB / 0%
Slightly higher, ok Megarepo package Total serialized NAR size +60 KiB / 0%
c2bac50 partial advisory Too small to matter Dev shell Warm cached check:quick -0.07 s / -2.1%
Too small to matter Dev shell Genie check direct +0.094 s / 1.6%
Too small to matter Genie package Total closure size +291.9 KiB / 0.1%
Source-of-truth JSON
{
  "schemaVersion": 1,
  "title": "CI Measurements",
  "status": "partial",
  "gate": "advisory",
  "readiness": "partial (17/26 enabled observations gateable)",
  "commit": {
    "shortSha": "6c92fdc",
    "sha": "6c92fdc5fa29cf7fa9b0d26335b9c04cf2aacdd1"
  },
  "run": {
    "id": "27694290331",
    "attempt": "1",
    "url": "https://github.com/overengineeringstudio/effect-utils/actions/runs/27694290331"
  },
  "baseline": null,
  "protocol": "devenv-perf-warm-median-v2",
  "chart": {
    "meaning": "semantic-impact",
    "zeroImpactMeaning": "no actionable PR impact after budgets, noise floor, and robust evidence checks",
    "svg": "https://raw.githubusercontent.com/overengineeringstudio/effect-utils/ci-measurement-assets/ci-measurements/pr-794/6c92fdc5fa29cf7fa9b0d26335b9c04cf2aacdd1/run-27694290331-attempt-1/ci-measurements.svg",
    "lightPng": "https://raw.githubusercontent.com/overengineeringstudio/effect-utils/ci-measurement-assets/ci-measurements/pr-794/6c92fdc5fa29cf7fa9b0d26335b9c04cf2aacdd1/run-27694290331-attempt-1/ci-measurements.png",
    "darkPng": "https://raw.githubusercontent.com/overengineeringstudio/effect-utils/ci-measurement-assets/ci-measurements/pr-794/6c92fdc5fa29cf7fa9b0d26335b9c04cf2aacdd1/run-27694290331-attempt-1/ci-measurements-dark.png"
  },
  "measurements": [
    {
      "id": "nix.closure.nar_size",
      "label": "Total closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "megarepo",
        "total",
        "closure-size",
        "nix closure"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 151364760,
      "current": 151426200,
      "delta": 61440,
      "ratio": 1.000405906896691,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10424320,
      "evidenceDeltaUpper": 10547200,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total"
      }
    },
    {
      "id": "nix.closure.serialized_nar_size",
      "label": "Total serialized NAR size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "megarepo",
        "total",
        "serialized-nar-size",
        "nix closure diagnostics"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "within_budget",
      "comparisonMode": "diagnostic",
      "unit": "bytes",
      "baseline": 151364760,
      "current": 151426200,
      "delta": 61440,
      "ratio": 1.000405906896691,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 16,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -15075036,
      "evidenceDeltaUpper": 15197916,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total",
        "sizeKind": "nar"
      }
    },
    {
      "id": "nix.closure.nar_size",
      "label": "Total closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "genie",
        "total",
        "closure-size",
        "nix closure"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 561873128,
      "current": 561922280,
      "delta": 49152,
      "ratio": 1.0000874788231553,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -11188310.56,
      "evidenceDeltaUpper": 11286614.56,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total"
      }
    },
    {
      "id": "nix.closure.serialized_nar_size",
      "label": "Total serialized NAR size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "genie",
        "total",
        "serialized-nar-size",
        "nix closure diagnostics"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "within_budget",
      "comparisonMode": "diagnostic",
      "unit": "bytes",
      "baseline": 561873128,
      "current": 561922280,
      "delta": 49152,
      "ratio": 1.0000874788231553,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 16,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -56138160.800000004,
      "evidenceDeltaUpper": 56236464.800000004,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total",
        "sizeKind": "nar"
      }
    },
    {
      "id": "nix.closure.nar_size",
      "label": "Total closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "oxlint-npm",
        "total",
        "closure-size",
        "nix closure"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 163874192,
      "current": 163884208,
      "delta": 10016,
      "ratio": 1.0000611200572693,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10475744,
      "evidenceDeltaUpper": 10495776,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total"
      }
    },
    {
      "id": "nix.closure.serialized_nar_size",
      "label": "Total serialized NAR size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "oxlint-npm",
        "total",
        "serialized-nar-size",
        "nix closure diagnostics"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "within_budget",
      "comparisonMode": "diagnostic",
      "unit": "bytes",
      "baseline": 163874192,
      "current": 163884208,
      "delta": 10016,
      "ratio": 1.0000611200572693,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 16,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -16377403.200000001,
      "evidenceDeltaUpper": 16397435.200000001,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total",
        "sizeKind": "nar"
      }
    },
    {
      "id": "source.lines",
      "label": "Genie runtime lines",
      "group": "source / effect-utils",
      "path": [
        "source",
        "effect-utils",
        "packages",
        "genie",
        "source / genie"
      ],
      "groupPath": [
        "source",
        "effect-utils"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": false,
      "gateReason": "disabled",
      "confidence": "diagnostic",
      "comparisonMode": "budget",
      "unit": "lines",
      "baseline": 19809,
      "current": 20266,
      "delta": 457,
      "ratio": 1.023070321571003,
      "semanticImpactScore": null,
      "semanticImpactKind": "diagnostic",
      "baselineSources": 18,
      "currentSamples": 67,
      "pairedSamples": 0,
      "evidenceDeltaLower": -1523.9,
      "evidenceDeltaUpper": 2437.9,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "scope": "genie_runtime"
      }
    },
    {
      "id": "source.lines",
      "label": "Genie CI workflow helpers lines",
      "group": "source / effect-utils",
      "path": [
        "source",
        "effect-utils",
        "genie",
        "ci-workflow",
        "source / ci"
      ],
      "groupPath": [
        "source",
        "effect-utils"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": false,
      "gateReason": "disabled",
      "confidence": "diagnostic",
      "comparisonMode": "budget",
      "unit": "lines",
      "baseline": 7318,
      "current": 7418,
      "delta": 100,
      "ratio": 1.0136649357748018,
      "semanticImpactScore": null,
      "semanticImpactKind": "diagnostic",
      "baselineSources": 18,
      "currentSamples": 9,
      "pairedSamples": 0,
      "evidenceDeltaLower": -631.8000000000001,
      "evidenceDeltaUpper": 831.8000000000001,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "scope": "genie_ci_workflow"
      }
    },
    {
      "id": "source.lines",
      "label": "Nix workspace tools lines",
      "group": "source / effect-utils",
      "path": [
        "source",
        "effect-utils",
        "nix",
        "workspace-tools",
        "source / nix"
      ],
      "groupPath": [
        "source",
        "effect-utils"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": false,
      "gateReason": "disabled",
      "confidence": "diagnostic",
      "comparisonMode": "budget",
      "unit": "lines",
      "baseline": 3632,
      "current": 3694,
      "delta": 62,
      "ratio": 1.0170704845814977,
      "semanticImpactScore": null,
      "semanticImpactKind": "diagnostic",
      "baselineSources": 18,
      "currentSamples": 14,
      "pairedSamples": 0,
      "evidenceDeltaLower": -301.20000000000005,
      "evidenceDeltaUpper": 425.20000000000005,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "scope": "nix_workspace_tools"
      }
    },
    {
      "id": "source.files",
      "label": "Genie runtime files",
      "group": "source / effect-utils",
      "path": [
        "source",
        "effect-utils",
        "packages",
        "genie",
        "source / genie"
      ],
      "groupPath": [
        "source",
        "effect-utils"
      ],
      "status": "pass",
      "direction": "regressed",
      "gateable": false,
      "gateReason": "disabled",
      "confidence": "diagnostic",
      "comparisonMode": "budget",
      "unit": "count",
      "baseline": 66,
      "current": 67,
      "delta": 1,
      "ratio": 1.0151515151515151,
      "semanticImpactScore": null,
      "semanticImpactKind": "diagnostic",
      "baselineSources": 18,
      "currentSamples": 67,
      "pairedSamples": 0,
      "evidenceDeltaLower": -5.6000000000000005,
      "evidenceDeltaUpper": 7.6000000000000005,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "scope": "genie_runtime"
      }
    },
    {
      "id": "task_check_quick_forced",
      "label": "Forced check:quick",
      "group": "devenv / quality gates",
      "path": [
        "devenv",
        "quality gates",
        "check:quick"
      ],
      "groupPath": [
        "devenv",
        "quality gates"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "within_budget",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 12.439,
      "current": 11.652,
      "delta": -0.7870000000000008,
      "ratio": 0.936731248492644,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 3,
      "currentSamples": 3,
      "pairedSamples": 3,
      "evidenceDeltaLower": -1.583,
      "evidenceDeltaUpper": -0.597,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "workload": "forced-task-cache",
        "taskCacheMode": "refresh",
        "probe": "task_check_quick_forced",
        "probeLabel": "Forced check:quick",
        "status": 0,
        "sampleCount": 6,
        "warmupCount": 0,
        "measuredSampleCount": 3,
        "pairedSampleCount": 3,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "task_check_quick_warm",
      "label": "Warm cached check:quick",
      "group": "devenv / quality gates",
      "path": [
        "devenv",
        "quality gates",
        "check:quick"
      ],
      "groupPath": [
        "devenv",
        "quality gates"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 3.317,
      "current": 3.259,
      "delta": -0.058000000000000274,
      "ratio": 0.9825143201688272,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 5,
      "currentSamples": 5,
      "pairedSamples": 5,
      "evidenceDeltaLower": -0.067,
      "evidenceDeltaUpper": 0.027,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "workload": "cached-no-op",
        "taskCacheMode": "warm",
        "probe": "task_check_quick_warm",
        "probeLabel": "Warm cached check:quick",
        "status": 0,
        "sampleCount": 11,
        "warmupCount": 1,
        "measuredSampleCount": 5,
        "pairedSampleCount": 5,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "genie_check_direct",
      "label": "Genie check direct",
      "group": "devenv / genie",
      "path": [
        "devenv",
        "genie"
      ],
      "groupPath": [
        "devenv",
        "genie"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 5.748,
      "current": 5.736,
      "delta": -0.012000000000000455,
      "ratio": 0.9979123173277661,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 5,
      "currentSamples": 5,
      "pairedSamples": 5,
      "evidenceDeltaLower": -0.198,
      "evidenceDeltaUpper": 0.076,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "probe": "genie_check_direct",
        "probeLabel": "Genie check direct",
        "status": 0,
        "sampleCount": 11,
        "warmupCount": 1,
        "measuredSampleCount": 5,
        "pairedSampleCount": 5,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "task_genie_run",
      "label": "Genie run task",
      "group": "devenv / genie",
      "path": [
        "devenv",
        "genie"
      ],
      "groupPath": [
        "devenv",
        "genie"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 1.131,
      "current": 1.123,
      "delta": -0.008000000000000007,
      "ratio": 0.9929266136162688,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 5,
      "currentSamples": 5,
      "pairedSamples": 5,
      "evidenceDeltaLower": -0.014,
      "evidenceDeltaUpper": 0.025,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "probe": "task_genie_run",
        "probeLabel": "Genie run task",
        "status": 0,
        "sampleCount": 11,
        "warmupCount": 1,
        "measuredSampleCount": 5,
        "pairedSampleCount": 5,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "task_pnpm_install",
      "label": "pnpm install task",
      "group": "devenv / workspace setup",
      "path": [
        "devenv",
        "workspace setup"
      ],
      "groupPath": [
        "devenv",
        "workspace setup"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 0.622,
      "current": 0.616,
      "delta": -0.006000000000000005,
      "ratio": 0.9903536977491961,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 5,
      "currentSamples": 5,
      "pairedSamples": 5,
      "evidenceDeltaLower": -0.008,
      "evidenceDeltaUpper": 0.003,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "probe": "task_pnpm_install",
        "probeLabel": "pnpm install task",
        "status": 0,
        "sampleCount": 11,
        "warmupCount": 1,
        "measuredSampleCount": 5,
        "pairedSampleCount": 5,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "shell_eval_warm",
      "label": "Warm shell eval",
      "group": "devenv / devenv shell",
      "path": [
        "devenv",
        "devenv shell"
      ],
      "groupPath": [
        "devenv",
        "devenv shell"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 1.836,
      "current": 1.837,
      "delta": 0.0009999999999998899,
      "ratio": 1.0005446623093681,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 5,
      "currentSamples": 5,
      "pairedSamples": 5,
      "evidenceDeltaLower": 0.001,
      "evidenceDeltaUpper": 0.008,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "probe": "shell_eval_warm",
        "probeLabel": "Warm shell eval",
        "status": 0,
        "sampleCount": 11,
        "warmupCount": 1,
        "measuredSampleCount": 5,
        "pairedSampleCount": 5,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "processes_help",
      "label": "devenv processes --help",
      "group": "devenv / devenv cli",
      "path": [
        "devenv",
        "devenv cli"
      ],
      "groupPath": [
        "devenv",
        "devenv cli"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 0.018,
      "current": 0.018,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 9,
      "currentSamples": 9,
      "pairedSamples": 9,
      "evidenceDeltaLower": 0,
      "evidenceDeltaUpper": 0.001,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "probe": "processes_help",
        "probeLabel": "devenv processes --help",
        "status": 0,
        "sampleCount": 19,
        "warmupCount": 1,
        "measuredSampleCount": 9,
        "pairedSampleCount": 9,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "tasks_list",
      "label": "devenv tasks list",
      "group": "devenv / devenv cli",
      "path": [
        "devenv",
        "devenv cli"
      ],
      "groupPath": [
        "devenv",
        "devenv cli"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "paired",
      "unit": "seconds",
      "baseline": 0.037,
      "current": 0.037,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 9,
      "currentSamples": 9,
      "pairedSamples": 9,
      "evidenceDeltaLower": -0.001,
      "evidenceDeltaUpper": 0.001,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "probe": "tasks_list",
        "probeLabel": "devenv tasks list",
        "status": 0,
        "sampleCount": 19,
        "warmupCount": 1,
        "measuredSampleCount": 9,
        "pairedSampleCount": 9,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    },
    {
      "id": "source.files",
      "label": "Genie CI workflow helpers files",
      "group": "source / effect-utils",
      "path": [
        "source",
        "effect-utils",
        "genie",
        "ci-workflow",
        "source / ci"
      ],
      "groupPath": [
        "source",
        "effect-utils"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": false,
      "gateReason": "disabled",
      "confidence": "diagnostic",
      "comparisonMode": "budget",
      "unit": "count",
      "baseline": 9,
      "current": 9,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": null,
      "semanticImpactKind": "diagnostic",
      "baselineSources": 18,
      "currentSamples": 9,
      "pairedSamples": 0,
      "evidenceDeltaLower": -1,
      "evidenceDeltaUpper": 1,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "scope": "genie_ci_workflow"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Nix sources closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "genie",
        "buckets",
        "nix-sources",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "nix-sources"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Nix sources closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "megarepo",
        "buckets",
        "nix-sources",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "nix-sources"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Nix sources closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "oxlint-npm",
        "buckets",
        "nix-sources",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "nix-sources"
      }
    },
    {
      "id": "source.files",
      "label": "Nix workspace tools files",
      "group": "source / effect-utils",
      "path": [
        "source",
        "effect-utils",
        "nix",
        "workspace-tools",
        "source / nix"
      ],
      "groupPath": [
        "source",
        "effect-utils"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": false,
      "gateReason": "disabled",
      "confidence": "diagnostic",
      "comparisonMode": "budget",
      "unit": "count",
      "baseline": 14,
      "current": 14,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": null,
      "semanticImpactKind": "diagnostic",
      "baselineSources": 18,
      "currentSamples": 14,
      "pairedSamples": 0,
      "evidenceDeltaLower": -1.4000000000000001,
      "evidenceDeltaUpper": 1.4000000000000001,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "scope": "nix_workspace_tools"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Node / pnpm closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "genie",
        "buckets",
        "node",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "node"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Node / pnpm closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "megarepo",
        "buckets",
        "node",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "node"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Node / pnpm closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "oxlint-npm",
        "buckets",
        "node",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "node"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Rust closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "genie",
        "buckets",
        "rust",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "rust"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Rust closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "megarepo",
        "buckets",
        "rust",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "rust"
      }
    },
    {
      "id": "nix.closure.bucket.nar_size",
      "label": "Rust closure size",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "oxlint-npm",
        "buckets",
        "rust",
        "nix closure buckets"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "unknown",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "unknown",
      "comparisonMode": "budget",
      "unit": "bytes",
      "baseline": 0,
      "current": 0,
      "delta": 0,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": "unknown",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10485760,
      "evidenceDeltaUpper": 10485760,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "rust"
      }
    },
    {
      "id": "nix.closure.path_count",
      "label": "Total closure path count",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "genie",
        "total",
        "path-count",
        "nix closure"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "budget",
      "unit": "count",
      "baseline": 79,
      "current": 79,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10,
      "evidenceDeltaUpper": 10,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total"
      }
    },
    {
      "id": "nix.closure.path_count",
      "label": "Total closure path count",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "megarepo",
        "total",
        "path-count",
        "nix closure"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "budget",
      "unit": "count",
      "baseline": 5,
      "current": 5,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10,
      "evidenceDeltaUpper": 10,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total"
      }
    },
    {
      "id": "nix.closure.path_count",
      "label": "Total closure path count",
      "group": "nix / closures / packages",
      "path": [
        "nix",
        "closures",
        "packages",
        "oxlint-npm",
        "total",
        "path-count",
        "nix closure"
      ],
      "groupPath": [
        "nix",
        "closures",
        "packages"
      ],
      "status": "pass",
      "direction": "unchanged",
      "gateable": true,
      "gateReason": "eligible",
      "confidence": "noise_floor",
      "comparisonMode": "budget",
      "unit": "count",
      "baseline": 8,
      "current": 8,
      "delta": 0,
      "ratio": 1,
      "semanticImpactScore": 0,
      "semanticImpactKind": "neutral",
      "baselineSources": 17,
      "currentSamples": 1,
      "pairedSamples": 0,
      "evidenceDeltaLower": -10,
      "evidenceDeltaUpper": 10,
      "pairedEvidenceQuantile": 0.25,
      "dimensions": {
        "bucket": "total"
      }
    },
    {
      "id": "shell_eval_traced",
      "label": "Shell eval with OTEL trace",
      "group": "devenv / devenv shell",
      "path": [
        "devenv",
        "devenv shell"
      ],
      "groupPath": [
        "devenv",
        "devenv shell"
      ],
      "status": "missing_baseline",
      "direction": "unknown",
      "gateable": false,
      "gateReason": "missing_baseline",
      "confidence": "missing_baseline",
      "comparisonMode": "historical",
      "unit": "seconds",
      "baseline": null,
      "current": 106.467,
      "delta": null,
      "ratio": null,
      "semanticImpactScore": null,
      "semanticImpactKind": null,
      "baselineSources": 0,
      "currentSamples": 1,
      "pairedSamples": null,
      "evidenceDeltaLower": null,
      "evidenceDeltaUpper": null,
      "pairedEvidenceQuantile": null,
      "dimensions": {
        "probe": "shell_eval_traced",
        "probeLabel": "Shell eval with OTEL trace",
        "status": 0,
        "sampleCount": 2,
        "warmupCount": 0,
        "measuredSampleCount": 1,
        "pairedSampleCount": 1,
        "pairedOrderProtocol": "balanced-seeded-alternating-v1",
        "pairedOrderSeed": "27694290331-1-9a8216a719acca93737245dfc5e3972ae1a4ae4d",
        "measurementProtocol": "devenv-perf-warm-median-v2",
        "aggregation": "median",
        "phase": "warm",
        "devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
        "otelServiceName": "devenv-perf-ci"
      }
    }
  ]
}

github-actions Bot added a commit that referenced this pull request Jun 17, 2026
schickling-assistant and others added 2 commits June 17, 2026 13:26
CommandOutput emitted a React duplicate-key warning when two problems
shared severity+name (key `${severity}:${name}` collided). Key by array
index too. Kit cli-output suite 17 pass, no key warnings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eporter bridge

Slice B of the unified output refactor. `edit` now renders through the
tui-react seam instead of raw stderr writes + JSON-by-default:

- progress-bridge.ts: `progressReporterTui(dispatch)` Layer maps the
  engine's `ProgressReporter` emits → `tui.dispatch` actions. The engine
  (sync.ts withStage/reportNote emits, progress.ts Tag+helpers) is
  UNCHANGED — only the backing Layer changes (R45 preserved; proven by
  the ported progress.unit.test: identical EditResult under no/capturing/
  hostile dispatch).
- cli-output/edit/{schema,app,view}: tagged EditState (Running → Success
  | Conflict | Error), lazy `getEditApp()` (#787-safe), EditView rendering
  through the shared `/sk-cli-design` CommandOutput kit. Drift (conflict /
  auto-merge) is a WARNING badge + actionable `fix:`, not a flat `note:`.
- makeEditCommand: `run(getEditApp(), handler+bridge, {view})
  .pipe(Effect.provide(outputModeLayer(output)))` + `--output` option,
  replacing `logJson` + the hand-rolled stderr-TTY gate. Mode-exclusive
  stdout (pipe → json/log, never animated; R44). Removed the now-vestigial
  ProgressReporterStderrLines.
- EditOutput story: 5 fixtures × ALL_OUTPUT_TABS.

notion-md 197 pass; tsc/oxlint clean; per-mode tui-stories renders
conform to /sk-cli-design.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Slice C-write of the unified output refactor, replicating the `edit`
template (run + ProgressReporter bridge + --output, replacing logJson).

- put: instrumented `putEditorPage` with `withStage` (observe → write-body
  → write-title[skip if unchanged]) — additive, no-op without the bridge
  (R45). `PutState` adds a `Partial` terminal tag for the body-written /
  title-failed case (NmdPartialWriteError, exit 10): a ✗ write-title row +
  a WARNING with a `--base-hash` re-cat `fix:`.
- sync (one-shot): single-page renders like edit (live stages + outcome);
  tree/batch renders one result row per page via `sync/map.ts` (normalizes
  the four engine result shapes) + a counts summary. `--watch` is
  untouched (stays on its ndjson `writeJsonLine` path).
- progress-bridge made generic over the shared stage/note action subset so
  one bridge drives edit/put/sync.
- Exit-code mappers mirror the runMain `editorExitCode` teardown (errors
  propagate uncaught; no second exit path). Summaries carry no glyphs.
- PutOutput / SyncOutput stories × ALL_OUTPUT_TABS.

notion-md 204 pass; tsc/oxlint clean; per-mode renders conform to /sk-cli-design.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Jun 17, 2026
github-actions Bot added a commit that referenced this pull request Jun 17, 2026
github-actions Bot added a commit that referenced this pull request Jun 17, 2026
Slice C-read of the unified output refactor. The read-only result
commands adopt a thin, stage-less shape (no progress bridge, no engine
instrumentation, no exit-code dance — clean exit 0 for drift):

- StatusState/PlanState = Success{sections, problems, summary} | Error.
- status/map.ts normalizes the three statusPath/statusMany result shapes
  (single StatusResult → state + deduped unknown-blocks sections; tree →
  per-page rows). Drift / unresolved unknown blocks → WARNING problems
  with a fix:.
- plan/map.ts maps the tree diff → one DetailSection per op-kind
  (create/update/move/trash/noop) + a counts summary; a predicted sync
  refusal (conflict) → CRITICAL (plan predicts; status observes — a
  deliberate severity distinction).
- Both handlers: run(getXApp(), …, {view}).pipe(Effect.provide(
  outputModeLayer(output))) + --output, replacing logJson. Pre-flight
  validations stay outside run (before token resolution) — the
  plan-is-directory-only e2e contract is preserved.
- StatusOutput / PlanOutput stories × ALL_OUTPUT_TABS.

notion-md 214 pass; tsc/oxlint clean; per-mode renders conform to /sk-cli-design.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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