feat(reviewer): bind evidence receipts to exact claims - #556
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 owner review for 2571d7f996161df32227a27fc66b502bbb1b5d31.
Blocking trust-boundary finding: admit_claim_evidence() validates a caller-supplied model/Pydantic payload and binds only shared identity, required kind, claim digest, artifact digest, and artifact size. It does not authenticate a producer envelope or bind the variant's semantic evidence fields to the exact artifact. With the same admitted claim/artifact bytes, an attacker can change ExecutionClaimReceipt.argv, exit_code, stdout_sha256, stderr_sha256, isolation_policy, or network_policy; likewise SourceClaimReceipt.source_path/source_line/source_line_sha256 and ResearchClaimReceipt.source_uri/source_revision/excerpt_sha256/retrieval_policy can be substituted while admission still succeeds. The current hostile tests mutate only shared identity/digest fields and therefore do not expose this.
The docstring and PR claim a “sealed/producer-issued” receipt, but the API accepts an arbitrary payload without verifying a trusted producer signature/MAC or looking up a trusted immutable manifest. Freezing a Pydantic model does not establish provenance. Add RED cases that keep the exact artifact fixed while mutating every meaning-bearing variant field, then make the publication boundary resolve a model-cited receipt ID from a trusted producer manifest/index (or verify an authenticated envelope that covers the complete canonical payload). The model must not submit the authoritative receipt dict. Extend the real producer → gate → finding/publication path with positive/negative integration tests; a standalone schema module alone does not close .github#1641 / Concept35.
This is an owner-side contract review, not approval, release evidence, or permission for the central consumer to proceed. Preserve the existing identity/digest hardening; the missing delta is complete producer-envelope binding and actual publication-boundary integration.
|
Read-only review follow-up on exact head
This is not completion of issue #555 or the Concept35 consumer finding. Existing |
|
Central owner handoff for task Canonical repair remains this PR; no duplicate PR/writer/kernel was created. Exact head: Observable delta:
Exact-head hosted handles are non-terminal: Release remains blocked on adapting the existing central |
|
Repair finding at exact head 676747e: .github/workflows/central-review.yml attests |
|
Central owner handoff update for task Canonical repair remains this PR and the existing writer/branch; no duplicate PR, writer, kernel, regex authority, COMMENT conversion, actor bypass, or provider bypass was created. Exact head: New source→execution authority repair:
Fresh local verification on the exact branch files:
Exact-head hosted handles are non-terminal and are not reported as GREEN: Release remains blocked on adapting the existing central |
|
Follow-up to issuecomment-5564882501: independently inspected 45ecc9d and ran a static assertion confirming both exact subject/verification pairs and absence of the old wildcard. The original omitted-subject defect is repaired in source; hosted attestation remains unverified. Current head 5121e1e additionally binds SourceClaimReceipt path/line to Finding and adds a wrong-path regression. Remaining review scope: wrong-line/positive source path tests, attestation pair regression, and independently required evidence kind plus binding of the actual finding claim (including runtime assertions in summary/recommendation). Citing a correct source line does not establish that a valid Cargo option is unsupported. Current CI 34082067236 is queued; previous 34081969490 is cancelled. No approval or protected-merge claim. |
|
추가 검토: exact head 174d0b09ea8499647124488f88e7d1226165e7fa의 admit_review_verdict_evidence는 summary/recommendation만 치환하고 모델 verdict·severity·finding 자체를 보존합니다. 새 test_source_receipt_cannot_publish_unreceipted_runtime_claims는 유효한 Cargo 명령의 소스 영수증을 제시한 거짓 runtime finding에 대해 REQUEST_CHANGES 게시 1회를 기대합니다. 따라서 문구상의 미근거 실행 주장은 사라져도 소스 존재만으로 잘못된 차단 판정이 유지됩니다. 이 테스트/구현은 claim-level 근거 검증의 완료 기준이 될 수 없습니다. 실제 결함 주장과 독립적으로 요구되는 evidence kind를 연결하고, 해당 반례가 일반 문구로 세탁된 차단 판정으로 게시되지 않는 RED→GREEN을 추가해 주세요. 유효한 source-only finding까지 일괄 제거하지 말고, 미판정 증거와 검증된 결함·승인 권한을 분리해야 합니다. 이것은 exact-source/test 기대값 검토이며 hosted 실행 결과나 승인/병합 허가가 아닙니다. |
|
Fresh current-head review note on |
Scope and stack
Stacked on reviewer-hardening PR #535 and owned by issue #555. This PR's current base snapshot remains predecessor #535
a6fc483fe9537c5881114db82cc9f741eb8331b1, while live #535 is329069405181921091397d31687f2c5f7a98ae54. The child therefore does not claim to contain later parent governance/routing repair. Integrate #536, then converge/integrate #535 normally; only then ordinary/non-force semantic restack/retarget this lane onto protectedmainwhile preserving the exact-claim receipt delta. No #535/#536 delta is retired or copied here.Consumer RED
Central
ContextualWisdomLab/.github#1641@b8c986e2406beb37d254acd4c5df6389038b55f2preserves the original Concept35 sentence and synonym. Hosted run34073137064, job101594104816, failed only those two cases withDID NOT RAISE; full result was2 failed, 2974 passed, 1 skipped, 21 subtests passed. This corpus stays RED until an immutable Noema release is consumed and the original cases rerun GREEN.Owner RED → repair lineage
Current exact head is
fecb03d9c632f90f290f921c1d6e90ce86ca5305.The source-evidence path remains intact: exact target checkout → bounded source receipt manifest → separate attestation → exact digest/repository/head/workflow/run/attempt verification → immutable trusted index → exact
<claim> [receipt:<id>]model reference → admission before deterministic gates/publication. Source receipts remain path/line-bound and cannot authorize execution/research facts.This revision advances the real execution boundary instead of adding another semantic regex:
f2993810dbd7a862678460c5f14055d6bc932e7bfirst requires a public trustedsandboxed_verifyexecution adapter. The predecessor has no such port, so this is a deterministic RED; it was immediately superseded and is not claimed as hosted RED.ea751bc99be9f8035a089e55538886a820a905c0addssandboxed_verify_claim_evidence.pyand delegates canonical artifact/receipt construction to the existingproduce_execution_claim_receiptkernel.fecb03d9c632f90f290f921c1d6e90ce86ca5305exports that adapter through the reviewer package port.The adapter accepts only the reviewed immutable central helper revision
c9052e607e5f3cc76e73207e7786b21500721b79, validates the currentSANDBOXED_VERIFY_RESULTschema withextra=forbid, and requires the command's exact captured stdout/stderr separately. Marker-only text therefore still cannot mint trusted execution evidence. Unreviewed helper revisions, non-emptyallowed_envcapabilities, malformed/expanded markers, empty commands and false sandbox markers fail closed.The receipt deliberately records the current central helper's actual guarantees rather than promoting metadata into stronger claims: workspace copy + scrubbed environment are recorded, OS process isolation is
none, and--networkis recorded as declared metadata withenforced=false. Provider/model routing, quarantine/security verdicts and outbound-policy authority remain outside Noema.Hosted verification
Fresh exact-head runs for
fecb03d...areci 34089768682(queued),reviewer-ci 34089768665(pending), andpatch-validator-image 34089768733(queued). No predecessor result transfers and no GREEN is claimed. There is no Security Scan while this PR remains intentionally feature-base stacked; live ruleset18794436targets~DEFAULT_BRANCH, so the absence is neither GREEN nor a routing failure. After prerequisite integration and retarget/restack to protectedmain, a fresh exact-head Security terminal success is mandatory with the other gates.Remaining delivery boundary
The adapter is now Noema production code, but the external execution producer is not yet end-to-end delivered. Current central
sandboxed_verify.pyemits command/result metadata but does not carry exact stdout/stderr bytes in its marker; the released consumer must capture those streams out of band and invoke this versioned Noema adapter rather than trusting marker text. Trusted research retrieval still needs a content-addressed revision/excerpt/retrieval-policy producer using the same manifest/index. Then #536→#535→#556 must integrate normally, an immutable Noema release must be published with release evidence, and.github#1641must consume that release and rerun the original hosted RED corpus GREEN.Keep Draft. No merge, consumer GREEN, or release claim is made from this head.