feat(analysis): bind outcome-order refusals to an analysis-run profile - #458
Conversation
GAP-004 leftover / ADR 0070. Bind existing OutcomeKind, refuse_reverse_ipo_order, and refuse_outcome_of_as_transition to cutoff-safe outcome_order_v1 (tepp.outcome_order.v1). Mixed IPO census, AvailableTime cutoff exclusion, and MAX_EVIDENCE_UNITS fail closed. kind_recovery_rate stays library-side. Distinct from membership-target, location-membership, copied-text, copy-identity, and citation-edge.
|
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 0070. Binds existing outcome_order::OutcomeKind + refuse_reverse_ipo_order + refuse_outcome_of_as_transition to outcome_order_v1 (tepp.outcome_order.v1). Inference input_process_forward_outcome_of_is_not_transition. AvailableTime cutoff exclusion and MAX_EVIDENCE_UNITS enforced. kind_recovery_rate stays library-side. Distinct from #434 membership-target, #430 location-membership, #398 membership-posterior ICC, #427 copied-text, #426 citation-edge, #416 copy-identity. Two independent current-head APPROVEs required. Author/bot COMMENTED is not APPROVE. cwl-noema-review[bot] is not independent. Exact-head Checks on 28afefd only. Do not self-approve.
|
Hour-36 shipped this slice. Head 28afefd. Author review 5078486082 is COMMENT not APPROVE. Two independent current-head APPROVEs required. Exact-head Checks on 28afefd only. Do not self-approve. @opencode-agent review. |
| || self.edge_count < 3 | ||
| || self.input_to_count == 0 | ||
| || self.process_to_count == 0 | ||
| || self.outcome_of_count == 0 | ||
| || kind_sum != Some(self.edge_count) |
There was a problem hiding this comment.
🟡 Artifact counts bypass execution limit
validate accepts internally consistent counts up to u64::MAX, while execution admits only 100,000 edges. Consumers can accept impossible censuses from deserialized artifacts.
Prompt for agents
Bound deserialized OutcomeOrderArtifact counts to the same MAX_EVIDENCE_UNITS limit enforced by execute_outcome_order_run. Update OutcomeOrderArtifact::validate in crates/analysis_engine/src/outcome_order_artifact.rs so edge_count cannot exceed the execution limit; consistency then bounds each per-kind count. Add round-trip/tampering coverage for a count above the limit and account for usize/u64 conversion portability.
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
outcome_order_v1execution, digest-bound census, forwardinput_to/process_toversus provenanceoutcome_of,MAX_EVIDENCE_UNITSexecution/artifact bounds, metric-free inspect boundary, profile/snapshot/cutoff mismatch refusals, focused tests, and doctoring. ADR 0070 is implementation lineage pending #437 normalization, not independent architecture authority.RED -> repair evidence
10a9cdaec2840bafd0b04553843d07ac30e2cbbe/ repair12dc5ea81d938a555018ac90292c71f2b54176f9: impossible compact artifact counts aboveMAX_EVIDENCE_UNITSfail parse and serialization validation.6bf3495a73d5cfb57ee20b95e84f10529c0ffd07/ repair44bc26b142677aeba3c8f2a26931a5889cc342ef: equivalent RFC 3339 spellings of one cutoff compare as typedKnowledgeCutoff::instant()values.6946b5dd7d6badefc11a6e557fc89c2e93075355/ repair08165e3b3c929b4ae77396689549f72723ff8ff5: the domain inference claim stays inOutcomeOrderArtifact.inference_status; terminalsummary.validation_statusis"validated".Current exact source head:
08165e3b3c929b4ae77396689549f72723ff8ff5. 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.