Check reference

Check ownership across a component boundary

A boundary contract needs an owner for each internal participant's behavior. cross_component_clean reports missing component declarations and gaps in that allocation.

What the check observes

For active requirements in cross-component specifications, the workflow expects traces.components. The gap analyzer then checks whether the participating internal components are covered by child requirements. Declared external parties are removed from the internal child demand. The check works from the requirement graph and its component declarations, not from an exhaustive runtime discovery of all calls.

Example: only the producer owns its half

Illustrative case. An integration requirement spans a queue producer and consumer. A producer child governs publishing, but no consumer child covers duplicate delivery. The interface can exist while one side's responsibility is still unallocated.

# Integration requirement excerpt
traces:
  components: [producer, consumer]

# Existing producer child
traces:
  satisfies: [INT-REQ-042]

# Missing work: a consumer requirement for duplicate handling

Resolve the finding

  1. Check whether each declared component genuinely participates in the contract. Correct misspelled names and identify external parties explicitly.
  2. For each internal participant, locate or author the child requirement that governs its responsibility, then link it to the boundary contract.
  3. Review the combined behavior and its integration evidence. Do not remove a real participant from the component list solely to clear the finding.

Run and interpret

proof audit --check cross_component_clean --verbose

The current implementation reports specification-stage warnings. Audit's default failure threshold is warn, so a warning may give the command a nonzero exit; repository merge enforcement is a separate CI setting.

Complete component allocation is structural coverage. It does not prove that the producer and consumer agree on ordering, retries, failures, or data representation. A passing result also cannot account for boundaries that were never declared or included in the analyzed graph.

Continue from here

Write the boundary contract. Check interface declarations.

Bring one integration requirement with an unclear producer or consumer responsibility. Bring a change to Proof.