Skip to content

chore(deps): update hash-locked aiohttp to 3.14.3 - #1244

Open
seonghobae wants to merge 3 commits into
developfrom
chore/aiohttp-3.14.3-maintainer
Open

chore(deps): update hash-locked aiohttp to 3.14.3#1244
seonghobae wants to merge 3 commits into
developfrom
chore/aiohttp-3.14.3-maintainer

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Replace Dependabot PR #1238 with a maintainer-owned current-base branch.

  • update hash-locked aiohttp from 3.14.1 to 3.14.3;
  • retain the complete regenerated artifact hash set;
  • introduce no application, workflow, API, database, or credential change.

Exact candidate

  • protected base: develop@042b0c70531b229af3acbd0421a2f23098d848b3
  • exact head: 50351e8cacc65b4124ba2145e00d41aeceef0775
  • effective diff: only requirements-strix-ci-hashes.txt
  • refresh: normal two-parent merge; no force push

Verification

  • uv pip install --python .venv/bin/python --require-hashes -r requirements-strix-ci-hashes.txt
  • isolated import proves aiohttp.__version__ == "3.14.3"
  • the same resolved lock installs cryptography==50.0.0 and pyasn1==0.6.4
  • git diff --check

This supersedes #1238 but does not reuse predecessor reviews or checks. Merge only after this unchanged exact head passes all live required checks, has no actionable threads, and receives qualifying independent approval.

Summary by CodeRabbit

  • Chores
    • Updated the aiohttp dependency to version 3.14.3.
    • Refreshed package integrity checks to match the updated dependency.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: eea6dfd6-4694-42ca-b5bb-d20074e74c7d

📥 Commits

Reviewing files that changed from the base of the PR and between 042b0c7 and 50351e8.

📒 Files selected for processing (1)
  • requirements-strix-ci-hashes.txt

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The Strix CI hash requirements file updates aiohttp from 3.14.1 to 3.14.3 and replaces all associated SHA-256 hashes.

Changes

Dependency update

Layer / File(s) Summary
Update aiohttp version and hashes
requirements-strix-ci-hashes.txt
The file now pins aiohttp 3.14.3 and uses the SHA-256 hashes for that release.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 50351

This updates the CI aiohttp lock from 3.14.1 to 3.14.3 with its corresponding hashes. No actionable runtime or dependency-lock risk remains.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: updating the hash-locked aiohttp dependency to version 3.14.3.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/aiohttp-3.14.3-maintainer

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.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review exact current head cdf4cea

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review review exact current head cdf4cea

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a. All six repository-local workflows are successful on this head: Application CI, Dependency Review, Bandit, SAST Semgrep, Security Scan, and Docker image verification. Treat prior #1238 evidence only as supersession context; approve or request changes solely from this maintainer-owned exact head.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a. The diff is the maintainer-owned one-file hash-lock replacement for aiohttp 3.14.3; verify regenerated hashes, lock integrity, and absence of unrelated changes.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head cdf4ceaaa9136629b098c675e749c116b2c7258a, focusing on supply-chain lock completeness, base/head diff scope, and whether the maintainer replacement preserves the validated dependency tree without policy exceptions.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head dispatch for cdf4ceaaa9136629b098c675e749c116b2c7258a; do not update branches or merge. Confirm exact one-file scope, hash-locked installation integrity, dependency security evidence, and no credential/workflow changes.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_sha="cdf4ceaaa9136629b098c675e749c116b2c7258a"
repo="ContextualWisdomLab/naruon"
pr_number="1244"

echo "== Checked-out HEAD =="
git rev-parse HEAD
echo

echo "== Pull request head metadata =="
gh pr view "$pr_number" --repo "$repo" --json number,headRefName,headRefOid,baseRefName,files \
  --jq '{number, headRefName, headRefOid, baseRefName, files: [.files[] | {path, additions, deletions}]}'
echo

echo "== Commit metadata =="
git show --no-ext-diff --no-renames --format=fuller --no-patch "$expected_sha"
echo

echo "== Files changed by exact commit =="
git diff-tree --no-commit-id --name-status -r "$expected_sha"
echo

echo "== Complete exact-commit diff =="
git diff --no-ext-diff --no-renames "${expected_sha}^" "$expected_sha"
echo

echo "== aiohttp references in changed content =="
git show "${expected_sha}" | rg -n -C 8 --fixed-strings 'aiohttp'
echo

echo "== Parent and current hash-line comparison =="
git diff --no-ext-diff -U0 "${expected_sha}^" "$expected_sha" | \
  rg -n '^[+-].*(aiohttp|--hash=sha256:)' || true

Length of output: 48418


🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_sha="cdf4ceaaa9136629b098c675e749c116b2c7258a"
repo="ContextualWisdomLab/naruon"
lock_file="requirements-strix-ci-hashes.txt"

echo "== Pull request `#1238` head =="
old_pr_sha="$(gh pr view 1238 --repo "$repo" --json headRefOid --jq '.headRefOid')"
printf '%s\n' "$old_pr_sha"
echo

echo "== Tree equivalence with `#1238` head =="
printf 'current tree: '
git rev-parse "${expected_sha}^{tree}"
printf '`#1238` tree:  '
git rev-parse "${old_pr_sha}^{tree}"
if [ "$(git rev-parse "${expected_sha}^{tree}")" = "$(git rev-parse "${old_pr_sha}^{tree}")" ]; then
  echo "RESULT: identical trees"
else
  echo "RESULT: trees differ"
  git diff --no-ext-diff --stat "$old_pr_sha" "$expected_sha"
fi
echo

