feat(core): add fail-closed benchmark release decision contract - #218
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthrough새로운 공개 Changes릴리스 수용
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to The release-decision contract still accepts limitation text with surrounding spaces, which can let equivalent limitations evade duplicate detection and create ambiguous buyer-visible release reports. This is localized but affects fail-closed correctness; merge should wait for the input-validation fix and documentation follow-up. Sequence Diagram(s)sequenceDiagram
participant BenchmarkEvidence
participant decide_release
participant DeclaredLimitation
participant ReleaseDecisionReport
BenchmarkEvidence->>decide_release: 결과 전달
DeclaredLimitation->>decide_release: 제한사항 전달
decide_release->>decide_release: 입력과 필수 스위트 검증
decide_release->>ReleaseDecisionReport: 릴리스 결정 및 증거 반환
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 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 |
Buyer-visible gap
Issue #203 requires a deterministic commercial-release decision that cannot promote missing, inconclusive, duplicated, failed, oversized, ambiguously represented, or non-canonical mandatory-suite evidence into acceptance. This PR owns only that pure fail-closed decision boundary; benchmark execution, thresholds, corpus licensing/statistics, signed artifact binding, and suite runners remain outside scope.
Implemented boundary
originweave_core::release_acceptanceprovides the five mandatory suite identities; deterministicaccepted/accepted_with_declared_limitations/rejected/inconclusiveaggregation; exact failed/inconclusive/missing evidence; fail-closed duplicate-suite and duplicate-limitation-claim rejection; bounded buyer-visible limitations; Unicode 17.0.0 presentation-safety validation; NFC and canonical surrounding-whitespace rejection; meaningful alphanumeric-content validation; and no model/status/author override path.A known threshold failure remains
rejectedeven when other evidence is incomplete. Missing or inconclusive mandatory evidence is never promoted to acceptance.Current-head repair
A current-head coverage failure exposed a real evidence defect in the public generic
DeclaredLimitation::new(impl Into<String>, impl Into<String>)boundary: LLVM emitted coverage mappings for multiple caller-specific monomorphizations of the validation-heavy constructor, leaving exact branch coverage below the repository's required 100% even though the behavioral regressions passed.Exact repair commit
911ea33d8a5aca7673307bb6fdcad4b450f5c111keeps the public API unchanged but converts both inputs to ownedStringand delegates all validation to one private monomorphicfrom_owned_texthelper. The validation order and fail-closed semantics remain unchanged: empty/whitespace-only, surrounding whitespace, over-budget UTF-8 text, non-NFC Unicode, disallowed presentation/control characters, and punctuation-only content are still rejected with typed errors. No gate or authority was weakened.Exact-current state and evidence
Protected
mainis exactb05d5acca82b9d916ada2c8e82f59f92a89817e1. This PR is open, non-draft, mergeable, and exact head911ea33d8a5aca7673307bb6fdcad4b450f5c111against that base.On unchanged exact head
911ea33d8a5aca7673307bb6fdcad4b450f5c111:Rust contracts: success on the exact head;Production coverage: success on the exact head;scripts/ci/verify_coverage.pyreports production functions, lines, regions, and branches are all 100% covered;9621936916,exact-coverage-911ea33d8a5aca7673307bb6fdcad4b450f5c111, SHA-2562812d6958489fc7196fa56988efef6ac19a9ce8ecec40245f1c11b530a15c0e1;opencode-review,noema-review, coverage evidence/source-tree, Semgrep OSS/SAST, Trivy filesystem scan, OSV scanner, dependency review, and Scorecard exact-head checks are success where bound to this PR/head;strixremains in progress and therefore is not passing evidence.Formal review inventory contains automated
COMMENTEDevidence only; GitHub records no qualifying counted independentAPPROVEDreview. Fresh inline-thread inventory has no unresolved thread: the punctuation-only defect is fixed, and the remaining validation-order and Unicode-superset notes were verified as informational fail-closed behavior before resolution.No predecessor-head check, review, scanner result, status, synthetic merge, queued/skipped/cancelled evidence, or model output is promoted as current-head proof or independent approval.
Scope and authority boundary
This PR does not claim release readiness and does not implement #201 signed-artifact authority, #202 enterprise operability, browser/security/recovery suite runners, benchmark persistence, model routing, or benchmark statistics. It introduces no database and no workflow mutation.
Protected-main
AGENTS.mdremains authoritative. Scheduled repository work does not merge, self-approve, tag, publish, mutate workflows, add secrets, force-push, destructively rebase, or weaken gates.