Repository navigation
Conversation
A contributor opens an issue and nothing checks the claim in it. rtibblesbot can now validate an issue it did not open, so ask it on every contributor issue and mark the issue while the check runs. The comment mentions the bot outside backticks. The agent polls its notifications and holds no inbound endpoint, so the mention is the only way to reach it. The label comes off on a comment that carries the marker and comes from rtibblesbot. The marker alone is not enough, because it is plain text that anyone can paste.
If the agent never answers, the label stays on and tells a maintainer nothing. The weekly run now clears a label older than ISSUE_REVIEW_MAX_DAYS. The sweep lives in its own module because unassign-inactive-issues skips every issue with no assignees, and an issue under review normally has none.
The pre-commit hooks did not run when 30c7939 landed, so prettier wanted these two files reformatted.
The contributor, core member and bot cases decide which issues reach the new validation automation, and nothing tested them. The gate is shared by six leaves, so these tests cover all of them.
morango takes contributions from time to time, so validation must reach it. COMMUNITY_REPOS is an alias of PR_STATS_REPOS, so morango also joins the weekly statistics report and the cross-repo assignment count. The gate now reads ISSUE_VALIDATION_REPOS, which adds test-actions. The old gate did not name it, so the automation could not be tested where every other one is tested. The label job now tests the author and the marker in its condition, as resolve-bot-pr-threads does. Every comment in every consumer used to generate a token, check out this repo and install dependencies before the script returned.
🟡 Waiting for changesOutcome: reviewed Last updated: 2026-10-26 11:33 UTC |
rtibblesbot
left a comment
There was a problem hiding this comment.
PR #126: the validation, done and sweep automations meet #114. Their failure paths warn and carry on without failing the run. CI passing.
- suggestion: adding
morangochanges two unrelated automations (inline). - suggestion: two gaps in the sweep's test fake (inline).
- nitpick: two tests repeat cases already covered (inline).
Next step: Needs a full code review by a human engineer.
- Workflow steps changed:
.github/workflows/automation-group-issue-comment.yml,.github/workflows/automation-group-issues.yml,.github/workflows/automation.yml,.github/workflows/issue-validation-done.yml,.github/workflows/issue-validation.yml. - Decide whether adding morango to
PR_STATS_REPOSshould change the Slack stats and the assignment-limit counts. - Decide whether the 3-day
ISSUE_REVIEW_MAX_DAYStimeout for the stalecommunity-issue-reviewlabel is the right one.
Written by rtibblesbot, an LLM-based coding agent.
The sweep's fake listing ignored the label filter, so removing that filter failed no test. Without it the sweep reads an old labeled event on an issue whose label is already gone, gets a 404 from the removal, and reports clearing a label the issue never had. The fake removal always succeeded, so a failed removal was untested. The bot-account case took the same branch as the contributor case, so it guarded nothing.
rtibblesbot
left a comment
There was a problem hiding this comment.
PR #126 has no new findings. All 5 prior findings are resolved or acknowledged. CI is passing.
Prior-finding status
ACKNOWLEDGED — scripts/constants.js:182 — morango also added to two other automations
RESOLVED — scripts/issue-review-sweep.test.js — label filter not covered
RESOLVED — scripts/issue-review-sweep.test.js:55 — failed label removal not covered
RESOLVED — scripts/issue-validation-done.test.js — duplicate other-author case
ACKNOWLEDGED — scripts/issue-validation.test.js:87 — repeats community-repo case
Next step: Needs a full code review by a human engineer.
- Workflow steps changed:
.github/workflows/automation-group-issue-comment.yml,.github/workflows/automation-group-issues.yml,.github/workflows/automation.yml,.github/workflows/issue-validation-done.yml,.github/workflows/issue-validation.yml.
Written by rtibblesbot, an LLM-based coding agent.
Summary
A contributor opens an issue and nothing checks the claim in it. A maintainer has to read
the report and check it against the code before the issue can be labelled or worked.
learningequality/coding-agent#1229 is merged, so
rtibblesbotcan now validate an issue itdid not open.
The change
issue-validationruns onissues: [opened]. It posts one comment that mentions@rtibblesbotand addscommunity-issue-review, when the repo is inISSUE_VALIDATION_REPOS, the opener is a contributor, and the label is not already on.That list is the community repos plus
test-actions, so the automation can be exercised inthe sandbox like every other one. The mention is load-bearing: the agent polls its
notifications and holds no inbound endpoint, so nothing else reaches it.
issue-validation-doneruns onissue_comment: [created]. It removes the label on acomment that carries
<!-- ISSUE_VALIDATION -->and comes fromrtibblesbot. Both areneeded, because the marker is plain text that anyone can paste, and the bot comments on
issues for other reasons. The leaf tests both conditions in its job
if:as well,following
resolve-bot-pr-threads, so an ordinary comment starts no runner.ISSUE_REVIEW_MAX_DAYS. It sits inits own module, because
unassign-inactive-issuesskips every issue with no assignees, andan issue under review normally has none.
morangojoinsPR_STATS_REPOS. It takes contributions from time to time, and the gatereads that list through
COMMUNITY_REPOS. It therefore also joins the weekly statisticsreport and the cross-repo assignment count.
addLabelandremoveLabelinutils.js, shared by all three paths. A failed labelcall warns and the run still passes.
had none. They cover six leaves, not just this one.
References
Closes #114.
learningequality/coding-agent#1229 added the validation and owns the marker.
rtibblesranit by hand on learningequality/kolibri#15639, which returned a verdict carrying the marker.
automation-template.ymldid not change, because both events were already in theon:union, so consumers need no sync for the triggers.
automation-group-issue-comment.ymlisnew: the generator groups automations that share triggers, and
issue_commenthad one memberuntil now.
Reviewer guidance
yarn test. Expect 154 passing, 32 of them new.scripts/issue-validation-done.js. Check that the label comes off only on the markerplus the author.
test-actionsfrom an account outside the organization.Expect one comment that mentions
@rtibblesbot, and the label.test-actionsas a core team member. Expect no comment and no label.rtibblesbotwith the marker. Expect the label to come off. Comment withoutit. Expect the label to stay on.
ISSUE_REVIEW_MAX_DAYS, then dispatchunassign-inactive-issues. Expect the labelto come off.
Steps 3 to 6 can only run after this merges, because the leaf is called at
@main.AI usage
I used Claude Code to write the two automations, the sweep and their tests, and to run the
suite, eslint and
prek. I decided the label, the marker contract, the comment text, andthat the contributor gate stays in the shared
is-contributorjob. I reviewed the diff.