Skip to content

fix(disksage): accept readiness schema v4 - #1239

Closed
seonghobae wants to merge 17 commits into
developfrom
fix/disksage-schema-v4-current
Closed

fix(disksage): accept readiness schema v4#1239
seonghobae wants to merge 17 commits into
developfrom
fix/disksage-schema-v4-current

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • accept both deployed DiskSage readiness handoff schema version 3 and WAL-consistent schema version 4;
  • reject unsupported versions such as version 5 without weakening path, status, artifact-integrity, bounded-output, or false-claim validation;
  • keep this focused three-file compatibility slice current with develop and require fresh exact-head coverage/review evidence.

Compatibility boundary

Schema v4 extends the producer contract with WAL-consistency evidence, while schema v3 remains deployed and valid. Naruon accepts exactly versions 3 and 4 and fails closed for every other protocol version.

Verification gate

The repository-local Application CI, Security Scan, Semgrep, Bandit, Dependency Review, and container checks succeeded on head 07b4bf267cf2f10bd4664652807ec981b7f180aa. The current OpenCode request-changes verdict reports missing central coverage evidence rather than a product-code defect. Merge remains prohibited until the branch is refreshed to live develop, the central coverage path produces same-head success, a qualifying independent approval is attached to that exact head, and every protection rule passes.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The verifier success protocol accepts schema versions 3 and 4. Tests cover both supported versions and reject version 5. Documentation defines the compatibility policy and validation rules.

Changes

Verifier protocol update

Layer / File(s) Summary
Schema version acceptance and validation
backend/scripts/disksage_copy_readiness_handoff.py, backend/tests/test_disksage_copy_readiness_handoff.py, docs/integrations/disksage-readiness-version-policy.md
The verifier accepts schema versions 3 and 4. Tests cover both valid versions and reject version 5. Documentation records the compatibility policy and fail-closed validation rules.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 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: accepting DiskSage readiness schema version 4.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/disksage-schema-v4-current

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

