Skip to content

fix(a11y): preserve report focus and data contrast - #550

Merged
seonghobae merged 10 commits into
mainfrom
fix/report-focus-contrast-reviewed
Aug 7, 2026
Merged

fix(a11y): preserve report focus and data contrast#550
seonghobae merged 10 commits into
mainfrom
fix/report-focus-contrast-reviewed

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Buyer-visible outcome

Replace automation-owned PR #548 with a maintainer-owned exact branch so review fixes and exact-head evidence cannot be discarded by branch rewrites.

Diagnostics reports retain readable data while users inspect a chart or table row, and the visually hidden skip-navigation link is revealed whenever it actually receives focus.

Change

  • reveal .skip-link on :focus as well as :focus-visible while retaining the strong visible outline;
  • remove chart-peer and table-peer opacity selectors that dimmed unrelated active rows during pointer hover;
  • retain the non-destructive active-row background cue;
  • keep report data, numerical values, generated information architecture, exports, and public Python APIs unchanged.

Verification

  • render a realistic diagnostics report through the public render_diagnostics_report entry point;
  • scope the skip-link assertions to the exact focus-rule body and require both top: 0 and the expected outline;
  • prove neither peer-dimming selector is emitted and the active-row cue remains;
  • include APA 7th doctoring grounded in WCAG 2.2 and the January 22, 2026 Selectors Level 4 Working Draft without a formal conformance claim;
  • require fresh exact-head Python, Rust/PyO3, GPU no-skip, package, fuzz, Security Scan, SAST, current-head automated review, independent approval, and zero actionable threads.

No Figma change is required because the bounded repair preserves layout, tokens, information architecture, and interaction structure.

Supersedes #548 after this PR is open. No release is included.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 43 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5032df67-22b9-4bd4-b631-707187081d54

📥 Commits

Reviewing files that changed from the base of the PR and between 84f3251 and 2d0c6b6.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • docs/changelog.d/diagnostics-report-focus-contrast.md
  • docs/doctoring/diagnostics-report-focus-contrast.md
  • python/fast_mlsirm/report.py
  • tests/test_report_focus_contrast.py

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

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent @cwl-noema-review Review exact head 8db4c235d466446429fc32bdeeef3ca1fdaa8827. This clean branch replaces automation-owned #548 after its head was rewritten. Verify that the focus assertions are scoped to the exact CSS rule and require both reveal and outline declarations, peer opacity dimming is absent, the active-row cue remains, and the standards wording makes no unsupported conformance claim. Require fresh checks and independent approval on this PR's exact head.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@seonghobae I will review PR #550 at exact head 8db4c235d466446429fc32bdeeef3ca1fdaa8827.

I will verify the scoped focus assertions, required reveal and outline declarations, absent peer opacity dimming, retained active-row cue, and standards wording. I will also assess the exact-head evidence and review state.

⚠️ 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 Final independent exact-head approval requested for 8db4c235d466446429fc32bdeeef3ca1fdaa8827. Repository CI 30990031266, SAST 30990031250, and Security Scan 30990031309 are successful on this head, including Python, Rust/PyO3, package, GPU no-skip, and fuzz jobs. No unresolved current review thread is present. Verify the exact focus-rule body assertions, actual-focus skip-link reveal, retained outline and active-row cue, absence of peer opacity dimming, conservative WCAG/Selectors wording, APA 7 doctoring, and changelog. Submit APPROVE only after same-head Strix evidence is successful and no actionable issue remains; stale, status-only, self-authored, or prior-PR evidence is insufficient.

@seonghobae
seonghobae marked this pull request as draft August 5, 2026 09:18
@seonghobae
seonghobae marked this pull request as ready for review August 5, 2026 09:19
@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 11:54

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review exact current head 8db4c235d466446429fc32bdeeef3ca1fdaa8827. The prior invocation was rate-limited; no commits have moved since. Reassess the complete six-file diff and report only current-head actionable findings.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"
repo="ContextualWisdomLab/fast-mlsirm"
pr_number="550"

echo "== Checkout commit =="
git rev-parse HEAD
git status --short
git show -s --format='commit=%H%nparents=%P%nsubject=%s' HEAD

echo
echo "== Changed files against first parent =="
git diff-tree --no-commit-id --name-status -r HEAD
echo
git diff --stat HEAD^

echo
echo "== Complete exact-head diff =="
git diff --find-renames --find-copies --no-ext-diff HEAD^

echo
echo "== Candidate CSS, test, documentation, and changelog files =="
fd -t f . | rg -i '(^|/)(changelog|changes|release|history|readme)|\.(css|scss|sass|md|rst|py|ts|tsx|js|jsx)$' | head -n 500

echo
echo "== Exact focus, opacity, active-row, standards, APA, and render assertions in tracked files =="
rg -n -i -C 5 \
  'skip-link|focus-visible|:focus\b|outline|opacity|active-row|active.*row|WCAG|Selectors Level 4|APA 7|render_diagnostics_report' \
  $(git diff-tree --no-commit-id --name-only -r HEAD) || true

echo
echo "== PR metadata, review decisions, unresolved review threads, and checks =="
gh pr view "$pr_number" --repo "$repo" \
  --json number,headRefOid,baseRefOid,files,reviewDecision,reviews,statusCheckRollup,comments \
  --jq '{
    number,
    headRefOid,
    baseRefOid,
    reviewDecision,
    files: [.files[] | {path, additions, deletions}],
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid}],
    checks: [.statusCheckRollup[] | {name, status, conclusion, workflowName, detailsUrl}]
  }'

gh api graphql \
  -F owner="ContextualWisdomLab" \
  -F name="fast-mlsirm" \
  -F number="$pr_number" \
  -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          isOutdated
          comments(first: 20) {
            nodes {
              author { login }
              body
              commit { oid }
              path
              line
            }
          }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[] |
  select((.isResolved | not) and (.isOutdated | not)) |
  {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}'

Length of output: 30207


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="84f3251e070a70298cd213627dc62bb13c4d9337"
head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"

echo "== Merge base and complete PR commit range =="
merge_base=$(git merge-base "$base" "$head")
printf 'merge_base=%s\n' "$merge_base"
git log --oneline --reverse "${merge_base}..${head}"

echo
echo "== Full six-file diff against merge base =="
git diff --find-renames --find-copies --no-ext-diff "${merge_base}...${head}"

echo
echo "== Exact changed-file list =="
git diff --name-status "${merge_base}...${head}"

echo
echo "== Report generator outline =="
ast-grep outline python/fast_mlsirm/report.py --items all --view expanded

