Skip to content

release: bind sealed evidence to a canonical root path - #58

Draft
seonghobae wants to merge 6 commits into
feature/sealed-source-identity-bindingfrom
feature/sealed-evidence-root-binding
Draft

release: bind sealed evidence to a canonical root path#58
seonghobae wants to merge 6 commits into
feature/sealed-source-identity-bindingfrom
feature/sealed-evidence-root-binding

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Scope

This stacked draft addresses #57 without changing any workflow or credential boundary.

  • Exact stacked base: eb2cba679ff1202866850cb24049efad885f0dc8 from PR release: bind sealed evidence to exact source identity #56.
  • RED test-only head: 4f94a8228e18b12a65785a72ff7ae712a7b37d3c.
  • First green implementation head: 103ad121c9cfb165d5fae960fadadb1c59a45dd2.
  • Exact current head: ccfd7809b352e95f4f6e646d0e886ac28e773698.

The regressions prove that an otherwise valid sealed evidence set reached through a symlinked ancestor was accepted by both the public verifier and CLI. At the RED head, the read-only exact-head CI failed on Python 3.10–3.13 only because those two attacks did not raise; package acceptance and Ruff passed.

The implementation now compares the lexical absolute form of the supplied path with its strict filesystem-resolved path, returns that canonical root, and uses it for every payload read and manifest-output exclusion. A stable fail-closed error covers root canonicalization failure. CHANGELOG.md and operator guidance document the boundary and cite the 2018 edition of IEEE Std 1003.1-2017 and current CWE-59 in APA 7th form. The final documentation-only commit corrected the distinction between accepting a relative real path and binding its computed absolute form.

Exact-head verification

Exact current head ccfd7809b352e95f4f6e646d0e886ac28e773698 passed the credential-free, read-only ci workflow:

  • Python 3.10, 3.11, 3.12, and 3.13 tests;
  • 716 tests;
  • 100% production statement and branch coverage over 1,601 statements and 550 branches;
  • Ruff, compile checks, and product-guard self-test;
  • wheel and sdist build, archive validation, installed-wheel smoke test, and package-acceptance evidence.

The workflow checked out the exact head with persisted credentials disabled and only contents: read / metadata: read token permissions.

CodeRabbit reviewed the implementation head 103ad121c9cfb165d5fae960fadadb1c59a45dd2 and raised one request for final-directory symlink coverage. That finding was verified as duplicate: the exact stacked base already contains test_public_verifier_rejects_a_symlinked_evidence_directory, and exact-current-head CI executes it. The duplicate thread was resolved with the existing regression identified. A fresh review has been requested for exact current head ccfd7809b352e95f4f6e646d0e886ac28e773698; review latency is not treated as success.

Remaining gates

This PR remains draft and stacked. It must not be retargeted or merged before prerequisite exact-tree integration, exact-head SAST Semgrep, Security Scan, completed exact-current-head automated review, qualifying independent approval, and repository-policy acceptance. A successful CodeRabbit commit-status context alone is not treated as a completed review, and no absent or queued gate is treated as successful.

No .github file, publication permission, signing identity, ref-writing behavior, model-executing credential path, dependency contract, transport API, or naruon/MSA integration contract is changed.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

릴리스 증거 루트에 정규 절대 경로와 심볼릭 링크가 없는 경로를 요구합니다. 검증기와 CLI는 확인된 루트를 사용합니다. 부모 심볼릭 링크, 경로 해석 실패, CLI 출력 생성을 테스트합니다.

Changes

정규 증거 루트 바인딩