echo "== aiohttp 3.14.3 lock and PyPI hash validation =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import hashlib
import json
import os
import re
import urllib.request

path = os.environ["LOCK_FILE"]
text = open(path, encoding="utf-8").read()

match = re.search(
    r"(?ms)^aiohttp==(?P<version>[^\s]+)\s+\\\n"
    r"(?P<body>.*?)(?=^# via\n(?:^#.*\n)*|^\S|\Z)",
    text,
)
if not match:
    raise SystemExit("ERROR: Could not locate a complete aiohttp lock block.")

version = match.group("version")
body = match.group("body")
hashes = re.findall(r"--hash=sha256:([0-9a-f]{64})", body)
invalid = re.findall(r"--hash=sha256:([^\s\\]+)", body)
duplicates = sorted({value for value in hashes if hashes.count(value) > 1})
print(f"locked_version={version}")
print(f"locked_hashes={len(hashes)}")
print(f"duplicate_hashes={len(duplicates)}")
print(f"invalid_sha256_tokens={len(invalid) - len(hashes)}")
print(f"has_via_gql_and_litellm={('#   gql' in text[match.start():match.end()+80] and '#   litellm' in text[match.start():match.end()+80])}")

with urllib.request.urlopen(
    f"https://pypi.org/pypi/aiohttp/{version}/json", timeout=20
) as response:
    metadata = json.load(response)

release_hashes = {
    item["digests"]["sha256"]
    for item in metadata["urls"]
    if item.get("digests", {}).get("sha256")
}
local_hashes = set(hashes)
print(f"pypi_release_files={len(release_hashes)}")
print(f"missing_from_lock={len(release_hashes - local_hashes)}")
print(f"not_in_pypi_release={len(local_hashes - release_hashes)}")
if release_hashes - local_hashes:
    print("MISSING:", *sorted(release_hashes - local_hashes), sep="\n")
if local_hashes - release_hashes:
    print("UNEXPECTED:", *sorted(local_hashes - release_hashes), sep="\n")
if (
    version == "3.14.3"
    and not duplicates
    and len(invalid) == len(hashes)
    and local_hashes == release_hashes
):
    print("RESULT: lock hash set exactly matches PyPI aiohttp 3.14.3 artifacts")
else:
    raise SystemExit("ERROR: lock hash set does not exactly match release metadata.")
PY

Length of output: 5779


@seonghobae: I verified the requested exact head: cdf4ceaaa9136629b098c675e749c116b2c7258a.

  • PR #1244 changes only requirements-strix-ci-hashes.txt.
  • The change replaces only the aiohttp lock block, from 3.14.1 to 3.14.3.
  • The new block contains 119 valid SHA-256 hashes with no duplicates.
  • The # via gql and # via litellm provenance remains unchanged.
  • PR #1244 and superseded #1238 have the identical tree object: 206cedc9fc4079a4e5e87f362867cfd4bee4b43b.

Independent validation of the 119 hashes against PyPI release metadata is inconclusive. The sandbox rejected PyPI TLS verification with SSLCertVerificationError due to a self-signed certificate in the certificate chain.

Please retry the PyPI metadata validation from an environment that trusts the required certificate chain before approval. I found no unrelated file changes.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a. The diff is one hash-locked dependency file only; verify the aiohttp 3.14.3 closure, exact-head successful checks, and that no workflow, application, schema, permission, or reviewer-credential surface changed.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Please review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a against current develop. This is a one-file, hash-locked aiohttp 3.14.3 replacement tree. All six repository workflows report success, CodeRabbit status is successful, and there are no inline review threads. Verify the lock hashes, absence of unrelated changes, current security advisory remediation, and branch-protection requirements. Submit a formal APPROVE only if no blocker remains. The repository does not permit squash auto-merge, so a policy-compliant direct merge will follow only after exact-head approval.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/naruon"
pr="1244"
expected_sha="cdf4ceaaa9136629b098c675e749c116b2c7258a"
lock_file="requirements-strix-ci-hashes.txt"

echo "== Exact HEAD and PR metadata =="
printf 'checked_out_head='
git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json number,state,headRefOid,baseRefName,mergeStateStatus,reviewDecision,isDraft,files \
  --jq '{number,state,headRefOid,baseRefName,mergeStateStatus,reviewDecision,isDraft,files:[.files[]|{path,additions,deletions}]}'

echo "== Base resolution and diff scope =="
base_sha="$(git rev-parse "origin/develop" 2>/dev/null || git rev-parse "develop")"
printf 'develop_sha=%s\n' "$base_sha"
git diff --no-ext-diff --no-renames --name-status "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames --check "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames -U0 "$base_sha" "$expected_sha"

echo "== aiohttp lock block structure =="
EXPECTED_SHA="$expected_sha" LOCK_FILE="$lock_file" python3 - <<'PY'
import os, re, hashlib
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
m = re.search(r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)', text)
if not m:
    raise SystemExit("ERROR: no complete aiohttp block")
hashes = re.findall(r'--hash=sha256:([0-9a-f]{64})(?:\s*\\)?', m.group("body"))
all_hash_tokens = re.findall(r'--hash=sha256:([^\s\\]+)', m.group("body"))
print("version=" + m.group("version"))
print("valid_hash_count=" + str(len(hashes)))
print("unique_hash_count=" + str(len(set(hashes))))
print("hash_token_count=" + str(len(all_hash_tokens)))
print("all_hashes_are_lowercase_sha256=" + str(len(hashes) == len(all_hash_tokens)))
print("has_gql_provenance=" + str("#   gql" in text[m.start():m.end()+120]))
print("has_litellm_provenance=" + str("#   litellm" in text[m.start():m.end()+120]))
print("contains_aiohttp_3_14_1=" + str("aiohttp==3.14.1" in text))
print("contains_aiohttp_3_14_3=" + str("aiohttp==3.14.3" in text))
PY