echo
echo "== CSS and report-rendering context =="
rg -n -C 12 \
  'skip-link|bar-chart|bar-row|tbody.*hover|hover-bg|render_diagnostics_report|<style' \
  python/fast_mlsirm/report.py

echo
echo "== Complete accessibility test =="
cat -n tests/test_report_focus_contrast.py

echo
echo "== Changelog and doctoring documents =="
cat -n CHANGELOG.md
printf '\n-- docs/changelog.d/diagnostics-report-focus-contrast.md --\n'
cat -n docs/changelog.d/diagnostics-report-focus-contrast.md
printf '\n-- docs/doctoring/diagnostics-report-focus-contrast.md --\n'
cat -n docs/doctoring/diagnostics-report-focus-contrast.md
printf '\n-- .Jules/palette.md --\n'
cat -n .Jules/palette.md

echo
echo "== Search the generated CSS template for prohibited and required forms =="
rg -n -C 3 \
  '\.skip-link:focus|\.skip-link:focus-visible|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|tbody tr:hover|top: 0;|outline: 3px solid var\(--teal\);' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py

Length of output: 201680


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base="84f3251e070a70298cd213627dc62bb13c4d9337"
head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"
merge_base=$(git merge-base "$base" "$head")

echo "== Exact six-file patch, split by file =="
for path in \
  .Jules/palette.md \
  CHANGELOG.md \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py
do
  printf '\n===== %s =====\n' "$path"
  git diff --no-ext-diff --unified=40 "${merge_base}...${head}" -- "$path"
done

echo
echo "== Complete relevant report stylesheet window =="
sed -n '535,845p' python/fast_mlsirm/report.py

echo
echo "== All report stylesheet opacity declarations and hover selectors =="
rg -n -C 4 '(opacity\s*:|:hover)' python/fast_mlsirm/report.py

echo
echo "== Current Unreleased fixed entries only =="
sed -n '1,180p' CHANGELOG.md

echo
echo "== Exact-head verification identity =="
git diff --quiet "$head" || { echo "worktree differs from requested head"; exit 1; }
git rev-parse HEAD
gh pr view 550 --repo ContextualWisdomLab/fast-mlsirm --json headRefOid,reviewDecision \
  --jq '{headRefOid, reviewDecision}'

Length of output: 43790


@seonghobae No current-head actionable code or documentation findings.

I verified exact head 8db4c235d466446429fc32bdeeef3ca1fdaa8827.

  • The focus assertions target the exact combined .skip-link:focus, .skip-link:focus-visible rule body.
  • The rule contains top: 0; and the required teal outline.
  • The chart and table peer-opacity selectors are absent.
  • The active table-row background cue remains.
  • The WCAG and Selectors wording is conservative. It makes no formal conformance claim.
  • The APA-style references and changelog entry are present.
  • CI, SAST, Security Scan, and Strix evidence is successful for this head.

The PR still has REVIEW_REQUIRED and no submitted independent review. An independent approval remains required before merge.

⚠️ 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

@coderabbitai review

@opencode-agent @cwl-noema-review Review exact current head 8db4c235d466446429fc32bdeeef3ca1fdaa8827. Repository CI 30990031266, SAST Semgrep 30990031250, and Security Scan 30990031309 are successful on this SHA, and no unresolved review thread is present. Verify the exact .skip-link:focus and :focus-visible rule, retained reveal and outline declarations, absence of chart/table peer-opacity dimming, preserved active-row cue, realistic public-renderer regression, and standards wording without an unsupported WCAG conformance claim. Submit APPROVE only if no actionable issue remains; stale, status-only, self-authored, or prior-head evidence is insufficient.

@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/fast-mlsirm"
pr="550"
expected_head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"

echo "== Exact head identity =="
printf 'checked_out='
git rev-parse HEAD
git show -s --format='subject=%s%nparents=%P' HEAD
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,baseRefOid,reviewDecision \
  --jq '{headRefOid, baseRefOid, reviewDecision}'

if [[ "$(git rev-parse HEAD)" != "$expected_head" ]]; then
  echo "ERROR: checked-out repository is not the requested head" >&2
  exit 1
fi
if [[ "$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)" != "$expected_head" ]]; then
  echo "ERROR: PR head is not the requested head" >&2
  exit 1
fi

base="$(git merge-base HEAD HEAD^)"
printf '\n== Merge base ==\n%s\n' "$base"
printf '\n== Complete changed-file list ==\n'
git diff --name-status "$base...HEAD"
printf '\n== Complete diff ==\n'
git diff --no-ext-diff --find-renames --find-copies "$base...HEAD"

printf '\n== Report module outline ==\n'
ast-grep outline python/fast_mlsirm/report.py --items all --view expanded

printf '\n== Relevant report CSS and renderer context ==\n'
rg -n -C 12 \
  '\.skip-link|\.bar-chart|\.bar-row|tbody|opacity\s*:|outline\s*:|top\s*:|render_diagnostics_report' \
  python/fast_mlsirm/report.py

printf '\n== Focus/contrast regression test ==\n'
cat -n tests/test_report_focus_contrast.py

printf '\n== Changed changelog and standards documents ==\n'
for path in CHANGELOG.md docs/changelog.d/diagnostics-report-focus-contrast.md docs/doctoring/diagnostics-report-focus-contrast.md .Jules/palette.md; do
  if [[ -f "$path" ]]; then
    printf '\n----- %s -----\n' "$path"
    cat -n "$path"
  fi
done

printf '\n== Required and prohibited selector forms ==\n'
rg -n -C 4 \
  '\.skip-link:focus|\.skip-link:focus-visible|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|tbody tr:hover|top:\s*0;|outline:\s*3px solid var\(--teal\)|opacity\s*:' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py || true

printf '\n== Current checks and reviews ==\n'
gh pr view "$pr" --repo "$repo" \
  --json reviews,statusCheckRollup \
  --jq '{
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid}],
    checks: [.statusCheckRollup[] | {name, status, conclusion, workflowName}]
  }'

printf '\n== Unresolved, current review threads ==\n'
gh api graphql \
  -F owner="ContextualWisdomLab" \
  -F name="fast-mlsirm" \
  -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}' || true

Length of output: 203126


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"
base="$(git merge-base HEAD HEAD^)"

echo "== Identity and exact changed files =="
git rev-parse HEAD
git diff --name-status "$base...$head"

echo
echo "== Exact patch for implementation and regression test =="
git diff --no-ext-diff --unified=30 "$base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py

echo
echo "== Complete focus/contrast test =="
cat -n tests/test_report_focus_contrast.py

echo
echo "== Exact documentation additions =="
git diff --no-ext-diff --unified=20 "$base...$head" -- \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md \
  CHANGELOG.md

