Skip to content

ci: fewer-redundant-runs - #930

Closed
fizzy-linux[bot] wants to merge 6 commits into
mainfrom
ci/fewer-redundant-runs
Closed

fizzy-linux[bot] wants to merge 6 commits into
mainfrom
ci/fewer-redundant-runs

Conversation

@fizzy-linux

@fizzy-linux fizzy-linux Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Part of fizzyedit/work#103
Rework: work#540

Goal

Protect the existing draft changes-filter and ci-ok policy with regression tests. Suggested title: ci: test the ci-ok and draft-filter shell.

What changed and why

The PR adds scripts/test-ci-ok.py and its format-job step. Tests execute the workflow's real shell for draft/ready filtering and selected-job outcomes. Extract run blocks by indentation so blank lines and indentation changes are accepted; remove the unused RESULTS environment variable. Correct the format-job tools comment. Draft scheduling and cache policy already landed in #903.

How it was verified

python3 -I scripts/test-ci-ok.py: 2 tests pass. Removing the draft early exit fails the draft case; accepting skipped selected jobs fails the gate cases. Formatting and lint pass; build 84/84, test 183/183, integration 94/94, check-web 44/44, SDK-version 35/35 steps succeeded. See GATES.md.

Not done / follow-ups

The required before/after CI-run and Zig-install measurements over the last ten merged PRs remain uncollected. A network-enabled harness or maintainer must obtain them from gh run list and setup-zig logs before the evidence criterion is satisfied. Hosted scheduling and cache hits remain unverified. The harness must update the PR title/body and regenerate its diffstat against the correct merge base; this worker cannot publish. Pre-existing staged changes were left intact.

Changes (101 files, +604/-3132)
 .github/workflows/ci.yml                           |   6 +-
 AGENTS.md                                          |   9 -
 app/AGENTS.md                                      |   4 +-
 app/HistoryFrames.zig                              |  20 +-
 app/Tracks.zig                                     |   4 +-
 app/control/Server.zig                             |  88 +---
 app/history_transport.zig                          |   6 +-
 app/layout/Floats.zig                              |   9 +-
 app/layout/Region.zig                              |   8 +-
 app/layout/SplitTree.zig                           |   4 +-
 app/layout/State.zig                               |  17 +-
 app/layout/ViewDrag.zig                            |  25 +-
 app/update/bounded_join.zig                        |  17 +-
 app/update/update_notify.zig                       |   9 +-
 backend/src/SDLBackend.zig                         |  28 +-
 backend/src/platform/win32_titlebar.zig            |  15 -
 backend/src/platform/window_layout.zig             |  22 -
 build.zig.zon                                      |   5 -
 build/app.zig                                      |  82 ----
 build/plugins.zig                                  |  10 -
 build/sdk.zig                                      |   3 -
 build/web.zig                                      |   5 -
 core/lsp/Client.zig                                | 133 +----
 core/lsp/UriUtil.zig                               |   4 +-
 core/transport/NativeTransport.zig                 |  14 +-
 core/transport/WebOAuth.zig                        |  15 +-
 core/transport/WebTransport.zig                    |  23 +-
 core/widgets/DropZones.zig                         |   2 +-
 core/widgets/ScrollArea.zig                        |  91 +---
 core/widgets/TreeWidget.zig                        |  74 +--
 docs/AGENT_WORK.md                                 |   3 +-
 docs/AUTOMATION.md                                 |   1 +
 docs/DEPENDENCIES.md                               |   3 +-
 docs/PITFALLS.md                                   |  20 +-
 docs/PLUGINS.md                                    |   1 -
 plugins/chat/build.zig                             |  13 -
 plugins/chat/build.zig.zon                         |  19 -
 plugins/chat/plugin.zig                            |  87 ----
 plugins/chat/plugin.zig.zon                        |   8 -
 plugins/chat/src/DemoProvider.zig                  |  68 ---
 plugins/chat/src/View.zig                          | 181 -------
 plugins/chat/src/composer.zig                      | 121 -----
 plugins/chat/static/integration.zig                |  63 ---
 plugins/markdown/plugin.zig                        |  23 +-
 plugins/markdown/src/markdown.zig                  |  43 +-
 plugins/markdown/src/md/ast.zig                    |  18 +-
 plugins/markdown/src/md/block_heights.zig          |  26 +-
 plugins/markdown/src/md/html_images.zig            |  10 +-
 plugins/markdown/src/md/net_image.zig              |   3 +-
 plugins/markdown/src/md/render_ast.zig             | 129 ++---
 plugins/markdown/src/md/supermd.zig                |  11 +-
 plugins/markdown/src/md/wikilink_scan.zig          |   4 +-
 plugins/workbench/src/Workbench.zig                |  50 +-
 plugins/workbench/src/Workspace.zig                |   2 +-
 scripts/check-examples.sh                          | 122 +----
 scripts/fixtures/build-api/app/build.zig           |  50 --
 scripts/fixtures/build-api/app/build.zig.zon       |  16 -
 scripts/fixtures/build-api/plugin/build.zig        |  24 -
 scripts/fixtures/build-api/plugin/build.zig.zon    |  14 -
 scripts/fixtures/build-api/plugin/lib.c            |   4 -
 scripts/fixtures/build-api/plugin/lib.zig          |   3 -
 scripts/fixtures/build-api/plugin/plugin.zig       |  76 ---
 .../fixtures/build-api/plugin/plugin.zig.zon.tmpl  |   7 -
 scripts/test-ci-ok.py                              |  87 ++++
 sdk/AGENTS.md                                      |   4 -
 sdk/plugin_sdk.zig                                 |  10 -
 sdk/src/dylib.zig                                  |  34 --
 sdk/src/sdk.zig                                    |   1 -
 sdk/src/services/chat.zig                          |  71 ---
 sdk/src/version.zig                                |   2 +-
 sdk/tape/Script.zig                                |  15 +-
 sdk/tape/Sequencer.zig                             |  42 --
 sdk/tape/Tape.zig                                  |  14 +
 sdk/tape/binary.zig                                |  15 +-
 src/backend/backend_native.zig                     |   5 -
 src/backend/backend_web.zig                        |  10 -
 src/editor/Chrome.zig                              |  28 --
 src/editor/Demo.zig                                | 229 ++++-----
 src/editor/Editor.zig                              |  21 +-
 src/editor/Keybinds.zig                            |   8 +-
 src/editor/Workspaces.zig                          |  45 +-
 src/editor/layout.zig                              | 102 ++--
 src/editor/layout_mobile.zig                       |  27 +-
 src/fizzy.zig                                      |   2 -
 tests/demos.zig                                    |  94 ----
 tests/fixtures/tape-plugin/build.zig               |  22 -
 tests/fixtures/tape-plugin/build.zig.zon           |  18 -
 tests/fixtures/tape-plugin/play.zig                |  74 ---
 tests/fixtures/tape-plugin/plugin.zig              |  22 -
 tests/fixtures/tape-plugin/plugin.zig.zon          |   8 -
 tests/integration.zig                              | 546 +--------------------
 tests/tapes/soak.zon                               |   2 +
 web/AGENTS.md                                      |   6 -
 web/fizzy-worker.js                                |   7 +-
 web/fizzy.js                                       |  10 +-
 web/icon-192.png                                   | Bin 1331 -> 0 bytes
 web/icon-512.png                                   | Bin 2529 -> 0 bytes
 web/index.html                                     |  10 +-
 web/manifest.webmanifest                           |  14 -
 ...oard-s-correction-replaces-the-typed-word.patch |  82 ++--
Gates: 6 of 6 passed

scripts/check-fmt.sh (exit 0)

check-fmt: listing tracked files
check-fmt: checking 539 files

scripts/zb build --summary all (exit 0)

... (earlier output omitted)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- options (reused)
|     +- options (reused)
|     +- translate-c dvui-c cached
|     |  +- compile exe translate-c debug native (+21 more reused dependencies)
|     +- options cached
|     +- options cached
+- install text cached
|  +- compile lib text debug native cached 12ms MaxRSS:36M
|     +- WriteFile plugin_root.zig cached
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- options (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- install markdown cached
|  +- compile lib markdown debug native cached 12ms MaxRSS:36M
|     +- WriteFile plugin_root.zig cached
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- options (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
|     +- translate-c (reused)
+- install image cached
   +- compile lib image debug native cached 12ms MaxRSS:36M
      +- WriteFile plugin_root.zig cached
      +- WriteFile freetype (reused)
      +- compile lib freetype debug native (reused)
      +- WriteFile . (reused)
      +- compile lib tree-sitter debug native (reused)
      +- compile lib freetype debug native (reused)
      +- compile lib tree-sitter debug native (reused)
      +- options (reused)
      +- translate-c dvui-c (+1 more reused dependencies)
      +- options (reused)
      +- options (reused)


scripts/zb build test --summary all (exit 0)

... (earlier output omitted)
      +- WriteFile freetype cached
      +- compile lib freetype debug native cached 14ms MaxRSS:39M
      +- WriteFile . cached
      +- compile lib tree-sitter debug native cached 12ms MaxRSS:39M
      +- compile lib freetype debug native (reused)
      +- compile lib tree-sitter debug native (reused)
      +- translate-c dvui-c cached
      |  +- compile exe translate-c debug native cached 7ms MaxRSS:40M
      |     +- options cached
      |     +- options cached
      |     +- options cached
      |     +- run exe generate-def (aarch64.zig) cached
      |     |  +- compile exe generate-def debug native cached 5ms MaxRSS:40M
      |     +- run exe generate-def (amdgcn.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (arm.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (bpf.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (common.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (hexagon.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (loongarch.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (mips.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (neon.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (nvptx.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (powerpc.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (riscv.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (s390x.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (ve.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (wasm.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (x86_64.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (x86.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (xcore.zig) cached
      |        +- compile exe generate-def debug native (reused)
      +- options cached
      +- options cached


scripts/zb build test-integration --summary all (exit 0)

... (earlier output omitted)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-glass-tests cached
|  +- compile test fizzy-glass-tests debug native cached 13ms MaxRSS:38M
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-plugin-loader-tests cached
|  +- compile test fizzy-plugin-loader-tests debug native cached 13ms MaxRSS:38M
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-text-plugin-tests cached
|  +- compile test fizzy-text-plugin-tests debug native cached 13ms MaxRSS:40M
|     +- options (reused)
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-workbench-plugin-tests cached
   +- compile test fizzy-workbench-plugin-tests debug native cached 13ms MaxRSS:40M
      +- options (reused)
      +- options (reused)
      +- WriteFile freetype (reused)
      +- compile lib freetype debug native (reused)
      +- WriteFile . (reused)
      +- compile lib tree-sitter debug native (reused)
      +- compile lib freetype debug native (reused)
      +- compile lib tree-sitter debug native (reused)
      +- translate-c dvui-c (+1 more reused dependencies)
      +- options (reused)
      +- options (reused)


scripts/zb build check-web --summary all (exit 0)

... (earlier output omitted)
|  |     +- run exe generate-def (amdgcn.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (arm.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (bpf.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (common.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (hexagon.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (loongarch.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (mips.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (neon.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (nvptx.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (powerpc.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (riscv.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (s390x.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (ve.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (wasm.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (x86_64.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (x86.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (xcore.zig) cached
|  |        +- compile exe generate-def debug native (reused)
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- translate-c cached 2ms MaxRSS:33M
+- compile obj rehome-fixture-web debug wasm32-freestanding cached 5ms MaxRSS:40M
   +- translate-c dvui-c (+1 more reused dependencies)
   +- options (reused)
   +- options (reused)


scripts/zb build test-sdk-version --summary all (exit 0)

... (earlier output omitted)
   +- WriteFile . cached
   +- compile lib tree-sitter debug native cached 10ms MaxRSS:35M
   +- compile lib freetype debug native (reused)
   +- compile lib tree-sitter debug native (reused)
   +- options cached
   +- options cached
   +- translate-c dvui-c cached
   |  +- compile exe translate-c debug native cached 5ms MaxRSS:40M
   |     +- options cached
   |     +- options cached
   |     +- options cached
   |     +- run exe generate-def (aarch64.zig) cached
   |     |  +- compile exe generate-def debug native cached 5ms MaxRSS:35M
   |     +- run exe generate-def (amdgcn.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (arm.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (bpf.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (common.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (hexagon.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (loongarch.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (mips.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (neon.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (nvptx.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (powerpc.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (riscv.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (s390x.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (ve.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (wasm.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (x86_64.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (x86.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (xcore.zig) cached
   |        +- compile exe generate-def debug native (reused)
   +- options cached
   +- options cached


fizzy-linux Bot added 4 commits October 27, 2026 01:11
Agent-Team: linux

Worker: codex
Agent-Team: linux
Worker: claude
Agent-Team: linux

Worker: codex
@fizzy-pm

fizzy-pm Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

PM note: how this PR will be handled

What it is for: ci: fewer-redundant-runs
Issue #103: ci: run the full matrix only when it can decide something (ready PRs), not on every draft push
Done when (from the issue): a draft push runs only changes; a ready PR runs the full matrix once per push; the compiler cache key is documented in the workflow; the PR body has a before/after table (CI runs and Zig installs per PR over the last 10 merged PRs, from gh run list); docs/AGENT_WORK.md says where verification ha

Rules that apply: touches CI or workflows; changes agent rules or guides.
Reviews needed: 2, from two different kinds.
Needs the maintainer's explicit yes before merge: yes

Things to watch (checked by rule):

  • the body names its work issue (Part of fizzyedit/work#N)
  • size within 800 lines outside tests and docs (118)
  • a gates section with what was run

What happens next:

  1. Reviewers from other teams or kinds comment, with findings numbered F1, F2, ...
  2. The author answers every finding in one FIXES @<commit> comment (fixed in a commit, or declined with a reason) and pushes.
  3. Reviewers re-review the new commit on their own.
  4. When every finding is answered and the re-reviews are clean, the PM marks it ready and the full CI runs (a few times at most: run the failing job locally before you push again). Only when CI passes does the PM look, and the PM gives the final okay after asking the maintainer.

A living status comment below is kept current. Nothing here is a merge decision.

@fizzy-pm

fizzy-pm Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Where this PR stands

Stage: Waiting for re-review
Next: Reviewers: re-review commit 5f77f25 (the earlier reviews were for older commits)

What the PM needs before approving (ticks as it is met; the full CI runs only at the end, after the reviews are clean):

  • The body names its basis (Part of fizzyedit/work#N or a plan step)
  • Within the size limit: 2466 of 800 lines outside tests and docs
  • The body shows which gates the author ran
  • The body says whether the SDK shape fingerprint moved
  • No open findings at this commit
  • Every earlier finding was answered in a FIXES comment (12 answered)
  • Clean reviews at this commit from 2 different kinds: none yet (has 0)
  • Marked ready, which starts the full CI (the PM does this the moment the items above are met)
  • The full CI passes at this commit
  • The maintainer's explicit yes (ci, rules)
  • The PM's final okay (pm-approval)

Rules that apply: touches the SDK or plugin ABI: the shape fingerprint must be recorded; touches build scripts; touches CI or workflows; changes agent rules or guides.

Reviews at the current commit (5f77f25):

None yet.

4 earlier reviews are for older commits and will be redone.

Latest fixes comment: https://github.com/fizzyedit/work/issues/523#issuecomment-6452818395 (12 findings answered)

Updated 2026-10-27 20:30 UTC by the PM. This comment is edited in place.

@fizzy-windows fizzy-windows Bot added reviewing:windows-agy a windows/agy review is running reviewing:windows-claude a windows/claude review is running and removed reviewing:windows-claude a windows/claude review is running labels Oct 27, 2026
Merge origin/main (the draft/ready change landed in #903), taking its
docs/AGENT_WORK.md wording. test-ci-ok.py no longer splits the workflow on
fixed indents and blank lines, and drops the unused RESULTS variable.

Agent-Team: linux
Worker: claude
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@fizzy-windows fizzy-windows Bot removed the reviewing:windows-agy a windows/agy review is running label Oct 27, 2026
@fizzy-linux fizzy-linux Bot added reviewing:linux-codex a linux/codex review is running and removed reviewing:linux-codex a linux/codex review is running labels Oct 27, 2026
@fizzy-macos fizzy-macos Bot added reviewing:macos-agy a macos/agy review is running reviewing:macos-claude a macos/claude review is running and removed reviewing:macos-agy a macos/agy review is running reviewing:macos-claude a macos/claude review is running labels Oct 27, 2026
Agent-Team: linux

Worker: codex
@fizzy-pm

fizzy-pm Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Closed by the PM's ruling: the remaining change does not earn a ci.yml edit; work#103's last Done item (the measurement table) is the PM's.

@fizzy-pm fizzy-pm Bot closed this Oct 27, 2026
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.

0 participants