From e3b72f34469758b91e57a6421db5fe3402975ef5 Mon Sep 17 00:00:00 2001 From: Michael Ramos Date: Wed, 9 Sep 2026 22:25:47 -0700 Subject: [PATCH 01/13] test: record the lite goldens from the bun runtime Turn the differential parity harness into a golden regression harness. The recording is what the Bun runtime produced, so the native runtime keeps a standing regression net once Bun is gone. The clipboard adapter chain moves out of the recording into an explicit per-platform table, so one set of goldens holds on macOS and Linux. --- .github/workflows/rust-lite-ci.yml | 12 +- .../fixtures/bun-editor-annotations.jsonl | 1 + .../process.capture.blank-handoff.json | 26 + .../process.capture.clipboard.json | 23 + .../lite-goldens/process.capture.context.json | 25 + .../lite-goldens/process.capture.empty.json | 19 + .../lite-goldens/process.capture.handoff.json | 25 + .../process.capture.invalid-context.json | 23 + .../process.capture.invalid-utf8-handoff.json | 25 + .../process.capture.missing-root.json | 16 + .../process.capture.missing-state.json | 16 + .../process.capture.no-clipboard.json | 20 + .../process.capture.open-failure.json | 20 + .../process.capture.stale-handoff.json | 26 + .../process.copy-archive.empty.json | 21 + .../process.copy-archive.missing-state.json | 16 + .../process.copy-archive.no-clipboard.json | 23 + .../process.copy-archive.populated.json | 22 + .../lite-goldens/process.copy.busy-lock.json | 31 + scripts/lite-goldens/process.copy.empty.json | 25 + .../process.copy.invalid-store.json | 16 + .../process.copy.missing-state.json | 16 + .../process.copy.no-clipboard.json | 65 ++ .../lite-goldens/process.copy.populated.json | 64 ++ scripts/lite-goldens/process.copy.single.json | 36 + .../lite-goldens/process.copy.stale-lock.json | 25 + .../process.editor.invalid-pending.json | 15 + .../process.editor.missing-pending.json | 15 + ...process.manage.failure-without-stderr.json | 17 + .../lite-goldens/process.manage.failure.json | 17 + .../process.manage.missing-root.json | 16 + .../lite-goldens/process.manage.success.json | 15 + .../process.manager.missing-state.json | 15 + .../lite-goldens/screen.editor.control-c.json | 62 ++ .../lite-goldens/screen.editor.edit-save.json | 342 +++++++ .../screen.editor.empty-save-escape.json | 86 ++ .../screen.editor.missing-state.json | 110 +++ .../screen.editor.pending-file-save.json | 102 ++ .../lite-goldens/screen.editor.sigterm.json | 62 ++ .../screen.editor.word-line-kills.json | 462 +++++++++ .../screen.editor.word-line-moves.json | 822 ++++++++++++++++ .../screen.manager.all-views.json | 879 ++++++++++++++++++ .../screen.manager.control-c-active.json | 74 ++ .../screen.manager.control-c-archives.json | 104 +++ .../screen.manager.empty-actions.json | 297 ++++++ .../screen.manager.escape-active.json | 74 ++ .../screen.manager.escape-exit.json | 104 +++ .../screen.manager.q-archives.json | 104 +++ .../lite-goldens/screen.manager.sighup.json | 74 ++ scripts/lite-goldens/store.cross-read.json | 33 + .../store.manager.active-c-success.json | 147 +++ .../store.manager.active-y-success.json | 117 +++ .../store.manager.archives-y-success.json | 161 ++++ .../store.manager.copy-archive.json | 147 +++ .../store.manager.osc52-remote-copy-all.json | 147 +++ ...ore.manager.osc52-remote-copy-archive.json | 147 +++ .../store.manager.osc52-remote-copy.json | 117 +++ .../{parity-lite.py => lite-regression.py} | 819 +++++++++------- scripts/lite-regression.sh | 20 + scripts/parity-lite.sh | 19 - 60 files changed, 6034 insertions(+), 345 deletions(-) create mode 100644 scripts/lite-goldens/fixtures/bun-editor-annotations.jsonl create mode 100644 scripts/lite-goldens/process.capture.blank-handoff.json create mode 100644 scripts/lite-goldens/process.capture.clipboard.json create mode 100644 scripts/lite-goldens/process.capture.context.json create mode 100644 scripts/lite-goldens/process.capture.empty.json create mode 100644 scripts/lite-goldens/process.capture.handoff.json create mode 100644 scripts/lite-goldens/process.capture.invalid-context.json create mode 100644 scripts/lite-goldens/process.capture.invalid-utf8-handoff.json create mode 100644 scripts/lite-goldens/process.capture.missing-root.json create mode 100644 scripts/lite-goldens/process.capture.missing-state.json create mode 100644 scripts/lite-goldens/process.capture.no-clipboard.json create mode 100644 scripts/lite-goldens/process.capture.open-failure.json create mode 100644 scripts/lite-goldens/process.capture.stale-handoff.json create mode 100644 scripts/lite-goldens/process.copy-archive.empty.json create mode 100644 scripts/lite-goldens/process.copy-archive.missing-state.json create mode 100644 scripts/lite-goldens/process.copy-archive.no-clipboard.json create mode 100644 scripts/lite-goldens/process.copy-archive.populated.json create mode 100644 scripts/lite-goldens/process.copy.busy-lock.json create mode 100644 scripts/lite-goldens/process.copy.empty.json create mode 100644 scripts/lite-goldens/process.copy.invalid-store.json create mode 100644 scripts/lite-goldens/process.copy.missing-state.json create mode 100644 scripts/lite-goldens/process.copy.no-clipboard.json create mode 100644 scripts/lite-goldens/process.copy.populated.json create mode 100644 scripts/lite-goldens/process.copy.single.json create mode 100644 scripts/lite-goldens/process.copy.stale-lock.json create mode 100644 scripts/lite-goldens/process.editor.invalid-pending.json create mode 100644 scripts/lite-goldens/process.editor.missing-pending.json create mode 100644 scripts/lite-goldens/process.manage.failure-without-stderr.json create mode 100644 scripts/lite-goldens/process.manage.failure.json create mode 100644 scripts/lite-goldens/process.manage.missing-root.json create mode 100644 scripts/lite-goldens/process.manage.success.json create mode 100644 scripts/lite-goldens/process.manager.missing-state.json create mode 100644 scripts/lite-goldens/screen.editor.control-c.json create mode 100644 scripts/lite-goldens/screen.editor.edit-save.json create mode 100644 scripts/lite-goldens/screen.editor.empty-save-escape.json create mode 100644 scripts/lite-goldens/screen.editor.missing-state.json create mode 100644 scripts/lite-goldens/screen.editor.pending-file-save.json create mode 100644 scripts/lite-goldens/screen.editor.sigterm.json create mode 100644 scripts/lite-goldens/screen.editor.word-line-kills.json create mode 100644 scripts/lite-goldens/screen.editor.word-line-moves.json create mode 100644 scripts/lite-goldens/screen.manager.all-views.json create mode 100644 scripts/lite-goldens/screen.manager.control-c-active.json create mode 100644 scripts/lite-goldens/screen.manager.control-c-archives.json create mode 100644 scripts/lite-goldens/screen.manager.empty-actions.json create mode 100644 scripts/lite-goldens/screen.manager.escape-active.json create mode 100644 scripts/lite-goldens/screen.manager.escape-exit.json create mode 100644 scripts/lite-goldens/screen.manager.q-archives.json create mode 100644 scripts/lite-goldens/screen.manager.sighup.json create mode 100644 scripts/lite-goldens/store.cross-read.json create mode 100644 scripts/lite-goldens/store.manager.active-c-success.json create mode 100644 scripts/lite-goldens/store.manager.active-y-success.json create mode 100644 scripts/lite-goldens/store.manager.archives-y-success.json create mode 100644 scripts/lite-goldens/store.manager.copy-archive.json create mode 100644 scripts/lite-goldens/store.manager.osc52-remote-copy-all.json create mode 100644 scripts/lite-goldens/store.manager.osc52-remote-copy-archive.json create mode 100644 scripts/lite-goldens/store.manager.osc52-remote-copy.json rename scripts/{parity-lite.py => lite-regression.py} (69%) create mode 100755 scripts/lite-regression.sh delete mode 100755 scripts/parity-lite.sh diff --git a/.github/workflows/rust-lite-ci.yml b/.github/workflows/rust-lite-ci.yml index b008bd6..2518a82 100644 --- a/.github/workflows/rust-lite-ci.yml +++ b/.github/workflows/rust-lite-ci.yml @@ -9,8 +9,9 @@ on: - "lite/**" - "herdr-plugin.toml" - "docs/rust-lite-parity-proof.md" - - "scripts/parity-lite.py" - - "scripts/parity-lite.sh" + - "scripts/lite-goldens/**" + - "scripts/lite-regression.py" + - "scripts/lite-regression.sh" - "scripts/smoke-rust-lite.sh" - ".github/workflows/rust-lite-*.yml" merge_group: @@ -51,7 +52,7 @@ jobs: workspaces: rust - run: cargo clippy --manifest-path rust/Cargo.toml --all-targets -- -D warnings - parity: + regression: strategy: fail-fast: false matrix: @@ -64,10 +65,7 @@ jobs: - uses: Swatinem/rust-cache@v2 with: workspaces: rust - - uses: oven-sh/setup-bun@v2 - with: - bun-version: 1.3.14 - uses: actions/setup-python@v5 with: python-version: "3.12" - - run: bash scripts/parity-lite.sh + - run: bash scripts/lite-regression.sh diff --git a/scripts/lite-goldens/fixtures/bun-editor-annotations.jsonl b/scripts/lite-goldens/fixtures/bun-editor-annotations.jsonl new file mode 100644 index 0000000..c6f1a20 --- /dev/null +++ b/scripts/lite-goldens/fixtures/bun-editor-annotations.jsonl @@ -0,0 +1 @@ +{"selectedText":"selected wide 한글 text\nwith a second line","context":{"workspace_label":"api 한","tab_label":"server"},"capturedAt":"2026-09-10T05:23:55.654Z","id":"72a4a0d4-f9c9-4e02-afe0-a189fbdf3a6a","comment":"alpha 한글 é\nbt","createdAt":"2026-09-10T05:23:56.623Z"} diff --git a/scripts/lite-goldens/process.capture.blank-handoff.json b/scripts/lite-goldens/process.capture.blank-handoff.json new file mode 100644 index 0000000..dd0e2c8 --- /dev/null +++ b/scripts/lite-goldens/process.capture.blank-handoff.json @@ -0,0 +1,26 @@ +{ + "process.capture.blank-handoff.artifact": [ + "{", + " \"pending\": {", + " \"bytes\": \"{\\\"selectedText\\\":\\\"clipboard after blank handoff\\\",\\\"context\\\":{},\\\"capturedAt\\\":\\\"\\\"}\\n\",", + " \"mode\": \"0600\",", + " \"name\": \"pending-