Layer / File(s) Summary
증거 루트 계약과 위협 모델
docs/sealed-release-evidence.md, CHANGELOG.md
증거 루트의 정규 절대 경로, 심볼릭 링크 제한, CLI 입력 규칙, 위협 모델 및 참고문헌을 갱신했습니다.
정규 루트 검증 및 경로 사용
src/egressweave/release_evidence.py
_require_canonical_evidence_root가 증거 루트를 검증합니다. _select_evidence_pathsmain은 확인된 루트를 사용합니다.
심볼릭 링크 거부 및 오류 처리 검증
tests/test_sealed_release_evidence_root_binding.py
공개 검증기와 CLI의 부모 심볼릭 링크 거부, CLI 출력 파일 미생성, 경로 해석 실패 오류 변환을 검증합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant main
  participant _require_canonical_evidence_root
  participant _select_evidence_paths
  CLI->>main: evidence 경로 전달
  main->>_require_canonical_evidence_root: 경로 안전성 검증
  _require_canonical_evidence_root-->>main: 확인된 canonical root 반환
  main->>_select_evidence_paths: 확인된 root 전달
  _select_evidence_paths-->>CLI: manifest 출력 경로 반환
Loading

Possibly related issues

  • EgressWeave issue 57: 심볼릭 링크 조상 경로 거부, canonical root 사용, 검증기·CLI 변경, 테스트 및 문서 갱신 요구사항을 다룹니다.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 88.89% which is sufficient. The required threshold is 80.00%.
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 제목은 봉인된 증거를 정규 루트 경로에 연결하는 PR의 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ 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 feature/sealed-evidence-root-binding

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

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review exact current stacked head 103ad121c9cfb165d5fae960fadadb1c59a45dd2 against exact base eb2cba679ff1202866850cb24049efad885f0dc8. Ignore the intentionally failing RED predecessor and the draft-skip status. Focus on whether canonical lexical-versus-resolved root binding rejects every symlinked ancestor, whether all subsequent evidence reads and manifest-output exclusion use the same real root, stable fail-closed root-resolution behavior, Python 3.10–3.13 compatibility, 100% production statement/branch coverage, beginner-readable docstrings, APA 7th standards guidance, and unchanged workflow/credential boundaries. Do not treat absent SAST Semgrep, Security Scan, stack sequencing, or independent approval as satisfied.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please independently inspect exact current head 103ad121c9cfb165d5fae960fadadb1c59a45dd2 against stacked base eb2cba679ff1202866850cb24049efad885f0dc8.

The RED exact head 4f94a8228e18b12a65785a72ff7ae712a7b37d3c proved that a valid evidence set reached through a symlinked ancestor was accepted by the public verifier and CLI: all Python 3.10–3.13 jobs failed only on those two regressions while Ruff and package acceptance passed. The current exact head now passes the read-only exact-head CI, package acceptance, 716 tests, and 100% production statement and branch coverage over 1,601 statements and 550 branches.

Review whether the lexical absolute path versus strict resolved path comparison is a complete fail-closed defense for the stated ancestor-link threat; whether the returned real root is consistently used for payload selection and manifest-output exclusion; whether root resolution errors are normalized safely; and whether the documentation, CHANGELOG, POSIX/CWE-59 citations, public docstrings, standalone behavior, and credential-neutral trust boundary are accurate. No .github file changed. Do not treat absent SAST Semgrep, Security Scan, prerequisite integration, draft state, or independent approval as satisfied. Submit concrete findings or an exact-head verdict only.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

@seonghobae I will review #58 at the specified head and base. I will assess only the requested scope. I will not mark absent required gates as satisfied.

✅ 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 `@src/egressweave/release_evidence.py`:
- Around line 149-150: Extend tests in
test_sealed_release_evidence_root_binding.py to create a symlink at the final
evidence directory path itself, then invoke _build() and assert it raises
SystemExit with the existing “release evidence directory is missing or unsafe”
message. Keep the existing parent-directory symlink coverage unchanged.
🪄 Autofix

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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ba1df6e4-6b44-4de1-978d-22bbb28cda1d

📥 Commits

Reviewing files that changed from the base of the PR and between eb2cba6 and 103ad12.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • docs/sealed-release-evidence.md
  • src/egressweave/release_evidence.py
  • tests/test_sealed_release_evidence_root_binding.py

