A forbidden word reaches the run as a message, clean commits are pushed, and the wait names the word #134
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "task/3722-a-forbidden-word-reaches-the-run-as-a-me"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tracker: #3722
Step 2 of plan #3694. Fixes #3690: a forbidden word in what a run would publish no longer kills the run.
What it delivers
instructionsgain a## Forbidden wordspart listing every forbidden word in order, saying that sak publishes no commit message and nopull-request.mdthat holds one, ignoring case. With no forbidden words the part is left out.pull-request.md) wheneverpull-request.mdchanges, whether or not the PR is open, and at each turn's end before the turn settles. A hit no longer sends SIGTERM.pull-request.mdor the commit to the stream's inbox, and hands it to the session. A turn that ends while such a hit stands does not settle: the message is its next input.failed · forbidden_wordsat once, not at the idle cap.wordandin(pull-request.md, or the commit's id), and the flow run'sneeds_youevent carries them.docs/api.mdandrunner/README.mddescribe this.runner/README.mdRepository says when the runner reads what the run would publish as events arrive: once a second at most, when the PR text changed, or when the agent has written it and the branch has no open PR. It says a hit is the oldest new commit whose message holds a forbidden word, with the first of the words, in sak's order, that it holds; else, when the PR text holds one, the first of them it holds.Master already holds flow run 36's merge (#3687), and the plan's branch holds that merge (
4bd0747), so no merge was needed.Regressions, failing at the base and passing at the head
Each was run from a
git archivearm with the gate cache's sx: the head arm at4a70ceb, and the base arm at762efb1(the plan's branch, this step's base) carrying 4a70ceb'stests/runner_core.sxand the stub stream-json harness.tests/runner_core.sx,check_repository:762efb14a70cebfailed · forbidden_wordsthe second it starteddoneword/intests/runner_core.sx,check_flow_runs:needs_youevent has nowordorinThe head arm ended
RUNNER CORE OK(396 checks). The base arm endedRUNNER CORE FAIL (8 checks), the eight rows marked FAIL above, with 388 ok. An earlier base arm, run under load beside another gate, also failed "a run whose stub harness waits silently on a gate longer than the idle timeout is not ended idle_timeout". That check's 500 ms idle cap is timing-bound, this change touches neither gates nor the stub's script path, and the check passed in the base rerun and at the head.tests/runner_core.sx,check_happy_path: "with no forbidden words, the instructions carry no part for them" passes at both, because the base adds no part at all.web/src/lib/flow-runs.test.ts"names the forbidden word and the PR text or the commit that holds it", run with vitest in a scratch copy ofweb/: at the head it passes (10 passed). With the base'sflow-runs.tsit fails withExpected: "the PR text holds the forbidden word zebracorn"/Received: "a commit or the PR text holds a forbidden word".Golden set: none. No golden shows a
forbidden_wordswait.Review
Review run 568 found the README's Repository sentence and the comment on
pollinrunner/repository.sxdescribing a read the code does not make: while the branch has no open PR, the runner reads only once the agent has written its PR text, so a commit message holding a word made beforepull-request.mdexists is found at the turn's end. Its "first word" wording also read as the first word in the message rather than the first of sak's words.b533de6rewrites both to state the read the code makes, and the same wording in the comment oncommit_hit. It changes no code.Review run 583 found that sentence still naming the oldest new commit, so that a word in a later commit's message read as no hit, while
commit_hitnames the oldest new commit whose message holds a word. The last commit rewrites the README sentence to say so, and the comment onfoundinrunner/repository.sxthe same way. It changes no code either, so the regression results above, taken at4a70ceb, hold at the head.Gates
At
4a70ceb:fast: gate run 309, passed; the review'sfast, gate run 315, passed.full: gate run 314, failed only at the runner Playwright config's global setup (sak serve never answered on http://127.0.0.1:18988). Every earlier step passed, the main Playwright config with 740 passed and 1 skipped. Another process held port 18988 on s32 then, and it has since been ended. Run by hand from agit archivearm withPORTmoved to 18978, the runner config passed 10 of 10.At
b533de6:full: gate run 320, passed. Every step passed: the sak and runner builds,npm run build(402 vitest tests), the libc grep, everytests/*.sxfile, release withtests/step9_release.sx, the deploy contract, the main Playwright config (740 passed, 1 skipped) and the runner Playwright config (10 passed).fast, gate run 321, passed.At the head
1786318:full: gate run 325, passed. Every step passed: the sak and runner builds,npm run build(402 vitest tests), the libc grep, everytests/*.sxfile, release withtests/step9_release.sx, the deploy contract, the main Playwright config (740 passed, 1 skipped) and the runner Playwright config (10 passed).