Skip to content

fix(e2e): restrict readiness polling to loopback destinations - #1314

Open
cursor[bot] wants to merge 11 commits into
mainfrom
cursor/bc-deb78137-73b8-43fe-bfe5-af265490f12a-4f61
Open

fix(e2e): restrict readiness polling to loopback destinations#1314
cursor[bot] wants to merge 11 commits into
mainfrom
cursor/bc-deb78137-73b8-43fe-bfe5-af265490f12a-4f61

Conversation

@cursor

@cursor cursor Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Why

Sandboxed web E2E still accepted any HTTP(S) hostname on --backend-ready-url / --frontend-ready-url. A review run could poll a public host or a link-local metadata endpoint instead of the sandboxed app. #1244 already specified the repair but is behind current main. #1313 only allows localhost/127.0.0.1, drops IPv6 ::1 and 127.0.0.0/8, and mixes Strix classifier ownership into the SSRF slice.

This is the current-main successor for that security boundary. It also carries a Strix banner sanitizer that deletes a cosmetic-only MODEL QUALITY WARNING box and keeps Fatal/Denied/Timeout, Provider WARNING, RateLimitError, and related infra tokens when those appear in the same box. #1311 still mutates $STRIX_LOG in place, so gate-last-attempt.log is not byte-faithful. Do not land #1311.

Repair

  • Parse the readiness URL before opening it.
  • Accept literal localhost (trailing FQDN dot stripped) or an address Python ipaddress classifies as loopback.
  • Resolve localhost and require every A/AAAA answer to be loopback after IPv4-mapped unwrap, so a poisoned hosts file cannot smuggle a public address.
  • Unwrap IPv4-mapped IPv6 so ::ffff:8.8.8.8 cannot bypass the rule while ::ffff:127.0.0.1 still works.
  • Reject userinfo, missing hosts, unspecified binds (0.0.0.0, ::), .localhost subdomains, and 169.254.169.254.
  • Keep redirects disabled.
  • Delete a cosmetic-only Strix MODEL QUALITY WARNING box. If the same box also carries Fatal, Denied, Timeout, Provider WARNING, RateLimitError, Nvidia_nimException, LLM CONNECTION FAILED, APIConnectionError, or Too Many Requests, strip only the heading and keep the failure line. A preceding Fatal/Denied box stays.
  • Classify a sanitized console copy. gate-last-attempt.log and gate-attempts/ stay raw.
  • Align the PR overlay and path-policy contracts to the protected-main gpt-5.4 default and NVIDIA fallback. Do not treat openai_direct/gpt-5.6-luna quota-fixture names as live workflow pins.
  • Record ADR-0003, doctoring with APA 7th citations, CHANGELOG, and ARCHITECTURE pointers.
  • Do not change vulnerability-severity classification.

Verification (exact current head)

  • Current head: d4ea752830df1c6e25bc38147fe08a9b3480f058.
  • Protected base: main@8fd471a31399a914d9cb22a840f4a4c68e010ea6; the head is a non-force descendant of this base.
  • Hosted path-policy run 32815000721 checked out exact head d4ea7528…, passed 1,408 tests (1 skipped, 16 subtests), and completed full test_strix_quick_gate: PASS.
  • All 13 substantive commit-associated workflows are terminal GitHub-success; unresolved review threads are 0.
  • SAST and Security/Trivy success labels remain non-authoritative for head binding: their default checkout uses the synthetic PR merge under open central defect security: bind reusable SAST and security scans to the exact pull-request head #1222. This is not hidden or counted as exact-head scan evidence.
  • Reviews API has no exact-current-head formal approval. Exact-head OpenCode review-only request: comment 5406826622.
  • Required Strix now passes on the protected-main gpt-5.4 overlay while preserving the raw last-attempt artifact and fail-closed infrastructure/vulnerability classification.

Operator next action

Wait for an exact-current-head substantive formal verdict and the #1222 exact-head SAST/Trivy provenance owner repair. Do not admin-merge, self-approve, or count GitHub-success scan labels as authoritative binding. If the verdict identifies a current-source defect, repair it test-first on this owner branch; otherwise merge only under live governance after all evidence is exact-head and independently approved.