echo "== PyPI metadata comparison =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import json, re, ssl, urllib.request, os
from pathlib import Path
text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
m = re.search(r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)', text)
version = m.group("version")
local = set(re.findall(r'--hash=sha256:([0-9a-f]{64})', m.group("body")))
try:
    with urllib.request.urlopen(f"https://pypi.org/pypi/aiohttp/{version}/json", timeout=20) as response:
        remote = {
            row["digests"]["sha256"] for row in json.load(response)["urls"]
            if row.get("digests", {}).get("sha256")
        }
    print(f"pypi_hash_count={len(remote)}")
    print(f"missing_from_lock={len(remote-local)}")
    print(f"unexpected_in_lock={len(local-remote)}")
except Exception as exc:
    print(f"PYPI_VALIDATION_ERROR={type(exc).__name__}: {exc}")
PY

echo "== Exact-head checks and reviews =="
gh pr checks "$pr" --repo "$repo" --required
gh api "repos/$repo/pulls/$pr/reviews" --paginate \
  --jq '.[] | {user:.user.login,state,commit_id,submitted_at}'
gh api "repos/$repo/pulls/$pr/comments" --paginate --jq 'length'

echo "== Dependabot alerts for aiohttp =="
gh api "repos/$repo/dependabot/alerts?state=open&per_page=100" --paginate \
  --jq '.[] | select(.dependency.package.name == "aiohttp") | {number,state,dependency:.dependency.package.name,manifest_path:.dependency.manifest_path,security_advisory:{ghsa_id:.security_advisory.ghsa_id,cve_id:.security_advisory.cve_id,severity:.security_advisory.severity},security_vulnerability:{vulnerable_version_range:.security_vulnerability.vulnerable_version_range,first_patched_version:.security_vulnerability.first_patched_version.identifier}}' || true

echo "== develop branch protection / rules =="
gh api "repos/$repo/branches/develop/protection" \
  --jq '{required_status_checks,required_pull_request_reviews,enforce_admins,required_linear_history,allow_force_pushes,allow_deletions}' || true
gh api "repos/$repo/rules/branches/develop" --paginate \
  --jq '.[] | {id,name,enforcement,status,rules:[.rules[].type]}' || true

Length of output: 28662


@seonghobae I reviewed exact head cdf4ceaaa9136629b098c675e749c116b2c7258a against current develop.

I found no code or lock-file finding.

  • The PR changes only requirements-strix-ci-hashes.txt.
  • The diff changes only the aiohttp block from 3.14.1 to 3.14.3.
  • The new block has 119 valid and unique SHA-256 hashes.
  • The gql and litellm provenance remains present.
  • No aiohttp==3.14.1 entry remains.
  • No application, workflow, schema, permission, or credential file changes exist.
  • All reported required checks pass on this exact head.

I cannot submit formal approval yet.

The PyPI release-metadata comparison is inconclusive. The sandbox rejected the PyPI TLS chain with CERTIFICATE_VERIFY_FAILED.

The GitHub token also cannot read Dependabot alerts or develop branch protection. Both requests returned HTTP 403. The PR currently reports REVIEW_REQUIRED and BLOCKED.

Run the PyPI hash comparison from a trusted environment. Then confirm the open aiohttp alert state and the develop branch-protection rules with authorized credentials. If those checks show no blocker, the change is ready for the required independent approval.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head dispatch for cdf4ceaaa9136629b098c675e749c116b2c7258a; do not update branches or merge. All six repository-local workflows succeeded. Verify that the one-file hash-locked aiohttp 3.14.3 snapshot is installable, complete, and introduces no application or control-plane changes.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head cdf4ceaaa9136629b098c675e749c116b2c7258a. Confirm byte-for-byte one-file dependency scope, complete hash coverage, and no weakening of the existing security floor.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a. It is a maintainer-owned one-file replacement of the already validated aiohttp 3.14.3 hash tree and must establish fresh approval on this head.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/naruon"
pr="1244"
expected_sha="cdf4ceaaa9136629b098c675e749c116b2c7258a"
lock_file="requirements-strix-ci-hashes.txt"

echo "== exact head =="
printf 'checked_out_head='
git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json number,state,isDraft,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files \
  --jq '{number,state,isDraft,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files:[.files[]|{path,additions,deletions}]}'

echo "== exact commit and base diff scope =="
git cat-file -e "${expected_sha}^{commit}"
base_sha="$(git merge-base "origin/develop" "$expected_sha" 2>/dev/null || git merge-base develop "$expected_sha")"
printf 'merge_base=%s\n' "$base_sha"
git diff --no-ext-diff --no-renames --name-status "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames --check "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames -U0 "$base_sha" "$expected_sha"

echo "== lock block validation =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import os, re
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
block = re.search(
    r"(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)",
    text,
)
if not block:
    raise SystemExit("ERROR: complete aiohttp block not found")

