Skip to content

CONTRADICTION is quadratic on a shared subject, so subject is forced 1:1 with the assertion id #40

Closed

Description

@junixlabs

Reported by a peer session, confirmed by reading engine.validate_contradictions and by
counting this repo's own model.

validate_contradictions groups current assertions by subject and flags every
pair
whose claims differ and whose selectors overlap. With no when selectors,
selectors_overlap is true, so five assertions on one subject produce C(5,2) = 10
errors and integrity goes INVALID.

The check cannot distinguish different aspects of one subject from incompatible claims
about one proposition
. "the gate refuses an unmapped file" and "the gate reports what it
excluded" are both about the gate and are not in conflict.

Confirmation that this repo has been quietly avoiding it rather than solving it:
examples/traceos-itself has 13 assertions and 13 distinct subjects. The check has
never fired here. subject currently carries no information the id does not — which is
the peer's point, arrived at from the other direction.

Not obvious what the right answer is, and the invariant budget applies: do not mint a
new field to make the error go away. Candidates, none chosen:

  • a contradiction requires the claims to be about the same proposition, which nothing
    in the model currently expresses;
  • report it as a warning about an under-specified subject rather than an error about a
    contradiction — one finding per subject, not one per pair;
  • accept that subject is a grouping key only, and delete the check.

What must not happen is a check that is dead in every model where the author was careful
and quadratic in every model where they were not.

Activity

  1. junixlabs commented on Sep 11, 2026

    @junixlabs
    OwnerAuthor

    Fixed in #53. 10 errors and INVALID became 1 warning and VALID on the reported case. CONTRADICTION now fires only when the latest observations disagree — one supported, one refuted — which is the part that is mechanically decidable; wording differences on one subject are SUBJECT_NOT_DISCRIMINATING, one finding per subject rather than one per pair. The count of pairs was never information, only arithmetic.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions