Skip to content

⚡ Bolt: I/O 성능 개선 및 TOCTOU 방지를 위한 Files.exists() 제거 - #222

Closed
seonghobae wants to merge 8 commits into
mainfrom
bolt/optimize-files-exists-14092525100095450021
Closed

⚡ Bolt: I/O 성능 개선 및 TOCTOU 방지를 위한 Files.exists() 제거#222
seonghobae wants to merge 8 commits into
mainfrom
bolt/optimize-files-exists-14092525100095450021

Conversation

@seonghobae

@seonghobae seonghobae commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

What

Remove pre-read Files.exists() checks from FileSystemArtifactStore, ArtifactLinkLedger, and KpiSnapshotLedger. Read directly and treat only java.nio.file.NoSuchFileException as the established missing-file result.

Why

A separate existence check adds a filesystem metadata lookup and creates a time-of-check/time-of-use interval. Direct reads preserve the missing-file contract while keeping every other I/O failure fail-closed through the existing exception path.

Validation contract

  • Missing artifact files return Optional.empty().
  • Missing ledger files retain the existing empty-ledger behavior.
  • Non-missing IOException and UncheckedIOException failures remain errors and are not swallowed.
  • Existing production line and branch coverage gates remain enforced.

Exact-head evidence

Exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f is based directly on protected main at f3cc09a9838f0f88c81a2ceae22138fab80a2edb. Exact-head CI, Security Scan, SAST Semgrep, fuzzing, and CodeRabbit status all completed successfully. There are no unresolved inline review threads.

Merge gate

Do not merge until fresh exact-head independent review and an approving reviewer with repository write access are present, and every branch-protection, security, coverage, and repository-policy gate remains satisfied.

파일 읽기 작업(Files.readAllBytes, Files.lines 등) 이전에 파일이 존재하는지 확인하는 Files.exists() 호출을 제거하고,
java.nio.file.NoSuchFileException 예외를 통해 누락된 파일을 처리하도록 수정했습니다.
이를 통해 디스크 I/O를 줄이고 Time-Of-Check to Time-Of-Use 경쟁 상태(Race Condition)를 방지할 수 있습니다.
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

파일 존재 여부를 미리 확인하는 로직을 제거했습니다. 파일 읽기 중 발생한 NoSuchFileException은 정상적인 파일 부재로 처리합니다. 그 외 입출력 오류 처리는 유지합니다.

Changes

파일 부재 처리

Layer / File(s) Summary
직접 읽기와 파일 부재 처리
.jules/bolt.md, src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java, src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java, src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java
Ledger 로더와 getPdf가 사전 존재 확인 없이 파일을 읽습니다. 파일이 없으면 각각 기존의 빈 결과 또는 Optional.empty()를 반환합니다. 기타 입출력 오류는 기존처럼 IllegalStateException으로 처리합니다. 파일 읽기 지침에 동일한 방식을 추가합니다.

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

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 제목은 Files.exists() 제거를 통한 I/O 성능 개선과 TOCTOU 방지라는 변경의 핵심을 정확하고 간결하게 설명합니다.
✨ 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 bolt/optimize-files-exists-14092525100095450021

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

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
✅ 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.

seonghobae and others added 2 commits August 4, 2026 22:30
파일 읽기 작업(Files.readAllBytes, Files.lines 등) 이전에 파일이 존재하는지 확인하는 Files.exists() 호출을 제거하고,
java.nio.file.NoSuchFileException 예외를 통해 누락된 파일을 처리하도록 수정했습니다.
이를 통해 디스크 I/O를 줄이고 Time-Of-Check to Time-Of-Use 경쟁 상태(Race Condition)를 방지할 수 있습니다.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please independently review exact current head 6fdf57c085b06626e2d40ef4a32f34a3d9da4997. CodeRabbit reported no actionable findings, and exact-head CI, Security Scan, SAST Semgrep, and fuzz all conclude successfully. Verify missing-file semantics, non-NoSuchFileException failure propagation, coverage, and policy before approval.

seonghobae and others added 2 commits August 4, 2026 23:20
파일 읽기 작업(Files.readAllBytes, Files.lines 등) 이전에 파일이 존재하는지 확인하는 Files.exists() 호출을 제거하고,
java.nio.file.NoSuchFileException 예외를 통해 누락된 파일을 처리하도록 수정했습니다.
이를 통해 디스크 I/O를 줄이고 Time-Of-Check to Time-Of-Use 경쟁 상태(Race Condition)를 방지할 수 있습니다.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please independently review exact current head 3b7e4f9406acb5f17823acae9f03c1f34c53bfc7. Exact-head CI, Security Scan, SAST Semgrep, and fuzz are successful, and there are no unresolved review threads. Verify that only NoSuchFileException is treated as absence, all other I/O failures remain fail-closed, coverage/docstring evidence is complete, and the workflow-only follow-up commits do not weaken repository protections. Approve only this exact head if policy is satisfied.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
⚠️ Action not completed

No files to review.

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
Collaborator Author

@opencode-agent Please independently review exact current head 8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e. CI, Security Scan, SAST Semgrep, and fuzzing are successful on this head. The unrelated workflow action-pin drift has been removed, so the diff is limited to direct-read/NoSuchFileException behavior and its engineering note. Verify missing-file semantics, non-missing I/O failure propagation, 100% coverage evidence, TOCTOU reasoning, and repository protections before approval.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
⚠️ Action not completed

No files to review.

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
Collaborator Author

@opencode-agent Please independently review exact current head 8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e. Exact-head CI, Security Scan, SAST Semgrep, and fuzzing are successful, all review threads are clear, and auto-merge is enabled. Verify the direct-read/NoSuchFileException semantics, preservation of non-missing I/O failures, existing missing-file coverage, and repository protection evidence before approving.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
⚠️ Action not completed

No files to review.

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.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Checked-out commit =='
git rev-parse HEAD
git status --short

echo
echo '== Target commit availability =='
git cat-file -t 8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e

echo
echo '== PR metadata and checks =='
gh pr view 222 --repo ContextualWisdomLab/clearfolio \
  --json number,headRefOid,baseRefOid,mergeStateStatus,isDraft,reviewDecision,statusCheckRollup

echo
echo '== Changed files and exact diff at target commit =='
git diff-tree --no-commit-id --name-status -r 8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e
git show --format=fuller --find-renames --find-copies --stat \
  8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e
git show --format= --find-renames --find-copies \
  8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e

echo
echo '== Affected production source outlines =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  if [ -f "$f" ]; then
    echo "-- $f"
    ast-grep outline "$f" --items all
  fi
done

echo
echo '== Related source, test, and policy references =='
rg -n -i -C 3 \
  'FileSystemArtifactStore|ArtifactLinkLedger|KpiSnapshotLedger|NoSuchFileException|Files\.(exists|readAllBytes|lines)' \
  src .github pom.xml 2>/dev/null || true

echo
echo '== Repository protection rules =='
gh api repos/ContextualWisdomLab/clearfolio/branches/main/protection 2>&1 || true

Length of output: 71936


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base=8e2d36f260395dbd0304abc503d8bd15ffcf8dab
head=8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e

echo '== PR commit sequence =='
git log --oneline --decorate "${base}..${head}"

echo
echo '== Full PR file list and diff =='
git diff --name-status "${base}...${head}"
git diff --find-renames --find-copies "${base}...${head}" -- \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java \
  .jules/bolt.md \
  .github/workflows/fuzz.yml

echo
echo '== Production method bodies and path derivation =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  echo "-- $f"
  nl -ba "$f" | sed -n '1,230p'
done

echo
echo '== Relevant test bodies =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  nl -ba "$f" | sed -n '1,230p'
done

echo
echo '== Strix failure details =='
gh run view 30963844464 --repo ContextualWisdomLab/clearfolio --log-failed 2>&1 || true

echo
echo '== Required check and ruleset metadata available to this token =='
gh api repos/ContextualWisdomLab/clearfolio/rules/branches/main 2>&1 || true
gh api repos/ContextualWisdomLab/clearfolio/rulesets 2>&1 || true

Length of output: 6942


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== FileSystemArtifactStore: complete current source =='
sed -n '1,220p' src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java

echo
echo '== ArtifactLinkLedger: constructors, load, and path parsing =='
sed -n '35,180p' src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java

echo
echo '== KpiSnapshotLedger: constructors, load, and path parsing =='
sed -n '35,155p' src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java

echo
echo '== FileSystemArtifactStore tests: missing and non-missing read failures =='
sed -n '80,170p' src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java

echo
echo '== ArtifactLinkLedger tests: missing and non-missing load failures =='
sed -n '110,190p' src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java

echo
echo '== KpiSnapshotLedger tests: missing and non-missing load failures =='
sed -n '55,120p' src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java

echo
echo '== Exact exception handling in changed methods =='
ast-grep run --lang java \
  --pattern $'try {\n  $$$\n} catch (java.nio.file.NoSuchFileException $EX) {\n  $$$\n} catch ($TYPE $OTHER) {\n  $$$\n}' \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java || true