version = block.group("version")
body = block.group("body")
valid = re.findall(r"--hash=sha256:([0-9a-f]{64})(?:\s*\\)?", body)
tokens = re.findall(r"--hash=sha256:([^\s\\]+)", body)
print(f"version={version}")
print(f"hash_tokens={len(tokens)}")
print(f"valid_lowercase_sha256={len(valid)}")
print(f"unique_valid_sha256={len(set(valid))}")
print(f"malformed_hash_tokens={len(tokens)-len(valid)}")
print(f"contains_aiohttp_3_14_1={'aiohttp==3.14.1' in text}")
print(f"contains_aiohttp_3_14_3={'aiohttp==3.14.3' in text}")
following = text[block.start():block.end()+160]
print(f"has_gql_provenance={'#   gql' in following}")
print(f"has_litellm_provenance={'#   litellm' in following}")
PY

echo "== exact-head required checks and reviews =="
gh pr checks "$pr" --repo "$repo" --required
gh api "repos/$repo/pulls/$pr/reviews" --paginate \
  --jq '.[] | {user:.user.login,state,commit_id,submitted_at}' || true
gh api "repos/$repo/pulls/$pr/comments" --paginate --jq 'length' || true

echo "== authenticated PyPI metadata hash comparison =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import json, os, re, urllib.request
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
block = re.search(r"(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)", text)
version = block.group("version")
local = set(re.findall(r"--hash=sha256:([0-9a-f]{64})", block.group("body")))
try:
    with urllib.request.urlopen(f"https://pypi.org/pypi/aiohttp/{version}/json", timeout=20) as response:
        remote = {u["digests"]["sha256"] for u in json.load(response)["urls"] if u.get("digests", {}).get("sha256")}
except Exception as error:
    print(f"validation_error={type(error).__name__}: {error}")
else:
    print(f"pypi_hashes={len(remote)}")
    print(f"missing_from_lock={len(remote-local)}")
    print(f"unexpected_in_lock={len(local-remote)}")
    print(f"exact_match={remote == local}")
PY

Length of output: 27198


@seonghobae I reviewed exact head cdf4ceaaa9136629b098c675e749c116b2c7258a.

I found no code or lock-file finding.

  • The checked-out HEAD and PR head match the requested commit.
  • The diff against develop changes only requirements-strix-ci-hashes.txt.
  • The diff replaces only aiohttp==3.14.1 with aiohttp==3.14.3.
  • The new lock block contains 119 valid and unique SHA-256 hashes.
  • The lock block has no malformed hash token.
  • The gql and litellm provenance remains present.
  • git diff --check reports no whitespace error.
  • All required checks currently report pass.
  • The diff contains no application, workflow, schema, permission, or credential change.

I cannot establish fresh approval yet. The authoritative PyPI comparison remains inconclusive because TLS validation failed with CERTIFICATE_VERIFY_FAILED in the sandbox. Validate the 119 local hashes against the PyPI aiohttp 3.14.3 release metadata from an environment with a trusted certificate chain. After that validation succeeds, request explicit approval.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a. This is a one-file hash-lock-only replacement for aiohttp 3.14.3. Verify the lock remains complete and reproducible, no application/workflow/API/database behavior changes, no dependency downgrade or unreviewed transitive drift, and all exact-head security and application checks are green. Submit approval only if no blocking finding remains.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please independently review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a. Confirm the single changed hash lock upgrades aiohttp to 3.14.3, preserves a complete exact-hash closure, introduces no unrelated drift, and has clean current-head repository checks. Submit APPROVE only if no blocker remains.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review Please perform a second independent exact-head review of cdf4ceaaa9136629b098c675e749c116b2c7258a. Verify the one-file hash-lock replacement, dependency integrity, absence of unrelated changes, exact-head security evidence, and branch-protection requirements. Submit APPROVE only if no actionable finding remains.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/naruon"
pr="1244"
expected_sha="cdf4ceaaa9136629b098c675e749c116b2c7258a"
lock_file="requirements-strix-ci-hashes.txt"

echo "== Exact head =="
printf 'checked_out_head='; git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json number,state,isDraft,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files \
  --jq '{number,state,isDraft,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files:[.files[]|{path,additions,deletions}]}'
git cat-file -e "${expected_sha}^{commit}"

echo "== Merge-base diff scope =="
base_sha="$(git merge-base "origin/develop" "$expected_sha" 2>/dev/null || git merge-base develop "$expected_sha")"
printf 'merge_base=%s\n' "$base_sha"
git diff --no-ext-diff --no-renames --name-status "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames --check "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames -U0 "$base_sha" "$expected_sha"

echo "== aiohttp block and dependency-lock integrity =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import os, re
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
block = re.search(r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)', text)
if not block:
    raise SystemExit("ERROR: aiohttp lock block was not found")

body = block.group("body")
tokens = re.findall(r'--hash=sha256:([^\s\\]+)', body)
valid = re.findall(r'--hash=sha256:([0-9a-f]{64})(?:\s*\\)?', body)
following = text[block.start():block.end()+160]
print(f"version={block.group('version')}")
print(f"hash_tokens={len(tokens)}")
print(f"valid_sha256_hashes={len(valid)}")
print(f"unique_sha256_hashes={len(set(valid))}")
print(f"malformed_hashes={len(tokens)-len(valid)}")
print(f"has_gql_provenance={'#   gql' in following}")
print(f"has_litellm_provenance={'#   litellm' in following}")
print(f"has_old_version={'aiohttp==3.14.1' in text}")
print(f"has_new_version={'aiohttp==3.14.3' in text}")
PY

echo "== Compare local hashes with PyPI metadata using system trust =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import json, os, re, urllib.request
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
block = re.search(r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)', text)
local = set(re.findall(r'--hash=sha256:([0-9a-f]{64})', block.group("body")))
try:
    with urllib.request.urlopen(f"https://pypi.org/pypi/aiohttp/{block.group('version')}/json", timeout=20) as r:
        remote = {u["digests"]["sha256"] for u in json.load(r)["urls"] if u.get("digests", {}).get("sha256")}