coderabbitai[bot]
coderabbitai Bot previously requested changes Aug 4, 2026

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@backend/scripts/disksage_copy_readiness_handoff.py`:
- Line 358: Update the schema validation in
backend/scripts/disksage_copy_readiness_handoff.py at lines 358-358 to accept
both schema versions 3 and 4, applying the appropriate validation for each.
Update the rejection test in
backend/tests/test_disksage_copy_readiness_handoff.py at lines 714-714 to assert
successful handling of version 3, and use a different unsupported version to
preserve rejection coverage.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7b1e8841-56c2-4094-b77a-57e54fdd6e57

📥 Commits

Reviewing files that changed from the base of the PR and between e91a0c2 and 8700eb1.

📒 Files selected for processing (2)
  • backend/scripts/disksage_copy_readiness_handoff.py
  • backend/tests/test_disksage_copy_readiness_handoff.py

Comment thread backend/scripts/disksage_copy_readiness_handoff.py Outdated
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for 695b4c362e33dd6f49bc27bcb03ae097efb76f4c:

  • Review decision is CHANGES_REQUESTED; address requested changes before merge.

@seonghobae
seonghobae marked this pull request as draft August 4, 2026 08:22
@seonghobae
seonghobae marked this pull request as ready for review August 4, 2026 08:26
@seonghobae
seonghobae marked this pull request as draft August 4, 2026 09:03
@seonghobae
seonghobae marked this pull request as ready for review August 4, 2026 09:03

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review please independently review the final exact head once the compatibility materializer completes. The required contract is explicit: accept deployed DiskSage schema v3 and WAL-consistent schema v4, reject unsupported versions, retain all bounded transport and fail-closed validations.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review the exact current head 702623e80a4eebcef29dbd576c88cc0081783cde after the schema-3 compatibility repair and documentation update. All repository-local required workflows are green on this head. Submit APPROVE only if versions 3 and 4 are both accepted with unchanged fail-closed validation and no blocking finding remains.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 702623e80a4eebcef29dbd576c88cc0081783cde. The prior schema-compatibility finding is resolved: versions 3 and 4 are accepted, version 5 remains rejected, and the existing bounded-output, path, artifact-integrity, and false-claim checks remain fail-closed. All direct current-head workflows are green. Submit approval only if no blocking finding remains.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected='702623e80a4eebcef29dbd576c88cc0081783cde'
actual="$(git rev-parse HEAD)"
printf 'HEAD=%s\nEXPECTED=%s\n' "$actual" "$expected"
git status --short
git show --no-ext-diff --format=fuller --stat "$expected"
base="$(git merge-base "$expected" origin/develop 2>/dev/null || git merge-base "$expected" develop)"
printf 'MERGE_BASE=%s\n' "$base"
git diff --no-ext-diff --unified=80 "$base" "$expected" -- \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py

printf '\n=== OUTLINE: verifier ===\n'
ast-grep outline backend/scripts/disksage_copy_readiness_handoff.py --items all
printf '\n=== OUTLINE: tests ===\n'
ast-grep outline backend/tests/test_disksage_copy_readiness_handoff.py --items all

printf '\n=== VERSION AND VALIDATION REFERENCES ===\n'
rg -n -C 5 -e 'schema_version|schema.*version|version.*schema|artifact|status|path|readiness|fail' \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py

printf '\n=== PR AND CHECK STATUS ===\n'
gh pr view 1239 --repo ContextualWisdomLab/naruon \
  --json number,headRefOid,baseRefName,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 129874


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/naruon'
head='702623e80a4eebcef29dbd576c88cc0081783cde'

printf '%s\n' '=== VERSION POLICY DOCUMENT ==='
git show "${head}:docs/integrations/disksage-readiness-version-policy.md"

printf '%s\n' '=== ALL PR FILES AGAINST DEVELOP ==='
base="$(git merge-base "$head" origin/develop 2>/dev/null || git merge-base "$head" develop)"
git diff --name-status "$base" "$head"

printf '%s\n' '=== FAILED STRIX JOB ==='
gh run view 30896676326 --repo "$repo" --job 91951188096 --log-failed || true

printf '%s\n' '=== FAILED METADATA-ONLY GATE ==='
gh run view 30896674337 --repo "$repo" --job 91953742531 --log-failed || true

printf '%s\n' '=== BRANCH PROTECTION ==='
gh api "repos/${repo}/branches/develop/protection/required_status_checks" 2>&1 || true

printf '%s\n' '=== REPOSITORY RULESETS ==='
gh api "repos/${repo}/rulesets?includes_parents=true" 2>&1 || true

Length of output: 4464


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/naruon'
head='702623e80a4eebcef29dbd576c88cc0081783cde'

printf '%s\n' '=== ACTIVE RULESET DETAILS ==='
for ruleset_id in 18156473 17214772 15586698; do
  printf '\n--- ruleset %s ---\n' "$ruleset_id"
  gh api "repos/${repo}/rulesets/${ruleset_id}" || true
done

printf '%s\n' '=== FAILED CHECK RUNS ON EXACT HEAD ==='
gh api \
  "repos/${repo}/commits/${head}/check-runs?per_page=100" \
  --jq '.check_runs[]
    | select(.conclusion == "failure")
    | {id, name, status, conclusion, details_url, started_at, completed_at, output}' || true

printf '%s\n' '=== CHECK-RUN ANNOTATIONS ==='
for check_id in $(
  gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" \
    --jq '.check_runs[] | select(.conclusion == "failure") | .id' 2>/dev/null || true
); do
  printf '\n--- check run %s ---\n' "$check_id"
  gh api "repos/${repo}/check-runs/${check_id}/annotations?per_page=100" || true
done

Length of output: 7153


@seonghobae I reviewed exact head 702623e80a4eebcef29dbd576c88cc0081783cde.

The implementation accepts exactly schema versions 3 and 4. The tests cover acceptance of both versions and rejection of version 5. The existing fail-closed validation remains unchanged. The new compatibility document matches the code.

I found no blocking code defect.

I cannot approve this PR yet. The required strix workflow failed on this head. The metadata-only gate evaluation check confirms this failure. The PR is also behind develop, and the repository requires strict status checks. Update the branch, resolve the Strix failure, and rerun the required checks on the new head.

✅ Action performed

Review finished.

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 Please review exact head 702623e80a4eebcef29dbd576c88cc0081783cde. Verify schema versions 3 and 4 are both accepted, unsupported versions fail closed, and the path/status/integrity/bounded-output/false-claim invariants remain unchanged. All repository-local workflows are green. Submit APPROVE only if no blocking finding remains.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review Please independently review exact current head 702623e80a4eebcef29dbd576c88cc0081783cde. All direct checks are green and the only prior review thread is resolved. Verify additive schema-version compatibility, unsupported-version rejection, bounded input/output, artifact integrity, path privacy, and no false cloud-write or source-eviction claims. Submit APPROVE only if no blocker remains.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please review exact current head 07b4bf267cf2f10bd4664652807ec981b7f180aa. Verify the schema-v3/v4 compatibility boundary, fail-closed rejection of unsupported versions, current-head checks, and unresolved-thread state. Do not reuse predecessor-head evidence.

Copy link
Copy Markdown
Contributor Author

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

Please review exact current head 07b4bf267cf2f10bd4664652807ec981b7f180aa against current develop. All six repository workflows and CodeRabbit status report success; the prior schema-compatibility finding is resolved and outdated. Verify exact acceptance of DiskSage schemas 3 and 4, fail-closed rejection of unsupported versions, unchanged artifact/path/false-claim validation, focused tests and compatibility doctoring, and branch-protection requirements. Submit a formal APPROVE only if no blocker remains.

@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'
head='07b4bf267cf2f10bd4664652807ec981b7f180aa'

printf '%s\n' '=== EXACT HEAD ==='
actual="$(git rev-parse HEAD)"
printf 'checked_out=%s\nrequested=%s\n' "$actual" "$head"
if [ "$actual" != "$head" ]; then
  printf '%s\n' 'ERROR: checked-out revision does not match the requested revision.'
  exit 0
fi
git status --short

printf '%s\n' '=== DIFF AGAINST CURRENT DEVELOP ==='
git fetch --quiet origin develop
base="$(git merge-base "$head" origin/develop)"
printf 'merge_base=%s\norigin_develop=%s\n' "$base" "$(git rev-parse origin/develop)"
git diff --no-ext-diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=100 "$base" "$head" -- \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== RELEVANT FILE OUTLINES ==='
ast-grep outline backend/scripts/disksage_copy_readiness_handoff.py --items all
ast-grep outline backend/tests/test_disksage_copy_readiness_handoff.py --items all

printf '%s\n' '=== VALIDATION, TEST, AND POLICY CONTEXT ==='
rg -n -C 14 \
  -e 'schema_version|SUPPORTED|version|duplicate|bounded|stdout|stderr|artifact|integrity|status|path|false.claim|cloud|evict|digest|verifier|allowlist' \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== PR, EXACT-HEAD CHECKS, AND THREADS ==='
gh pr view 1239 --repo "$repo" \
  --json headRefOid,baseRefName,mergeStateStatus,reviewDecision,statusCheckRollup

gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[] | {name,status,conclusion,details_url,started_at,completed_at}'

gh api graphql -F owner='ContextualWisdomLab' -F name='naruon' -F number=1239 -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          comments(first: 1) { nodes { author { login } body } }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[]
  | select(.isResolved == false)
  | {author: .comments.nodes[0].author.login, body: .comments.nodes[0].body}'

printf '%s\n' '=== PROTECTION AND RULESETS ==='
gh api "repos/${repo}/branches/develop/protection/required_status_checks" 2>&1 || true
gh api "repos/${repo}/rulesets?includes_parents=true" \
  --jq '.[] | {id,name,enforcement,target,conditions,rules}' 2>&1 || true

Length of output: 196234


@seonghobae I reviewed exact commit 07b4bf267cf2f10bd4664652807ec981b7f180aa against current develop.

I found no blocking code defect.

_decode_protocol accepts only integer schema versions 3 and 4. The focused regression test accepts both versions. The protocol rejection test rejects version 5.

The change preserves fail-closed validation for bounded stdout and stderr, duplicate JSON members, exact field allowlisting, verifier provenance, path handling, provider and status allowlists, artifact fingerprints, and false cloud-write or source-eviction claims.

The scope contains the expected three files. The compatibility policy matches the implementation.

The current successful strix run and the other current-head checks succeeded. GitHub retains an earlier failed strix run, but a later strix run on the same commit succeeded. The branch-protection endpoint was unavailable to this integration, but the visible active rulesets and current check state show no unmet check requirement.

I did not execute repository code because the inspection sandbox does not run repository programs.

APPROVE.

[approve]

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head dispatch for 07b4bf267cf2f10bd4664652807ec981b7f180aa; do not update branches or merge. Repository-local Application CI, container build, Security Scan, Bandit, Semgrep, and Dependency Review succeeded. Re-evaluate exact-head coverage/docstrings and the fail-closed DiskSage schema v3/v4 compatibility boundary.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head 07b4bf267cf2f10bd4664652807ec981b7f180aa. Confirm that only readiness schema versions 3 and 4 are accepted and that version expansion cannot weaken path, output-bound, integrity, or false-claim validation.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 07b4bf267cf2f10bd4664652807ec981b7f180aa. The earlier actionable compatibility finding is resolved; verify the final three-file scope and fail-closed schema handling.

@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'
head='07b4bf267cf2f10bd4664652807ec981b7f180aa'

printf '%s\n' '=== EXACT COMMIT ==='
actual="$(git rev-parse HEAD)"
printf 'checked_out=%s\nrequested=%s\n' "$actual" "$head"
if [ "$actual" != "$head" ]; then
  printf '%s\n' 'ERROR: checked-out revision does not match the requested revision.'
  exit 0
fi
git status --short

printf '%s\n' '=== DIFF AGAINST DEVELOP ==='
base="$(git merge-base "$head" origin/develop 2>/dev/null || git merge-base "$head" develop)"
printf 'merge_base=%s\n' "$base"
git diff --no-ext-diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=100 "$base" "$head" -- \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== FILE STRUCTURE ==='
ast-grep outline backend/scripts/disksage_copy_readiness_handoff.py --items all
ast-grep outline backend/tests/test_disksage_copy_readiness_handoff.py --items all

printf '%s\n' '=== VALIDATION, TEST, AND POLICY CONTEXT ==='
rg -n -C 16 \
  -e 'schema_version|SUPPORTED|version|duplicate|bounded|stdout|stderr|artifact|integrity|status|path|false.claim|cloud|evict|digest|verifier|allowlist' \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== PR, CHECKS, AND REVIEW THREADS ==='
gh pr view 1239 --repo "$repo" \
  --json headRefOid,baseRefName,mergeStateStatus,reviewDecision,statusCheckRollup

gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[] | {name,status,conclusion,details_url,started_at,completed_at}'

gh api graphql -F owner='ContextualWisdomLab' -F name='naruon' -F number=1239 -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          comments(first: 1) { nodes { author { login } body } }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[]
  | select(.isResolved == false)
  | {author: .comments.nodes[0].author.login, body: .comments.nodes[0].body}'

Length of output: 195569


@seonghobae I reviewed exact commit 07b4bf267cf2f10bd4664652807ec981b7f180aa.

I found no blocking code defect.

The final scope contains the expected three files.

_decode_protocol accepts only integer schema versions 3 and 4. It rejects version 5. The focused tests cover both accepted versions and the version-5 rejection path.

The change retains fail-closed validation for bounded stdout and stderr, duplicate JSON members, exact field allowlisting, verifier provenance, absolute path handling, provider and readiness-state allowlists, artifact fingerprint format, and false safety-sensitive claims.

The compatibility policy matches the implementation.

The latest visible checks on this commit succeeded. This includes backend (Python 3.14), strix, and metadata-only gate evaluation. An earlier strix run failed, but a later run on the same commit succeeded.

APPROVE.

[approve]

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 07b4bf267cf2f10bd4664652807ec981b7f180aa. Verify schema versions 3 and 4 are both accepted with version-appropriate validation, version 5 remains rejected, all existing path/status/integrity/bounded-output/false-claim checks stay fail-closed, the compatibility documentation matches implementation, and all six current-head workflows are green. Submit approval only if no blocking finding remains.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please independently review exact current head 07b4bf267cf2f10bd4664652807ec981b7f180aa. Confirm additive schema v3/v4 compatibility, unsupported-version rejection, unchanged fail-closed readiness boundaries, current-head tests/checks, and absence of unrelated drift. 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 07b4bf267cf2f10bd4664652807ec981b7f180aa. Verify deployed schema v3 and WAL-consistent v4 interoperability, explicit rejection of other versions, preserved offline Rust-verifier trust boundaries, current-head check evidence, and zero actionable review threads. Submit APPROVE only if no finding remains.

@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'
head='07b4bf267cf2f10bd4664652807ec981b7f180aa'

printf '%s\n' '=== EXACT COMMIT ==='
actual="$(git rev-parse HEAD)"
printf 'checked_out=%s\nrequested=%s\n' "$actual" "$head"
if [ "$actual" != "$head" ]; then
  printf '%s\n' 'ERROR: checked-out revision does not match the requested revision.'
  exit 0
fi
git status --short

printf '%s\n' '=== DIFF SCOPE AGAINST CURRENT DEVELOP ==='
git fetch --quiet origin develop
base="$(git merge-base "$head" origin/develop)"
printf 'merge_base=%s\norigin_develop=%s\n' "$base" "$(git rev-parse origin/develop)"
git diff --no-ext-diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=120 "$base" "$head" -- \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== SOURCE MAPS ==='
ast-grep outline backend/scripts/disksage_copy_readiness_handoff.py --items all
ast-grep outline backend/tests/test_disksage_copy_readiness_handoff.py --items all

printf '%s\n' '=== VALIDATOR, TEST, AND POLICY CONTEXT ==='
rg -n -C 18 \
  -e 'schema_version|SUPPORTED|version|duplicate|bounded|stdout|stderr|artifact|integrity|status|path|false.claim|cloud|evict|digest|verifier|allowlist' \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== PR AND EXACT-HEAD CHECK STATE ==='
gh pr view 1239 --repo "$repo" \
  --json headRefOid,baseRefName,mergeStateStatus,reviewDecision,statusCheckRollup

gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[] | {name,status,conclusion,details_url,started_at,completed_at}'

printf '%s\n' '=== UNRESOLVED REVIEW THREADS ==='
gh api graphql -F owner='ContextualWisdomLab' -F name='naruon' -F number=1239 -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          comments(first: 1) { nodes { author { login } body } }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[]
  | select(.isResolved == false)
  | {author: .comments.nodes[0].author.login, body: .comments.nodes[0].body}'

Length of output: 198958


@seonghobae I reviewed exact commit 07b4bf267cf2f10bd4664652807ec981b7f180aa against current develop.

I found no blocking code defect.

_decode_protocol accepts only integer schema versions 3 and 4. The focused regression test covers both accepted versions. The protocol rejection test covers schema version 5.

The change retains fail-closed validation for bounded stdout and stderr, duplicate JSON member names, exact field allowlisting, verifier provenance, path handling, provider and readiness-state allowlists, artifact fingerprint format, and false cloud-write and source-eviction claims.

The compatibility document matches the implementation. The final scope contains the expected three files.

The current successful workflow executions include Application CI, Docker image validation, Bandit, Semgrep, Security Scan, Dependency Review, and Strix. An earlier strix execution failed, but a later strix execution on the same commit succeeded. No unresolved review threads remain.

APPROVE.

[approve]

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head dispatch for 07b4bf267cf2f10bd4664652807ec981b7f180aa; do not update branches or merge. Repository-local Application CI, Security Scan, Bandit, Semgrep, Dependency Review, Docker validation, and CodeRabbit status are successful. Verify schema-v3/v4 compatibility, unsupported-version rejection, fail-closed verifier invariants, focused coverage, and documentation on this exact head.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head 07b4bf267cf2f10bd4664652807ec981b7f180aa, focusing on the additive DiskSage schema compatibility boundary, fail-closed validation, and whether v3/v4 acceptance creates any false readiness claim.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-current-head dispatch. Do not update branches or merge. Reconfirm DiskSage readiness schema v3/v4 compatibility, unsupported-version fail-closed behavior, focused regression coverage, and current-base scope.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review the exact current head for protocol compatibility, bounded validation, unsupported-version rejection, and absence of unrelated changes.

@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 07b4bf267cf2f10bd4664652807ec981b7f180aa.

  • Head SHA: 07b4bf267cf2f10bd4664652807ec981b7f180aa

  • Workflow run: 31043844667

  • 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["Backend (2 files)"]
  S1 --> I1["API and service runtime"]
  I1 --> R1["Review risk: Backend (2 files)"]
  R1 --> V1["backend tests"]
  Evidence --> S2["Docs: disksage-readiness-version-policy.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: disksage-readiness-version-policy.md"]
  R2 --> V2["docs review"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 695b4c362e33dd6f49bc27bcb03ae097efb76f4c
  • Workflow run: 31193462495
  • Workflow attempt: 1
  • 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 695b4c362e33dd6f49bc27bcb03ae097efb76f4c.

  • Head SHA: 695b4c362e33dd6f49bc27bcb03ae097efb76f4c

  • Workflow run: 31193462495

  • 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["Backend (2 files)"]
  S1 --> I1["API and service runtime"]
  I1 --> R1["Review risk: Backend (2 files)"]
  R1 --> V1["backend tests"]
  Evidence --> S2["Docs: disksage-readiness-version-policy.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: disksage-readiness-version-policy.md"]
  R2 --> V2["docs review"]
Loading

Copy link
Copy Markdown
Contributor Author

Branch refreshed onto live develop commit f9948985272b99f2db8e2be838d7921545df2d88 without changing the three-file product scope. Exact current head is 2ee2ce8a44250c44adc49e4535bc9a64699a15a5. All predecessor-head review and check results are stale; rerun current-head Application CI, security, container, OpenCode, Noema, and independent review before merge.

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

  • Head SHA: 2ee2ce8a44250c44adc49e4535bc9a64699a15a5

  • Workflow run: 31080399240

  • 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["Backend (2 files)"]
  S1 --> I1["API and service runtime"]
  I1 --> R1["Review risk: Backend (2 files)"]
  R1 --> V1["backend tests"]
  Evidence --> S2["Docs: disksage-readiness-version-policy.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: disksage-readiness-version-policy.md"]
  R2 --> V2["docs review"]
Loading

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Review-only exact-head request for 2ee2ce8a44250c44adc49e4535bc9a64699a15a5; do not update the branch or merge. The branch is zero commits behind live develop, changes only three DiskSage compatibility files, and all six repository-local workflows are successful. Re-evaluate central coverage after the trusted dependency materialization fixes.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review

Independently review exact head 2ee2ce8a44250c44adc49e4535bc9a64699a15a5, focusing on the additive schema-v3/v4 compatibility boundary and fail-closed rejection of every other version. Do not mutate or merge.

Copy link
Copy Markdown
Contributor Author

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

Review exact current head only. Verify DiskSage readiness schemas 3 and 4 are accepted, every unsupported version fails closed, and path/status/artifact-integrity/bounded-output/false-claim validation plus focused/full tests remain intact.

@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/naruon'

printf '%s\n' '=== PR CURRENT HEAD ==='
pr_json="$(gh pr view 1239 --repo "$repo" \
  --json headRefOid,baseRefName,mergeStateStatus,reviewDecision,statusCheckRollup)"
printf '%s\n' "$pr_json"
head="$(printf '%s\n' "$pr_json" | jq -r '.headRefOid')"

printf '%s\n' '=== CHECKED-OUT REVISION ==='
actual="$(git rev-parse HEAD)"
printf 'checked_out=%s\npr_current_head=%s\n' "$actual" "$head"
if [ "$actual" != "$head" ]; then
  printf '%s\n' 'ERROR: checked-out revision does not equal the PR current head.'
  exit 0
fi
git status --short

printf '%s\n' '=== DIFF SCOPE AGAINST CURRENT DEVELOP ==='
git fetch --quiet origin develop
base="$(git merge-base "$head" origin/develop)"
printf 'merge_base=%s\norigin_develop=%s\n' "$base" "$(git rev-parse origin/develop)"
git diff --no-ext-diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=100 "$base" "$head" -- \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== SOURCE AND TEST MAP ==='
ast-grep outline backend/scripts/disksage_copy_readiness_handoff.py --items all
ast-grep outline backend/tests/test_disksage_copy_readiness_handoff.py --items all

printf '%s\n' '=== VERSION, VALIDATION, AND TEST EVIDENCE ==='
rg -n -C 18 \
  -e 'schema_version|SUPPORTED|version|duplicate|bounded|stdout|stderr|artifact|integrity|status|path|false.claim|cloud|evict|digest|verifier|allowlist' \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== TEST CONFIGURATION REFERENCES ==='
rg -n -C 4 \
  -e 'test_disksage_copy_readiness_handoff|pytest|disksage_copy_readiness_handoff' \
  README.md pyproject.toml pytest.ini tox.ini setup.cfg Makefile .github 2>/dev/null || true

printf '%s\n' '=== CURRENT-HEAD NON-SUCCESS CHECKS ==='
gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[]
    | select(.status != "completed" or (.conclusion != "success" and .conclusion != "neutral" and .conclusion != "skipped"))
    | {name,status,conclusion,details_url,started_at,completed_at}'

printf '%s\n' '=== UNRESOLVED REVIEW THREADS ==='
gh api graphql -F owner='ContextualWisdomLab' -F name='naruon' -F number=1239 -f query='
query($owner: String!, $name: String!, $number: Int!) {
  repository(owner: $owner, name: $name) {
    pullRequest(number: $number) {
      reviewThreads(first: 100) {
        nodes {
          isResolved
          comments(first: 1) { nodes { author { login } body } }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[]
  | select(.isResolved == false)
  | {author: .comments.nodes[0].author.login, body: .comments.nodes[0].body}'

Length of output: 169524


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/naruon'
head='2ee2ce8a44250c44adc49e4535bc9a64699a15a5'

printf '%s\n' '=== FAILED METADATA GATE DETAILS ==='
gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[]
    | select(.name == "metadata-only gate evaluation" and .conclusion == "failure")
    | {id,name,conclusion,details_url,output}'

check_id="$(
  gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
    --jq -r '.check_runs[]
      | select(.name == "metadata-only gate evaluation" and .conclusion == "failure")
      | .id' | head -n 1
)"
if [ -n "$check_id" ]; then
  printf '%s\n' '=== FAILED METADATA GATE ANNOTATIONS ==='
  gh api "repos/${repo}/check-runs/${check_id}/annotations?per_page=100" --paginate || true
fi

printf '%s\n' '=== FAILED METADATA GATE LOG ==='
gh run view 31078062775 --repo "$repo" --job 92540448960 --log-failed 2>&1 || true

printf '%s\n' '=== DEVELOP BRANCH PROTECTION ==='
gh api "repos/${repo}/branches/develop/protection/required_status_checks" 2>&1 || true

printf '%s\n' '=== APPLICABLE REPOSITORY RULESETS ==='
gh api "repos/${repo}/rulesets?includes_parents=true" \
  --jq '.[] | {id,name,enforcement,target,conditions,rules}' 2>&1 || true

printf '%s\n' '=== PULL-REQUEST REVIEW REQUIREMENTS ==='
gh pr view 1239 --repo "$repo" \
  --json reviewDecision,mergeStateStatus,reviews,latestReviews

Length of output: 2249


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/naruon'

printf '%s\n' '=== PULL-REQUEST REVIEW STATE ==='
gh pr view 1239 --repo "$repo" \
  --json headRefOid,reviewDecision,mergeStateStatus,reviews,latestReviews

printf '%s\n' '=== DEVELOP BRANCH PROTECTION ==='
gh api "repos/${repo}/branches/develop/protection" 2>&1 || true

printf '%s\n' '=== REPOSITORY RULESETS ==='
gh api "repos/${repo}/rulesets?includes_parents=true" 2>&1 || true

Length of output: 12878


@seonghobae I reviewed exact current head 2ee2ce8a44250c44adc49e4535bc9a64699a15a5 against current develop.

I found no blocking code defect.

_decode_protocol accepts only integer schema versions 3 and 4. It rejects unsupported versions, including version 5.

The focused tests cover versions 3 and 4 as accepted. They cover version 5 as rejected.

The change preserves the existing fail-closed controls for:

  • Exact success-field allowlisting.
  • Duplicate JSON member rejection.
  • Bounded stdout and stderr.
  • Digest-bound verifier provenance.
  • Absolute and trusted verifier paths.
  • Provider and readiness-state allowlists.
  • SHA-256 fingerprint format.
  • False local-path, cloud-write, and source-eviction claims.

The PR scope contains the expected three files. The compatibility document matches the implementation.

Application CI succeeded on this head. Its workflow runs the backend pytest suite. I did not execute repository code in the inspection sandbox.

I cannot approve this PR yet. The current opencode-agent review requests changes because coverage-evidence failed or did not publish the required coverage and docstring evidence. This request causes the failed metadata-only gate evaluation check and the CHANGES_REQUESTED review state. Rerun and pass the current-head coverage-evidence job, then resolve the active change request.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

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

Please review the exact live head only. Verify DiskSage readiness handoff accepts exactly schema versions 3 and 4, rejects all other versions without weakening status/path/artifact-integrity/bounded-output/false-claim validation, and keeps the patch limited to the focused producer-consumer compatibility boundary. Require current exact-head application, security, central review, coverage, and zero-thread evidence. 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_number='1239'

printf '%s\n' '=== CURRENT PR METADATA ==='
pr_json="$(gh pr view "$pr_number" --repo "$repo" \
  --json headRefOid,baseRefName,mergeStateStatus,reviewDecision,statusCheckRollup)"
printf '%s\n' "$pr_json"
head="$(printf '%s\n' "$pr_json" | jq -r '.headRefOid')"

printf '%s\n' '=== CHECKED-OUT REVISION ==='
actual="$(git rev-parse HEAD)"
printf 'checked_out=%s\ncurrent_pr_head=%s\n' "$actual" "$head"
if [ "$actual" != "$head" ]; then
  printf '%s\n' 'ERROR: checked-out revision does not equal the current PR head.'
  exit 0
fi
git status --short

printf '%s\n' '=== SCOPE AGAINST CURRENT DEVELOP ==='
git fetch --quiet origin develop
base="$(git merge-base "$head" origin/develop)"
printf 'merge_base=%s\norigin_develop=%s\n' "$base" "$(git rev-parse origin/develop)"
git diff --no-ext-diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=100 "$base" "$head" -- \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== SOURCE MAP ==='
ast-grep outline backend/scripts/disksage_copy_readiness_handoff.py --items all
ast-grep outline backend/tests/test_disksage_copy_readiness_handoff.py --items all

printf '%s\n' '=== PROTOCOL, VALIDATION, TEST, AND POLICY EVIDENCE ==='
rg -n -C 18 \
  -e 'schema_version|SUPPORTED|version|duplicate|bounded|stdout|stderr|artifact|integrity|status|path|false.claim|cloud|evict|digest|verifier|allowlist|coverage|docstring' \
  backend/scripts/disksage_copy_readiness_handoff.py \
  backend/tests/test_disksage_copy_readiness_handoff.py \
  docs/integrations/disksage-readiness-version-policy.md

printf '%s\n' '=== CURRENT-HEAD CHECKS ==='
gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[] | {name,status,conclusion,details_url,started_at,completed_at}'

printf '%s\n' '=== NON-SUCCESS CURRENT-HEAD CHECKS ==='
gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" --paginate \
  --jq '.check_runs[]
    | select(.status != "completed" or (.conclusion != "success" and .conclusion != "neutral" and .conclusion != "skipped"))
    | {name,status,conclusion,details_url,output}'

printf '%s\n' '=== CURRENT REVIEWS AND UNRESOLVED THREADS ==='
gh pr view "$pr_number" --repo "$repo" --json reviews,latestReviews,reviewDecision,mergeStateStatus
gh api graphql -F owner='ContextualWisdomLab' -F name='naruon' -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
          comments(first: 1) { nodes { author { login } body path line } }
        }
      }
    }
  }
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[]
  | select(.isResolved == false)
  | {author: .comments.nodes[0].author.login, path: .comments.nodes[0].path, line: .comments.nodes[0].line, body: .comments.nodes[0].body}'

Length of output: 189911


@seonghobae I reviewed current head 2ee2ce8a44250c44adc49e4535bc9a64699a15a5 against current develop.

I found no blocking code defect.

_decode_protocol accepts only integer schema versions 3 and 4. It rejects every other version, including version 5.

The focused tests accept versions 3 and 4. The rejection test covers version 5.

The change preserves the fail-closed controls for:

  • Exact success-field allowlisting.
  • Duplicate JSON member rejection.
  • Bounded stdout and stderr.
  • Digest-bound verifier provenance.
  • Absolute and trusted verifier paths.
  • Provider and readiness-state allowlists.
  • SHA-256 fingerprint format.
  • False local-path, raw-metadata, cloud-write, and source-eviction claims.

The diff contains only the requested three files. The compatibility document matches the implementation.

Application CI, security checks, coverage-evidence, opencode-review, noema-review, and strix report success on this head. The unresolved-thread query returned no open threads.

I cannot approve this PR yet. The current opencode-agent review is CHANGES_REQUESTED. The metadata-only gate evaluation check fails because of that review state. The OpenCode review also reports missing coverage evidence, which conflicts with the visible successful coverage-evidence check. Resolve that current-head governance conflict, remove the change request, and rerun the metadata gate before approval.

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 695b4c362e33dd6f49bc27bcb03ae097efb76f4c.

  • Head SHA: 695b4c362e33dd6f49bc27bcb03ae097efb76f4c

  • Workflow run: 31193462495

  • 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["Backend (2 files)"]
  S1 --> I1["API and service runtime"]
  I1 --> R1["Review risk: Backend (2 files)"]
  R1 --> V1["backend tests"]
  Evidence --> S2["Docs: disksage-readiness-version-policy.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: disksage-readiness-version-policy.md"]
  R2 --> V2["docs review"]
Loading

Copy link
Copy Markdown
Contributor Author

Superseded by protected develop@2af331e85cbbb393cfb41731cdb46ec1f7341fc1. Current production already accepts readiness schema versions 3, 4, and 5 through SUPPORTED_READINESS_SCHEMA_VERSIONS = frozenset({3, 4, 5}), with the default v3 fixture plus explicit v4/v5 acceptance coverage. This PR's remaining unique policy text says version 5 must be rejected, which now contradicts shipped behavior, so carrying it forward would regress compatibility rather than preserve value.

@seonghobae seonghobae closed this Aug 14, 2026
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