echo
echo '== Failed Strix workflow jobs and failure output =='
gh run view 30963844464 --repo ContextualWisdomLab/clearfolio --json conclusion,jobs,url
gh run view 30963844464 --repo ContextualWisdomLab/clearfolio --log-failed 2>&1 || true

echo
echo '== Repository rulesets visible to this integration =='
gh api repos/ContextualWisdomLab/clearfolio/rulesets 2>&1 || true

Length of output: 27855


@seonghobae Code review is complete for exact head 8a0b3f04fe135a08e8bda8ec0c94609fb1510e7e.

The direct-read change is correct.

  • FileSystemArtifactStore.getPdf() returns Optional.empty() only for NoSuchFileException.
  • ArtifactLinkLedger.load() and KpiSnapshotLedger.load() ignore only NoSuchFileException.
  • The subsequent IOException and UncheckedIOException handlers keep non-missing I/O failures fail-loud as IllegalStateException.
  • Existing tests cover missing artifact and ledger paths. They also cover non-missing read and load failures.
  • pdfPath(UUID) remains rooted at rootDir. No tenant-derived path logic changed.
  • The code does not add NOFOLLOW_LINKS. Symlink behavior is unchanged because both the old existence check and the new direct reads follow links.
  • The removed pre-checks eliminate the check-to-use race.

I found no code-level blocker.

I cannot approve this head. GitHub reports strix as failed, mergeStateStatus as BLOCKED, and reviewDecision as REVIEW_REQUIRED. Repository-protection details are also unavailable to this integration because the branch-protection API returned HTTP 403.

Re-run or resolve the failed strix check and verify the required protections with an authorized integration. After those conditions pass, this code review supports approval.

You are interacting with an AI system.

@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 03:31
@seonghobae
seonghobae marked this pull request as draft August 5, 2026 03:47
auto-merge was automatically disabled August 5, 2026 03:47

Pull request was converted to draft

@seonghobae
seonghobae marked this pull request as ready for review August 5, 2026 03:47

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Please independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. This head includes current main and has successful CI, Security Scan, SAST Semgrep, and fuzzing. Verify the direct-read/NoSuchFileException semantics, preservation of all non-missing I/O failures, missing-file coverage, TOCTOU reasoning, 100% production line/branch evidence, and repository protections. Submit approval only for this exact head if no blocker remains.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"
target="a8cdb34775eb3e9e611081cbc3149a691ae9d37f"

echo '== Checkout and requested commit =='
git rev-parse HEAD
git status --short
git cat-file -t "$target"
git merge-base --is-ancestor "$target" HEAD && echo "target_is_ancestor_of_checkout=true" || true

echo
echo '== Pull request metadata and exact-head checks =='
gh pr view "$pr" --repo "$repo" \
  --json number,headRefOid,baseRefOid,mergeStateStatus,reviewDecision,isDraft,statusCheckRollup

echo
echo '== PR commits and changed files =='
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq '.baseRefOid')"
git log --oneline "${base}..${target}"
git diff --name-status "${base}...${target}"
git diff --find-renames --find-copies "${base}...${target}" -- \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java \
  .jules/bolt.md

echo
echo '== Affected production source outlines =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  echo "-- $f"
  ast-grep outline "$f" --items all
done