except Exception as exc:
    print(f"pypi_validation_error={type(exc).__name__}: {exc}")
else:
    print(f"pypi_hashes={len(remote)}")
    print(f"missing_from_lock={len(remote-local)}")
    print(f"unexpected_in_lock={len(local-remote)}")
    print(f"exact_match={remote == local}")
PY

echo "== Exact-head required checks and review state =="
gh pr checks "$pr" --repo "$repo" --required
gh api "repos/$repo/pulls/$pr/reviews" --paginate \
  --jq '.[] | {user:.user.login,state,commit_id,submitted_at}'
gh api "repos/$repo/pulls/$pr/comments" --paginate --jq 'length'

Length of output: 27142


@seonghobae I reviewed exact head cdf4ceaaa9136629b098c675e749c116b2c7258a.

I found no code or lock-file finding.

  • The checked-out HEAD matches the PR head.
  • The diff against merge base be3bedb4bc5f264c9d621e2666b8583b3b149eca changes only requirements-strix-ci-hashes.txt.
  • The diff replaces only the aiohttp lock block, from 3.14.1 to 3.14.3.
  • The new block contains 119 valid, unique SHA-256 hashes.
  • The block has no malformed hash tokens.
  • The gql and litellm provenance remains present.
  • No aiohttp==3.14.1 entry remains.
  • The diff has no application, workflow, API, database, credential, or unrelated dependency change.
  • All required checks listed for this exact head pass, including dependency review, security scans, and image validation.

I cannot submit approval from this environment.

The authoritative PyPI comparison remains inconclusive. The request to the PyPI aiohttp 3.14.3 metadata endpoint failed with CERTIFICATE_VERIFY_FAILED because the sandbox has a self-signed certificate in its chain.

Validate that the 119 local hashes exactly match the PyPI aiohttp 3.14.3 release artifacts from an environment with a trusted certificate chain. If that comparison passes, I found no remaining blocker in the reviewed change.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review
@coderabbitai review

Review exact current head cdf4ceaaa9136629b098c675e749c116b2c7258a against protected develop only. Application CI, Dependency Review, Bandit, SAST Semgrep, Security Scan, Docker image verification, and CodeRabbit status are successful on this SHA, and no unresolved review thread exists. Revalidate the one-file hash-locked aiohttp==3.14.3 dependency tree, regenerated artifact hashes, absence of runtime/API/workflow/credential changes, and every current branch-protection requirement. Submit a formal independent APPROVED review only if all exact-head gates pass; do not reuse predecessor-head evidence.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/naruon"
pr="1244"
expected_sha="cdf4ceaaa9136629b098c675e749c116b2c7258a"
lock_file="requirements-strix-ci-hashes.txt"

echo "== Exact pull request head =="
printf 'checked_out_head='; git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json number,state,isDraft,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files \
  --jq '{number,state,isDraft,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files:[.files[]|{path,additions,deletions}]}'
git cat-file -e "${expected_sha}^{commit}"

echo "== Merge-base scope and whitespace =="
base_sha="$(git merge-base origin/develop "$expected_sha" 2>/dev/null || git merge-base develop "$expected_sha")"
printf 'merge_base=%s\n' "$base_sha"
git diff --no-ext-diff --no-renames --name-status "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames --check "$base_sha" "$expected_sha"
git diff --no-ext-diff --no-renames -U0 "$base_sha" "$expected_sha"

echo "== Lock block format and hash tokens =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import os
import re
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
m = re.search(r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)', text)
if m is None:
    raise SystemExit("ERROR: aiohttp lock block was not found")
body = m.group("body")
tokens = re.findall(r'--hash=sha256:([^\s\\]+)', body)
valid = re.findall(r'--hash=sha256:([0-9a-f]{64})(?:\s*\\)?', body)
following = text[m.start():m.end()+160]
print(f"version={m.group('version')}")
print(f"hash_tokens={len(tokens)}")
print(f"valid_lowercase_sha256={len(valid)}")
print(f"unique_valid_lowercase_sha256={len(set(valid))}")
print(f"malformed_hash_tokens={len(tokens)-len(valid)}")
print(f"has_gql_provenance={'#   gql' in following}")
print(f"has_litellm_provenance={'#   litellm' in following}")
print(f"old_version_present={'aiohttp==3.14.1' in text}")
print(f"new_version_present={'aiohttp==3.14.3' in text}")
PY

echo "== PyPI artifact hash comparison =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import json
import os
import re
import urllib.request
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
m = re.search(r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)', text)
if m is None:
    raise SystemExit("ERROR: aiohttp lock block was not found")
local = set(re.findall(r'--hash=sha256:([0-9a-f]{64})', m.group("body")))
try:
    with urllib.request.urlopen(f"https://pypi.org/pypi/aiohttp/{m.group('version')}/json", timeout=20) as response:
        remote = {
            item["digests"]["sha256"]
            for item in json.load(response)["urls"]
            if item.get("digests", {}).get("sha256")
        }
except Exception as exc:
    print(f"pypi_validation_error={type(exc).__name__}: {exc}")
else:
    print(f"pypi_artifact_hashes={len(remote)}")
    print(f"missing_from_lock={len(remote-local)}")
    print(f"unexpected_in_lock={len(local-remote)}")
    print(f"exact_match={remote == local}")
PY

echo "== Exact-head required checks and review threads =="
gh pr checks "$pr" --repo "$repo" --required
gh api "repos/$repo/pulls/$pr/reviews" --paginate \
  --jq '.[] | {user:.user.login,state,commit_id,submitted_at}'