Closes nothing. Supersedes the live-head intent of #1244 on current main. Successor for the sanitizer intent of #1311 without copying its in-place last-attempt mutation.

Land the #1244 loopback boundary on current main without mixing Strix
classifier changes. Accept literal localhost and standard-library
loopback addresses, unwrap IPv4-mapped IPv6, and reject userinfo,
missing hosts, unspecified binds, and metadata destinations before any
request is opened.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
devin-ai-integration[bot]

This comment was marked as resolved.

A poisoned hosts file could map the literal name to a public A/AAAA
record. Resolve localhost before opening the readiness URL and fail
closed unless every answer is loopback after IPv4-mapped unwrap.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow-up 3f0c3ac5 addresses the Devin localhost-without-resolution note.

Literal localhost is now resolved. Every A/AAAA answer must be loopback after IPv4-mapped unwrap. A poisoned hosts file, empty answer set, resolver error, or non-IP answer fails closed before urlopen. Numeric loopback literals are unchanged.

Local evidence on this head: 28 focused tests, 187 statements / 58 branches at 100% on sandboxed_web_e2e.py. Hosted Checks must rerun on 3f0c3ac5; cancelled or queued predecessor runs are not merge evidence.

Next action: wait for current-head OpenCode, Strix, and required Checks on 3f0c3ac5. Do not treat 9a47c10e results as this head.

View PR

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

devin-ai-integration[bot]

This comment was marked as resolved.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revalidated exact head 3f0c3ac5c018770c32a80663a28c1f499ddfa1ba.

Hosted success on this SHA: Python 3.14 exact contract and complete coverage; Python 3.10 contract; quality; exact-head-policy; exact-head-path-policy; noema-review; close-empty; generate-sbom; dependency-review; osv-scan; pip-audit; Semgrep; trivy-fs; Scorecard; gitleaks; CodeQL compatibility/merge-preview (actions and python); latest scan-pr-queue (run 32792998005). Devin Review status is success. The Devin TOCTOU note (validate-then-urlopen re-resolve) is Info only and is accepted for the documented static-hosts threat. Do not push a successor SHA for that note.

Not merge evidence:

  • Required-workflow opencode-review success on run 32792844690 is the pull_request_target bootstrap stub. It is not an OpenCode GitHub App APPROVE on this head.
  • No OpenCode Review Dispatch run exists for #1314@3f0c3ac5. The live dispatch queue is .github#789 (in progress) then naruon#1195 (queued). OriginWeave#40 failed after a 2h dispatch.
  • The #1314 review-event scheduler (32792998005) ran with TRIGGER_REVIEWS=false. The later workflow_run scheduler (32793386272) had TRIGGER_REVIEWS=true but inspected only #897.
  • Org-queue-sweep 32791443215 consumed the shared dispatch budget on naruon#1195, not this PR.
  • Strix 32792844719 is still in progress on this SHA. Cancelled predecessor scan-pr-queue / 9a47c10e runs are not this head.

Do not treat the stub check, queued/cancelled runs, or Devin Info as OpenCode approval. Wait for a current-head OpenCode App APPROVE plus Strix success on 3f0c3ac5 before the mechanical merge scheduler can land this PR. No new commit from this pass.

View PR

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strix required check now failed on exact head 3f0c3ac5c018770c32a80663a28c1f499ddfa1ba (run 32792844719). This is not a loopback-readiness vulnerability finding.

