feat(analysis): bind inferred-status refusals to an analysis-run profile - #473
Conversation
GAP-004 leftover / ADR 0073. Bind existing EvidenceStatus, refuse_inferred_as_observed, and refuse_inferred_as_transition to cutoff-safe inferred_status_v1. Mixed observed/inferred corpora emit a digest-bound census. identity_recovery_rate stays library-side. Fixes #472.
seonghobae
left a comment
There was a problem hiding this comment.
Operator-visible GAP-004 leftover / ADR 0073. Binds existing inferred_status::EvidenceStatus + refuse_inferred_as_observed + refuse_inferred_as_transition to inferred_status_v1 (tepp.inferred_status.v1). Inference inferred_is_not_observed_and_not_transition. AvailableTime cutoff exclusion and MAX_EVIDENCE_UNITS enforced. identity_recovery_rate stays library-side. unobserved and no_relationship are not wire statuses. Distinct from #461 episode-membership, #460 relation-absence, #458 outcome-order, #434 membership-target, #430 location-membership, and #416 copy-identity. Author COMMENT is not independent APPROVE. Two independent current-head APPROVEs required. Exact-head Checks on 3c66702 only. Do not self-approve.
📝 WalkthroughWalkthrough
Changes추론 상태 분석 실행 프로필
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to This PR adds a public inferred-status analysis profile and artifact, but the current implementation can accept an artifact claiming more evidence than the enforced limit, while authorization/provenance and failed-run completion remain dependent on callers. It is not merge-ready until the limit validation is fixed and the boundary and failure-handling ownership are explicitly addressed. Sequence Diagram(s)sequenceDiagram
participant 실행요청
participant execute_inferred_status_run
participant inferred_status
participant 종료결과
실행요청->>execute_inferred_status_run: 요청·수락·snapshot·cutoff 검증
execute_inferred_status_run->>inferred_status: 증거 집계 및 inferred 상태 거부
inferred_status-->>execute_inferred_status_run: 관찰·추론 census와 거부 카운터
execute_inferred_status_run->>종료결과: SHA-256 digest-bound 결과 생성
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Linked Issues checkExplanation PR은 Full details: Docstring CoverageExplanation Docstring coverage is 51.72% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 29 functions across 3 files. (7 skipped: 7 unsupported.)
✨ Finishing Touches 💡 1📝 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 |
Use the review-reproduced oversized compact artifact as RED evidence. Enforce the same MAX_EVIDENCE_UNITS invariant at artifact deserialization/serialization that execution already enforces, and add regression coverage for both directions.
Document the artifact-count invariant and exact-head landing procedure, and collapse the duplicated documentation map into one canonical index so the new doctoring entry cannot diverge between copies.
e0e4480
into
feat/copy-identity-analysis-run-gap-004
Consolidation status
fold_into_landing_vehicle— this PR is now retargeted directly onto the provisional Validation / Analysis Run simple-refusal landing vehicle #416 (feat/copy-identity-analysis-run-gap-004). It binds the existinginferred_statusrefusal family into that bounded-context vehicle; it is not an independently shippable bounded context. Preserve its source, focused tests, doctoring and review/RED-GREEN evidence before closing it. ADR 0073 remains implementation lineage pending #437 normalization, not per-rule architecture authority.Current micro-profile exact head:
9ae0488e44bc0775b2289c71d83d88c57e660b0d.Current landing base at retarget:
#416@a6ba5d79c8d9acc1e7b4a53b3be5ef3d70ab19e7.GitHub currently reports this retargeted stack as non-mergeable because #416 and this branch independently changed the shared Analysis Run integration files (
Cargo.toml,lib.rs, lockfile and common documentation/index surfaces). That is a consolidation conflict, not permission to merge the micro-profile independently. Resolve it by preserving #416's copy-identity repairs and this branch's inferred-status implementation/tests in one landing head; do not overwrite either side and do not close this PR until the surviving head contains the unique source/test evidence.Current repair
Fresh review found that execution enforced
MAX_EVIDENCE_UNITSbut a compact serializedInferredStatusArtifactcould claim a larger census because artifact validation lacked the same upper bound. The repair on this branch makes serialization/deserialization enforceevidence_count <= MAX_EVIDENCE_UNITS, with a compact max+1 regression proving an impossible census fails closed without allocating an oversized evidence vector. The documentation repair also removed the duplicated secondDOCUMENTATION.mdmap and made the exact-head hosted verification rule code-current.The profile preserves:
AvailableTimeexclusion;observed/inferredcensus;identity_recovery_ratestays library-side andscientific_acceptanceis not exposed;Landing gate
After conflict resolution, the surviving #416 exact head must reacquire hosted Rust/documentation/security/SAST evidence and qualifying independent review. Queued, stale, predecessor-head, or this micro-profile's prior evidence does not transfer. Do not self-approve, bypass protection, force-push, or treat this Draft as a production dependency.