echo
echo '== Direct-read implementations and related tests =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  rg -n -C 10 'NoSuchFileException|UncheckedIOException|IOException|Files\.(exists|readAllBytes|lines)|getPdf\s*\(|load\s*\(' "$f" || true
done

echo
echo '== Coverage configuration and available reports =='
rg -n -i -C 3 'jacoco|coverage|line coverage|branch coverage' pom.xml .github 2>/dev/null || true
fd -HI 'jacoco.*\.(xml|csv|html)' . 2>/dev/null || true

echo
echo '== Repository protection and rulesets available to this integration =='
gh api "repos/${repo}/branches/main/protection" 2>&1 || true
gh api "repos/${repo}/rulesets" 2>&1 || true

Length of output: 39932


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"
target="a8cdb34775eb3e9e611081cbc3149a691ae9d37f"

echo '== Complete ledger tests =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  nl -ba "$f" | sed -n '1,260p'
done

echo
echo '== NoSuchFileException-specific tests and test source references =='
rg -n -i -C 5 \
  'NoSuchFileException|missing.*(artifact|ledger)|cannot be loaded|read denied|load failures' \
  src/test/java

echo
echo '== Direct-read methods with surrounding path and exception handling =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  echo "-- $f"
  nl -ba "$f" | sed -n '78,160p'
done

echo
echo '== Coverage evidence workflow definition and exact job logs =='
fd -HI 'opencode*' .github/workflows -t f -x sh -c 'echo "-- $1"; nl -ba "$1" | sed -n "1,260p"' sh {} \;
gh run view 30973739685 --repo "$repo" --log 2>&1 | \
  rg -n -i -C 3 'coverage|jacoco|line|branch|100%' || true

echo
echo '== Active ruleset requirements =='
for id in 18156473 13042993; do
  echo "-- ruleset $id"
  gh api "repos/${repo}/rulesets/${id}" 2>&1 || true
done

echo
echo '== Current Strix status and failed/current logs =='
gh run view 30973739693 --repo "$repo" --json status,conclusion,url,jobs 2>&1 || true
gh run view 30973739693 --repo "$repo" --log-failed 2>&1 || true

echo
echo '== Current PR decision after evidence collection =='
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 2254


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"

echo '== Complete ledger tests =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  sed -n '1,260p' "$f"
done

echo
echo '== Missing-file and non-missing I/O tests =='
rg -n -i -C 5 \
  'NoSuchFileException|missing.*(artifact|ledger)|cannot be loaded|read denied|IOException|UncheckedIOException' \
  src/test/java || true

echo
echo '== Direct-read methods with surrounding path handling =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  echo "-- $f"
  sed -n '78,160p' "$f"
done

echo
echo '== Coverage workflow definitions =='
while IFS= read -r f; do
  echo "-- $f"
  sed -n '1,280p' "$f"
done < <(find .github/workflows -maxdepth 1 -type f -iname '*opencode*' -print)

echo
echo '== Exact coverage-evidence job output =='
gh run view 30973739685 --repo "$repo" --log 2>&1 | \
  grep -Ei -C 3 'coverage|jacoco|line|branch|100%' || true

echo
echo '== Active ruleset requirements =='
for id in 18156473 13042993; do
  echo "-- ruleset $id"
  gh api "repos/${repo}/rulesets/${id}" 2>&1 || true
done

echo
echo '== Current Strix status =='
gh run view 30973739693 --repo "$repo" --json status,conclusion,url,jobs 2>&1 || true
gh run view 30973739693 --repo "$repo" --log-failed 2>&1 || true

echo
echo '== Current pull request state =='
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 46066


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"

echo '== Workflow definitions that mention coverage =='
find .github/workflows -maxdepth 1 -type f -print | while IFS= read -r f; do
  if grep -qiE 'coverage|jacoco' "$f"; then
    echo "-- $f"
    sed -n '1,320p' "$f"
  fi
done

echo
echo '== Exact OpenCode Review run jobs =='
gh run view 30973739685 --repo "$repo" --json status,conclusion,url,jobs 2>&1 || true

echo
echo '== Exact coverage job logs =='
gh run view 30973739685 --repo "$repo" --log 2>&1 | \
  grep -Ei -C 4 'coverage|jacoco|line|branch|100%' || true

echo
echo '== Active ruleset requirements =='
for id in 18156473 13042993; do
  echo "-- ruleset $id"
  gh api "repos/${repo}/rulesets/${id}" 2>&1 || true
done

echo
echo '== Current Strix run =='
gh run view 30973739693 --repo "$repo" --json status,conclusion,url,jobs 2>&1 || true
gh run view 30973739693 --repo "$repo" --log-failed 2>&1 || true

echo
echo '== Current exact-head PR state =='
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 16669


@seonghobae Review complete for exact head a8cdb34775eb3e9e611081cbc3149a691ae9d37f.

I found no code-level blocker.

  • FileSystemArtifactStore.getPdf() returns Optional.empty() only for NoSuchFileException.
  • ArtifactLinkLedger.load() and KpiSnapshotLedger.load() ignore only NoSuchFileException.
  • Other IOException and UncheckedIOException failures still throw IllegalStateException.
  • Tests cover missing artifact and ledger paths.
  • Tests cover non-missing artifact read failures and ledger load failures.
  • FileSystemArtifactStore.pdfPath(UUID) still resolves only from rootDir.
  • The change does not add link options. Symlink behavior is unchanged.
  • Direct reads remove the Files.exists() check-to-use race.

I cannot approve this head.

  • The required strix workflow is still IN_PROGRESS.
  • GitHub reports mergeStateStatus: BLOCKED.
  • GitHub reports reviewDecision: REVIEW_REQUIRED.
  • The repository rulesets require the strix.yml workflow and one approving review.
  • The coverage-evidence check succeeded, but this integration could not retrieve report output that proves the requested 100% production line and branch coverage.

Complete strix, provide the coverage report evidence, and satisfy the required approval condition. After these conditions pass, the code review supports approval.

You are interacting with an AI system.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Please independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. Exact-head CI 30973740483, Security Scan 30973740479, SAST Semgrep 30973740476, and fuzz 30973740477 are successful, with no unresolved published threads. Verify that every removed Files.exists() pre-check is replaced only by precise NoSuchFileException handling, missing artifacts and ledgers preserve their documented empty semantics, all other I/O failures remain fail-loud, and symlink, tenant-boundary, integrity, and coverage behavior are unchanged. Submit APPROVE only for this exact head and only after all repository protections remain satisfied.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"
target="a8cdb34775eb3e9e611081cbc3149a691ae9d37f"

echo '== Exact commit and pull request state =='
printf 'checked_out='; git rev-parse HEAD
git cat-file -t "$target"
gh pr view "$pr" --repo "$repo" \
  --json number,headRefOid,baseRefOid,mergeStateStatus,reviewDecision,isDraft,statusCheckRollup

echo
echo '== Exact PR diff =='
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq '.baseRefOid')"
git diff --name-status "${base}...${target}"
git diff --find-renames --find-copies "${base}...${target}" -- \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java \
  .jules/bolt.md

echo
echo '== Changed production methods =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  echo "-- $f"
  ast-grep outline "$f" --items all
  rg -n -C 14 'NoSuchFileException|UncheckedIOException|IOException|Files\.(exists|readAllBytes|lines)|getPdf\s*\(|load\s*\(|pdfPath\s*\(' "$f" || true
done

echo
echo '== Relevant test cases =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  ast-grep outline "$f" --items all
  rg -n -i -C 8 'NoSuchFileException|missing|not.*exist|cannot.*(read|load)|IOException|UncheckedIOException|getPdf\s*\(|load\s*\(' "$f" || true
done

echo
echo '== Coverage configuration and committed reports =='
rg -n -i -C 4 'jacoco|coverage|line.*coverage|branch.*coverage' pom.xml .github 2>/dev/null || true
fd -HI -t f 'jacoco.*\.(xml|csv)' . target 2>/dev/null || true

echo
echo '== Requested workflow runs =='
for run in 30973740483 30973740479 30973740476 30973740477; do
  echo "-- run $run"
  gh run view "$run" --repo "$repo" --json databaseId,headSha,status,conclusion,event,name,url,jobs 2>&1 || true
done

echo
echo '== Active repository requirements =='
gh api "repos/${repo}/rulesets" 2>&1 || true
gh api "repos/${repo}/branches/main/protection" 2>&1 || true

Length of output: 57415


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"
target="a8cdb34775eb3e9e611081cbc3149a691ae9d37f"

echo '== Complete tests for load/read failures =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  rg -n -A55 -B5 'void (getPdfWrapsReadFailures|reportsLoadAndWriteFailures|assertInvalidLedger)\s*\(' "$f" || true
done

echo
echo '== Exact coverage-evidence job output =='
gh run view 30973739685 --repo "$repo" --log 2>&1 | \
  rg -n -i -C 8 'coverage-evidence|coverage|jacoco|line|branch|100%|threshold|source tree' || true

echo
echo '== Active ruleset definitions =='
for id in 18156473 13042993; do
  echo "-- ruleset $id"
  gh api "repos/${repo}/rulesets/${id}" 2>&1 || true
done

echo
echo '== Current required check and PR state =='
gh run view 30973739693 --repo "$repo" --json databaseId,headSha,status,conclusion,name,url,jobs 2>&1 || true
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup

echo
echo '== Confirm no changed path-resolution or symlink option =='
git diff --check "${target}^..${target}"
git diff "${target}^..${target}" -- \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
rg -n -C 2 'NOFOLLOW_LINKS|toRealPath|readSymbolicLink|isSymbolicLink|normalize\s*\(' \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java || true

Length of output: 22979


@seonghobae Review complete for exact head a8cdb34775eb3e9e611081cbc3149a691ae9d37f.

I found no code-level blocker.

  • FileSystemArtifactStore.getPdf() returns Optional.empty() only for NoSuchFileException.
  • ArtifactLinkLedger.load() and KpiSnapshotLedger.load() ignore only NoSuchFileException.
  • Other IOException and UncheckedIOException failures still throw IllegalStateException.
  • Tests cover missing artifacts, missing ledgers, artifact read failures, and ledger load failures.
  • FileSystemArtifactStore.pdfPath(UUID) still resolves from rootDir.
  • The change does not add link-handling options. Symlink behavior is unchanged.
  • The direct reads remove the explicit Files.exists() check-to-use interval.
  • CI and fuzz succeeded on this exact head. The check rollup also reports successful Security Scan and SAST Semgrep checks.

I cannot approve this head.

  • The required strix check is still IN_PROGRESS.
  • GitHub reports mergeStateStatus: BLOCKED.
  • GitHub reports reviewDecision: REVIEW_REQUIRED.
  • Active repository rulesets require strix and one approving review.
  • The coverage-evidence check succeeded, but its logs did not provide line and branch coverage values. I cannot independently verify the requested 100% coverage evidence.

Complete strix and provide retrievable coverage measurements. After GitHub reports that the repository requirements pass, this review supports approval.

You are interacting with an AI system.

@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 04:07

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review Please independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. Exact-head CI, Security Scan, SAST Semgrep, fuzzing, and CodeRabbit status are successful; no inline review threads remain, and auto-merge is enabled. Verify that direct reads eliminate the TOCTOU window without changing the established missing-file contract, that only NoSuchFileException is treated as missing, other I/O failures remain fail-closed, 100% production line/branch coverage and public documentation remain satisfied, and all repository protections hold. Submit APPROVE only for this exact head if no blocker remains.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review Please independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. Exact-head CI, Security Scan, SAST Semgrep, fuzzing, and CodeRabbit status are successful, with zero inline review threads. Verify that direct reads remove the Files.exists() TOCTOU window, only NoSuchFileException maps to the established missing-file result, every other I/O failure remains fail-closed, production line and branch coverage remains complete, and repository protections are satisfied. Submit APPROVE only for this exact head if no blocker remains.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review Please independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. The exact PR diff is limited to .jules/bolt.md and the three artifact/ledger classes that replace pre-read Files.exists() checks with direct reads and NoSuchFileException absence handling. Exact-head CI, Security Scan, SAST Semgrep, fuzzing, and CodeRabbit status are successful, with zero unresolved review threads. Verify that only NoSuchFileException is treated as absence, every other I/O failure remains fail-closed, existing missing-file coverage and 100% production line/branch coverage remain intact, and all repository protections are satisfied. Submit APPROVE only for this exact head if no blocker remains.

@seonghobae
seonghobae marked this pull request as draft August 5, 2026 10:19
auto-merge was automatically disabled August 5, 2026 10:19

Pull request was converted to draft

@seonghobae
seonghobae marked this pull request as ready for review August 5, 2026 10:28
@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 10:30

Copy link
Copy Markdown
Collaborator Author

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

Independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. Verify the direct-read missing-file contracts, the absence of TOCTOU-prone prechecks, fail-closed handling of non-missing I/O failures, exact-head CI/Security/SAST/fuzz evidence, zero missed production lines and branches, and repository protections. Submit APPROVE only for this exact head when every required gate is successful; advisory bot output is not a substitute for the protected branch's counted independent approval.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"
target="a8cdb34775eb3e9e611081cbc3149a691ae9d37f"

echo '== Commit and PR state =='
printf 'checkout='
git rev-parse HEAD
git cat-file -t "$target"
gh pr view "$pr" --repo "$repo" \
  --json number,headRefOid,baseRefOid,mergeStateStatus,reviewDecision,isDraft,statusCheckRollup

echo
echo '== Exact PR diff =='
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq '.baseRefOid')"
git diff --check "${base}...${target}"
git diff --name-status "${base}...${target}"
git diff --find-renames --find-copies "${base}...${target}" -- \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java \
  .jules/bolt.md

echo
echo '== Changed production methods =='
for f in \
  src/main/java/com/clearfolio/viewer/artifact/FileSystemArtifactStore.java \
  src/main/java/com/clearfolio/viewer/artifact/ArtifactLinkLedger.java \
  src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotLedger.java
do
  echo "-- $f"
  ast-grep outline "$f" --items all
  rg -n -C 14 \
    'NoSuchFileException|UncheckedIOException|IOException|Files\.(exists|readAllBytes|lines)|getPdf\s*\(|load\s*\(|pdfPath\s*\(|NOFOLLOW_LINKS|toRealPath|readSymbolicLink|isSymbolicLink' \
    "$f" || true
done

echo
echo '== Relevant test cases =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  ast-grep outline "$f" --items all
  rg -n -i -C 12 \
    'NoSuchFileException|missing|not.*exist|cannot.*(read|load)|IOException|UncheckedIOException|getPdf\s*\(|load\s*\(' \
    "$f" || true
done

echo
echo '== Coverage configuration and available reports =='
rg -n -i -C 4 'jacoco|coverage|line.*coverage|branch.*coverage|100%' pom.xml .github 2>/dev/null || true
fd -HI -t f 'jacoco.*\.(xml|csv|html)' . target 2>/dev/null || true

echo
echo '== Requested exact-head workflow runs =='
for run in 30973740483 30973740479 30973740476 30973740477; do
  echo "-- run $run"
  gh run view "$run" --repo "$repo" \
    --json databaseId,headSha,status,conclusion,event,name,url,jobs 2>&1 || true
done

echo
echo '== Current required checks and repository rules =='
gh api "repos/${repo}/rulesets" 2>&1 || true
gh api "repos/${repo}/branches/main/protection" 2>&1 || true

Length of output: 60127


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/clearfolio"
pr="222"
target="a8cdb34775eb3e9e611081cbc3149a691ae9d37f"

echo '== Complete non-missing ledger failure tests =='
for f in \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java
do
  echo "-- $f"
  rg -n -A95 -B8 'void reportsLoadAndWriteFailures\s*\(' "$f" || true
  rg -n -A45 -B5 'void assertInvalidLedger\s*\(' "$f" || true
done

echo
echo '== Exact missing-file and generic failure assertions =='
rg -n -C 8 \
  'stringConstructorTreatsBlankPathAsInMemoryAndMissingPathAsEmpty|getPdfReturnsEmptyWhenArtifactIsMissing|getPdfWrapsReadFailures|reportsLoadAndWriteFailures|cannot be loaded|read denied' \
  src/test/java/com/clearfolio/viewer/artifact/FileSystemArtifactStoreTest.java \
  src/test/java/com/clearfolio/viewer/artifact/ArtifactLinkLedgerTest.java \
  src/test/java/com/clearfolio/viewer/analytics/KpiSnapshotLedgerTest.java

echo
echo '== Coverage evidence workflow and logs =='
while IFS= read -r f; do
  echo "-- $f"
  rg -n -i -C 10 'coverage|jacoco|coverage-source-tree|coverage-evidence' "$f" || true
done < <(fd -HI -t f . .github/workflows)

gh run view 30973739685 --repo "$repo" --json headSha,status,conclusion,jobs,url 2>&1 || true
gh run view 30973739685 --repo "$repo" --log 2>&1 | \
  rg -n -i -C 10 'coverage|jacoco|line|branch|missed|100%' || true

echo
echo '== Detailed active rulesets =='
for id in 18156473 13042993; do
  echo "-- ruleset $id"
  gh api "repos/${repo}/rulesets/${id}" 2>&1 || true
done

echo
echo '== Current required-review and check state =='
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,mergeStateStatus,reviewDecision,reviews,statusCheckRollup

echo
echo '== Exact commit remains current =='
printf 'checkout='
git rev-parse HEAD
git merge-base --is-ancestor "$target" HEAD && echo 'target_is_ancestor_of_checkout=true'

Length of output: 26855


🏁 Script executed:

#!/bin/bash
set -u

repo="ContextualWisdomLab/clearfolio"
pr="222"

echo '== Coverage-related workflow definitions =='
find .github/workflows -maxdepth 1 -type f -print 2>/dev/null | while IFS= read -r f; do
  if grep -qiE 'coverage|jacoco|coverage-source-tree|coverage-evidence' "$f"; then
    echo "-- $f"
    grep -niE -C 12 'coverage|jacoco|coverage-source-tree|coverage-evidence|line|branch|missed|100%' "$f" || true
  fi
done

echo
echo '== Coverage-evidence job metadata and log excerpts =='
gh run view 30973739685 --repo "$repo" --json headSha,status,conclusion,jobs,url 2>&1 || true
gh run view 30973739685 --repo "$repo" --log 2>&1 | \
  grep -Ei -C 10 'coverage|jacoco|line|branch|missed|100%' || true

echo
echo '== Detailed active rulesets =='
for id in 18156473 13042993; do
  echo "-- ruleset $id"
  gh api "repos/${repo}/rulesets/${id}" 2>&1 || true
done

echo
echo '== Current PR approval and check state =='
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,mergeStateStatus,reviewDecision,reviews,statusCheckRollup 2>&1 || true

Length of output: 15411


@seonghobae Review complete for exact head a8cdb34775eb3e9e611081cbc3149a691ae9d37f.

I found no code-level blocker.

  • FileSystemArtifactStore.getPdf() maps only NoSuchFileException to Optional.empty().
  • ArtifactLinkLedger.load() and KpiSnapshotLedger.load() ignore only NoSuchFileException.
  • Other IOException and UncheckedIOException paths still throw IllegalStateException.
  • Tests cover missing artifact files, missing ledger files, generic artifact read failures, and ledger load failures.
  • The removed Files.exists() calls remove the explicit TOCTOU check-to-read interval.
  • The diff does not change tenant-derived path handling or symlink options.
  • The current check rollup shows success for CI, fuzz, Semgrep, security scan components, CodeQL, and strix.

I cannot submit approval for this head.

  • GitHub reports mergeStateStatus: BLOCKED.
  • GitHub reports reviewDecision: REVIEW_REQUIRED.
  • Repository ruleset PR requires one approving review.
  • The pull request currently has zero reviews.
  • The exact-head coverage-evidence workflow is no longer retrievable through this integration. I cannot verify the requested 100% production line and branch coverage measurement.

An authorized reviewer must provide the required approval. Provide retrievable exact-head coverage output if that evidence is required for the approval decision.

You are interacting with an AI system.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review Independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. Exact-head CI 30973740483, Security Scan 30973740479, SAST Semgrep 30973740476, fuzz 30973740477, and CodeRabbit status are successful, with zero unresolved threads. Verify direct-read missing-file semantics, treatment of only NoSuchFileException as absence, fail-closed propagation of all other I/O failures, TOCTOU reasoning, 100% production line/branch coverage, public Javadocs, and repository policy. Approve or recommend merge only for this exact head and only if independent-review policy is satisfied.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review Please independently review exact current head a8cdb34775eb3e9e611081cbc3149a691ae9d37f. Verify that removing pre-read Files.exists() calls closes TOCTOU windows without swallowing non-missing I/O failures, that only NoSuchFileException preserves the established empty-result behavior, and that exact-head CI, Security Scan, SAST Semgrep, fuzz, coverage, Javadocs, and repository protections are complete and clean. Submit APPROVE only for this exact head.

Copy link
Copy Markdown
Collaborator Author

Superseded and fully absorbed by authoritative parent #270. Commit 91091ddc212dac328ff36696f56c0a15c21407f4 applies the three reviewed production changes byte-for-byte on top of #270's current security and acceptance baseline: direct reads in KpiSnapshotLedger, ArtifactLinkLedger, and FileSystemArtifactStore, handling only NoSuchFileException as the established missing-file result while preserving fail-closed handling for every other I/O failure. The Jules metadata file was intentionally not imported because it is not product code or required evidence. Keeping both PRs open would duplicate the same implementation. Closing without merge; #270 must pass fresh exact-head CI, security, fuzz, review, branch-protection, and independent-approval gates.

@seonghobae seonghobae closed this Aug 5, 2026
auto-merge was automatically disabled August 5, 2026 14:24

Pull request was closed

@google-labs-jules

Copy link
Copy Markdown

Superseded and fully absorbed by authoritative parent #270. Commit 91091ddc212dac328ff36696f56c0a15c21407f4 applies the three reviewed production changes byte-for-byte on top of #270's current security and acceptance baseline: direct reads in KpiSnapshotLedger, ArtifactLinkLedger, and FileSystemArtifactStore, handling only NoSuchFileException as the established missing-file result while preserving fail-closed handling for every other I/O failure. The Jules metadata file was intentionally not imported because it is not product code or required evidence. Keeping both PRs open would duplicate the same implementation. Closing without merge; #270 must pass fresh exact-head CI, security, fuzz, review, branch-protection, and independent-approval gates.

Understood. Acknowledging that this work is now obsolete and stopping work on this task.

Copy link
Copy Markdown
Collaborator Author

Superseded by authoritative buyer-readiness parent #270, which reconstructs the privacy-safe audit, Netty, deterministic SBOM/attribution, exact-head CI, zero-missed coverage, public Javadoc and fail-closed Maven report contracts on current protected main. Keep this predecessor closed; no prior result transfers.

@google-labs-jules

Copy link
Copy Markdown

Superseded by authoritative buyer-readiness parent #270, which reconstructs the privacy-safe audit, Netty, deterministic SBOM/attribution, exact-head CI, zero-missed coverage, public Javadoc and fail-closed Maven report contracts on current protected main. Keep this predecessor closed; no prior result transfers.

Understood. Acknowledging that this work is now obsolete and stopping work on this task.

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