echo
echo "== Requested workflow-run head identities =="
for run_id in 30990031266 30990031250 30990031309; do
  gh run view "$run_id" --repo "$repo" --json databaseId,headSha,status,conclusion,name,workflowName \
    --jq '{databaseId, headSha, status, conclusion, name, workflowName}'
done

echo
echo "== Current head checks with details URLs =="
gh pr view "$pr" --repo "$repo" --json headRefOid,statusCheckRollup,reviewDecision \
  --jq '{
    headRefOid,
    reviewDecision,
    checks: [.statusCheckRollup[]
      | select(.conclusion == "SUCCESS")
      | {name, workflowName, detailsUrl}]
  }'

echo
echo "== Current submitted approvals =="
gh pr view "$pr" --repo "$repo" --json reviews \
  --jq '[.reviews[] | select(.state == "APPROVED") | {author: .author.login, commit: .commit.oid, submittedAt}]'

Length of output: 6738


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"

base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"

echo "== Exact PR range =="
printf 'base=%s\nmerge_base=%s\nhead=%s\n' "$base" "$merge_base" "$head"
git log --oneline --reverse "$merge_base..$head"
git diff --name-status "$merge_base...$head"

echo
echo "== Complete PR patch for all expected files =="
git diff --no-ext-diff --unified=20 "$merge_base...$head" -- \
  .Jules/palette.md \
  CHANGELOG.md \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py

echo
echo "== Exact workflow-run identities =="
for run_id in 30990031266 30990031250 30990031309; do
  gh api "repos/$repo/actions/runs/$run_id" \
    --jq '{id, head_sha, status, conclusion, name, path, event, html_url}'
done

echo
echo "== Current review decision and unresolved current threads =="
gh pr view "$pr" --repo "$repo" --json headRefOid,reviewDecision,reviews \
  --jq '{headRefOid, reviewDecision, reviews: [.reviews[] | {author: .author.login, state, commit: .commit.oid}]}'

gh api graphql \
  -F owner="ContextualWisdomLab" \
  -F name="fast-mlsirm" \
  -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
          comments(first: 1) { nodes { commit { oid } path line } }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: .comments.nodes}]'

Length of output: 20872


@seonghobae No current-head actionable findings.

I reviewed PR #550 at exact head 8db4c235d466446429fc32bdeeef3ca1fdaa8827.

  • The scoped .skip-link:focus, .skip-link:focus-visible rule contains top: 0; and the required teal outline.
  • The chart and table peer-opacity selectors are absent.
  • The active-row background cue remains.
  • The regression test uses public render_diagnostics_report and scopes its focus assertions to the exact rule body.
  • The standards wording is conservative. It makes no unsupported WCAG conformance claim.
  • The changelog and APA-style doctoring references are present.
  • CI 30990031266, SAST Semgrep 30990031250, and Security Scan 30990031309 succeeded on this exact SHA.
  • No unresolved current review thread exists.

The PR is still REVIEW_REQUIRED and has no submitted approval. Submit a separate top-level @coderabbitai approve command to request an approval action.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

This PR remains unmerged pending a valid central exact-head review. The repository's full pytest suite imports the compiled maturin/PyO3 module fast_mlsirm._core, which the isolated source-only OpenCode coverage sandbox does not build. Repository CI, Rust/PyO3, package, GPU-no-skip, fuzz, SAST, and Security Scan checks succeeded on this head, but they are not used to bypass the central gate.

ContextualWisdomLab/.github#784 and draft PR #789 implement the bounded classification and exact-head peer-evidence foundation with no skipped tests, no Python substitute, and no weakened protection. Auto-merge remains enabled but must wait for central workflow integration and a fresh qualifying 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 8db4c235d466446429fc32bdeeef3ca1fdaa8827.

  • Head SHA: 8db4c235d466446429fc32bdeeef3ca1fdaa8827

  • Workflow run: 31010818905

  • 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 (3 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (3 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
  Evidence --> S3["Test: test_report_focus_contrast.py"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: test_report_focus_contrast.py"]
  R3 --> V3["targeted test run"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f
  • Workflow run: 31092247808
  • Workflow attempt: 2
  • Gate result: REQUEST_CHANGES (approval step)

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 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • Head SHA: 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f

  • Workflow run: 31092247808

  • Workflow attempt: 2

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 (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
  Evidence --> S3["Test: test_report_focus_contrast.py"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: test_report_focus_contrast.py"]
  R3 --> V3["targeted test run"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 5, 2026 15:46
@seonghobae
seonghobae enabled auto-merge (squash) August 6, 2026 06:34
@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review August 6, 2026 07:06

Dismissed because it is anchored to predecessor head 8db4c23. Current head 2d0c6b6 removes only transient accessibility-journal drift, has fresh successful repository CI/SAST/Security and CodeRabbit status, and still requires a new exact-head OpenCode/Noema verdict plus independent approval before merge.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@cwl-noema-review Review exact current head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f. The only delta from the previously reviewed implementation head is removal of transient .Jules/palette.md journal drift. Repository CI 31077623565, SAST Semgrep 31077623551, and Security Scan 31077623533 are successful on this exact head, CodeRabbit combined status is successful, and no unresolved thread exists. Revalidate the exact .skip-link:focus/:focus-visible rule, visible reveal and outline, absence of chart/table peer-opacity dimming, retained active-row cue, realistic public-renderer regression, APA 7 doctoring, and conservative non-conformance wording. Do not mutate the branch or merge; exact-head OpenCode review will be rerun after the central PyO3 native peer-evidence gate is integrated.

@coderabbitai

coderabbitai Bot commented Aug 6, 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/fast-mlsirm"
pr="550"
expected_head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"

echo "== Exact-head identity =="
printf 'checked_out='
git rev-parse HEAD
git show -s --format='subject=%s%nparents=%P' HEAD
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,baseRefOid,reviewDecision,files \
  --jq '{headRefOid, baseRefOid, reviewDecision, files: [.files[] | {path, additions, deletions}]}'

if [[ "$(git rev-parse HEAD)" != "$expected_head" ]]; then
  echo "ERROR: checked-out repository is not the requested head" >&2
  exit 1
fi
if [[ "$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)" != "$expected_head" ]]; then
  echo "ERROR: pull request head is not the requested head" >&2
  exit 1
fi

base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" HEAD)"
printf '\n== Pull request range ==\nbase=%s\nmerge_base=%s\nhead=%s\n' "$base" "$merge_base" "$expected_head"
git log --oneline --reverse "$merge_base..HEAD"
printf '\n== Changed files ==\n'
git diff --name-status "$merge_base...HEAD"
printf '\n== Complete diff ==\n'
git diff --no-ext-diff --find-renames --find-copies "$merge_base...HEAD"

printf '\n== Report module outline ==\n'
ast-grep outline python/fast_mlsirm/report.py --items all --view expanded

printf '\n== Relevant CSS and renderer context ==\n'
rg -n -C 14 \
  '\.skip-link|\.bar-chart|\.bar-row|tbody|opacity\s*:|outline\s*:|top\s*:|render_diagnostics_report' \
  python/fast_mlsirm/report.py

printf '\n== Focus and contrast regression test ==\n'
cat -n tests/test_report_focus_contrast.py

printf '\n== Changelog and standards documents ==\n'
for path in CHANGELOG.md docs/changelog.d/diagnostics-report-focus-contrast.md docs/doctoring/diagnostics-report-focus-contrast.md; do
  printf '\n----- %s -----\n' "$path"
  cat -n "$path"
done

printf '\n== Required and prohibited selector forms ==\n'
rg -n -C 4 \
  '\.skip-link:focus|\.skip-link:focus-visible|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|tbody tr:hover|top:\s*0;|outline:\s*3px solid var\(--teal\)|opacity\s*:' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py || true

printf '\n== Cited workflow-run identity ==\n'
for run_id in 31077623565 31077623551 31077623533; do
  gh api "repos/$repo/actions/runs/$run_id" \
    --jq '{id, head_sha, status, conclusion, name, path, event, html_url}'
done

printf '\n== Current checks and submitted reviews ==\n'
gh pr view "$pr" --repo "$repo" --json statusCheckRollup,reviews \
  --jq '{
    checks: [.statusCheckRollup[] | {name, status, conclusion, workflowName, detailsUrl}],
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid}]
  }'

printf '\n== Unresolved current review threads ==\n'
gh api graphql \
  -F owner="ContextualWisdomLab" \
  -F name="fast-mlsirm" \
  -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 203557


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"
prior_head="8db4c235d466446429fc32bdeeef3ca1fdaa8827"

base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"

echo "== Exact identity and pull request range =="
git rev-parse HEAD
printf 'merge_base=%s\n' "$merge_base"
git log --oneline --reverse "$merge_base..$head"

echo
echo "== Complete changed-file list for the pull request =="
git diff --name-status "$merge_base...$head"

echo
echo "== Delta from previously reviewed implementation head =="
git log --oneline --reverse "$prior_head..$head"
git diff --name-status "$prior_head...$head"
git diff --no-ext-diff --unified=20 "$prior_head...$head"

echo
echo "== Current implementation and test patch against pull request base =="
git diff --no-ext-diff --unified=20 "$merge_base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md \
  CHANGELOG.md

Length of output: 19305


@seonghobae No current-head actionable findings.

I reviewed PR #550 at exact head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • The only delta from 8db4c235d466446429fc32bdeeef3ca1fdaa8827 removes transient .Jules/palette.md journal entries.
  • The exact combined .skip-link:focus, .skip-link:focus-visible rule includes top: 0; and outline: 3px solid var(--teal);.
  • The chart and table peer-opacity dimming selectors are absent.
  • The active table-row cue remains as background: var(--hover-bg);.
  • The regression test renders a realistic report through public render_diagnostics_report.
  • The test scopes the focus assertions to the exact rule body and requires both reveal and outline declarations.
  • The doctoring uses conservative WCAG wording. It makes no formal conformance claim.
  • The doctoring includes APA-style WCAG 2.2 and Selectors Level 4 references.
  • CI 31077623565, SAST Semgrep 31077623551, and Security Scan 31077623533 succeeded on this exact head.
  • No unresolved current review thread exists.

I did not modify the branch or merge the pull request. The central PyO3 native peer-evidence gate still requires a fresh qualifying review before approval.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Final independent exact-head review requested for 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f. Repository CI 31077623565, SAST Semgrep 31077623551, and Security Scan 31077623533 are successful on this exact SHA; CodeRabbit exact-head status is successful; no unresolved thread exists. Verify the exact skip-link reveal and focus-visible rule, visible outline, absence of chart/table peer-opacity dimming, retained active-row cue, realistic public-renderer regression, APA 7 doctoring, conservative non-conformance wording, and the sole current-head cleanup of transient accessibility-journal drift. Submit APPROVE only after live exact-head evidence is independently sufficient; stale, status-only, self-authored, prior-head, or prior-PR evidence is insufficient. Do not mutate or merge the branch.

@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 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • Head SHA: 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f

  • Workflow run: 31092247808

  • 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 (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
  Evidence --> S3["Test: test_report_focus_contrast.py"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: test_report_focus_contrast.py"]
  R3 --> V3["targeted test run"]
Loading

Copy link
Copy Markdown
Contributor Author

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

Re-run the independent review on exact head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f. CI 31077623565, SAST 31077623551, and Security Scan 31077623533 are successful, and there are zero unresolved review threads. Re-evaluate coverage/docstring evidence with the current central workflow rather than the superseded failed evidence run. Confirm that actual :focus reveals the skip link with the strong outline, opacity-based peer dimming is absent, active-row highlighting remains non-destructive, public report output is unchanged apart from CSS, and APA 7 doctoring/changelog are complete before submitting APPROVE.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"

echo "== Exact-head identity =="
git rev-parse HEAD
git show -s --format='subject=%s%nparents=%P' HEAD
gh pr view "$pr" --repo "$repo" --json headRefOid,baseRefOid,reviewDecision \
  --jq '{headRefOid, baseRefOid, reviewDecision}'

test "$(git rev-parse HEAD)" = "$head"
test "$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)" = "$head"

base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"

echo
echo "== Complete PR range and changed files =="
printf 'merge_base=%s\n' "$merge_base"
git log --oneline --reverse "$merge_base..$head"
git diff --name-status "$merge_base...$head"
git diff --no-ext-diff --find-renames --find-copies "$merge_base...$head"

echo
echo "== Report module outline =="
ast-grep outline python/fast_mlsirm/report.py --items all --view expanded

echo
echo "== Relevant stylesheet and public renderer context =="
rg -n -C 14 \
  '\.skip-link|\.bar-chart|\.bar-row|tbody|opacity\s*:|outline\s*:|top\s*:|render_diagnostics_report' \
  python/fast_mlsirm/report.py

echo
echo "== Regression test =="
cat -n tests/test_report_focus_contrast.py

echo
echo "== Changed documentation and changelog =="
for path in CHANGELOG.md docs/changelog.d/diagnostics-report-focus-contrast.md docs/doctoring/diagnostics-report-focus-contrast.md; do
  printf '\n----- %s -----\n' "$path"
  cat -n "$path"
done

echo
echo "== Current central-workflow and coverage/docstring evidence =="
rg -n -i -C 5 \
  'coverage|pytest|docstring|pyo3|maturin|opencode|central|evidence' \
  .github tests python Cargo.toml pyproject.toml 2>/dev/null || true

echo
echo "== Cited workflow-run identity =="
for run_id in 31077623565 31077623551 31077623533; do
  gh api "repos/$repo/actions/runs/$run_id" \
    --jq '{id, head_sha, status, conclusion, name, path, event, html_url}'
done

echo
echo "== Current checks and reviews =="
gh pr view "$pr" --repo "$repo" --json statusCheckRollup,reviews \
  --jq '{
    checks: [.statusCheckRollup[] | {name, status, conclusion, workflowName, detailsUrl}],
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid}]
  }'

echo
echo "== Unresolved current review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" \
  -F name="fast-mlsirm" \
  -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 203592


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"
log="/tmp/coderabbit-shell-logs/shell-output-0ttEwf"

echo "== Exact-head review bodies =="
gh pr view "$pr" --repo "$repo" --json reviews \
  --jq '.reviews[]
    | select(.commit.oid == "'"$head"'")
    | {author: .author.login, state, submittedAt, body}'

echo
echo "== Bounded source evidence from the first script =="
for section in \
  "== Exact-head identity ==" \
  "== Complete PR range and changed files ==" \
  "== Relevant stylesheet and public renderer context ==" \
  "== Regression test ==" \
  "== Changed documentation and changelog =="; do
  line="$(grep -nF "$section" "$log" | head -n1 | cut -d: -f1 || true)"
  if [[ -n "$line" ]]; then
    printf '\n----- %s -----\n' "$section"
    sed -n "${line},$((line + 260))p" "$log"
  fi
done

echo
echo "== Exact changed-file patch =="
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"
git diff --no-ext-diff --unified=30 "$merge_base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py \
  CHANGELOG.md \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md

echo
echo "== Central workflow job results and selected logs =="
for job_id in 92539109130 92539145746 92539386069; do
  gh api "repos/$repo/actions/jobs/$job_id" \
    --jq '{id, name, status, conclusion, started_at, completed_at, steps: [.steps[] | {name, status, conclusion}]}'
  printf '\n-- job %s log matches --\n' "$job_id"
  gh api "repos/$repo/actions/jobs/$job_id/logs" \
    | rg -i -C 3 'coverage|docstring|pyo3|maturin|pytest|error|fail|pass|success|exact head' \
    | tail -n 240 || true
done

Length of output: 94162


@seonghobae I reviewed exact head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

I found no actionable code or documentation issue in the PR patch.

  • .skip-link:focus and .skip-link:focus-visible share the exact rule body.
  • The rule retains top: 0; and outline: 3px solid var(--teal);.
  • The chart and table peer-opacity selectors are absent.
  • tbody tr:hover retains background: var(--hover-bg);.
  • The regression test uses public render_diagnostics_report.
  • The regression test scopes the assertions to the combined focus rule body.
  • The report data path and public Python API are unchanged by the patch.
  • The doctoring has conservative WCAG wording and does not claim formal conformance.
  • The APA-style references and changelog entry are present.
  • CI 31077623565, SAST 31077623551, and Security Scan 31077623533 succeeded on this exact head.
  • No unresolved current review thread exists.

I cannot approve this PR yet.

The current successful OpenCode Review jobs do not execute coverage, test, or docstring checks. They only report delegation or preserve branch-protection status. Therefore, they do not replace the required substantive same-head coverage and docstring evidence.

The current-head CHANGES_REQUESTED review also remains on the PR. It cites failed workflow run 31092247808. A qualifying central workflow must publish successful same-head test and docstring evidence before an approval request can be evaluated.

⚠️ 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 enabled auto-merge (squash) August 6, 2026 23:18

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent @cwl-noema-review Re-run the independent exact-head review for 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f. Repository CI 31077623565, Security Scan 31077623533, and SAST Semgrep 31077623551 are successful; CodeRabbit is successful; and there are zero unresolved review threads. The prior CHANGES_REQUESTED was solely the central coverage-evidence job failing to publish evidence. Verify the changed production path and focused regression directly, require the current central coverage/docstring evidence, and submit a superseding approval only if the focus, contrast, changelog, APA 7 doctoring, and exact-head gates are all satisfied.

@coderabbitai

coderabbitai Bot commented Aug 6, 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/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"

echo "== Exact-head identity =="
git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,baseRefOid,reviewDecision,files \
  --jq '{headRefOid, baseRefOid, reviewDecision, files: [.files[] | {path, additions, deletions}]}'
test "$(git rev-parse HEAD)" = "$head"
test "$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)" = "$head"

base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"
echo "== Exact PR range =="
printf 'merge_base=%s\n' "$merge_base"
git log --oneline --reverse "$merge_base..$head"
git diff --name-status "$merge_base...$head"
git diff --no-ext-diff --unified=30 "$merge_base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py \
  CHANGELOG.md \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md

echo "== Relevant current source and test context =="
rg -n -C 12 \
  '\.skip-link|\.bar-chart|\.bar-row|tbody|opacity\s*:|outline\s*:|top\s*:|render_diagnostics_report' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py
cat -n tests/test_report_focus_contrast.py
for path in CHANGELOG.md docs/changelog.d/diagnostics-report-focus-contrast.md docs/doctoring/diagnostics-report-focus-contrast.md; do
  echo "== $path =="
  cat -n "$path"
done

echo "== Current exact-head checks and reviews =="
gh pr view "$pr" --repo "$repo" --json statusCheckRollup,reviews \
  --jq '{
    checks: [.statusCheckRollup[] | {name, workflowName, status, conclusion, detailsUrl}],
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid, body}]
  }'