Observed on this SHA:

  • Primary nvidia_nim/nvidia/nemotron-3-super-120b-a12b: litellm.RateLimitError 429 Too Many Requests, no report artifact, fail-closed.
  • Fallback nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5: penetration test completed with Vulnerabilities 0, then the gate classified the static MODEL QUALITY WARNING banner as provider infrastructure/failure-signal output and failed closed.
  • Next fallback openai-direct/gpt-5.6-luna: 404 page not found.
  • Final annotation: provider/backend unavailable (#466, #467). Zero mapped vulnerability reports.

Do not treat this as merge evidence, and do not treat it as a defect in require_loopback_readiness_url. Do not push a successor SHA on #1314 to retry Strix or to carry #1311 banner sanitization — that would invalidate the green quality/Noema/security Checks and mix Strix classifier ownership into this SSRF slice.

Still not merge evidence: required-workflow opencode-review stub success; no OpenCode Review Dispatch for this PR@SHA. Devin TOCTOU remains Info and is accepted. Wait for a same-head Strix success (retry/dispatch, not a new commit) plus OpenCode App APPROVE on 3f0c3ac5.

View PR

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

Copy link
Copy Markdown
Contributor

Exact-head evidence correction for current head 3f0c3ac5c018770c32a80663a28c1f499ddfa1ba:

Therefore this PR is not merge-ready. Do not aggregate Semgrep/Trivy association status, the opencode-review bootstrap stub, or the Strix provider failure into an exact-head passing claim.

@seonghobae

Copy link
Copy Markdown
Contributor

Live scheduler evidence from the a724582 protected-main push run 32796146127 (TRIGGER_REVIEWS=true, MAX_PRS=100, CREATED_AT ASC, dispatch budget 1):

This comment is not OpenCode approval and not merge evidence. Do not push a successor SHA here to retry Strix or to absorb a724582.

@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated 2026-08-25T01:24Z. Head still 3f0c3ac5; protected main still a724582 (direct push, not a merged PR). This comment is not OpenCode approval and not merge evidence.

Local this hour: pytest tests/test_sandboxed_web_e2e.py → 16 passed. Do not push a successor SHA.

Trusted-base Strix still cannot pass until #1311 is the gate on main. Contrast just re-run in worktrees: #1311@7c6d80c2 STRIX_TEST_CASE_FILTER=console-model-quality-warning-banner-sanitized → exit 0; main@a724582 → exit 1 (unknown STRIX_TEST_CASE_FILTER).

Org-queue-sweep 32794227373 (the */15 walk that can see this PR) was still in step "Sweep organization repository queues" at 01:24Z, started 01:01Z. Predecessor 32791443215 spent review dispatches=1/1 then failed with 2 repo 403s. Same-repo MAX_PRS=100 + CREATED_AT ASC still never inspects #1311/#1314.

@seonghobae

Copy link
Copy Markdown
Contributor

Follow-up 2026-08-25T01:32Z, not merge evidence: #1311 auto-merges cleanly onto a724582, but that tip already has test_strix_quick_gate.sh asserting openai/gpt-5.4 in opencode-review-dispatch.yml while the workflow still lists openai/gpt-5.6-luna. The operator land of #1311 must fix that pair in the same push or the next Strix Changed Path Quality CI will fail. Do not absorb that repair into this PR. Head remains 3f0c3ac5.

@seonghobae

Copy link
Copy Markdown
Contributor

Correction 2026-08-25T01:34Z, not merge evidence. Org-queue-sweep 32794227373 completed cleanly at 01:30:45Z. I was wrong to treat it as a walk that can see this PR.

The trusted workflow excludes ContextualWisdomLab/.github (select(.full_name != "ContextualWisdomLab/.github")). Runtime log has no Sweep ContextualWisdomLab/.github group. It swept 66 other repos from rotation offset 40 and spent its one review dispatch on ContextualWisdomLab/OriginWeave#45 (same-head OpenCode dispatched at 01:03:57Z). After that, budget was review dispatches=1/1.

Hub-repo PRs are only scanned by same-repo scan-pr-queue (MAX_PRS=100, CREATED_AT ASC), which still never reaches #1311/#1314 among 111 open PRs. Waiting for the next */15 sweep will not dispatch OpenCode here.

Land path is unchanged: operator lands #1311 plus the a724582 opencode-review-dispatch.yml luna/gpt-5.4 needle fix, then same-head Strix on this SHA 3f0c3ac5. Head unchanged; do not push.

@seonghobae

Copy link
Copy Markdown
Contributor

Follow-up 2026-08-25T01:36Z, not merge evidence. The a724582 luna/gpt-5.4 needle pair now has a dedicated current-main PR: #1316@c3eb391b (updates opencode-review-dispatch.yml to openai/gpt-5.4). Local: 129 focused contract tests passed; hosted quality already green. It does not include the #1311 banner sanitizer. Do not fold #1316 into this PR. Head remains 3f0c3ac5.

@seonghobae

Copy link
Copy Markdown
Contributor

Land-order correction 2026-08-25T01:39Z, not merge evidence. Do not push a successor SHA here.

This head still overlays strix.yml with openai-direct/gpt-5.6-luna. Trusted smoke on main@a724582 still asserts that luna pair. A same-head Strix retry would therefore pass the 13s smoke (unlike #1316@c3eb391b, whose overlay is already gpt-5.4 and whose required Strix 32797929543 failed at the trusted smoke).

Live contrast: #1311 same-head re-run 32748314313 job 97653261171 cleared Self-test Strix required workflow contract and is now in Run Strix (quick). That job still uses the trusted (pre-sanitizer) gate, so it is not merge evidence for #1311 either.

#1316 is required for current-main PRs whose overlay yaml is gpt-5.4. It is not on this PR's same-head path. Merging main into this branch would make the overlay gpt-5.4 and then fail the trusted luna smoke.

Operator path for this exact head 3f0c3ac5:

  1. Land fix(strix): sanitize benign MODEL QUALITY WARNING banner before infra-failure detection #1311 banner sanitizer onto protected main (direct push if required Strix stays catch-22).
  2. Re-run same-head required Strix here. Scheduler will not retry the finished FAILURE 32792844719.
  3. Wait for OpenCode GitHub App APPROVE on this SHA. The 4s opencode-review success is the bootstrap stub.

Do not fold #1311, #1316, or #1295 into this PR.

@seonghobae

Copy link
Copy Markdown
Contributor

Correction after #1318 merged at 01:42:35Z. Not merge evidence for this PR.

Protected main is now 8fd471a (squash of #1318@fc752a0, parent a724582). Trusted strix_required_workflow_smoke.sh now asserts the gpt-5.4 fallback pair. #1318 had required Strix FAILURE and no OpenCode App APPROVE; the merge SHA is not the PR head. Do not treat that squash as exact-head evidence.

This inverts the same-head Strix advice I posted at 01:39Z:

  • This overlay strix.yml still has openai-direct/gpt-5.6-luna and no comment sentinel.
  • A new required Strix run on 3f0c3ac5 would now fail the trusted gpt-5.4 smoke in ~13s.
  • Do not retry same-head Strix here until this branch is updated onto 8fd471a after the fix(strix): sanitize benign MODEL QUALITY WARNING banner before infra-failure detection #1311 banner sanitizer is the trusted gate.
  • Do not push a successor SHA yet. Updating onto main now would pass smoke and then fail closed on the unsanitized banner.

#1316@d71adbfe still carries the opencode-review-dispatch.yml luna→gpt-5.4 pool alignment (not in #1318). Its in-progress Strix 32798307104 passed smoke via a comment-only luna sentinel on the overlay yaml (job started 01:39:35Z, before #1318 landed).

Operator path: land #1311 onto main (same style as #1318 if catch-22), then update this PR onto that tip, let quality re-run, then same-head Strix + OpenCode App APPROVE.

@seonghobae

Copy link
Copy Markdown
Contributor

Follow-up 02:13Z from #1316@e4f9865a Strix 32799128752, not merge evidence.

#1318 smoke is live: that current-main head passed the trusted self-test, then failed in Run Strix (quick) after primary NIM 429 and 502. Fallbacks 49b and openai-direct/gpt-5.4 were configured and not attempted. Last-attempt NIM 502 is not classified retryable, so the trusted gate fail-closes before the fallback loop.

This does not change the instruction for 3f0c3ac5: do not push; do not retry same-head Strix (luna overlay vs gpt-5.4 smoke); do not fold #1311/#1316/#1295 or a 502 classifier into this PR. After #1311 is the trusted gate, this branch still needs an update onto that tip plus a retryable-502 path (or a NIM that succeeds on the primary) before same-head Strix can go green.

@seonghobae

Copy link
Copy Markdown
Contributor

Follow-up 02:24Z from #1311 same-head Strix 32748314313, not merge evidence for this PR.

That 42-minute run produced Vulnerabilities 0 on both the primary 120b (with 429) and the 49b fallback. The trusted pre-sanitizer gate discarded both as infra because report/console logs contain the MODEL QUALITY WARNING banner. That is the live proof #1311 must land on main before a same-head Strix retry here can accept a clean NIM result.

Do not push 3f0c3ac5. Do not retry Strix on this luna overlay (trusted smoke now wants gpt-5.4). After #1311 is the trusted gate, update this branch onto that tip, then quality + Strix + OpenCode App APPROVE.

@seonghobae

Copy link
Copy Markdown
Contributor

Queue note 02:37Z, not merge evidence. #1297@309bbf59 is the per-repository Strix serialization repair. Its own required Strix has held a GitHub-hosted runner since 01:37Z because trusted pull_request_target still uses main's per-PR concurrency group. That is why #1316's re-run stays queued and why this hour's parallel scans 429'd the shared NIM key.

Landing #1297's concurrency change onto main (same catch-22 as #1311) is what stops the storm. #1311 remains required so a serialized 0-finding NIM scan is not discarded on the banner. Do not fold either into this PR. Do not push 3f0c3ac5.

#13117c6d80c used a cross-box regex that also deleted a preceding
Fatal box. Classify a sanitized console copy so gate-last-attempt.log
stays raw, and keep only same-box banner removal for reports.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae

Copy link
Copy Markdown
Contributor

Exact-head update: 0ef296dcb88d2740bb390b181bfd0fe49979ac84.

This is not OpenCode approval and not merge evidence. #1311@7c6d80c is fail-open: its banner regex deletes a preceding Fatal box in one match (local proof posted on #1311). This SHA adds a box-scoped sanitizer plus raw gate-last-attempt.log publication, and keeps the loopback readiness boundary.

Local: loopback/path-policy pytest 27 passed; filtered Strix cases console-model-quality-warning-banner-sanitized, console-model-quality-warning-preserves-prior-fatal-box, report-model-quality-warning-banner-sanitized, report-model-quality-warning-preserves-prior-fatal-box, plus the existing internal-warning and provider-fatal cases, all exit 0.

Do not retry required Strix on this SHA (luna overlay vs trusted gpt-5.4 smoke). Hosted quality must re-run on this new head. Do not land #1311 as-is.

devin-ai-integration[bot]

This comment was marked as resolved.

cursoragent and others added 3 commits August 25, 2026 04:07
…heading

Deleting a whole MODEL QUALITY WARNING box hid a Fatal or provider Warning
emitted on the next line of that same box. Strip only the cosmetic heading
line, keep the classified console copy so last-attempt stays raw, and cover
the same-box fail-closed path.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
A trailing-space fullmatch left MODEL QUALITY WARNING in the classified
copy, so a clean 0-finding scan still fail-closed. Search the heading
after stripping ANSI so same-box failures stay visible.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Heading-only stripping left fixture or model text such as -warning- in
the leftover banner, which the generic Warn matcher fail-closed. Delete
a box that is only MODEL QUALITY WARNING. If the same box also has
Fatal, Denied, Timeout, or Provider WARNING, strip the heading and keep
the failure line.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated 2026-08-25T04:17Z.

Land SHA is now f02eb90a68aa7258f39a5957435930b85feb32a2. The sanitizer deletes a cosmetic-only MODEL QUALITY WARNING box and keeps Fatal / Denied / Timeout / Provider WARNING when those appear in the same box. Local filtered gate cases for clean console/report, prior-Fatal console/report, same-box Fatal, and same-box Provider WARNING all passed. Hosted on this SHA: quality, Python 3.10/3.14, exact-head-policy, and exact-head-path-policy (32807934274) succeeded.

Protected main is still 8fd471a (squash of #1318, not exact-head). Do not merge main into this branch. Do not land #1311. Mechanical merge still cannot treat a required-Strix smoke failure as merge evidence. Operator land of this SHA remains the first sanitizer-on-main step.

cursoragent and others added 2 commits August 25, 2026 04:19
…dence

The PR overlay still named the removed gpt-5.6-luna fallback, so the
trusted required-path smoke fail-closed before the sanitizer could
matter. Match the protected-main gpt-5.4 contract. Also keep
RateLimitError and related infra tokens when they share a MODEL QUALITY
WARNING box, so deleting a cosmetic-only banner cannot hide them.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Path-policy still pinned the removed gpt-5.6-luna secret-absent default
after the overlay matched protected main. RateLimitError in a MODEL
QUALITY WARNING box is retryable, so the keep-path must expect the
three-model Vertex sequence; one call would mean the box was deleted.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated on 6b06a923.

Path-policy on 51291c3a failed because two pytest contracts still pinned the removed gpt-5.6-luna secret-absent default after the overlay matched protected main. That is fixed. Same-box RateLimitError is retryable, so the keep-path now expects the three-model Vertex sequence; one call would mean the box was deleted and inspect passed.

Local python -m pytest tests -q: 1408 passed, 1 skipped, 16 subtests. The six banner cases plus the RateLimitError keep-path exit 0. Devin Info residual PRRT_kwDOS_C14s6b7vsm is resolved. Zero unresolved review threads.

Protected main is still 8fd471a via squash-merge of #1318. That land is not exact-head. Do not merge main into this branch. Do not land #1311. Required Strix still runs the pre-sanitizer gate from main. Mechanical merge cannot treat a failed required Strix check as merge evidence.

@seonghobae

Copy link
Copy Markdown
Contributor

Hosted path-policy 32808824229 is SUCCESS on 6b06a923. Quality, Python 3.10/3.14, exact-head-policy, and Devin Review are also SUCCESS. Local full test_strix_quick_gate.sh printed test_strix_quick_gate: PASS. All eight review threads are resolved.

Required Strix 32808821572 is still queued. It still runs the pre-sanitizer gate from protected main. Do not treat a later trusted-gate FAILURE as a reason to rewrite the sanitizer fail-open. Do not merge main into this branch. Do not land #1311. Mechanical merge cannot treat failed required Strix as merge evidence. Land SHA remains 6b06a923.

@seonghobae

Copy link
Copy Markdown
Contributor

Required Strix 32808821572 on 6b06a923 completed FAILURE. Do not retry this SHA.

Observed, not invented:

  • Self-test / required-path smoke SUCCESS at 04:44:18Z. The gpt-5.4 overlay matches the trusted contract.
  • Trusted gate is still trusted-strix-source/scripts/ci/strix_quick_gate.sh from protected main (pre-sanitizer).
  • Primary nvidia_nim/nvidia/nemotron-3-super-120b-a12b: RateLimitError 429 plus a cosmetic MODEL QUALITY WARNING box; fail-closed; same-model retries 2/3 and 3/3.
  • Fallback nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5: Vulnerabilities 0 plus a cosmetic MODEL QUALITY WARNING box; trusted unsanitized gate fail-closed on provider-signal / missing report artifact.
  • Fallback openai-direct/gpt-5.4: LLM CONNECTION FAILED / 404 page not found in 5s. That is a real provider-base failure, not a sanitizer miss. Do not fold fix(strix): route direct-OpenAI fallback models to the OpenAI platform endpoint #1295 into this SHA.
  • Final annotation: STRIX_PROVIDER_UNAVAILABLE.

The llama-3.3 0-finding attempt is the catch-22 this sanitizer exists to close. RateLimitError and LLM CONNECTION FAILED stay fail-closed even after the sanitizer is trusted. Mechanical merge cannot treat this failed required check as merge evidence. Do not merge main into this branch. Do not land #1311. Land SHA remains 6b06a923.

@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated 2026-08-25T05:50Z. Do not invent merge evidence.

Protected main is 8fd471a (squash of #1318). Exact-head fast-forward
requires this head to contain that tip. Take the two gpt-5.4 smoke and
harness commits without folding other PRs.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae

Copy link
Copy Markdown
Contributor

Pushed d025cc1b, a merge of protected main 8fd471a3 into this branch. This head is now a descendant of current main, so a later exact-head fast-forward is structurally possible. The only incoming file change was scripts/ci/test_strix_quick_gate.sh taking #1318’s openai-direct-quota-github-models-fallback-success fixture names (gpt-5.4).

This is not merge evidence. Required Strix still executes the pre-sanitizer gate from main (pull_request_target). The new SHA will get a new required-Strix run; do not treat a trusted-gate FAILURE on a cosmetic MODEL QUALITY WARNING plus a later LLM CONNECTION FAILED as approval to merge. Do not fold #1322, #1320, #1321, #1295, or #1311.

Previous head 6b06a923 cannot be exact-head onto 8fd471a3. Land SHA is now d025cc1b only if every required current-head check is actually green and an independent exact-head approval exists. Mechanical merge cannot invent those.

Merging 8fd471a brought #1318's global luna-to-gpt-5.4 replace in
test_strix_quick_gate.sh. Three OpenCode dispatch-pool assertions now
expected openai/gpt-5.4, but opencode-review-dispatch.yml still lists
openai/gpt-5.6-luna. Restore those needles so the harness matches the
unchanged dispatch workflow. Keep the Strix quota fixtures on gpt-5.4.
Do not fold the dispatch-pool model change from #1316.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae

Copy link
Copy Markdown
Contributor

Follow-up on d025cc1b: merging #1318’s harness also rewrote three OpenCode dispatch-pool needles to openai/gpt-5.4 while .github/workflows/opencode-review-dispatch.yml still lists openai/gpt-5.6-luna. That would fail test_strix_quick_gate.sh (quality / changed-path). Restored those three needles on d4ea7528. Quota fixtures stay on gpt-5.4. Do not fold #1316.

d4ea7528 remains a descendant of 8fd471a3. Land SHA is d4ea7528 only if every required current-head check is actually green and an independent exact-head approval exists. Still not merge evidence.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor

@opencode-agent

Please review exact current head d4ea752830df1c6e25bc38147fe08a9b3480f058 against protected base main@8fd471a31399a914d9cb22a840f4a4c68e010ea6. All 13 substantive commit-associated workflows are terminal GitHub-success and unresolved review threads are 0. SAST/Trivy success remains subject to central exact-head provenance defect #1222 and is not asserted here as authoritative scan binding. This is a review-only request; it is not approval or merge evidence.

@seonghobae

Copy link
Copy Markdown
Contributor

Required Strix 32814998745 on exact head d4ea752830df1c6e25bc38147fe08a9b3480f058 completed FAILURE at 07:33:54Z. This is not OpenCode approval and not merge evidence. Do not retry this SHA.

Observed, not invented:

  • Trusted smoke SUCCESS at 06:17:07Z. The gpt-5.4 overlay matches protected main 8fd471a31399a914d9cb22a840f4a4c68e010ea6.
  • Executing gate is still trusted-strix-source/scripts/ci/strix_quick_gate.sh from main (pre-sanitizer). STRIX_FALLBACK_MODELS was nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 openai-direct/gpt-5.4.
  • Primary nvidia_nim/nvidia/nemotron-3-super-120b-a12b (06:17–07:17): Vulnerabilities 0 plus a cosmetic MODEL QUALITY WARNING box. No RateLimitError / 429 on this attempt. Trusted unsanitized gate: Strix run emitted provider infrastructure or failure-signal output; failing closed.
  • Fallback nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5: again Vulnerabilities 0 plus a cosmetic MODEL QUALITY WARNING box; same fail-closed line.
  • Fallback openai-direct/gpt-5.4: LLM CONNECTION FAILED / 404 page not found in 5s. That is a real provider-base failure (fix(strix): route direct-OpenAI fallback models to the OpenAI platform endpoint #1295 / fix(strix): isolate direct-OpenAI fallback from foreign ambient API base #1323 class). Do not fold those PRs into this SHA.
  • Final check annotation: STRIX_PROVIDER_UNAVAILABLE.

The two NIM 0-finding attempts are the catch-22 this sanitizer exists to close. LLM CONNECTION FAILED stays fail-closed even after the sanitizer is trusted. Mechanical merge cannot treat this failed required check as merge evidence. Head remains a descendant of current main; unresolved review threads remain 0. Do not land #1311. Do not merge main again. Do not FF-push this SHA onto protected main.

@seonghobae

Copy link
Copy Markdown
Contributor

Please review exact head d4ea752830df1c6e25bc38147fe08a9b3480f058. This mention is a review request only. It is not an approval and not merge evidence.

@opencode-agent

@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated 2026-08-25T08:18Z. This is not an approval and not merge evidence.

@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated 2026-08-25T10:05Z. This is not an approval and not merge evidence.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.

Findings

1. HIGH Current-head GitHub Checks - Fix failed required checks before approval

  • Problem: Failed same-head checks remain for d4ea752830df1c6e25bc38147fe08a9b3480f058.
  • Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
  • Fix: Read and fix the failed check logs below, then rerun the current-head checks.
  • Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.

Failed checks:

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["docs review"]
  Evidence --> S3["CI script (3 files)"]
  S3 --> I3["review and security gate shell path"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["bash -n plus Strix self-test"]
  Evidence --> S4["Test (3 files)"]
  S4 --> I4["regression suite"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["targeted test run"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: d4ea752830df1c6e25bc38147fe08a9b3480f058
  • Workflow run: 32825952556
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.

Findings

1. HIGH Current-head GitHub Checks - Fix failed required checks before approval

  • Problem: Failed same-head checks remain for d4ea752830df1c6e25bc38147fe08a9b3480f058.
  • Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
  • Fix: Read and fix the failed check logs below, then rerun the current-head checks.
  • Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.

Failed checks:

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["docs review"]
  Evidence --> S3["CI script (3 files)"]
  S3 --> I3["review and security gate shell path"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["bash -n plus Strix self-test"]
  Evidence --> S4["Test (3 files)"]
  S4 --> I4["regression suite"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["targeted test run"]
Loading

Merge Conflict Guidance

  • Current merge state: DIRTY
  • Base branch: main
  • Head branch: cursor/bc-deb78137-73b8-43fe-bfe5-af265490f12a-4f61
  • Fix direction: merge or rebase origin/main into cursor/bc-deb78137-73b8-43fe-bfe5-af265490f12a-4f61, resolve conflict markers in the changed files, rerun the focused checks, then push the same branch.
  • Repair commands:
gh pr checkout 1314 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main  # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:cursor/bc-deb78137-73b8-43fe-bfe5-af265490f12a-4f61
# rebase path only: git push --force-with-lease origin HEAD:cursor/bc-deb78137-73b8-43fe-bfe5-af265490f12a-4f61

Keep the classified-copy box sanitizer so gate-last-attempt stays raw.
Take #1320's HF Hub notice filter and event-visibility/fallback contracts.
Point OpenCode dispatch-pool harness needles at openai/gpt-5.4 now that
opencode-review-dispatch.yml on main lists that model.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae

Copy link
Copy Markdown
Contributor

Revalidated 2026-08-25T11:45Z. This is not an approval and not merge evidence.

  • OpenCode App review 5018238392 on d4ea752830df1c6e25bc38147fe08a9b3480f058 is CHANGES_REQUESTED because required Strix 32814998745 is FAILURE and because protected main moved. That verdict is not merge evidence and does not authorize retrying Strix on the old SHA.
  • Protected main is now d2c554dbbc04854db6215970fabb70cef1ceb690 (squash of fix(strix): trust event repository visibility #1320; head a8f6af10 ≠ merge SHA). Not exact-head. Search review:approved remains 0.
  • Pushed merge 006c5235d6f24971236ab8e24f09f6ab25a20085 so this branch is a non-force descendant of current main. Resolution kept the classified-copy box sanitizer (gate-last-attempt.log stays raw) and took fix(strix): trust event repository visibility #1320's HF Hub notice filter plus event-visibility/fallback contracts. OpenCode dispatch-pool harness needles now follow opencode-review-dispatch.yml's openai/gpt-5.4.
  • Local on 006c5235: python3 -m pytest tests -q → 1,420 passed, 1 skipped, 16 subtests. Filtered sanitizer harness cases passed. Hosted Checks on this SHA are not yet merge evidence.
  • Do not retry Strix on d4ea7528. Do not treat fix(strix): trust event repository visibility #1320's workflow-success label or this comment as OpenCode approval. Do not mention-dispatch until current-head quality/path-policy are terminal and unresolved threads are 0.

@seonghobae

Copy link
Copy Markdown
Contributor

@opencode-agent

Please review exact current head 006c5235d6f24971236ab8e24f09f6ab25a20085 against protected base main@d2c554dbbc04854db6215970fabb70cef1ceb690. This mention is a review request only. It is not an approval and not merge evidence.

Hosted quality, exact-head-path-policy, exact-head-policy, and both Python contracts are terminal GitHub-success on this SHA. Unresolved review threads are 0. The prior CHANGES_REQUESTED review 5018238392 applies only to d4ea7528. Required Strix 32843338154 is the current-head scan and is not complete; do not treat queued or predecessor Strix as merge evidence.

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.

2 participants