gh api "repos/$repo/pulls/$pr/comments" --paginate --jq 'length'

echo "== Branch protection and rulesets, if token permits =="
gh api "repos/$repo/branches/develop/protection" \
  --jq '{required_status_checks,required_pull_request_reviews,required_linear_history,enforce_admins}' \
  || true
gh api "repos/$repo/rules/branches/develop" --paginate \
  --jq '.[] | {id,name,enforcement,status,rules:[.rules[].type]}' \
  || true

Length of output: 27975


@seonghobae I reviewed exact head cdf4ceaaa9136629b098c675e749c116b2c7258a against its develop merge base.

I found no code or lock-file finding.

  • PR #1244 changes only requirements-strix-ci-hashes.txt.
  • The diff replaces only aiohttp==3.14.1 with aiohttp==3.14.3.
  • The new block contains 119 valid, unique SHA-256 hashes.
  • The block has no malformed hash token.
  • The gql and litellm provenance remains present.
  • No old aiohttp==3.14.1 entry remains.
  • git diff --check reports no whitespace error.
  • The visible required checks for this exact head pass.
  • The review-comment query returned zero comments.
  • No runtime, API, workflow, database, credential, or unrelated dependency change exists.

I cannot submit a formal APPROVED review.

The PyPI artifact-hash comparison is inconclusive. The sandbox rejected the PyPI TLS chain with CERTIFICATE_VERIFY_FAILED. The GitHub token also cannot read protected develop branch protection or rulesets. Both requests require additional authorization.

Validate the 119 lock hashes against PyPI aiohttp 3.14.3 metadata from a trusted environment. Then verify the current develop protection and ruleset requirements with authorized credentials. After both checks pass, I found no remaining blocker in this diff.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head dispatch for cdf4ceaaa9136629b098c675e749c116b2c7258a; do not update branches or merge. This one-file maintainer replacement has green Application CI, Security Scan, Bandit, Semgrep, Dependency Review, Docker validation, and CodeRabbit status. Verify the aiohttp 3.14.3 hash-locked artifact set, installability, and absence of unrelated changes.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head cdf4ceaaa9136629b098c675e749c116b2c7258a. Confirm the one-file hash-lock update is reproducible, scope-isolated, and introduces no API, workflow, database, or credential change.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae
seonghobae marked this pull request as draft August 5, 2026 12:27
@seonghobae
seonghobae marked this pull request as ready for review August 5, 2026 12:27

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head dispatch for cdf4ceaaa9136629b098c675e749c116b2c7258a; do not update branches or merge. Verify the exact one-file hash-locked aiohttp 3.14.3 tree, artifact hashes, installability, redirect/header regression behavior, and absence of unrelated changes.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head cdf4ceaaa9136629b098c675e749c116b2c7258a, focusing on lock reproducibility, redirect credential stripping, and the one-file dependency-only scope.

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head b8985fb08fd07293eb43411effe349bc4891db58.

  • Head SHA: b8985fb08fd07293eb43411effe349bc4891db58

  • Workflow run: 31134058262

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: requirements-strix-ci-hashes.txt"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: requirements-strix-ci-hashes.txt"]
  R1 --> V1["required checks"]
Loading

Copy link
Copy Markdown
Contributor Author

@coderabbitai review
@cwl-noema-review
@opencode-agent

Please review the exact live head only. Verify the maintainer-owned branch is the intended one-file aiohttp 3.14.3 hash-lock update, the complete artifact hash set is synchronized, no application/workflow/API/database/reviewer-credential change exists, and current Application CI, Dependency Review, Bandit, Semgrep, Security Scan, container build, central reviews, and zero unresolved threads are satisfied. Review only; do not update the branch, merge, release, or alter protections.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/naruon"
pr="1244"
lock_file="requirements-strix-ci-hashes.txt"

echo "== Live PR identity =="
printf 'checked_out_head='
git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json number,state,isDraft,headRefName,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files \
  --jq '{number,state,isDraft,headRefName,headRefOid,baseRefName,mergeStateStatus,reviewDecision,files:[.files[]|{path,additions,deletions}]}'

head_sha="$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq '.headRefOid')"
base_ref="$(gh pr view "$pr" --repo "$repo" --json baseRefName --jq '.baseRefName')"
printf 'queried_head=%s\nqueried_base=%s\n' "$head_sha" "$base_ref"
git cat-file -e "${head_sha}^{commit}"

echo "== Current merge-base scope and whitespace =="
base_sha="$(git merge-base "origin/${base_ref}" "$head_sha" 2>/dev/null || git merge-base "$base_ref" "$head_sha")"
printf 'merge_base=%s\n' "$base_sha"
git diff --no-ext-diff --no-renames --name-status "$base_sha" "$head_sha"
git diff --no-ext-diff --no-renames --check "$base_sha" "$head_sha"
git diff --no-ext-diff --no-renames -U0 "$base_sha" "$head_sha"

echo "== aiohttp lock block and PyPI artifact hash set =="
LOCK_FILE="$lock_file" python3 - <<'PY'
import json
import os
import re
import subprocess
import sys
from pathlib import Path

text = Path(os.environ["LOCK_FILE"]).read_text(encoding="utf-8")
match = re.search(
    r'(?ms)^aiohttp==(?P<version>\S+)\s+\\\n(?P<body>.*?)(?=^# via\n|^\S|\Z)',
    text,
)
if match is None:
    raise SystemExit("ERROR: aiohttp lock block not found")