echo "== Workflow runs for exact head =="
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[] | {id, name, path, event, status, conclusion, created_at, updated_at, html_url}'

echo "== Central workflow configuration candidates =="
fd -t f .github | rg '(^|/)(.*opencode.*|.*central.*|.*coverage.*|.*test.*|.*ci.*)\.(ya?ml|json)$' \
  | while IFS= read -r path; do
      echo "--- $path ---"
      rg -n -i -C 4 'coverage|docstring|pyo3|maturin|pytest|evidence|opencode|central' "$path" || true
    done

echo "== Unresolved current review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="fast-mlsirm" -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 203303


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"
run="31077622677"

echo "== Exact implementation excerpts =="
rg -n -C 10 \
  '\.skip-link:focus|\.skip-link:focus-visible|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|tbody tr:hover|top:\s*0;|outline:\s*3px solid var\(--teal\)|opacity\s*:' \
  python/fast_mlsirm/report.py

echo "== Focus/contrast regression test =="
cat -n tests/test_report_focus_contrast.py

echo "== Exact patch summary =="
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"
git diff --no-ext-diff --unified=12 "$merge_base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md

echo "== Current central workflow definition =="
cat -n .github/workflows/opencode-review.yml

echo "== Successful central workflow jobs =="
gh api "repos/$repo/actions/runs/$run/jobs?per_page=100" \
  --jq '.jobs[] | select(.id == 92539109130 or .id == 92539145746 or .id == 92539386069) |
    {id, name, head_sha, status, conclusion, steps: [.steps[] | {name, status, conclusion}]}'

