Skip to content

feat(vocab+class-view): mint PRICELIST + PRICELIST_RULE + UNIT_OF_MEASURE; extend ODOO_ALIASES (ProductCatalog cluster)#126

Merged
AdaWorldAPI merged 6 commits into
mainfrom
claude/odoo-aliases-pricelist-uom-productcatalog-mints
Jun 24, 2026
Merged

feat(vocab+class-view): mint PRICELIST + PRICELIST_RULE + UNIT_OF_MEASURE; extend ODOO_ALIASES (ProductCatalog cluster)#126
AdaWorldAPI merged 6 commits into
mainfrom
claude/odoo-aliases-pricelist-uom-productcatalog-mints

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Phase-3 ProductCatalog cluster (C2 — follow-up to C #111)

Closes 3 more of the 11-gap cross-axis identity finding surfaced by odoo-rs
PR #14 (alignment_pin::seeded_classes_have_compatible_ogar_identity).
After C #111 (PRODUCT + ACCOUNTING_ACCOUNT) we still had 7 missing
ODOO_ALIASES: 3 ProductCatalog + 4 HR. This PR closes the 3 ProductCatalog
ones — all stay in the 0x02XX commerce arm (no new ConceptDomain
needed). HR cluster remains queued; needs a new 0x0CXX concept domain
(keystone-style §7 review like AuthStore #110).

What lands

PRICELIST         (0x0209)  ← product.pricelist        (schema:PriceSpecification)
PRICELIST_RULE    (0x020A)  ← product.pricelist.item   (schema:UnitPriceSpecification)
UNIT_OF_MEASURE   (0x020B)  ← uom.uom                  (qudt:Unit)

Synchronised across all four registries

File Change
ogar-vocab/src/lib.rs CODEBOOK +3 rows (pricelist 0x0209, pricelist_rule 0x020A, unit_of_measure 0x020B)
ogar-vocab/src/lib.rs class_ids mod +3 typed consts (PRICELIST, PRICELIST_RULE, UNIT_OF_MEASURE)
ogar-vocab/src/lib.rs class_ids::ALL +3 entries
ogar-vocab/src/lib.rs builders +3 pricelist() / pricelist_rule() / unit_of_measure() Class fns
ogar-vocab/src/lib.rs all_promoted_classes() +3 calls in 0x02XX block
ogar-vocab/src/lib.rs tests commerce_concept loop +3 names; concepts_in_domain(Commerce).count(): 8 → 11
ogar-vocab/src/ports.rs ODOO_ALIASES +3 entries (product.pricelist, product.pricelist.item, uom.uom); count-drift assert 13 → 16
ogar-class-view/src/lib.rs +3 imports + +3 entries in all_canonical_classes()

Class attribute shapes

Schema-aligned minimal attributes (schema:PriceSpecification / schema:UnitPriceSpecification / qudt:Unit):

pricelist():        name, currency (ISO 4217), active (bool)
pricelist_rule():   price (decimal), min_quantity, max_quantity (decimal — 0 = unbounded by convention), pricelist_ref
unit_of_measure():  name, symbol, factor (decimal — conversion factor to base unit), uom_type ('reference'/'bigger'/'smaller')

Same density as commercial_document(), tax_policy(), currency_policy(),
product(), accounting_account() — small typed-attribute set that
downstream renderers extend per app.

Phase-3 status after this PR

Tests

  • ogar-vocab: 93 passed
  • ogar-class-view: 11 passed
  • clippy + fmt clean

Cross-repo refs

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Copy link
Copy Markdown
Owner Author

Rebase fix — CI failure resolved.

The initial commits on this branch were applied via the API against an older snapshot of main (ac4b4162, post-#111) that predated the Anatomy (0x0AXXanatomical_structure, skeleton, bone, joint) and Automation (0x0CXX) domain landings. The API uploads effectively regressed those entries, which manifested as the ogar-fma-skeleton build error:

error[E0425]: cannot find value `BONE` in module `ogar_vocab::class_ids`
  --> crates/ogar-fma-skeleton/src/lib.rs:82:54
   |
82 | pub const BONE_CONCEPT: u16 = ogar_vocab::class_ids::BONE;

BONE was correctly minted on main as 0x0A03 but my upload had the pre-Anatomy class_ids mod.

Just pushed three fixup commits that re-fetch each file from current main, splice in only the 3 PRICELIST/PRICELIST_RULE/UNIT_OF_MEASURE deltas, and re-upload. Anatomy and Automation entries are now preserved.

Verified:

  • CODEBOOK retains ("anatomical_structure", 0x0A01), ("skeleton", 0x0A02), ("bone", 0x0A03), ("joint", 0x0A04) + the Automation entries
  • class_ids::ALL retains them
  • class_ids mod retains ANATOMICAL_STRUCTURE, SKELETON, BONE, JOINT consts
  • all_promoted_classes() retains their builder calls
  • My 3 new entries (pricelist, pricelist_rule, unit_of_measure) layered on top

Sorry for the noise — same drift pattern as E-OGAR-AUTH-MIRROR-DRIFT (filed in lance-graph today): API-based edits need to pull-then-splice, not upload-pre-edited-local. Adding this as a lesson to the EPIPHANIES once it merges.

CI should now go green.

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