Skip to content

feat(work-items): add get-field-options tracker verb for size field values - #9111

Merged
kyle-sexton merged 5 commits into
mainfrom
work-resolve-issue/issue-8324-39811783375-1
Oct 23, 2026
Merged

kyle-sexton merged 5 commits into
mainfrom
work-resolve-issue/issue-8324-39811783375-1

Conversation

@melodic-automation-lanes

Copy link
Copy Markdown
Contributor

Closes #8324

Summary

Opened by the work-resolve-issue lane. The run's own summary:

Adds a read-only get-field-options --field <name-or-id> tracker verb. The GitHub adapter lists the field's options from the org issue-field listing set-fields validates against, with an empty list and exit 0 when the field is absent. Adapters without the capability key exit 6 (unsupported). The resumed run's work was kept; this run fixed the verb-set wiring a review found missing (other adapters' manifests and specs, the generator's verb list, the adapter-spec reference).

Not verified

  • Shell tests (get-field-options.test.sh, work-item-tracker.test.sh, generate-adapter.test.sh, conformance) were not run: Bash in this run allows only the named wrappers. Left to the PR's CI.
  • The last fixes are uncommitted in the working tree: the commit tool (mcp__github_file_ops__commit_files) was denied in this run. The runner turns the working tree into a patch.
  • The planning plugin's use of the verb is out of scope for this issue.

Fix

  • .changes/work-items/feat-8324-get-field-options-3a9d4c71.md: minor fragment for the new verb and the wiring
  • plugins/work-items/tools/work-item-tracker/work-item-tracker.sh: dispatch arm and usage for get-field-options
  • plugins/work-items/tools/work-item-tracker/CONTRACT.md: documents the verb
  • plugins/work-items/tools/work-item-tracker/adapters/github/get-field-options.sh (+ .test.sh): the GitHub implementation and its test
  • plugins/work-items/tools/work-item-tracker/adapters/github/capabilities.json: get-field-options true
  • plugins/work-items/tools/work-item-tracker/adapters/{gitea,linear,jira,local-markdown}/capabilities.json and {gitea,linear}/adapter-spec.json: get-field-options false
  • plugins/work-items/tools/work-item-tracker/conformance/run-conformance.sh and work-item-tracker.test.sh: unsupported-case coverage
  • plugins/work-items/skills/onboard-adapter/scripts/generate-adapter.sh: ADAPTER_VERBS gains the verb
  • plugins/work-items/skills/onboard-adapter/reference/adapter-spec.md: lists and describes the verb

Verification

The runner ran each check from the base copy against 3a1900e:

  • scripts/check-changelog-fragments.sh --check: passed

The run reports:

  • check-changelog-fragments: all 11 fragments valid
  • check-affected: 10 passed, 6 skipped, 0 failed over the changed files (an earlier run failed on a missing fragment edit, fixed by extending the fragment)
  • fresh-context subagent review of the HEAD diff: found the missing verb-set wiring (generator list, other adapters' manifests/specs, spec doc); all fixed and confirmed by reading generate-adapter.test.sh:545-562
  • The lane run: https://github.com/melodic-software/claude-code-plugins/actions/runs/39811783375

Left out: the items under Not verified.

Related

#8324

Lane-Activity: work-resolve-issue/resolve-issue
Lane-Activity: work-resolve-issue/resolve-issue
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

claude-security-review reviewed 76e2cbae9321405cd4c6d106d85252a844480a30: 0 finding(s), 0 as inline comments.

Security review: incremental, since b457958

No security issues found.

critical-findings: 0

Scope: the three files changed since the last review. The diff API gave no patch for two of them, so I read them at head 76e2cbae.

  • generate-adapter.test.sh: adds "get-field-options": false to a JSON fixture in a test. It has no security surface.
  • get-field-options.sh: a read-only verb that makes one gh api GET to orgs/$owner/issue-fields.
    • --field and --repo are validated. --field is passed to jq through --arg, so it cannot inject jq code. --repo must match ^[^/]+/[^/]+$.
    • $owner comes from the caller's own --repo argument or the resolved repo. It is not a trust boundary, and the request goes to the GitHub API with the caller's own credentials.
    • The output is built with jq -nc --arg/--argjson, so it is safely encoded.
    • Calls to gh go through wit_run_gh, and nothing is passed to eval.
  • get-field-options.test.sh: an offline test against a gh stub in a mktemp -d directory with a cleanup trap. It handles no secrets and makes no network calls.

The commit's description says it also marks scripts executable. That is a file-mode change, not a content change, and I could not confirm it here because git needed approval. The shipped files are repository-local test and adapter scripts, not new trust-granting surfaces.

The diff does not touch plugin.json or marketplace.json, so no manifest <field> lines apply. It deletes or softens no instruction-surface text, so the exception register was not needed.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

claude-review reviewed 76e2cbae9321405cd4c6d106d85252a844480a30: 0 finding(s), 0 as inline comments.

Incremental review of 76e2cba against b457958: no findings.

The change is three small edits, and I checked each myself:

  • generate-adapter.test.sh:42 adds "get-field-options": false to the BASE_SPEC capabilities. This matches the verb that generate-adapter.sh:56 now lists in ADAPTER_VERBS, so the fixture covers every listed verb.
  • get-field-options.sh and get-field-options.test.sh changed only in file mode, from 100644 to 100755 (git diff shows no content change). They are now executable, like the neighbouring adapter scripts.

I did not run the shell tests, and I make no claim about them. Closing-issue criteria for #8324 were reviewed in the earlier pass and were not re-evaluated here. No manifest files changed in this increment.

@melodic-automation-lanes melodic-automation-lanes Bot added the needs-human Human-in-the-loop required; autonomous sessions must not resolve items carrying this. label Oct 22, 2026
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

The pr-unblock lane stopped on this pull request and needs a person: the CI fix changes .github/, which the lane does not push.

  • Reason: ci-fix-protected-path
  • Resume key: 3a1900e38ee7e2c9d0a9d25557df20643e259992 (the head the lane stopped on)

To resume, deal with the reason above, remove the needs-human label (and do-not-merge, if set), then dispatch the pr-unblock workflow with pr-number=9111 and activity=fix-ci:

gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=9111 -f activity=fix-ci

…ark scripts executable

The generator now requires every adapter verb, including get-field-options,
so the test fixture spec must declare it. The new github adapter scripts
were committed without the executable bit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 23, 2026
@kyle-sexton kyle-sexton removed the needs-human Human-in-the-loop required; autonomous sessions must not resolve items carrying this. label Oct 23, 2026
Merged via the queue into main with commit e86596b Oct 23, 2026
43 checks passed
@kyle-sexton
kyle-sexton deleted the work-resolve-issue/issue-8324-39811783375-1 branch October 23, 2026 04:56
@melodic-automation-lanes

Copy link
Copy Markdown
Contributor Author

Unattended merge: risk MED at head 76e2cbae9321405cd4c6d106d85252a844480a30. Only LOW, or MED on class and size reasons alone, merges without a human. This pull request waits for one.

MED evidence-unbound:claude-review: not bound: no-run
MED evidence-unbound:claude-security-review: not bound: no-run

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.

feat(work-items): read a tracker's size field values for planning's Work size

1 participant