for job_id in 92539109130 92539145746 92539386069; do
  echo "== Job $job_id evidence lines =="
  gh api "repos/$repo/actions/jobs/$job_id/logs" \
    | rg -i -C 5 \
      'head|sha|coverage|pytest|test(s)? passed|docstring|pydocstyle|ruff|not applicable|unsupported|failure|error|success|approval' \
    | tail -n 400 || true
done

echo "== Current unresolved review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="fast-mlsirm" -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 15430


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"
run="31077622677"

echo "== Central run identity =="
gh api "repos/$repo/actions/runs/$run" \
  --jq '{id, head_sha, head_branch, path, event, status, conclusion, workflow_id}'
echo "Expected head: $head"

for job_id in 92539109130 92539145746 92539386069; do
  echo "== Job metadata: $job_id =="
  gh api "repos/$repo/actions/jobs/$job_id" \
    --jq '{id, run_id, head_sha, name, status, conclusion, started_at, completed_at,
      steps: [.steps[] | {name, status, conclusion}]}'
  echo "== Job log: $job_id =="
  gh api "repos/$repo/actions/jobs/$job_id/logs" \
    | tail -n 1200
done

echo "== Workflow file resolved from the run path and default branch =="
workflow_path="$(gh api "repos/$repo/actions/runs/$run" --jq .path)"
default_branch="$(gh api "repos/$repo" --jq .default_branch)"
printf 'path=%s\ndefault_branch=%s\n' "$workflow_path" "$default_branch"
gh api "repos/$repo/contents/$workflow_path?ref=$default_branch" --jq .content \
  | base64 --decode \
  | cat -n

echo "== Unresolved current review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="fast-mlsirm" -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 3240


@seonghobae I found no actionable issue in the production change, regression test, changelog, or doctoring.

The exact head is 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • The combined .skip-link:focus, .skip-link:focus-visible rule contains top: 0; and outline: 3px solid var(--teal);.
  • The chart and table peer-opacity selectors are absent.
  • tbody tr:hover retains background: var(--hover-bg);.
  • The focused regression uses public render_diagnostics_report.
  • The regression scopes its assertions to the exact focus-rule body.
  • The doctoring uses conservative WCAG wording. It makes no formal conformance claim.
  • The changelog and APA-style references are present.

I cannot submit a superseding approval.

Central run 31077622677 is successful on this exact head. However, successful job coverage-source-tree (92539109130) performs no source, test, coverage, or docstring validation. Its only execution step says that source and coverage execution are delegated to another dispatch. This is delegation status, not substantive same-head evidence.

The required current coverage and docstring evidence is therefore not established. The existing CHANGES_REQUESTED review must remain in effect until the central workflow publishes verifiable same-head test, coverage, and docstring results.

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 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • Head SHA: 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f

  • Workflow run: 31092247808

  • Workflow attempt: 2

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 (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
  Evidence --> S3["Test: test_report_focus_contrast.py"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: test_report_focus_contrast.py"]
  R3 --> V3["targeted test run"]
Loading

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Re-run the independent exact-head review for 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f under the current central coverage contract. Repository CI 31077623565, SAST Semgrep 31077623551, and Security Scan 31077623533 are successful on this exact SHA; CodeRabbit exact-head status is successful and no unresolved thread exists. The prior CHANGES_REQUESTED verdict identified no source defect and resulted only from the then-failing central coverage-evidence job. Recompute that evidence; verify focus contrast, visible outlines, retained data ink, conservative standards wording, APA 7 doctoring, and changelog. Submit APPROVE only when every current-head gate is independently green. Do not mutate or merge the branch.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review
@cwl-noema-review review

Please review exact current head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f. Repository CI, Security Scan, and SAST are successful; unresolved threads are zero. The prior OpenCode request-changes verdict is a central source-only coverage-environment failure rather than a finding in this bounded report-CSS/test/doc slice. Review only; branch protection and independent approval remain authoritative.

@coderabbitai

coderabbitai Bot commented Aug 6, 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/fast-mlsirm"
pr="550"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"

echo "== Exact head =="
git rev-parse HEAD
gh pr view "$pr" --repo "$repo" --json headRefOid,baseRefOid,reviewDecision \
  --jq '{headRefOid, baseRefOid, reviewDecision}'
test "$(git rev-parse HEAD)" = "$head"
test "$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)" = "$head"

base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"

echo "== Changed files and complete patch =="
git diff --name-status "$merge_base...$head"
git diff --no-ext-diff --unified=25 "$merge_base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py \
  CHANGELOG.md \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md

echo "== Report CSS and renderer context =="
rg -n -C 12 \
  '\.skip-link|\.bar-chart|\.bar-row|tbody|opacity\s*:|outline\s*:|top\s*:|render_diagnostics_report' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py

echo "== Focus/contrast regression test =="
cat -n tests/test_report_focus_contrast.py

echo "== Doctoring and changelog =="
for path in CHANGELOG.md docs/changelog.d/diagnostics-report-focus-contrast.md docs/doctoring/diagnostics-report-focus-contrast.md; do
  printf '\n----- %s -----\n' "$path"
  cat -n "$path"
done

echo "== Current exact-head checks and reviews =="
gh pr view "$pr" --repo "$repo" --json statusCheckRollup,reviews \
  --jq '{
    checks: [.statusCheckRollup[] | {name, workflowName, status, conclusion, detailsUrl}],
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid}]
  }'

echo "== Unresolved current review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="fast-mlsirm" -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 202520


🏁 Script executed:

#!/bin/bash
set -euo pipefail

log="/tmp/coderabbit-shell-logs/shell-output-pligHV"

echo "== Exact head and changed-file section from prior report =="
sed -n '1,420p' "$log"

echo "== Exact report stylesheet rules =="
rg -n -A16 -B8 \
  '\.skip-link:focus|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|tbody tr:hover' \
  python/fast_mlsirm/report.py

echo "== Focus regression test =="
cat -n tests/test_report_focus_contrast.py

