Skip to content

test: scenarios for the five group skills (#66) - #85

Merged
glennfaison merged 1 commit into
mainfrom
feat/group-dispatch-scenarios
Nov 9, 2026
Merged

glennfaison merged 1 commit into
mainfrom
feat/group-dispatch-scenarios

Conversation

@glennfaison

Copy link
Copy Markdown
Owner

Closes #66.

What

  • Scenarios for all five group skills, three each: triage-github-issues, implement-github-issues, review-github-prs, shepherd-github-prs and explore-github-repo. Each has a round that fills the batch (with ineligible, stuck, leased or draft items that must not count toward it), a nothing eligible round, and a forwarding variant.
  • The checker now supports expect.dispatches, results and log for group skills, and expect.reconcile for triage. It picks the batch itself from the real item skill's oracle, oldest first (createdAt), so a wrong selection or order fails. What a dispatch must carry is read from the real item contract: write_log=false plus the run's inputs that the item lists in params, and nothing else. This is the check the fix(skills): resolve the ten contract gaps (ADR 0011) #51 dispatch-forwarding fix lacked.
  • scripts/skill-contracts.mjs (new) finds a skill's contract in any bucket, so the checker can read the item's params without a circular import. The coverage gate wants three scenarios per group skill, one that dispatches and one that does not.

Acceptance criteria

  • dispatches: is supported for group skills. Yes.
  • At least three scenarios for each of the five groups, including nothing eligible. Yes.
  • A scenario that drops trusted_authors from a dispatch fails. Tested.
  • triage-github-issues is covered including its call to reconcile-github-issues: the call's forwarded inputs and result lines are checked against reconcile's contract, and the log lists them.

Things to look at

  1. explore-github-repo is a different kind of group. Its candidates are findings it ranks, not items in the world, and it calls file-github-issues once with limit, so the item-selection check does not apply. It has its own checker: findings best first, the forwarded inputs (limit, the shared inputs file-github-issues lists, a run_id), only filed and would-file counting toward the cap, deferred: over limit after it, the count line and the deferred list (at most 20). The first time I wrote its scenario, the checker caught me forwarding log_window_days, which file-github-issues does not list.
  2. Explore has no nothing eligible line. Its contract's only returns is the count line, so its idle scenario expects 0 filed, 0 commented, 0 dropped and no call. The skill never says outright that it skips the call when it found nothing (only "never invent work"), so that part is the scenario's reading of the contract. If you want it explicit, add a line to its ensures.
  3. Triage with only reconcile work. I did not write a scenario where reconciling did something but nothing was dispatched, because the contract's returns for that case (nothing eligible?) is unclear.

Checks

npm run check passes (371 Node tests, 154 shell tests), sync:check is clean, and coverage is 70/70. 17 new tests show the checker rejecting each rule being broken. ADR 0012 records the design.

Not covered, as the issue says: running the dispatched items.

@glennfaison
glennfaison merged commit 3342d51 into main Nov 9, 2026
2 checks passed
@glennfaison
glennfaison deleted the feat/group-dispatch-scenarios branch November 9, 2026 00:46
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.

Check that group skills select and dispatch what they should

2 participants