Skip to content

Read labelled issues without GitHub search - #1176

Merged
JacobStephens2 merged 4 commits into
mainfrom
issue-1082
Oct 23, 2026
Merged

JacobStephens2 merged 4 commits into
mainfrom
issue-1082

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

Read labelled issues through the paginated repository REST endpoint so an open Architect plan cannot be missed because GitHub search has not indexed it.

 labelled issues (open / closed)
-  gh issue list --label → search index
+  gh api --paginate → repository issues → discard pull requests

Test seams: the thirdshift architect, pickup and Spec commands with fake external tools, and the public GitHub::open_issues_labelled / closed_issues_labelled methods with an executable gh fixture.

Evidence

  • Before: cargo test --test architect_run an_open_architect_plan_skips_even_when_search_is_unavailable -- --exact failed: the Architect gate invoked gh issue list and exited 1 despite an open plan. The adapter regression also failed on a REST pull-request URL before filtering was added.
    After: Both regressions pass. The adapter test covers open and closed reads, 1,001 issues, newest-first ordering, encoded labels and pull-request exclusion.
  • cargo check --all-targets passed. Architect, Pickup, Security and Spec regressions pass, including both shared Base fix cases after updating their REST observation counter.
  • cargo test --locked --test pickup_model -- --nocapture: bounded model regressions, 4 passed and 1 existing pre-Claim dispatch assertion ignored.
  • CI is green on 47f0386: Linux Rust tests, formatting, clippy, macOS gate, browser tests and artifact builds passed.
  • /usr/bin/time -p scripts/affected-tests main selected cargo nextest run: 2,397 passed, 55 skipped. Wall time 2,620.97s, including 3m 01s compilation; test execution 2,435.025s.

Merge Danger

Door: two-way

Blast Radius: GitHub

All callers of the shared labelled-issue reads use REST, including Architect, Pickup, Security and Base fix gates.

Unaddressed findings

  • Standards: None; 0 findings.
  • Spec: None; 0 findings.
  • Security: None; 0 findings. Guidance-mode review of the labelled-issue REST change found no introduced vulnerability: label values are URL-encoded into a single query parameter (pinned by labelled_issue_reads_include_every_page_and_exclude_pull_requests, including the & in "Architect plan & idea"), gh is invoked with no shell and fixed open/closed states, pull-request entries are filtered before URL parsing, html_url must parse as a github.com issue URL, and read failures fail closed rather than returning an empty gate read. A hostile-label probe (a&state=closed&labels=x) confirmed the value stays encoded inside the labels parameter. No SECURITY.md or threat-model file exists in the repo. No proof-of-concept failed, so no fix commit was needed and the private pre-existing report is empty.

Review coverage: fresh independent Standards and Spec reviewers read all eight changed files at 47f0386. A Security review covered the same diff plus supporting code (src/github.rs command helpers, src/issue.rs, src/labels.rs) at the same commit. No changed files were left unread, and no generated output was excluded. Final reports and each axis's files-read list are saved in the Session's .thirdshift-review-AZ4gqj/standards.md and .thirdshift-review-AZ4gqj/spec.md.

Closes #1082

Built with codex · gpt-6.1-sol · xhigh

Security review outcome

No unaddressed introduced findings.

@JacobStephens2
JacobStephens2 merged commit 0239924 into main Oct 23, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1082 branch October 23, 2026 20:00
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.

The open Architect plan check reads GitHub search, so Architect runs sometimes start while a plan is open

1 participant