echo "== Required and prohibited generated stylesheet forms =="
rg -n -C3 \
  '\.skip-link:focus|\.skip-link:focus-visible|top:\s*0;|outline:\s*3px solid var\(--teal\)|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|opacity\s*:' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py

Length of output: 26809


@seonghobae No actionable finding in the bounded report-CSS, test, changelog, and doctoring change.

I reviewed exact head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • The combined .skip-link:focus, .skip-link:focus-visible rule contains top: 0; and outline: 3px solid var(--teal);.
  • The chart and table peer-opacity selectors are absent.
  • tbody tr:hover retains background: var(--hover-bg);.
  • The regression test renders through public render_diagnostics_report.
  • The test scopes its reveal and outline assertions to the exact combined focus-rule body.
  • The doctoring uses conservative WCAG wording and does not claim formal conformance.
  • The changelog fragment and APA-style references are present.
  • Current Python, Rust, GPU, package, fuzz, SAST, and Security Scan checks are successful.
  • No unresolved current review thread exists.

I did not modify the branch or merge state. Existing review decisions, branch protection, and independent approval remain authoritative.

You are interacting with an AI system.

@opencode-agent
opencode-agent Bot disabled auto-merge August 7, 2026 00:20
@seonghobae
seonghobae merged commit c5c9093 into main Aug 7, 2026
33 checks passed
@seonghobae
seonghobae deleted the fix/report-focus-contrast-reviewed branch August 7, 2026 00:40

Copy link
Copy Markdown
Contributor Author

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

Re-evaluate the live exact current head under the repaired central coverage contract. Verify keyboard focus disclosure, visible outline, retained chart/table data ink, absence of peer dimming, conservative standards wording, APA 7 doctoring, and authoritative changelog evidence. Submit a formal current-head verdict only; do not mutate or merge.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"

echo "== Current pull request identity =="
git rev-parse HEAD
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,baseRefOid,reviewDecision,files,statusCheckRollup,reviews \
  --jq '{
    headRefOid,
    baseRefOid,
    reviewDecision,
    files: [.files[] | {path, additions, deletions}],
    checks: [.statusCheckRollup[] | {name, workflowName, status, conclusion, detailsUrl}],
    reviews: [.reviews[] | {author: .author.login, state, submittedAt, commit: .commit.oid}]
  }'

head="$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)"
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"
test "$(git rev-parse HEAD)" = "$head"

printf '\n== Exact pull request range ==\nbase=%s\nmerge_base=%s\nhead=%s\n' "$base" "$merge_base" "$head"
git log --oneline --reverse "$merge_base..$head"
git diff --name-status "$merge_base...$head"
git diff --no-ext-diff --unified=28 "$merge_base...$head" -- \
  python/fast_mlsirm/report.py \
  tests/test_report_focus_contrast.py \
  CHANGELOG.md \
  docs/changelog.d/diagnostics-report-focus-contrast.md \
  docs/doctoring/diagnostics-report-focus-contrast.md

printf '\n== Report module outline ==\n'
ast-grep outline python/fast_mlsirm/report.py --items all --view expanded

printf '\n== Relevant stylesheet and renderer context ==\n'
rg -n -C 14 \
  '\.skip-link|\.bar-chart|\.bar-row|tbody|opacity\s*:|outline\s*:|top\s*:|render_diagnostics_report' \
  python/fast_mlsirm/report.py tests/test_report_focus_contrast.py

printf '\n== Focus and contrast regression test ==\n'
cat -n tests/test_report_focus_contrast.py

printf '\n== Doctoring and changelog evidence ==\n'
for path in CHANGELOG.md docs/changelog.d/diagnostics-report-focus-contrast.md docs/doctoring/diagnostics-report-focus-contrast.md; do
  printf '\n----- %s -----\n' "$path"
  cat -n "$path"
done

printf '\n== Central-workflow configuration candidates ==\n'
fd -t f .github | rg -i '(^|/)(.*opencode.*|.*central.*|.*coverage.*|.*test.*|.*ci.*)\.(ya?ml|json)$' \
  | while IFS= read -r path; do
      printf '\n----- %s -----\n' "$path"
      rg -n -i -C 5 'coverage|docstring|pyo3|maturin|pytest|evidence|opencode|central' "$path" || true
    done

printf '\n== Workflow runs for the current head ==\n'
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[] | {id, name, path, event, status, conclusion, created_at, updated_at, html_url}'

printf '\n== Successful current-head central job metadata and evidence ==\n'
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" --jq -r \
  '.workflow_runs[]
   | select(.conclusion == "success")
   | select((.name + " " + .path | ascii_downcase) | test("opencode|central|coverage|test"))
   | .id' \
  | while IFS= read -r run_id; do
      printf '\n----- run %s -----\n' "$run_id"
      gh api "repos/$repo/actions/runs/$run_id" \
        --jq '{id, head_sha, name, path, status, conclusion, html_url}'
      gh api "repos/$repo/actions/runs/$run_id/jobs?per_page=100" \
        --jq '.jobs[] | {id, name, head_sha, status, conclusion, steps: [.steps[] | {name, status, conclusion}]}' || true
    done

