Skip to content

fix(strix): persist 1.5.3 reports without dropping cryptography 50 - #961

Closed
seonghobae wants to merge 11 commits into
mainfrom
fix/strix-agent-atomic-report-persist
Closed

fix(strix): persist 1.5.3 reports without dropping cryptography 50#961
seonghobae wants to merge 11 commits into
mainfrom
fix/strix-agent-atomic-report-persist

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Problem

Required Strix on strix-agent==1.0.4 finishes a real scan, prints Penetration test completed with a vulnerability list, then exits non-zero before the report artifact is written. The fail-closed gate (#891) then fails the required check even though the console already listed findings. Reproduced on ContextualWisdomLab/contextual-orchestrator#136, #141, #144, and #137.

That is a buyer-felt security-dashboard miss on every ruleset consumer. The fail-closed missing-artifact rule is not weakened.

Change

  • Pin strix-agent==1.5.3 (atomic CSV/MD writes; quit after scan instead of hosting a local viewer).
  • Keep cryptography==50.0.0 (CVE-2026-39892 floor + CVE-2026-69247 PKCS#7 timing-oracle fix).
  • Resolve the stale cryptography<49 metadata bound only at compile time via requirements-strix-ci-overrides.txt and ./scripts/ci/compile_strix_ci_lock.sh.
  • Install the complete hashed lock with pip install --require-hashes --no-deps so pip does not re-apply that bound.
  • Add the Darwin linux-x86_64 mock so trusted-uv installer tests measure verification instead of the host architecture gate.

Live install of this lock imported strix, ran strix --help, and loaded cryptography==50.0.0 with strix-agent==1.5.3.

Closes #952.

Do not self-approve. Merge remains subject to the sole-collaborator 2-approval deadlock (#948).

Required Strix on 1.0.4 printed a finished penetration-test report
and then exited before writing the artifact, so the fail-closed gate
discarded real findings. Pin strix-agent 1.5.3 (atomic writes, quit
after scan), keep cryptography 50.0.0 via a documented compile-time
override, and install the complete hashed lock with --no-deps so pip
does not re-apply the stale cryptography<49 bound.

Closes #952.
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Important

Review available on request

  • 🔍 Trigger review

Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment @coderabbitai review to review the latest changes. For a full review, comment @coderabbitai full review.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 40c754f5-5141-4be6-a82c-3f94a0ebacd9


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Required Strix failed on this head because pull_request_target still runs main's installer (pip install --require-hashes without --no-deps). pip re-applied strix-agent 1.5.3 depends on cryptography<49 and exited ResolutionImpossible. pip-audit used the same resolver path and labeled that conflict known-vulnerable.

Follow-up #969 lands --no-deps on main without changing the 1.0.4 lock, and audits hashed locks with --disable-pip. After #969 merges, this head's required Strix install can succeed. Do not drop cryptography 50.0.0.

Fail closed if importlib.metadata does not report both pins, so a
drifted lock cannot scan with a dropped CVE floor.

@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 4ca51360e93925f8d6f2dfead0de8f9bc9443364.
  • 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["Workflow (2 files)"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow (2 files)"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file (7 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (7 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: strix-agent-cryptography-override.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: strix-agent-cryptography-override.md"]
  R3 --> V3["docs review"]
  Evidence --> S4["CI script: compile_strix_ci_lock.sh"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script: compile_strix_ci_lock.sh"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (2 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (2 files)"]
  R5 --> V5["targeted test run"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 7ebbc707103731bd921904726cd4b0362b549ebd
  • Workflow run: 32054870991
  • 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 7ebbc707103731bd921904726cd4b0362b549ebd.
  • 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["Workflow (3 files)"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow (3 files)"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file (11 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (11 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: strix-agent-cryptography-override.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: strix-agent-cryptography-override.md"]
  R3 --> V3["docs review"]
  Evidence --> S4["CI script (5 files)"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script (5 files)"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (3 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (3 files)"]
  R5 --> V5["targeted test run"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 13, 2026 13:12
Materialize a base Python lock only when every package line is an exact
SHA-256 pin or a two-token relative -r/--requirement include of a
candidate lock path. A lone --require-hashes directive, ./dotted paths,
and -r other-hashes.txt no longer enter the trusted build context.
@seonghobae
seonghobae enabled auto-merge (squash) August 13, 2026 14:58
Record the materialize include bound in ARCHITECTURE and doctoring
with APA 7th MITRE and pip hash-checking references.

@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 7f5bd5295c00573e6e5eead1a53d9fc9c495916c.
  • 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["Workflow (2 files)"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow (2 files)"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file (7 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (7 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs (2 files)"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs (2 files)"]
  R3 --> V3["docs review"]
  Evidence --> S4["CI script (2 files)"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script (2 files)"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (2 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (2 files)"]
  R5 --> V5["targeted test run"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 14, 2026 01:28
@seonghobae
seonghobae marked this pull request as draft August 14, 2026 09:13

Copy link
Copy Markdown
Contributor Author

Returned to Draft because the Strix 1.5.3/cryptography override migration is mixed with the shared trusted-uv materializer branch and a separate test-platform concern.

The supply-chain slice needs independent proof: immutable strix-agent==1.5.3, cryptography==50.0.0, a reproducible compile-time override for the stale upstream bound, complete hashed-lock installation with --no-deps, and real report-artifact persistence without weakening missing-artifact fail-closed semantics. Head 7f5bd5295c00573e6e5eead1a53d9fc9c495916c additionally carries the common materializer implementation and Darwin test mock.

Rebuild from protected main retaining only the Strix lock/override/compiler/workflow surfaces, focused dependency and report-persistence regressions, doctoring, directly attributable governance/changelog evidence, and the minimum exact test helper genuinely required. Coordinate with #960 so the Linux simulation exists once, not twice. Re-resolve the lock from authoritative indexes and rerun exact-head install/import/CLI/security/SBOM/Strix and independent-review gates before Ready.

The org-queue-sweep contract requires the */15 cron to run the
organization walk so late approvals do not sit unmerged. Restore that
trigger alongside the hourly heartbeat. Do not treat the scheduler's
own scan-pr-queue check or status as a merge blocker, including when
workflow metadata is missing.
@seonghobae
seonghobae marked this pull request as ready for review August 16, 2026 10:15
Keep 15-minute org-queue-sweep plus scan-pr-queue ignore, bounded
requirement includes, and Strix 1.5.3 doctoring. Take main's hourly
NVIDIA NIM repair callers and conflict-scope fail-closed parent-symlink
rule. Use the linux x86_64 installer test helper that clears the uv cache.
Keep only the Strix lock, compile-time cryptography 50 override,
hashed install, and fail-closed gate contracts. Restore scheduler,
materializer, and trusted-uv files to protected main so this PR
is independently reviewable after #969
lands --no-deps on main.

Refs #952
Refs #969

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

@cursor cursor 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.

Assessment

Do not merge this pull request. The 1.5.3 + cryptography 50 lock is the right buyer fix for #952, but this head is no longer the landing vehicle.

Use #1047 instead. That successor keeps this lock and adds the missing quality-CI watch on requirements-strix-ci.txt / requirements-strix-ci-hashes.txt, plus a contract that the unchanged gate still requires strix_runs/<run>/vulnerabilities/*.md and still rejects console TUI lines such as Penetration test completed.

Why this head stays blocked

Required Strix is pull_request_target. Protected main still installs with resolver-based pip install --require-hashes (no --no-deps). pip will re-apply strix-agent 1.5.3 depends on cryptography<49 and fail before any report can persist. #969 is the protected-main installer and hashed-lock pip-audit --disable-pip prerequisite. Land #969 first, rebase #1047, then re-run exact-head checks.

This head also left a supply-chain hole: a lock-only edit did not retrigger Strix quality CI, so the pin/override contract would not re-run when the install set changed.

Next action

  1. Review and land #969 on main.
  2. Continue on #1047, not here.
  3. Do not self-approve. Do not merge #961 and #1047 in parallel. Do not drop cryptography==50.0.0 or weaken the missing-artifact gate.

Independent focused contracts on the successor (tests/test_strix_agent_cryptography_override.py and the related quality-path tests) passed locally, 19/19.

View PR

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

@seonghobae
seonghobae disabled auto-merge August 16, 2026 23:10
@seonghobae
seonghobae enabled auto-merge (squash) August 17, 2026 09:51
cursoragent and others added 3 commits August 17, 2026 16:48
Keep the official Apache-2.0 1.5.3 bytes except the stale
cryptography<49 Requires-Dist line so main's resolver can install
cryptography 50.0.0 from the PR-head lock.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Required Strix is pull_request_target, so main still runs pip install
--require-hashes without --no-deps and re-applies cryptography<49.
Pin a METADATA-patched official 1.5.3 wheel by direct URL, keep
cryptography 50.0.0, and audit this hashed lock with --disable-pip.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
pip-audit treated ResolutionImpossible on the unhashed 1.5.3 +
cryptography 50 compile input as a vulnerability, then rejected the
hashed URL pin under --disable-pip. Skip the compile input and audit a
name==version rewrite of the published wheel lock.

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

@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 7ebbc707103731bd921904726cd4b0362b549ebd.
  • 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["Workflow (3 files)"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow (3 files)"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file (11 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (11 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: strix-agent-cryptography-override.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: strix-agent-cryptography-override.md"]
  R3 --> V3["docs review"]
  Evidence --> S4["CI script (5 files)"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script (5 files)"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (3 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (3 files)"]
  R5 --> V5["targeted test run"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 17, 2026 20:00
Both Python CodeQL jobs failed in codeql-action/init while asking
GitHub for feature enablement (HTTP 503). Sibling actions jobs on the
same run passed and produced no SARIF findings. Retry init once after
20s; keep the Medium+ gate and upload:false contract.

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

Copy link
Copy Markdown
Contributor Author

Closing as superseded, not rejected on product intent. PR #1047 explicitly identifies itself as the landing successor to this Strix 1.5.3/cryptography 50 line, preserves the same fail-closed report-artifact contract, and adds the lock-watch/report-layout acceptance work. PR #969 remains the prerequisite that must first land the hashed-lock --no-deps installer and pip-audit --disable-pip behavior on protected main. Keeping #961 open in parallel would create a competing writer/integration lane over the same Strix dependency surface. No checks, reviews, or approvals from this PR transfer to either successor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

strix-agent 1.0.4 crashes after producing a valid report, tripping the fail-closed gate; upgrade blocked by a cryptography CVE pin conflict

2 participants