Skip to content

feat(analysis): bind outcome-order refusals to an analysis-run profile - #458

Draft
seonghobae wants to merge 7 commits into
feat/copy-identity-analysis-run-gap-004from
feat/outcome-order-analysis-run-gap-004
Draft

feat(analysis): bind outcome-order refusals to an analysis-run profile#458
seonghobae wants to merge 7 commits into
feat/copy-identity-analysis-run-gap-004from
feat/outcome-order-analysis-run-gap-004

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Consolidation status

fold_into_landing_vehicle — this profile targets #416 (feat/copy-identity-analysis-run-gap-004), not protected main. The comparison base has been refreshed non-destructively to the live #416 exact head 0b7155cc238defb1e55129ff3000658f04b343cf. GitHub still reports mergeable=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_v1 execution, digest-bound census, forward input_to / process_to versus provenance outcome_of, MAX_EVIDENCE_UNITS execution/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

  • RED 10a9cdaec2840bafd0b04553843d07ac30e2cbbe / repair 12dc5ea81d938a555018ac90292c71f2b54176f9: impossible compact artifact counts above MAX_EVIDENCE_UNITS fail parse and serialization validation.
  • RED 6bf3495a73d5cfb57ee20b95e84f10529c0ffd07 / repair 44bc26b142677aeba3c8f2a26931a5889cc342ef: equivalent RFC 3339 spellings of one cutoff compare as typed KnowledgeCutoff::instant() values.
  • RED 6946b5dd7d6badefc11a6e557fc89c2e93075355 / repair 08165e3b3c929b4ae77396689549f72723ff8ff5: the domain inference claim stays in OutcomeOrderArtifact.inference_status; terminal summary.validation_status is "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.

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.
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor Author

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.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment on lines +171 to +175
|| 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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant