Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
dedbc7b
fix(strix): retry transient visibility API failures
cursoragent Aug 17, 2026
f0dabff
test(strix): isolate GITHUB_OUTPUT in visibility CLI contract
cursoragent Aug 17, 2026
1d076f8
fix(strix): retry authenticated 403 rate-limit visibility
cursoragent Aug 17, 2026
be02bd5
fix(strix): bound rate-limit visibility backoff separately from flakes
cursoragent Aug 17, 2026
56d4677
fix(strix): extend visibility rate-limit backoff
seonghobae Aug 19, 2026
553a6bf
fix: preserve bounded visibility retry budgets
seonghobae Aug 19, 2026
61a8228
Merge branch 'main' into cursor/strix-visibility-retry-519f
opencode-agent[bot] Aug 20, 2026
3411685
Merge branch 'main' into cursor/strix-visibility-retry-519f
opencode-agent[bot] Aug 20, 2026
21beb66
test: complete Strix visibility docstring coverage
seonghobae Aug 20, 2026
c20d8c7
fix(strix): separate visibility retry budgets
seonghobae Aug 21, 2026
b44b198
Merge remote-tracking branch 'origin/main' into HEAD
seonghobae Aug 21, 2026
eef3b8b
Merge branch 'main' into cursor/strix-visibility-retry-519f
opencode-agent[bot] Aug 21, 2026
46d5cae
docs: complete central control-plane docstrings
seonghobae Aug 21, 2026
78769dd
Merge branch 'main' into cursor/strix-visibility-retry-519f
opencode-agent[bot] Aug 21, 2026
49d133a
Merge branch 'main' into cursor/strix-visibility-retry-519f
opencode-agent[bot] Aug 21, 2026
78a935e
test(strix): track current scheduler concurrency
seonghobae Aug 21, 2026
c500598
fix(security): refresh pip audit dependency
seonghobae Aug 21, 2026
5690b45
Merge current main and refresh scheduler contracts
seonghobae Aug 21, 2026
c0fcaec
test(strix): exercise visibility gh subprocess boundary
seonghobae Aug 24, 2026
02f6e4f
Merge current main into Strix visibility retry PR
seonghobae Aug 24, 2026
4d86700
Merge main into cursor/strix-visibility-retry-519f, reconciling two
claude Aug 30, 2026
04b7a23
Merge branch 'main' into cursor/strix-visibility-retry-519f
seonghobae Aug 30, 2026
6a99b35
Merge remote-tracking branch 'origin/main' into cursor/strix-visibili…
claude Aug 30, 2026
46c6ce8
Merge main into cursor/strix-visibility-retry-519f to resolve behind …
claude Sep 2, 2026
126c214
test(strix): reproduce internal visibility and multi-header drift
seonghobae Sep 2, 2026
541acbb
test(strix): reproduce real included HTTP status classification
seonghobae Sep 2, 2026
8896e76
fix(strix): preserve internal visibility and terminal response body
seonghobae Sep 2, 2026
e78fbd0
test(strix): align CLI boundary with visibility mapping
seonghobae Sep 2, 2026
dab45d4
Merge remote-tracking branch 'origin/main' into merge-main-into-1114
claude Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 4 additions & 32 deletions .github/workflows/strix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@ jobs:
test -f "$trusted_strix_source/scripts/ci/strix_quick_gate.sh"
test -f "$trusted_strix_source/scripts/ci/test_strix_quick_gate.sh"
test -f "$trusted_strix_source/scripts/ci/strix_required_workflow_smoke.sh"
test -f "$trusted_strix_source/scripts/ci/strix_resolve_target_visibility.py"
{
echo "TRUSTED_STRIX_SOURCE=$trusted_strix_source"
echo "TRUSTED_STRIX_GATE=$trusted_strix_source/scripts/ci/strix_quick_gate.sh"
Expand Down Expand Up @@ -468,45 +469,16 @@ jobs:
exit 1
fi
case "$EVENT_REPOSITORY_VISIBILITY" in
PUBLIC | public) is_private=false ;;
PRIVATE | private | INTERNAL | internal) is_private=true ;;
PUBLIC | public) echo "is_private=false" >>"$GITHUB_OUTPUT" ;;
PRIVATE | private | INTERNAL | internal) echo "is_private=true" >>"$GITHUB_OUTPUT" ;;
"")
is_private=""
for target_visibility_attempt in 1 2 3 4 5 6; do
# The single-quoted jq program intentionally expands jq's
# `$visibility`, not a shell variable (ShellCheck SC2016).
# shellcheck disable=SC2016
if is_private="$(
gh api "repos/${TARGET_REPOSITORY}" --jq '
(.visibility // "" | ascii_downcase) as $visibility
| if $visibility == "public" then "false"
elif $visibility == "private" or $visibility == "internal" then "true"
else empty
end
'
)"; then
break
fi
is_private=""
if [ "$target_visibility_attempt" -lt 6 ]; then
echo "Repository visibility lookup failed (attempt ${target_visibility_attempt}/6), possibly a transient GitHub API rate limit; retrying after backoff." >&2
sleep "$(( target_visibility_attempt * 5 ))"
fi
done
python3 "$TRUSTED_STRIX_SOURCE/scripts/ci/strix_resolve_target_visibility.py"
;;
*)
echo "::error::Target repository event visibility was not public, private, or internal."
exit 1
;;
esac
case "$is_private" in
true | false) ;;
*)
echo "::error::Target repository visibility did not resolve to true or false after retries."
exit 1
;;
esac
echo "is_private=$is_private" >>"$GITHUB_OUTPUT"