Comment thread src/egressweave/release_evidence.py

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Review exact current stacked head ccfd7809b352e95f4f6e646d0e886ac28e773698 against exact base eb2cba679ff1202866850cb24049efad885f0dc8. The implementation tree at 103ad121c9cfb165d5fae960fadadb1c59a45dd2 was followed only by a documentation correction clarifying that a relative real path is accepted after computing its lexical absolute form and updating the current CWE-59 APA citation. Do not reuse a predecessor-head verdict as current-head review.

Focus on whether lexical-absolute versus strict-resolved root binding rejects every symlinked ancestor, whether all subsequent evidence reads and manifest-output exclusion use the same real root, stable fail-closed root-resolution behavior, documentation accuracy, Python 3.10–3.13 compatibility, 100% production statement and branch coverage, beginner-readable docstrings, APA 7th primary-source guidance, and unchanged workflow/credential boundaries. Do not treat absent SAST Semgrep, Security Scan, prerequisite stack integration, draft state, or independent approval as satisfied.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please independently inspect exact current head ccfd7809b352e95f4f6e646d0e886ac28e773698 against stacked base eb2cba679ff1202866850cb24049efad885f0dc8.

The exact RED head 4f94a8228e18b12a65785a72ff7ae712a7b37d3c demonstrated that both the public verifier and CLI accepted a valid evidence set through a symlinked ancestor. Exact current head ccfd7809b352e95f4f6e646d0e886ac28e773698 passes the read-only exact-head CI and package acceptance; the implementation tree passed 716 tests and 100% production statement and branch coverage over 1,601 statements and 550 branches. The only post-implementation delta corrects operator wording about relative paths and updates the CWE-59 APA citation.

Review whether the lexical absolute path versus strict resolved path comparison fully closes the stated root-authority gap; whether the canonical root is consistently reused for payload selection and manifest-output exclusion; whether root-resolution errors remain fail-closed and stable; and whether the documentation, CHANGELOG, POSIX/CWE-59 citations, public docstrings, standalone behavior, and credential-neutral boundary are accurate. No .github file changed. Do not treat a predecessor-head verdict, absent SAST Semgrep, absent Security Scan, prerequisite integration, draft state, or independent approval as satisfied. Submit concrete findings or an exact-current-head verdict only.

Copy link
Copy Markdown
Contributor Author

CodeRabbit finding PRRT_kwDOTVyu-86W0gq6 is verified as duplicate rather than an uncovered rejection rule. Exact current head ccfd7809b352e95f4f6e646d0e886ac28e773698 already contains tests/test_sealed_release_evidence_symlink_boundary.py::test_public_verifier_rejects_a_symlinked_evidence_directory, inherited from the exact stacked base. That regression creates a symlink at the final evidence-directory path and asserts the public verifier raises SystemExit matching missing or unsafe. The new root-binding test file intentionally adds only the previously missing ancestor-symlink and resolution-failure cases. Exact-current-head CI executed the complete suite: 716 tests passed with 100% production statement and branch coverage. No duplicate test is added.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='ccfd7809b352e95f4f6e646d0e886ac28e773698'
base='eb2cba679ff1202866850cb24049efad885f0dc8'

printf '%s\n' '== Checked-out commit =='
git rev-parse HEAD
printf '%s\n' '== Requested commits =='
git show -s --format='%H%n%P%n%s' "$base"
git show -s --format='%H%n%P%n%s' "$head"

printf '%s\n' '== Changed paths: base...head =='
git diff --name-status "$base...$head"

printf '%s\n' '== Diff: implementation and tests =='
git diff --find-renames --unified=80 "$base...$head" -- \
  src/egressweave/release_evidence.py \
  tests/test_sealed_release_evidence_root_binding.py

printf '%s\n' '== Diff: documentation and automation boundaries =='
git diff --find-renames --unified=40 "$base...$head" -- \
  CHANGELOG.md \
  docs/sealed-release-evidence.md \
  .github

printf '%s\n' '== Source map =='
ast-grep outline src/egressweave/release_evidence.py --items all --view expanded

