Skip to content

ogar-action-handler: compose OGIT's allowed-edge whitelist through DR64 relcomp - #363

Merged
AdaWorldAPI merged 1 commit into
mainfrom
ccr-39105428-bcm2m2
Oct 27, 2026
Merged

AdaWorldAPI merged 1 commit into
mainfrom
ccr-39105428-bcm2m2

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What this adds

crates/ogar-action-handler/tests/ogit_schema_composition.rs is a probe that answers "which OGIT verbs can follow each other?" in two independent ways and checks that the answers agree:

  • Composition. The probe reads the allowed edges through OgitTables (the AllowedSrc / AllowedVerb / AllowedDst lanes) into two relations, targets (verb × type) and sources (type × verb). It composes them with dr-math-binding-probe's relcomp kernel over 64 × 64 Boolean registers, using blocks wherever an axis is wider than 64.
  • Enumeration. For each type, it pairs every verb that leads into the type with every verb that leads out of it. This shares no code with the composition.

dr-math-binding-probe is added as a dev-dependency (git, lance-graph main). The OGIT tree comes from the same ogit_checkout::root() that CI already uses through OGIT_FORK_PATH.

Results (local run against the OGIT checkout)

measure value
types 939
verbs 518 (328 used in allowed edges)
allowed edges 2756
chainable verb pairs 4861 of 107,584 possible among used verbs; composition = enumeration

The tests:

  • Typed compositions of named verbs match enumeration: consistsOf ; isPartOf gives 51 type pairs, isPartOf ; contains gives 3, and contains ; contains gives 122.
  • The three-verb chain consistsOf ; isPartOf ; consistsOf gives the same relation in both associations, and that relation equals enumeration. A non-empty check makes sure the comparison is not between two empty relations.
  • The inverse-candidate mirror is measured, not asserted. consistsOf has 59 type pairs and isPartOf has 142. 24 of them are mirrored between the two verbs; 35 consistsOf pairs have no isPartOf mirror, and 118 isPartOf pairs have no consistsOf mirror. So these two verbs are not maintained as inverses in OGIT.

Finding: what OGAR's reader drops

The reader rejects 102 files: 74 under /attributes/, 14 under /entities/ and 14 under /verbs/. It also leaves 508 references unresolved: 476 in TypeAttr and 32 in Allowed.

An earlier census in Python, which read the raw files, counted 12,229 chainable pairs. The same Python run over OGAR's own edges gives 4,861. The difference comes from edges in files the reader rejects. Every number in this PR therefore describes OGIT as OGAR reads it, not OGIT as it is on disk.

Disable runs (each red, then restored)

disable failing tests
D1: skip the inner blocks in the blocked composition 2
D2: build targets from the source lane 1
D3: wrong association in the three-verb chain 1
D4: enumeration oracle reads "into" from the source lane 1

Limitation

The typed tests take each named verb's relation from verb_relation, and so does the enumeration they are compared against. A bug in that extraction would therefore show up on both sides and pass. Only D2 and D4 test the lane wiring directly.

The tests check that composition and enumeration agree; they do not pin exact counts. CI reads OGIT at its moving master, so the numbers above can change from one run to the next.


Generated by Claude Code

…64 relcomp

Lab probe. OgitTables' Allowed lanes become Boolean relations and are
composed with lance-graph's relcomp kernel (dr-math-binding-probe,
dev-dependency), checked pair by pair against enumeration:

- verb x type targets composed with type x verb sources gives the
  schema-level table of chainable verb pairs (4,861 on the OGIT fork);
- named verbs as type x type relations, two-verb compositions, and a
  three-verb chain in both associations;
- the consistsOf / isPartOf inverse candidate's schema mirror is measured
  (24 of 59 / 142 pairs), not asserted.

The test also prints what the OGIT reader drops: 102 rejected files (74
attributes, 14 entities, 14 verbs) and 508 unresolved references (32 in
allowed edges).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMPWTwovjYJEUMuGPb4
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 93a06f84-1c1c-4609-84f0-8dbb4601ae63
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.

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.

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 27, 2026 13:06
@AdaWorldAPI
AdaWorldAPI merged commit 6b43a48 into main Oct 27, 2026
4 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T13:07:50.221130Z 199c67e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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.

2 participants