Skip to content

fix(vibe): judge story plays by events and run every shared host - #333

Closed
shafty023 wants to merge 1 commit into
fix/vibe-lessons-20261021cfrom
fix/vibe-lessons-20261021d
Closed

shafty023 wants to merge 1 commit into
fix/vibe-lessons-20261021cfrom
fix/vibe-lessons-20261021d

Conversation

@shafty023

Copy link
Copy Markdown
Collaborator

Purpose

vibe 1.0.76 covers the two lessons-ledger entries added after #332 was scoped. This branch is stacked on #332 (fix/vibe-lessons-20261021c), which is stacked on #331, and it is retargeted as those merge. Each lesson got a check inside the plugin first; prose only points at the check. No test here sends a signal, and every run happened on a second machine in a throwaway copy.

Rung table

Ledger entry Rung Check Prose
Storybook storyFinished reports success when a play throws helper + evidence gate story-play-verdict.mjs judges each play from recorded channel events: PASS only when a completion was observed and no exception or error event fired; storyFinished's status is never read. The PR evidence gate needs playVerdicts, all PASS, on the storybook-plays run. The test runs a deliberately throwing play through a fake channel that reports storyFinished: success, and the verdict is FAIL verify worker: one sentence
A fix scoped to one host of a shared component regressed the other hosts diff rule + evidence gate shared-consumers.mjs: a changed UI component that two or more non-test files import makes every test and story file covering it or a host a required run. When the change reads a flag, each run is needed with the flag on and off (flagStates; testRuns entries carry flag), and shared-flag-branch blocks until the change log records the host the behavior is keyed on verify worker: one sentence

Closeout per class

  • Play verdicts: the plugin had no story-sweep helper, so the helper is new, with a recorder script to inject before the story loads. It is wired where plays are recorded (the verify worker) and where they are enforced (the evidence gate). One existing evidence fixture gained playVerdicts on its storybook-plays run, and its assertion is unchanged. A new assertion covers the missing case.
  • Shared component hosts: the ledger suggested that the push script refuse. In vibe, redeploy pushes come before any test run by design, so the refusal sits at the pull-request evidence gate, which runs on every PR open and update. The diff rules' importer lookup now returns importer lists (importersOf), and the existing importerCounts is derived from it, so there is no second grep.

Ledger entries

Taken: both entries. Skipped: none.

Commands run

All on the second machine, in a throwaway copy: node --test over every plugins/**/*.test.{mjs,cjs,js}, uv run pytest plugins/, uv run ruff check . and uv run pyright. Node 651 of 651, pytest 2554 passed, ruff and pyright clean. tools/vibe-workers is unchanged.

- story-play-verdict.mjs passes a play only when its completion was
  observed and no exception or error event fired; storyFinished's
  status reported success for a play that threw. The evidence gate
  needs playVerdicts, all PASS, on the storybook-plays run.
- A changed UI component two or more hosts import requires every test
  and story covering it or a host, in both flag states when the
  change reads a flag, and blocks until the change log records the
  host the behavior is keyed on.
- vibe 1.0.76 and its changelog.

Testing: node --test (651 of 651) and pytest (2554) over the plugins
on a second machine.
Risks: a shared component change now needs every host's suites run
before a pull request opens.
@shafty023

Copy link
Copy Markdown
Collaborator Author

Folded into #334 as part of the combined vibe 1.0.74 lessons release.

@shafty023 shafty023 closed this Oct 22, 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.

1 participant