printf '%s\n' '== Relevant symbol references =='
rg -n -C 4 \
  '(_require_canonical_evidence_root|_select_evidence_paths|resolve\(|absolute\(|manifest|evidence_root|output)' \
  src/egressweave/release_evidence.py tests

Length of output: 110459


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='ccfd7809b352e95f4f6e646d0e886ac28e773698'
base='eb2cba679ff1202866850cb24049efad885f0dc8'

printf '%s\n' '== Base relationship =='
git merge-base --is-ancestor "$base" "$head" && echo 'base is an ancestor of head'
git log --format='%H %s' --ancestry-path "$base..$head"

printf '%s\n' '== Complete canonical-root and output-boundary flow =='
sed -n '142,190p;487,585p;614,692p' src/egressweave/release_evidence.py
printf '%s\n' '== All direct callers and tests =='
rg -n -C 3 \
  '(_require_canonical_evidence_root|_select_evidence_paths|build_evidence_manifest\(|write_evidence_manifest\(|_require_output_outside_verified_set\()' \
  src tests

printf '%s\n' '== Python support and CI declarations =='
rg -n -C 4 '(python_requires|requires-python|3\.10|3\.11|3\.12|3\.13|coverage|branch)' \
  pyproject.toml .github/workflows README.md tests/test_quality_contracts.py \
  2>/dev/null || true

printf '%s\n' '== Exact-head pull request checks =='
gh pr view 58 --repo ContextualWisdomLab/EgressWeave \
  --json number,isDraft,headRefOid,baseRefOid,statusCheckRollup \
  --jq '{number, isDraft, headRefOid, baseRefOid, checks: [.statusCheckRollup[] | {name, status, conclusion, startedAt, completedAt, detailsUrl}]}'

printf '%s\n' '== Changed workflow, credential, and release-boundary paths =='
git diff --name-only "$base...$head" | rg '(^|/)(\.github|.*workflow.*|.*credential.*|.*release.*|.*attest.*)' || true

Length of output: 54713


🤖 web_search executed:

Official primary source metadata for CWE-59: Improper Link Resolution Before File Access ('Link Following'), including current title, authoring organization, publication or modification date, and canonical URL.

Length of output: 13964


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Citation line numbers =='
nl -ba docs/sealed-release-evidence.md | sed -n '175,215p'

printf '%s\n' '== Current-head CI run summary =='
gh run view 31056179578 --repo ContextualWisdomLab/EgressWeave \
  --json databaseId,headSha,status,conclusion,event,jobs \
  --jq '{databaseId, headSha, status, conclusion, event, jobs: [.jobs[] | {name, status, conclusion, startedAt, completedAt}]}'

printf '%s\n' '== Coverage and test-report lines from the exact-head CI logs =='
gh run view 31056179578 --repo ContextualWisdomLab/EgressWeave --log 2>&1 |
  rg -n -C 2 '([0-9]+ passed|TOTAL|100%|coverage report|FAILED|ERROR)' || true

Length of output: 1047


🤖 web_search executed:

Official POSIX Issue 7, 2018 Edition / IEEE Std 1003.1-2017 primary-source bibliographic metadata: responsible organization, exact title, publication year, publisher, and canonical URL.

Length of output: 8914


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Citation line numbers =='
awk 'NR >= 180 && NR <= 215 { printf "%d\t%s\n", NR, $0 }' \
  docs/sealed-release-evidence.md

printf '%s\n' '== Current-head CI run summary =='
gh run view 31056179578 --repo ContextualWisdomLab/EgressWeave \
  --json databaseId,headSha,status,conclusion,event,jobs \
  --jq '{databaseId, headSha, status, conclusion, event, jobs: [.jobs[] | {name, status, conclusion, startedAt, completedAt}]}'

printf '%s\n' '== Coverage and test-report lines from the exact-head CI logs =='
gh run view 31056179578 --repo ContextualWisdomLab/EgressWeave --log 2>&1 |
  rg -n -C 2 '([0-9]+ passed|TOTAL|100%|coverage report|FAILED|ERROR)' || true