printf '\n== Unresolved current review threads ==\n'
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="fast-mlsirm" -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
          comments(first: 20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 204180


🏁 Script executed:

#!/bin/bash
set -uo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
pr="550"
head="$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)"
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
merge_base="$(git merge-base "$base" "$head")"

echo "== Exact current head =="
printf 'checked_out=%s\napi_head=%s\nbase=%s\nmerge_base=%s\n' \
  "$(git rev-parse HEAD)" "$head" "$base" "$merge_base"
test "$(git rev-parse HEAD)" = "$head"

echo "== Changed files =="
git diff --name-status "$merge_base...$head"

echo "== Exact CSS rules =="
rg -n -A14 -B6 \
  '\.skip-link:focus|\.bar-chart:hover \.bar-row:not\(:hover\)|tbody:hover tr:not\(:hover\)|tbody tr:hover' \
  python/fast_mlsirm/report.py || true

echo "== All opacity declarations in report stylesheet =="
rg -n -C2 'opacity\s*:' python/fast_mlsirm/report.py || true

echo "== Regression test =="
cat -n tests/test_report_focus_contrast.py

echo "== Current successful workflow runs =="
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[]
    | select(.conclusion == "success")
    | {id, name, path, event, head_sha, conclusion, html_url}'

echo "== Current-head job steps with coverage or docstring names =="
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" --jq -r \
  '.workflow_runs[] | select(.conclusion == "success") | .id' \
  | while IFS= read -r run_id; do
      gh api "repos/$repo/actions/runs/$run_id/jobs?per_page=100" \
        --jq --arg run_id "$run_id" '
          .jobs[]
          | select(
              ((.name + " " + ([.steps[].name] | join(" "))) | ascii_downcase)
              | test("coverage|docstring|pytest|pyo3|maturin|central|opencode")
            )
          | {run_id: $run_id, id, name, head_sha, conclusion,
             steps: [.steps[] | {name, conclusion}]}
        ' || true
    done

echo "== Logs from successful jobs that name coverage or docstrings =="
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" --jq -r \
  '.workflow_runs[] | select(.conclusion == "success") | .id' \
  | while IFS= read -r run_id; do
      gh api "repos/$repo/actions/runs/$run_id/jobs?per_page=100" \
        --jq -r '
          .jobs[]
          | select(
              ((.name + " " + ([.steps[].name] | join(" "))) | ascii_downcase)
              | test("coverage|docstring")
            )
          | .id
        ' \
        | while IFS= read -r job_id; do
            echo "--- job=$job_id run=$run_id ---"
            gh api "repos/$repo/actions/jobs/$job_id/logs" \
              | rg -i -C3 'coverage|pytest|passed|failed|docstring|pydocstyle|ruff|maturin|pyo3|head_sha|2d0c6b' \
              | tail -n 180 || true
          done
    done

echo "== Unresolved current review threads =="
gh api graphql \
  -F owner="ContextualWisdomLab" -F name="fast-mlsirm" -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
          comments(first:20) {
            nodes { author { login } commit { oid } path line body }
          }
        }
      }
    }
  }
}' \
  --jq '[.data.repository.pullRequest.reviewThreads.nodes[]
    | select((.isResolved | not) and (.isOutdated | not))
    | {comments: [.comments.nodes[] | {author: .author.login, commit: .commit.oid, path, line, body}]}]'

Length of output: 10167


🏁 Script executed:

#!/bin/bash
set -uo pipefail

repo="ContextualWisdomLab/fast-mlsirm"
head="2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f"
ci_run="31077623565"
central_run="31077622677"

echo "== Exact workflow identities =="
for run_id in "$ci_run" "$central_run"; do
  gh api "repos/$repo/actions/runs/$run_id" \
    --jq '{id, head_sha, name, path, event, status, conclusion, html_url}'
done

echo "== Current workflow definitions =="
for path in .github/workflows/ci.yml .github/workflows/opencode-review.yml; do
  echo "--- $path ---"
  if test -f "$path"; then
    cat -n "$path"
  else
    echo "not present at checked-out head"
  fi
done

echo "== All CI job steps =="
gh api "repos/$repo/actions/runs/$ci_run/jobs?per_page=100" \
  --jq '.jobs[] | {
    id, name, head_sha, status, conclusion,
    steps: [.steps[] | {name, status, conclusion}]
  }'

echo "== CI log evidence for test, coverage, and docstrings =="
gh api "repos/$repo/actions/runs/$ci_run/jobs?per_page=100" --jq -r '.jobs[].id' \
  | while IFS= read -r job_id; do
      echo "--- CI job $job_id ---"
      gh api "repos/$repo/actions/jobs/$job_id/logs" \
        | rg -i -C3 \
          'pytest|passed|failed|coverage|cov(erage)? report|docstring|pydocstyle|ruff|maturin|pyo3|2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f' \
        | tail -n 240 || true
    done

echo "== All central-workflow job steps =="
gh api "repos/$repo/actions/runs/$central_run/jobs?per_page=100" \
  --jq '.jobs[] | {
    id, name, head_sha, status, conclusion,
    steps: [.steps[] | {name, status, conclusion}]
  }'

echo "== Central workflow log evidence =="
gh api "repos/$repo/actions/runs/$central_run/jobs?per_page=100" --jq -r '.jobs[].id' \
  | while IFS= read -r job_id; do
      echo "--- central job $job_id ---"
      gh api "repos/$repo/actions/jobs/$job_id/logs" \
        | rg -i -C3 \
          'pytest|passed|failed|coverage|cov(erage)? report|docstring|pydocstyle|ruff|maturin|pyo3|2d0c6b636d9f05c222ed8b62ebfd7bc5e5f|2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f' \
        | tail -n 240 || true
    done

Length of output: 20729


@seonghobae Formal current-head verdict: no actionable source, test, documentation, or changelog finding. Approval is not supported by the current central evidence.

I reviewed exact head 2d0c6b636d9f05c222ed8b62ebfd7bc5e1fa5e5f.

  • The combined .skip-link:focus, .skip-link:focus-visible rule contains top: 0; and outline: 3px solid var(--teal);.
  • The report retains the non-destructive active-row cue: tbody tr:hover { background: var(--hover-bg); }.
  • The chart and table peer-dimming selectors are absent.
  • tests/test_report_focus_contrast.py renders a realistic report through public render_diagnostics_report.
  • The test scopes its assertions to the exact focus-rule body.
  • The test requires both the reveal declaration and the outline declaration.
  • The doctoring uses conservative WCAG wording. It does not claim formal conformance.
  • The doctoring includes APA-style WCAG 2.2 and Selectors Level 4 references.
  • The changelog fragment is present and describes the bounded presentation change.
  • CI run 31077623565 succeeded on this exact head. Its Python job builds the PyO3 core and runs pytest. Rust, GPU, package, and fuzz jobs also succeeded.
  • No unresolved current review thread exists.

The repaired central coverage contract is not demonstrated by central run 31077622677. Its coverage-source-tree, coverage-evidence, and opencode-review jobs only run explanatory echo commands. They do not publish same-head test, coverage, or docstring validation.

I did not modify or merge the branch. A qualifying approval requires substantive current-head central coverage and docstring evidence.

⚠️ 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 address

Continue on the existing branch and resolve every exact-current-head review/check failure in place. Preserve the Rust-first GPU plus CPU-multithreaded, low-context-switching computation boundary; realistic RMSE/true-parameter recovery, multilevel/multiple-membership, and temporal-model tests; Python 3.14; 100% production statement/branch coverage and public docstrings; security/SBOM/provenance gates; APA 7 doctoring; and CHANGELOG/version discipline.

After the central .github requirements-lock and bounded PyO3 peer-evidence prerequisites reach protected main, rerun a fresh exact-head OpenCode/Noema review. No predecessor, source-only, skipped, cancelled, or status-only evidence transfers. Use NVIDIA_NIM_API_KEY where LLM evaluation is required and never COPILOT_GITHUB_TOKEN. Do not open another PR, create temporary writers, synthesize approval, or bypass protection; merge only with zero unresolved findings and a qualifying non-author exact-head approval.

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.

1 participant