You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase 2 of operator's "all of the above" 2026-06-19. Smoke target B
(Spree↔Odoo commerce overlap) landed with real harvested triples.
What landed:
1. Spree harvest fixture — pulled spree/spree upstream zipball
(85 MB, no AdaWorldAPI fork available; canon's forks-only rule
applies to Cargo deps, not read-only fixture harvests). Ran
ruff_ruby_spo on spree/core: 289 models, 7954 triples, 909 KB
ndjson → checked in as
crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson.
2. CanonicalConcept enum 6 → 11 variants. New (all from smoke
target B):
- SalesOrder (Spree::Order + odoo:sale_order)
- SalesOrderLine (Spree::LineItem + odoo:sale_order_line)
- FulfillmentFlow (Spree::Shipment + odoo:stock_picking)
- InventoryMovement (Spree::InventoryUnit + odoo:stock_move)
- ProductOffering (Spree::Product / Variant + odoo:product_product /
product_template)
3. CommercialDocument detector narrowed: drops the "order" ending so
sale_order / Spree::Order route to SalesOrder (a distinct
commerce-side concept), keeping CommercialDocument as the
accounting-document concept (Invoice / account_move). This is the
distinct-but-adjacent split the operator's smoke spec implied.
4. 5 new sibling detectors with the same lexical-shape pattern as the
commerce sextet, each with its concept-specific lexical hint:
- classes_matching_sales_order_shape_canonical
(ends_with "order" AND NOT contains "line")
- classes_matching_sales_order_line_shape_canonical
(ends_with "lineitem" OR ends_with "order_line"/"orderline")
- classes_matching_fulfillment_flow_shape_canonical
(ends_with "shipment" OR ends_with "picking")
- classes_matching_inventory_movement_shape_canonical
(ends_with "inventoryunit" OR ends_with "stock_move" — the stock_
qualifier discriminates from account_move which is a
CommercialDocument)
- classes_matching_product_offering_shape_canonical
(ends_with "product" OR ends_with "variant" OR ends_with
"product_template")
5. TaxPolicy detector hardened: also matches contains("taxrate") so
Spree::TaxRate surfaces (the strongest commerce-side tax-policy
signal). OSB::Tax and odoo:account_tax stay matched via the
existing ends_with("tax") arm.
6. 6 new corpus-driven tests, all green:
- spree_order_and_odoo_sale_order_overlap_as_sales_order
- spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line
- spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow
- spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement
(also asserts account_move does NOT promote here)
- spree_product_variant_and_odoo_product_overlap_as_product_offering
- spree_third_curator_convergence_on_tax_policy_and_payment_record
(proves the existing TaxPolicy + PaymentRecord detectors
generalize to a 3rd curator — Spree::TaxRate, Spree::Payment)
Plus all 20 prior tests still green → 26/26 total.
Scope reminder per operator discipline acceptance #4-7: each promotion
is gated by ≥2-curator structural evidence on real corpora, not
pre-emptive. The SMOKE-1 to SMOKE-4 + this commit's 5 concepts now
cover smoke targets A (OSB↔Odoo accounting) and B (Spree↔Odoo
commerce). Smoke target C (Redmine/OpenProject Project::TimeEntry
materialization) is project-domain — already being shipped by the
other session into OGAR's CODEBOOK (PRs #61/#62/#63 promoted project,
project_work_item, billable_work_entry, project_actor, project_status,
project_type).
CanonicalConcept enum now 11 variants. The lance-graph-ontology
CanonicalConcept set complements OGAR's project-domain 6-entry
CODEBOOK with an 11-entry commerce/billing/erp candidate set
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy, SalesOrder, SalesOrderLine,
FulfillmentFlow, InventoryMovement, ProductOffering). Each candidate
is a future OGAR CODEBOOK row (Phase 3 of "all of the above" — the
OGAR upstream promotion PR).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
0 commit comments