body = match.group("body")
tokens = re.findall(r'--hash=sha256:([^\s\\]+)', body)
valid = re.findall(r'--hash=sha256:([0-9a-f]{64})(?:\s*\\)?', body)
local = set(valid)
following = text[match.start():match.end() + 200]

print(f"version={match.group('version')}")
print(f"hash_tokens={len(tokens)}")
print(f"valid_sha256_hashes={len(valid)}")
print(f"unique_sha256_hashes={len(local)}")
print(f"malformed_hash_tokens={len(tokens) - len(valid)}")
print(f"old_version_present={'aiohttp==3.14.1' in text}")
print(f"gql_provenance_present={'#   gql' in following}")
print(f"litellm_provenance_present={'#   litellm' in following}")

url = f"https://pypi.org/pypi/aiohttp/{match.group('version')}/json"
try:
    response = subprocess.run(
        ["curl", "--fail", "--silent", "--show-error", "--location", "--proto", "=https", url],
        check=True, capture_output=True, text=True, timeout=30,
    )
    release = json.loads(response.stdout)
except Exception as exc:
    print(f"pypi_validation_error={type(exc).__name__}: {exc}")
    sys.exit(0)

remote = {
    item["digests"]["sha256"]
    for item in release["urls"]
    if item.get("digests", {}).get("sha256")
}
print(f"pypi_artifact_hashes={len(remote)}")
print(f"missing_from_lock={len(remote - local)}")
print(f"unexpected_in_lock={len(local - remote)}")
print(f"exact_pypi_hash_match={local == remote}")
PY

echo "== Exact-head required checks =="
gh pr checks "$pr" --repo "$repo" --required

echo "== Reviews and unresolved review threads =="
gh api "repos/$repo/pulls/$pr/reviews" --paginate \
  --jq '.[] | {user:.user.login,state,commit_id,submitted_at}'

gh api graphql -F owner="${repo%%/*}" -F name="${repo#*/}" -F number="$pr" -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          isOutdated
          path
          line
        }
      }
    }
  }
}' --jq '
  .data.repository.pullRequest.reviewThreads.nodes
  | {
      total:length,
      unresolved:[.[] | select(.isResolved | not)],
      unresolved_count:([.[] | select(.isResolved | not)] | length)
    }'

echo "== Protected-branch requirements, if authorized =="
gh api "repos/$repo/branches/$base_ref/protection" \
  --jq '{required_status_checks,required_pull_request_reviews,required_linear_history,enforce_admins}' \
  || true
gh api "repos/$repo/rules/branches/$base_ref" --paginate \
  --jq '.[] | {id,name,enforcement,status,rules:[.rules[].type]}' \
  || true

Length of output: 28803


@seonghobae I reviewed exact live head b8985fb08fd07293eb43411effe349bc4891db58 against develop.

I found no actionable code or dependency-lock finding.

  • The checked-out HEAD matches the PR head.
  • The diff changes only requirements-strix-ci-hashes.txt.
  • The diff replaces only aiohttp==3.14.1 with aiohttp==3.14.3.
  • The lock block contains 119 valid and unique SHA-256 hashes.
  • The 119 lock hashes exactly match the 119 aiohttp 3.14.3 artifact hashes in PyPI metadata.
  • The gql and litellm provenance remains present.
  • No old aiohttp==3.14.1 entry remains.
  • No application, API, workflow, database, permission, credential, or unrelated dependency file changed.
  • All visible required checks pass on this head. This includes dependency review, security, OSV scan, OpenCode review, and backend, frontend, and Naruon container validation.
  • There are zero review threads. There are zero unresolved review threads.

I cannot submit formal approval.

opencode-agent[bot] submitted CHANGES_REQUESTED on this exact head. The PR reports reviewDecision: CHANGES_REQUESTED and mergeStateStatus: BLOCKED.

The GitHub token cannot read the develop branch-protection configuration or branch rulesets. GitHub returned HTTP 403. An authorized reviewer must verify those requirements.

Resolve, supersede, or withdraw the current-head CHANGES_REQUESTED review. Then verify the protected-branch rules with authorized credentials. I found no remaining blocker in the one-file dependency-lock change itself.

You are interacting with an AI system.

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head f18b74f167b9405c7451b444f0068e6a42783ea1.

  • Head SHA: f18b74f167b9405c7451b444f0068e6a42783ea1

  • Workflow run: 31202927990

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: requirements-strix-ci-hashes.txt"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: requirements-strix-ci-hashes.txt"]
  R1 --> V1["required checks"]
Loading

@seonghobae
seonghobae dismissed stale reviews from opencode-agent[bot], opencode-agent[bot], and opencode-agent[bot] August 15, 2026 04:30

Stale predecessor-head review. It evaluated cdf4cea and requested changes solely because coverage evidence failed. Current exact head 7d12fd8 has fresh same-head coverage-evidence=success and opencode-review=success. Dismissal removes stale blocking state; it is not reused as current approval.

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head e89a25f82efda1cb4ec2f076d73c3a46a7122aea.

  • Head SHA: e89a25f82efda1cb4ec2f076d73c3a46a7122aea

  • Workflow run: 31872877611

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: requirements-strix-ci-hashes.txt"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: requirements-strix-ci-hashes.txt"]
  R1 --> V1["required checks"]
Loading

@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review August 15, 2026 12:34

