feat(analysis): bind relation-absence refusals to an analysis-run profile - #460
Conversation
…file GAP-004 leftover / ADR 0071. Bind existing ObservationStatus and refuse_absence_as_negative to cutoff-safe relation_absence_v1 (tepp.relation_absence.v1). Mixed observed/inferred/unobserved census, AvailableTime cutoff exclusion, and MAX_EVIDENCE_UNITS fail closed. status_recovery_rate stays library-side. Distinct from outcome-order, membership-target, location-membership, copied-text, and copy-identity.
|
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.
Operator-visible GAP-004 leftover / ADR 0071. Binds existing relation_absence::ObservationStatus + refuse_absence_as_negative to relation_absence_v1 (tepp.relation_absence.v1). Inference unobserved_is_not_negative_observed_inferred_are_presence. AvailableTime cutoff exclusion and MAX_EVIDENCE_UNITS enforced. status_recovery_rate stays library-side. no_relationship is not a wire status. Distinct from #458 outcome-order, #434 membership-target, #430 location-membership, #427 copied-text, and #416 copy-identity. Author COMMENT is not independent APPROVE. Two independent current-head APPROVEs required. Exact-head Checks on eedbc0a only. Do not self-approve.
|
Hour-37 shipped this slice. Head eedbc0a. Author review is COMMENT not APPROVE. Two independent current-head APPROVEs required. Exact-head Checks on eedbc0a only. Do not self-approve. @opencode-agent review. |
| || !valid_identifier(&self.run_id) | ||
| || !valid_identifier(&self.snapshot_id) | ||
| || KnowledgeCutoff::parse_rfc3339(&self.knowledge_cutoff).is_err() | ||
| || self.pair_count < 3 |
There was a problem hiding this comment.
🟡 Oversized imported censuses pass validation
RelationAbsenceArtifact::validate accepts consistent counts above MAX_EVIDENCE_UNITS. Imported artifacts can claim censuses that the executor always rejects.
Prompt for agents
Enforce the execution corpus bound while validating RelationAbsenceArtifact in crates/analysis_engine/src/relation_absence_artifact.rs. Reject pair_count values above MAX_EVIDENCE_UNITS, which also bounds each component because the validated components sum to pair_count. Add round-trip/tampering coverage for a count-consistent artifact above the limit.
Was this helpful? React with 👍 or 👎 to provide feedback.
Consolidation status
fold_into_landing_vehicle— this profile targets #416 (feat/copy-identity-analysis-run-gap-004), not protectedmain. The comparison base has been refreshed non-destructively to the live #416 exact head0b7155cc238defb1e55129ff3000658f04b343cf. GitHub still reportsmergeable=false, so the remaining work is a real conflict-resolving fold of shared Cargo/lib/lock/docs surfaces, not a stale-base restack and not permission to land independently.Preserve cutoff-safe
relation_absence_v1execution, digest-bound census, observed/inferred presence versus unobserved refusal semantics,MAX_EVIDENCE_UNITSexecution/artifact bounds, metric-free inspect behavior, profile/snapshot/cutoff mismatch refusals, focused tests, and doctoring. ADR 0071 is implementation lineage pending #437 normalization, not independent architecture authority.RED -> repair evidence
8c6c6865e5e8ec3625e792b4c7e17c556fc4d042/ repair6b280c31687d83f35f7d5b2910266a706514ba39: impossible compact artifact counts aboveMAX_EVIDENCE_UNITSfail parse and serialization validation.aaeab0a8825ee78bb76f09329fe24cb8bf7a8341/ repair38873c326bb86ca14c3e791cabe3993c1ccbc434: equivalent RFC 3339 spellings of one cutoff compare as typedKnowledgeCutoff::instant()values.ce161e089938bcc4caceaf261478d1ea65178be6/ repairdfab4eab5ff733731e565a9348072b8dab2e4912: the domain inference claim stays inRelationAbsenceArtifact.inference_status; terminalsummary.validation_statusis"validated".Current exact source head:
dfab4eab5ff733731e565a9348072b8dab2e4912. Source/test lineage is preserved, but child-head workflows are not merge evidence for the eventual #416 surviving head.Next safe action
Fold the repaired unique source/tests/doctoring into the live #416 head while resolving shared Cargo/lib/lock/docs surfaces. Only the resulting landing head's exact workflows and qualifying independent review count.