Length of output: 28098


🏁 Script executed:

#!/bin/bash
set -euo pipefail

awk 'NR >= 214 && NR <= 250 { printf "%d\t%s\n", NR, $0 }' \
  docs/sealed-release-evidence.md

Length of output: 2189


@seonghobae Review completed for ccfd7809b352e95f4f6e646d0e886ac28e773698 against eb2cba679ff1202866850cb24049efad885f0dc8.

I found two documentation findings.

  1. CWE-59 reference date is inaccurate.
    At Lines 227-228, the reference uses 2026. The CWE-59 primary source lists its latest modification as December 11, 2025. Use 2025 as the reference date.

  2. POSIX reference author is incomplete.
    At Lines 245-248, the reference names only IEEE Computer Society. The cited POSIX Issue 7, 2018 edition identifies IEEE and The Open Group as joint authors. Update the author and title data to match the primary source.

No implementation finding was identified. The lexical-absolute versus strict-resolved comparison rejects the tested symlinked ancestor case. Selected payload reads and manifest-output exclusion use the canonical root. Root-resolution failures fail closed.

The exact-head CI run completed successfully for Python 3.10–3.13 and package acceptance. Each Python job reported 716 passing tests and 100% coverage over 1,601 statements and 550 branches. No .github file changed.

I did not treat SAST Semgrep, Security Scan, prerequisite integration, draft status, or independent approval as satisfied.

⚠️ Action not completed

Review rate limited.

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

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent @cwl-noema-review Please independently inspect exact current head ccfd7809b352e95f4f6e646d0e886ac28e773698 against stacked base eb2cba679ff1202866850cb24049efad885f0dc8. Review the complete four-file diff plus inherited tests relevant to the finding. Verify that the lexical absolute evidence root must equal its strict real path; both final-component and ancestor symlink traversal fail closed; the resolved root is reused for payload selection and output exclusion; resolution failures normalize safely; relative real paths remain accepted; and no workflow, credential, provider, transport, API, naruon/MSA, or publication boundary changes. The prior CodeRabbit request for final-directory symlink coverage is duplicate of tests/test_sealed_release_evidence_symlink_boundary.py::test_public_verifier_rejects_a_symlinked_evidence_directory on this exact head and its thread was resolved for that reason. Exact-head ci is successful; exact-head SAST Semgrep, Security Scan, completed exact-current-head automated review, independent approval, prerequisite stack integration, and repository-policy gates remain unsatisfied. Submit concrete findings or an exact-head verdict only; do not approve unless every applicable gate is satisfied.

@coderabbitai

coderabbitai Bot commented Aug 6, 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

base='eb2cba679ff1202866850cb24049efad885f0dc8'
head='ccfd7809b352e95f4f6e646d0e886ac28e773698'
repo='ContextualWisdomLab/EgressWeave'

printf '%s\n' '== Requested revisions and ancestry =='
git show -s --format='%H%n%P%n%s' "$base" "$head"
git merge-base --is-ancestor "$base" "$head" && echo 'base is an ancestor of head'
git log --format='%H %s' --ancestry-path "$base..$head"

printf '%s\n' '== Complete diff file list =='
git diff --name-status "$base...$head"

printf '%s\n' '== Boundary-sensitive path changes =='
git diff --name-only "$base...$head" |
  rg '(^|/)(\.github|.*credential.*|.*provider.*|.*transport.*|.*naruon.*|.*msa.*|.*publish.*|.*release.*|.*api.*)' || true

printf '%s\n' '== Changed source and test diff =='
git diff --find-renames --unified=100 "$base...$head" -- \
  src/egressweave/release_evidence.py \
  tests/test_sealed_release_evidence_root_binding.py \
  tests/test_sealed_release_evidence_symlink_boundary.py

printf '%s\n' '== Changed documentation diff =='
git diff --find-renames --unified=60 "$base...$head" -- \
  CHANGELOG.md docs/sealed-release-evidence.md

printf '%s\n' '== Source structure =='
ast-grep outline src/egressweave/release_evidence.py --items all --view expanded

printf '%s\n' '== Canonical-root implementation and all direct flow references =='
rg -n -C 8 \
  '(_require_canonical_evidence_root|_select_evidence_paths|_require_output_outside_verified_set|build_evidence_manifest|write_evidence_manifest|\.absolute\(\)|\.resolve\()' \
  src/egressweave/release_evidence.py

printf '%s\n' '== Relevant test implementations =='
for f in \
  tests/test_sealed_release_evidence_root_binding.py \
  tests/test_sealed_release_evidence_symlink_boundary.py
do
  echo "-- $f"
  cat -n "$f"
done

printf '%s\n' '== Exact-head PR checks =='
gh pr view 58 --repo "$repo" \
  --json headRefOid,baseRefOid,isDraft,statusCheckRollup \
  --jq '{headRefOid,baseRefOid,isDraft,checks:[.statusCheckRollup[]|{name,status,conclusion}]}'

Length of output: 58125


🤖 web_search executed:

Official CWE-59 primary source page metadata: authoring organization and the latest modification date for "CWE-59: Improper Link Resolution Before File Access ('Link Following')".

Length of output: 12711


🤖 web_search executed:

Official POSIX Issue 7, 2018 Edition primary source bibliographic metadata for IEEE Std 1003.1-2017: authors, title, publisher, and canonical URL.

Length of output: 7352


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Relative evidence-path and output-exclusion tests =='
rg -n -C 6 \
  '(relative|cwd|chdir|output.*verified|verified.*output|outside.*verified|manifest output)' \
  tests/test_sealed_release_evidence*.py

printf '%s\n' '== Public entry-point and writer call sites =='
rg -n -C 5 \
  '(build_evidence_manifest\(|write_evidence_manifest\(|_select_evidence_paths\()' \
  src tests

printf '%s\n' '== Python version and coverage configuration =='
rg -n -C 4 \
  '(requires-python|python_requires|3\.10|3\.11|3\.12|3\.13|branch)' \
  pyproject.toml .github/workflows tests/test_quality_contracts.py 2>/dev/null || true

Length of output: 42531


@seonghobae Review completed for ccfd7809b352e95f4f6e646d0e886ac28e773698 against eb2cba679ff1202866850cb24049efad885f0dc8.

I found two documentation findings.

  1. CWE-59 reference has the wrong year.
    At Lines 227-228 in docs/sealed-release-evidence.md, the reference uses 2026. The CWE-59 primary source records its latest modification on December 11, 2025. Use 2025 for this reference.
    Source: https://cwe.mitre.org/data/definitions/59.html

  2. POSIX reference omits a joint author.
    At Lines 245-248 in docs/sealed-release-evidence.md, the reference lists only IEEE Computer Society. The POSIX Issue 7, 2018 Edition primary source identifies IEEE and The Open Group as the authors. Update the author and title metadata to match the primary source.
    Source: https://publications.opengroup.org/c181

I found no implementation defect in the requested scope.

  • The lexical absolute path must equal the strict resolved path.
  • The check rejects final-component and ancestor symbolic links.
  • A real relative path remains valid after lexical absolute-path conversion.
  • Payload selection uses the returned canonical root.
  • Manifest-output exclusion uses the same canonical root.
  • Root-resolution failures raise the stable missing or unsafe failure.
  • The inherited final-directory symlink test covers the prior duplicate request.
  • The diff does not change .github files, credentials, providers, transports, public APIs, naruon/MSA contracts, or publication workflow boundaries.
  • Exact-head Python 3.10–3.13 and package-verification checks are successful.

I did not approve this draft PR. The two documentation findings remain. SAST Semgrep, Security Scan, completed current-head automated review, independent approval, prerequisite stack integration, and repository-policy gates also remain unsatisfied.

You are interacting with an AI system.

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