- name: Materialize target workspace
if: github.event_name != 'repository_dispatch'
Expand Down
13 changes: 9 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -1158,9 +1158,6 @@ Semantic Versioning where the repository publishes a release.
- Run the bounded fast-mlsirm repair heartbeat at minute 49 of every hour with one-dispatch scope and a two-hour same-head floor, without weakening true-parameter recovery, CPU/GPU parity, skipped-test, or Rust-ownership gates.
- Use NVIDIA NIM `mistralai/mistral-small-4-119b-2603` with explicit high reasoning for scheduled repair and `nvidia/nemotron-3-nano-30b-a3b` for bounded helper work instead of GitHub Models in the write-capable autofix worker.
- Apply one NUL-delimited exact-path and complete pre/post-worktree verification contract to both ordinary review repair and merge-conflict repair rather than relying on a visible post-model diff for the ordinary path.

### Changed

- Avoided the expensive R/testthat failure-summary regular expression on marker-absent bounded logs by checking the required terminal marker first, while preserving fail-closed handling for incomplete or malformed failure evidence.

### Fixed
Expand Down Expand Up @@ -1204,7 +1201,14 @@ Semantic Versioning where the repository publishes a release.
again.
- Resolve Strix visibility from the trusted GitHub event for ordinary push,
schedule, and pull-request runs, reserving API retries for cross-repository
dispatches whose workflow token may not see the target repository.
dispatches whose workflow token may not see the target repository. The
reserved cross-repository fallback now delegates to
`scripts/ci/strix_resolve_target_visibility.py` (see the transient/rate-limit
retry entry below) instead of the prior inline six-attempt linear-backoff
loop, so the two independently landed fixes for the same root cause compose:
the trusted-event fast path skips the GitHub API call entirely, and only the
`repository_dispatch` path retries, now with separate transient/rate-limit
budgets and `Retry-After`/`X-RateLimit-Reset` support.
- Reconciled the Strix required-workflow smoke contract and the privileged
OpenCode model pool with the current `gpt-5.4` direct-OpenAI fallback after
`gpt-5.6-luna` was retired. This prevents every consumer repository's
Expand Down Expand Up @@ -1262,6 +1266,7 @@ Semantic Versioning where the repository publishes a release.
- Restored 100% docstring coverage for the commercial-readiness GitHub transport constructor.
- Refused PR Review Merge Scheduler head mutations, `update-branch` and the last-push approval head restamp, whenever the resolved mutation credential is the workflow `GITHUB_TOKEN`. GitHub starts no workflow run for events created with that credential, so the moved head collected no current-head required checks and the PR stayed permanently `BLOCKED` with a `github-actions[bot]` merge commit that no later scheduler run could repair, because the branch was no longer behind. The scheduler now waits with `head_mutation_credential_upgrade` guidance naming `PR_REVIEW_MERGE_TOKEN`, `OPENCODE_APPROVE_TOKEN`, and the OpenCode app token exchange.
- Parsed `opencode.jsonc` as JSONC (stripping `//` and `/* */` comments outside string literals) in the reasoning-effort guard and its contract tests, instead of raw `json.loads`, which rejected the file the moment it carried its first explanatory comment (added for the `contextual-orchestrator` provider block) with `Expecting property name enclosed in double quotes`. Comment markers inside string values, such as the `$schema` URL, are left untouched.
- Retried transient GitHub visibility lookups in the required Strix job so a timeout, 5xx, 429, empty/non-boolean response, or authenticated HTTP 403 rate-limit (installation budget / secondary rate limit) no longer aborts the scan before it starts. Rate-limit 403 uses a distinct 3-attempt budget and a 30–60s bounded wait (Retry-After / X-RateLimit-Reset when present, otherwise 30/60s). A real 401/403/404 on a missing or unauthorized repository stays fail-closed and is never treated as a source finding.
- Download the pinned `uv` 0.12.1 exporter from the official GitHub Releases URL instead of `releases.astral.sh`, which now returns HTTP 403 and blocks org-wide OpenCode `coverage-evidence`. The SHA-256 pin is unchanged. The opener may follow one hop onto `release-assets.githubusercontent.com` or `objects.githubusercontent.com` and still rejects every other host, userinfo, non-HTTPS scheme, and nondefault port (ContextualWisdomLab/.github#1109).
- Compared the trusted `uv` executable's post-install `--version` output against the real GitHub Releases build's full string, `uv 0.12.1 (x86_64-unknown-linux-gnu)`, instead of the bare `uv 0.12.1` the prior check required; the genuine release binary always prints the target triple, so every installation was failing the pin check immediately after the archive download itself was fixed (ContextualWisdomLab/.github#1109).
- Excluded relative `-r` and `--requirement` referrers from generated flat base-lock publication while retaining bounded include syntax diagnostics and discovering independently complete direct `.txt` children of `requirements` directories.
Expand Down
2 changes: 1 addition & 1 deletion scripts/ci/organization_commercial_readiness_loop.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ class GitHubClient:
"""Use the GitHub CLI as an authenticated, bounded REST transport."""

def __init__(self, token: str, *, timeout_seconds: int = 60) -> None:
"""Initialize one authenticated GitHub credential with a bounded timeout."""
"""Initialize one authenticated GitHub credential with a bounded request timeout."""
if not token:
raise GitHubError("GH_TOKEN is required for organization coordination")
self._token = token
Expand Down
Loading
Loading