Commit 29336f4
committed
feat(ar_shape): structural-hardening seed — bidirectional canonical-relation participation filter
Phase 1 of operator's "all of the above" 2026-06-19. Adds
classes_participating_in_canonical_relations(canonical_triples, ns) →
BTreeSet<String> — returns class IRIs that appear as either subject OR
object of any OGIT canonical relation after codebook translation.
Bidirectional: leaf classes (currency, tax target) are usually
referenced AS objects (Document.currency_id → res_currency) rather
than emitting Many2one out. A subject-only check would falsely flag
them as inert.
Object-side IRI shapes handled:
- Class IRI (<ns><Class>) — Odoo-translated codebook output names the
comodel directly.
- Field IRI (<ns><Class>.<assoc>) — Rails-translated codebook output
keeps field IRI verbatim; leading <Class> is the SOURCE, already
covered by subject side.
New test lexical_candidates_survive_canonical_relation_participation_check
verifies all 6 lexical-detection candidates on both corpora (OSB
InvoiceLineItem/Invoice/Tax/Client/Currency/Payment + Odoo
account_move_line/account_move/account_tax/res_partner/res_currency/
account_payment) survive the participation filter. Initial subject-only
implementation surfaced res_currency as zero-subject-relations (the
right finding) — fixed by adding object-side coverage.
Direction-blind today; this is the seed for future
class_has_outbound_relation_to_<concept> /
class_has_inbound_relation_from_<concept> refinements that wire the
concept-to-concept cascade (TaxPolicy needs LineItem participation;
CommercialDocument needs LineItem participation; BillingParty needs
CommercialDocument; etc.).
Plus all 19 prior tests still green → 20/20 total.
OGAR alignment update (other-session feedback, 2026-06-19):
AdaWorldAPI/OGAR#63 merged — promoted ProjectStatus (Redmine
IssueStatus + OP Status → 0x0005) + ProjectType (Redmine Tracker +
OP Type → 0x0006). CODEBOOK now at 6 entries, all project-management
domain. My commerce-domain CanonicalConcept candidates would slot at
0x0007+ when the OGAR codebook promotion PR (Phase 3 of "all of the
above") opens.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx1 parent ee7b33a commit 29336f4
1 file changed
Lines changed: 113 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
525 | 525 | | |
526 | 526 | | |
527 | 527 | | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
528 | 589 | | |
529 | 590 | | |
530 | 591 | | |
| |||
1273 | 1334 | | |
1274 | 1335 | | |
1275 | 1336 | | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
1276 | 1389 | | |
1277 | 1390 | | |
1278 | 1391 | | |
| |||
0 commit comments