Handle null PR check status lists #245
Closed
stephen
wants to merge 1 commit from
fix/241-null-pr-check-statuses into main
pull from: fix/241-null-pr-check-statuses
merge into: rasterstate:main
rasterstate:main
rasterstate:wip/claude-1/rasterstate-fj
rasterstate:wip/codex-4/rasterstate-fj
rasterstate:fix/run-job-logs
rasterstate:wip/codex-1/codex-1-fj
rasterstate:feat/me-commons
rasterstate:fix/250-auth-fixes
rasterstate:salvage/codex-3/fj/fix/243-coverage-pr-gate
rasterstate:wip/codex-3/codex-3-fj
rasterstate:salvage/codex-2/fj/main
rasterstate:salvage/codex-2/fj/fix/240-default-merge-style
rasterstate:wip/codex-2/codex-2-fj
rasterstate:salvage/codex-3/fj/fix/246-negative-user-ids-pr-list
rasterstate:salvage/codex-3/fj/main
rasterstate:salvage/codex-3/fj/fix/241-null-pr-check-statuses
rasterstate:salvage/codex-4/fj/fix-actions-rest-logs
rasterstate:salvage/codex-4/fj/main
rasterstate:wip/claude-1/claude-1-fj-pr237
rasterstate:salvage/usw-dev-01/fj-ship-fixes/fix/stack-ship-restack-after-land
rasterstate:wip/fj-ship-fixes/workspaces-fj-ship-fixes
rasterstate:salvage/usw-dev-01/fj-ship-fixes/main
rasterstate:salvage/review-fjord-web/fj-pager/fix/pager-only-long-reads
rasterstate:wip/review-fjord-web/review-fjord-web-fj-pager
rasterstate:salvage/review-fjord-web/fj-pager/main
rasterstate:fix/dispatch-input-type
rasterstate:fix/pr-list-negative-user-id
rasterstate:salvage/codex-2/fj/v0.4.1
rasterstate:salvage/codex-3/fj/v0.4.1
rasterstate:salvage/codex-4/fj/v0.4.1
rasterstate:salvage/lead/fj-build/v0.4.1
rasterstate:salvage/review-fjord-web/fj-pager/v0.4.1
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.4.1
rasterstate:chore/forseti-formal-review
rasterstate:feat/218-fjord-oidc-login
rasterstate:feat/session-auth-log-read
rasterstate:salvage/lead/fj-build/feat/session-auth-log-read
rasterstate:salvage/lead/fj-build/main
rasterstate:docs/tap-canonical-rasterhub
rasterstate:salvage/codex-2/fj/v0.3.0
rasterstate:salvage/codex-3/fj/v0.3.0
rasterstate:salvage/codex-4/fj/v0.3.0
rasterstate:salvage/lead/fj-build/v0.3.0
rasterstate:salvage/review-fjord-web/fj-pager/v0.3.0
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.3.0
rasterstate:release/v0.3.0
rasterstate:fix/fj-audit-low-polish
rasterstate:wip/codex-2/rasterstate-fj
rasterstate:feat/166-lock-unlock
rasterstate:feat/168-rerun-failed
rasterstate:feat/169-repo-collaborator
rasterstate:feat/172-create-template
rasterstate:feat/164-pr-merge-auto
rasterstate:wip/claude-2/rasterstate-fj
rasterstate:feat/170-list-filters
rasterstate:feat/171-color-control
rasterstate:feat/165-pr-create-fill
rasterstate:feat/165-pr-create-fill-codex
rasterstate:wip/claude-3/rasterstate-fj
rasterstate:fix/123-extend-friendly-errors-409-422
rasterstate:fix/159-merge-reason
rasterstate:wip/claude-4/rasterstate-fj
rasterstate:fix/158-issue-add-assignee-endpoint
rasterstate:fix/147b-keychain-noentry-fallback
rasterstate:feat/147-file-token-store
rasterstate:feat/133-release-scripting
rasterstate:feat/139-workflow-run-handle
rasterstate:feat/140-body-file
rasterstate:fix/pr-comment-test-green
rasterstate:wip/codex-3/rasterstate-fj
rasterstate:feat/137-org-secrets-vars
rasterstate:feat/132-tag-branch-refs
rasterstate:feat/138-run-list-filters
rasterstate:feat/131-pr-comment-edit
rasterstate:feat/134-error-ux-exit-codes
rasterstate:feat/136-api-body-input
rasterstate:feat/135-run-exit-status
rasterstate:feat/113-pr-list-filters
rasterstate:fix/111-list-paginate
rasterstate:fix/112-json-readonly
rasterstate:feat/114-pr-labels
rasterstate:fix/115-version-pipe
rasterstate:fix/91-runlog-auth-error
rasterstate:feat/98-issue-edit-labels
rasterstate:fix/96-keychain-fallback
rasterstate:feat/97-issue-create-labels
rasterstate:fix/99-readme-json-global
rasterstate:fix/alias-quoted-args
rasterstate:fix/remote-scp-colon-owner
rasterstate:harden/hostname-validation
rasterstate:fix/json-path-numeric-object-keys
rasterstate:fix/debug-body-preview-utf8-panic
rasterstate:wip/codex-1/rasterstate-fj
rasterstate:readme-drop-github
rasterstate:salvage/codex-2/fj/v0.2.0
rasterstate:salvage/codex-3/fj/v0.2.0
rasterstate:salvage/codex-4/fj/v0.2.0
rasterstate:salvage/lead/fj-build/v0.2.0
rasterstate:salvage/review-fjord-web/fj-pager/v0.2.0
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.2.0
rasterstate:feat/stack-review-enriched
rasterstate:feat/stack-sync
rasterstate:feat/stack-new-real
rasterstate:feat/work-context-enriched
rasterstate:feat/agent-review-impl
rasterstate:feat/agent-explain-impl
rasterstate:feat/agent-provider
rasterstate:feat/stack-review
rasterstate:feat/stack-new
rasterstate:feat/work-continue
rasterstate:feat/work-resume-session
rasterstate:feat/work-context-impl
rasterstate:feat/work-stack-agent-commands
rasterstate:adopt-fjord-actions
rasterstate:ci/coverage-strict-gate
rasterstate:refactor/coverage-region-exclude
rasterstate:refactor/converge-json-path
rasterstate:refactor/split-client-resolve
rasterstate:test/api-coverage-round4
rasterstate:test/api-coverage-round3
rasterstate:test/cov-ignore-drift-guard
rasterstate:test/e2e-smoke-coverage
rasterstate:test/command-tree-guard
rasterstate:refactor/split-workflow-artifacts
rasterstate:chore/coverage-intent-config
rasterstate:test/api-label-milestone-hook
rasterstate:test/output-and-repo-core
rasterstate:refactor/split-issue-comments
rasterstate:refactor/split-repo-social
rasterstate:refactor/split-pr-module
rasterstate:test/api-wiremock
rasterstate:test/backfill-pure-helpers
rasterstate:cleanup/hoist-truncate-human-size
rasterstate:feat/run-download-and-workflow-list
rasterstate:feat/parity-followups
rasterstate:feat/actions-logs-and-gh-parity
rasterstate:sso-pat-guidance
rasterstate:test/observability-smoke
rasterstate:salvage/codex-2/fj/v0.1.2
rasterstate:salvage/codex-2/fj/v0.1.3
rasterstate:salvage/codex-3/fj/v0.1.2
rasterstate:salvage/codex-3/fj/v0.1.3
rasterstate:salvage/codex-4/fj/v0.1.2
rasterstate:salvage/codex-4/fj/v0.1.3
rasterstate:salvage/lead/fj-build/v0.1.2
rasterstate:salvage/lead/fj-build/v0.1.3
rasterstate:salvage/review-fjord-web/fj-pager/v0.1.2
rasterstate:salvage/review-fjord-web/fj-pager/v0.1.3
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.1.2
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.1.3
rasterstate:salvage/codex-2/fj/v0.1.1
rasterstate:salvage/codex-3/fj/v0.1.1
rasterstate:salvage/codex-4/fj/v0.1.1
rasterstate:salvage/lead/fj-build/v0.1.1
rasterstate:salvage/review-fjord-web/fj-pager/v0.1.1
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.1.1
rasterstate:salvage/codex-2/fj/v0.1.0
rasterstate:salvage/codex-3/fj/v0.1.0
rasterstate:salvage/codex-4/fj/v0.1.0
rasterstate:salvage/lead/fj-build/v0.1.0
rasterstate:salvage/review-fjord-web/fj-pager/v0.1.0
rasterstate:salvage/usw-dev-01/fj-ship-fixes/v0.1.0
No reviewers
Labels
Clear labels
backlog
Accepted but not scheduled
blocked
Blocked or stalled waiting on external progress
converted
Converted into tracked work
forseti:changes-requested
Forseti review found unaddressed findings; cleared on a clean re-review at the current head.
opportunity
Potential product or business opportunity
p1
Priority 1
p2
Priority 2
p3
Priority 3
parked
Paused intentionally until later
No labels
backlog
blocked
converted
forseti:changes-requested
opportunity
p1
p2
p3
parked
Milestone
Clear milestone
No items
No milestone
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
rasterstate/fj!245
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/241-null-pr-check-statuses"
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?
Why
fj pr list --repo rasterstate/fjfailed witherror: decoding JSON list responsewhen a PR had no per-check statuses. That made fleet-status markrasterstate/fjas missing and blinded the supervisor to open fj PRs.What
statuses: nullfrom Forgejo's combined commit status endpoint as an empty check list.Testing
cargo test combined_statuscargo run --quiet -- pr list --repo rasterstate/fj --no-pagerForseti review
No blocking findings from the lead reviewer.
No inline findings.
rasterstate/fj#2458deb8a9da44csha256:563fd9ef2e97dd610912e9a7d94f3732d0ff5ce10f71373a60fa02c58318f25eopenai:gpt-5.5+anthropic:claude-haiku-4-5-202510010031326 in / 1170 out(17202from cache) ≈$0.0706GITHUB_TOKEN90f812eae3b0Forseti review
No blocking findings from the lead reviewer.
No inline findings.
rasterstate/fj#2458deb8a9da44csha256:563fd9ef2e97dd610912e9a7d94f3732d0ff5ce10f71373a60fa02c58318f25eopenai:gpt-5.5+anthropic:claude-haiku-4-5-202510010031326 in / 1170 out(17202from cache) ≈$0.0706GITHUB_TOKEN90f812eae3b08deb8a9da4e4d01f7871Forseti review
No blocking findings from the lead reviewer.
No inline findings.
rasterstate/fj#245e4d01f78717fsha256:3bc3154210e2f93690b8d9b9c67995e691633b9a60eed1f480816c8ef9399313openai:gpt-5.5+anthropic:claude-haiku-4-5-202510010028281 in / 664 out(24779from cache) ≈$0.0319GITHUB_TOKEN9a4a89cd15d9Forseti review
No blocking findings from the lead reviewer.
No inline findings.
rasterstate/fj#245e4d01f78717fsha256:3bc3154210e2f93690b8d9b9c67995e691633b9a60eed1f480816c8ef9399313openai:gpt-5.5+anthropic:claude-haiku-4-5-202510010028281 in / 664 out(24779from cache) ≈$0.0319GITHUB_TOKEN9a4a89cd15d9e4d01f78713e8150a092Forseti review
No blocking findings from the lead reviewer.
No inline findings.
rasterstate/fj#2453e8150a09272sha256:651ef7560ca88f172fe84978fd3b73160e4abcaf0d8e5f680f93545d751ca768openai:gpt-5.5+anthropic:claude-haiku-4-5-202510010028284 in / 737 out(21042from cache) ≈$0.0333GITHUB_TOKENb1f46fd0c5ebForseti review
No blocking findings from the lead reviewer.
No inline findings.
rasterstate/fj#2453e8150a09272sha256:651ef7560ca88f172fe84978fd3b73160e4abcaf0d8e5f680f93545d751ca768openai:gpt-5.5+anthropic:claude-haiku-4-5-202510010028284 in / 737 out(21042from cache) ≈$0.0333GITHUB_TOKENb1f46fd0c5ebClosing: this is already on
mainand there is nothing left to merge.The fix shipped as #242, "Handle PR checks with no status contexts" (6 files), which is on
mainatba271791. This PR's head is one commit ahead of main but changes zero files:That empty diff is why the web UI returns a 500 on merge rather than a useful error: Forgejo is being asked to create a merge with no content.
CI on it went green at 21:13, which is a little misleading and worth noting for anyone reading back: every check passed because there was nothing to break.
No work is lost. If any part of the null-versus-empty distinction is still unhandled, it needs a fresh commit against current
main, not this branch.Pull request closed