fix(acquisition): authenticate data-room manifest evidence - #69
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (38)
📝 WalkthroughWalkthrough데이터룸 manifest와 retained evidence를 오프라인에서 재검증하는 무결성 모듈을 추가했다. Exact Git checkout, descriptor-safe 파일 처리, 외부 receipt 검증, 안전한 출력, readiness 및 transfer evidence 검증을 release 흐름에 연결했다. Changes취득 데이터룸 무결성
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head review of e76d51ada7d7560dde87ca7ecb5cd42acc149178: one current trust-boundary finding remains actionable. This is not an approval.
The new manifest and audit entrypoints bind the report to git rev-parse HEAD, but they execute and hash the current working tree without proving tracked source/evidence bytes still equal that commit. A dirty checkout can therefore keep source.commitSha=<HEAD> while changing a tracked catalog file, tracked evidence document, scripts/acquisition-data-room-integrity-audit.mjs, or scripts/lib/acquisition-data-room-integrity.mjs; the resulting manifest/audit can still describe itself as exact-commit-bound even though the bytes being evaluated are not from that commit. The static import also loads the verifier before any checkout-integrity refusal could run.
Please add RED regressions that keep HEAD fixed while mutating tracked evidence/control files and prove both acquisition:manifest and acquisition:integrity fail closed. Then make the entrypoints authenticate the tracked checkout before evidence use (configuration-isolated Git, bounded output, no network), and load the verifier only after that preflight or otherwise bind verifier/catalog bytes to the exact Git object. Keep intentionally untracked retained acquisition artifacts usable; the requirement is that tracked source/control/evidence cannot drift while still being labeled as the exact audited commit. Document the trust root and preserve the existing offline final-audit boundary.
Preserve protected-main package-manager, workflow, operations, and newer evidence-parser behavior while replaying the bounded descriptor-safe data-room, Git preflight, and private-output core from PR #69. Keep exact-release rights and acquisition-readiness semantic merge as explicit remaining work instead of overwriting newer protected logic.
Reintroduce the realistic report-only acquisition audit regression suite for owner/legal rights, retained digest bindings, exact-release artifact metadata, package-license consistency, contributor IP evidence, and symlink-resistant retained paths. Current protected audit logic does not yet enforce these contracts, so this commit intentionally establishes the RED boundary before the semantic source merge.
Semantically merge the predecessor transfer-rights validator onto the current protected acquisition audit without regressing fatal UTF-8 or decoded duplicate-key rejection. Require owner/legal decision evidence, repository-rights digest binding, package-license consistency, exact-release SBOM/license/NOTICE/provenance and artifact-rights metadata, contributor IP evidence, and symlink-resistant bounded retained reads before transfer evidence can pass.
Add exact-release artifact-rights duplicate-key regression coverage and keep the protected top-level decoded duplicate-key contract executable after the transfer-rights semantic merge. These tests ensure acquisition licensing evidence cannot reintroduce last-key-wins ambiguity while preserving the newer protected JSON parser behavior.
Restore the end-to-end acquisition audit suite on the rebuilt branch so successful evidence must exercise production pilot, revenue, transfer-rights, saleable-readiness and data-room paths together, while placeholder, stale, missing and report-only evidence remains fail-closed or explicitly NOT_READY as designed.
Restore buyer/operator templates for transfer-rights and exact-release artifact-rights metadata using explicit replacement markers rather than invented legal decisions, license expressions, release identities, digests, or contributor-ownership evidence.
Restore the predecessor's resolved acquisition review regression suite on the rebuilt current-main lineage, covering bounded catalog shape, zero-byte retained evidence, read-bound handling, unsupported kinds, external receipt bounds, canonical paths, direct command materialization, isolated Git stat policy and owner-only retained-output modes.
Record the current protected main as the second parent without changing the already-converged acquisition tree. This repairs live-base ancestry after #400 while preserving the branch's acquisition-only semantic delta and avoids destructive history rewriting.
Restore the current protected-main repository-locator source, OpenAPI/schema contracts, doctoring, and coverage regressions that were unintentionally shadowed by the ancestry-only merge. Keep the acquisition-integrity tree delta while preserving #400 byte-for-byte on its nine owned paths.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
Purpose
Hardens Noema's acquisition data-room and transfer-readiness evidence so stored manifest booleans, mutable paths, Git worktree drift, path substitution, symlink redirection, parser ambiguity, or unbound legal/IP metadata cannot manufacture a buyer PASS. This PR does not choose an outbound license, manufacture legal/IP authority, or claim acquisition readiness.
Current exact source
main.main:f5c41fcbb55200e43445ad1c9be7dc5366df62bf.fix/acquisition-manifest-integrity.90501943fd5b1e493ae2255dcd5e1c46af144be7.f5c41fcbb55200e43445ad1c9be7dc5366df62bf.Protected-main convergence repair
The stale acquisition branch was brought onto the current protected base without force-push or destructive rebase. During that ancestry repair, a two-parent merge commit initially retained the predecessor tree and shadowed #400 repository-locator paths. That semantic regression was detected by fresh protected-main comparison and repaired before this current lineage. The current head now descends directly from the exact protected base and its diff is confined to the acquisition lane plus the current-main JSON-integrity regression that this PR exercises.
Reconstructed acquisition-integrity core
The current head preserves protected-main package-manager/workflow/operations/evidence-parser controls while restoring the acquisition data-room integrity boundary:
skip-worktree/assume-unchanged, dirty index/worktree, filter/worktree redirection, unsupported Git modes and source movement fail-closed handling;O_NOFOLLOWbounded evidence reads with path/descriptor identity checks;0600descriptor permissions, identity revalidation and no unsafe early truncation;passed,finalGatePassed, missing-list or digest claims;Transfer-rights boundary
The transfer validator requires explicit owner/legal decision evidence, digest-bound repository rights, exact-release SBOM/license/NOTICE/provenance/artifact-rights evidence, repository/tag/commit identity binding, OCI-license consistency, contributor ownership/assignment evidence, bounded stable reads, fatal UTF-8, and duplicate-decoded-key rejection. No outbound license or legal authority is inferred by this PR.
Exact-head CI RCA and repair
Predecessor exact head
09fb39a32051ac4cec8824d6e221bbdf93bfbfc4had reviewer-ci and central Security Scan success but application CI31976025877failed inrelease verify. Exact check annotations identified four concrete test failures:test/acquisition-json-integrity-current-main.test.tsexpectedread_errorfor a directory while the hardened stable-reader contract correctly classified non-regular evidence asunsafe_or_unreadable.Repairs on the existing canonical branch:
820711b814bc0a49497545a3311957b56c2856e3aligns the non-regular filesystem fixture with the intentional fail-closedunsafe_or_unreadableclassification and renames the test accordingly; malformed UTF-8 remains a separateinvalid_utf8class.a5f70008139ed248ab1e5c6db3af3afcea2db44bgives the full entrypoint symlink integration tests an explicit bounded test budget consistent with their existing per-child 30-second process timeout; child timeout/error and exit-code assertions remain unchanged.90501943fd5b1e493ae2255dcd5e1c46af144be7gives the three-entrypoint owner-only-mode integration regression a bounded 95-second test budget while retaining all per-process 30-second hard bounds, error assertions, exact exit-code checks, and permission assertions.These changes do not loosen production security, coverage thresholds, or child-process timeout/fail-closed behavior; they prevent Vitest's generic 5-second unit-test budget from pre-empting intentionally full CLI integration checks under CI load.
Current exact-head evidence boundary
For exact head
90501943fd5b1e493ae2255dcd5e1c46af144be7:31977452218: queued;31977452206: queued;31977452212: queued;Queued evidence is non-passing. Predecessor success does not transfer.
Intentionally excluded stale/global claims
This reconstruction does not replay stale CI/reviewer workflow files or broad historical documentation over current protected truth. Real production KPI, production deployment/environment governance, release publication, revenue/pipeline, customer validation, and owner/legal/contributor-IP evidence remain separate protected-main/acquisition acceptance requirements.
No release, deployment, audit waiver, protection bypass, outbound-license choice, synthetic approval, or acquisition-ready claim is made.
Related: #3, #5, #27, #29, #40, #68.
Summary by CodeRabbit
새 기능
문서
검증