Dismissed as stale predecessor-head evidence. The review was submitted for e89a25f82efda1cb4ec2f076d73c3a46a7122aea solely because coverage evidence failed. The current unchanged candidate is 04dff4db09493b7ff8a4860c0d74c0f444f9ecc3; on this exact head, coverage-source-tree, coverage-evidence, opencode-review, Application CI, Python 3.14 backend, frontend, security, dependency review, SAST, and container validation are terminal-success, and the review-thread inventory is empty. This dismissal does not provide approval or bypass the independent current-head approval requirement.

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 2b5fe17f7a00d4ccd8cd36f56dd0c40bf15df131.

  • Head SHA: 2b5fe17f7a00d4ccd8cd36f56dd0c40bf15df131

  • Workflow run: 31903619643

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: requirements-strix-ci-hashes.txt"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: requirements-strix-ci-hashes.txt"]
  R1 --> V1["required checks"]
Loading

@cursor

cursor Bot commented Aug 17, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 2fb03a60d89511cb643a27bcb576d63665881f7e.

  • Head SHA: 2fb03a60d89511cb643a27bcb576d63665881f7e

  • Workflow run: 32034520357

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: requirements-strix-ci-hashes.txt"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: requirements-strix-ci-hashes.txt"]
  R1 --> V1["required checks"]
Loading

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@seonghobae
seonghobae enabled auto-merge (squash) August 20, 2026 20:10
Bumps the uv group with 1 update in the / directory: [aiohttp](https://github.com/aio-libs/aiohttp).


Updates `aiohttp` from 3.14.1 to 3.14.3
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](aio-libs/aiohttp@v3.14.1...v3.14.3)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@seonghobae
seonghobae force-pushed the chore/aiohttp-3.14.3-maintainer branch from 8d06332 to c1d4c7f Compare August 21, 2026 02:12
@seonghobae
seonghobae dismissed stale reviews from opencode-agent[bot] and opencode-agent[bot] August 22, 2026 07:38

Stale review: cited coverage-evidence failure at commit 2fb03a6, but current head c1d4c7f passes coverage-evidence, coverage-source-tree, and all other required checks (verified via gh pr checks 1244). Dismissing as superseded per AGENTS.md stale-review guidance.

@opencode-agent opencode-agent Bot added area: api API, protocol, event, or external contract priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: maintenance Maintenance, build, dependency, or operational upkeep labels Aug 22, 2026
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


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.

1 similar comment
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


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.

@opencode-agent
opencode-agent Bot disabled auto-merge August 31, 2026 06:42
@seonghobae

seonghobae commented Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

Exact-head dependency gate diagnosis — 2026-09-05

Scope: #1244 head 50351e8cacc65b4124ba2145e00d41aeceef0775, protected base 042b0c70531b229af3acbd0421a2f23098d848b3. This existing aiohttp 3.14.3 proposal addresses the package/range behind default-branch alerts 88/89/90; the alerts remain open and no protected fix is claimed.

  • The three CodeQL compatibility failures report: “CodeQL scan dispatched. The dispatch workflow will rerun this exact failed CodeQL job after publishing its terminal verdict.” Actions job log. Central native dispatch runs 33954730717, 33954731355, and 33954731849 were freshly rechecked as queued, attempt 1, with no terminal verdict. Their native head is central workflow source 71dd84d40576281a6218f622d685d13c6b2f5e7b, not the Naruon application head. This is unavailable scan evidence, not a source vulnerability or a pass. Keep the existing handles; do not create duplicate dispatches.
  • The Noema job ended with HTTP Error 502: Bad Gateway, caller attempts=1, duration=1469.1 s, phase=response_error. No verdict was published. The caller label “transport failed” does not prove the gateway's underlying failure category.
  • Existing central #1898 is the diagnostic owner for preserving failure_kind. Verify that owner delta and the typed gateway cause before choosing a functional routing prerequisite. CO Epic: E5 — Privacy Bridge / Consent Minimal-Disclosure #1004/fix(a11y): 검색 결과 행의 포커스 대비 보존 #1049 cannot be claimed to resolve this particular 502 from the current log alone. Central #1902's later-attempt cancellation recovery is also not established as applicable to these attempt-1 queued scans.

Next: allow the existing central dispatches to produce authenticated terminal evidence, repair the diagnostic owner, and regenerate the unchanged application head's review after the actual cause is addressed. No source edits, reruns, approvals, alert dismissals, ruleset changes or merges were performed in this diagnosis. Local dependency/source tests cannot substitute for these hosted gates.

Diagnostic owner repair — 2026-09-05

Central #1898 now contains pushed head 0db01c2615457430018a584be1394f57dfdd7038, normally integrated with protected main f250638827f8252b0d9e5cb2601f4d333f96162f. It preserves optional failure_kind and also stops discarding canonical error.code. Protected CO source a080297d2546bb61e89520d637cabc202db331ec supplies invalid_structured_output on its structured-response-error path without a failure kind; that source shape is now covered by a sparse-envelope regression. It does not establish which path caused this historical 502.

Final owner tests: normal and CI-environment suites each 2940 passed, one reviewed-LLVM-19 test skipped, 21 subtests passed; Noema and four related policy modules measured 100% statement/branch coverage. The skip is unverified, and local tests are not protected delivery. Exact-head doctoring records RED/fix/GREEN, producer links, safe logging limits, and evidence boundaries.

New owner quality run 33962985324 and Noema run 33962984599 are queued after the push. The three existing native CodeQL handles above were rechecked and remain queued at their same source revision; no duplicate dispatch or cancellation was issued. This Naruon head remains unchanged. Wait for actual owner delivery and terminal evidence; do not consume an unreleased owner branch or claim CO #1004/#1049 resolved the incident.

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

Labels

area: api API, protocol, event, or external contract priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: maintenance Maintenance, build, dependency, or operational upkeep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant