Skip to content

docs: Path 12 — DeepNSM × CausalEdge64 bridge + Epiphany 19 - #62

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/transcode-deepnsm-rust-oNa1Z
Mar 29, 2026
Merged

docs: Path 12 — DeepNSM × CausalEdge64 bridge + Epiphany 19#62
AdaWorldAPI merged 1 commit into
mainfrom
claude/transcode-deepnsm-rust-oNa1Z

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Path 12: Causal-semantic reasoning via shared palette algebra.

Pearl's 3-bit causal mask (SPO plane projection) and DeepNSM's
16 NsmCategory decomposition are the SAME operation:
Pearl: 2³ = 8 projections on causal roles
DeepNSM: 2¹⁶ projections on semantic categories (α selects useful ones)
Combined: "what CAUSED this, in the MENTAL category?"

DeepNsmCausalBridge:
- 4,096 words → 256 palette (k-means on 96D COCA)
- AttentionTable[256][256] (distributional similarity)
- ComposeTable[256][256] (multi-hop O(1))
- 16 category_tables (per-NsmCategory distance)
- 5 operations: word_to_edge, semantic_projection, cross_domain_analogy,
compose_chain, causal_semantic_query

CAM-PQ stroke alignment:
Stroke 1 = interventional (entity identity only)
Stroke 2 = observational (+ behavior)
Stroke 3 = full model (all 96 dimensions)

Base17 connection: 96D → 17D → 256 palette → 8-bit edge index
End-to-end ρ ≈ 0.957

Epiphany 19: DeepNSM, CausalEdge64, and bgz-tensor are three instances
of the same abstract machine — precomputed symmetric lookup with
plane-selective mask. The bridge makes them interoperable.

https://claude.ai/code/session_01Y69Vnw751w75iVSBRws7o7

Path 12: Causal-semantic reasoning via shared palette algebra.

  Pearl's 3-bit causal mask (SPO plane projection) and DeepNSM's
  16 NsmCategory decomposition are the SAME operation:
    Pearl: 2³ = 8 projections on causal roles
    DeepNSM: 2¹⁶ projections on semantic categories (α selects useful ones)
    Combined: "what CAUSED this, in the MENTAL category?"

  DeepNsmCausalBridge:
    - 4,096 words → 256 palette (k-means on 96D COCA)
    - AttentionTable[256][256] (distributional similarity)
    - ComposeTable[256][256] (multi-hop O(1))
    - 16 category_tables (per-NsmCategory distance)
    - 5 operations: word_to_edge, semantic_projection, cross_domain_analogy,
      compose_chain, causal_semantic_query

  CAM-PQ stroke alignment:
    Stroke 1 = interventional (entity identity only)
    Stroke 2 = observational (+ behavior)
    Stroke 3 = full model (all 96 dimensions)

  Base17 connection: 96D → 17D → 256 palette → 8-bit edge index
    End-to-end ρ ≈ 0.957

  Epiphany 19: DeepNSM, CausalEdge64, and bgz-tensor are three instances
  of the same abstract machine — precomputed symmetric lookup with
  plane-selective mask. The bridge makes them interoperable.

https://claude.ai/code/session_01Y69Vnw751w75iVSBRws7o7
@AdaWorldAPI
AdaWorldAPI merged commit 5fec4c6 into main Mar 29, 2026
AdaWorldAPI pushed a commit that referenced this pull request Jun 19, 2026
OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004).
Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI
chain (4 source classes → one canonical), proving binary cross-curator
convergence on real Rails sources.

Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62
alongside #61. OGAR's project-management quartet (project,
project_work_item, billable_work_entry, project_actor) is
complementary to this commit's commerce/billing/erp sextet
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy). Different domain, same promotion
mechanics.

The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the
same shape my BillingParty lexical detector applies on
OSB::Client + Odoo::res_partner — same mechanism, different domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
AdaWorldAPI pushed a commit that referenced this pull request Jun 19, 2026
…esOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord

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
AdaWorldAPI pushed a commit that referenced this pull request Jun 19, 2026
OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004).
Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI
chain (4 source classes → one canonical), proving binary cross-curator
convergence on real Rails sources.

Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62
alongside #61. OGAR's project-management quartet (project,
project_work_item, billable_work_entry, project_actor) is
complementary to this commit's commerce/billing/erp sextet
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy). Different domain, same promotion
mechanics.

The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the
same shape my BillingParty lexical detector applies on
OSB::Client + Odoo::res_partner — same mechanism, different domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
AdaWorldAPI pushed a commit that referenced this pull request Jun 19, 2026
…esOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord

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
AdaWorldAPI pushed a commit that referenced this pull request Jun 19, 2026
OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004).
Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI
chain (4 source classes → one canonical), proving binary cross-curator
convergence on real Rails sources.

Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62
alongside #61. OGAR's project-management quartet (project,
project_work_item, billable_work_entry, project_actor) is
complementary to this commit's commerce/billing/erp sextet
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy). Different domain, same promotion
mechanics.

The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the
same shape my BillingParty lexical detector applies on
OSB::Client + Odoo::res_partner — same mechanism, different domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
AdaWorldAPI pushed a commit that referenced this pull request Jun 19, 2026
…esOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord

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
AdaWorldAPI pushed a commit that referenced this pull request Jun 20, 2026
OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004).
Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI
chain (4 source classes → one canonical), proving binary cross-curator
convergence on real Rails sources.

Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62
alongside #61. OGAR's project-management quartet (project,
project_work_item, billable_work_entry, project_actor) is
complementary to this commit's commerce/billing/erp sextet
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy). Different domain, same promotion
mechanics.

The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the
same shape my BillingParty lexical detector applies on
OSB::Client + Odoo::res_partner — same mechanism, different domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
AdaWorldAPI pushed a commit that referenced this pull request Jun 20, 2026
…esOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord

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
AdaWorldAPI pushed a commit that referenced this pull request Jun 20, 2026
OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004).
Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI
chain (4 source classes → one canonical), proving binary cross-curator
convergence on real Rails sources.

Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62
alongside #61. OGAR's project-management quartet (project,
project_work_item, billable_work_entry, project_actor) is
complementary to this commit's commerce/billing/erp sextet
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy). Different domain, same promotion
mechanics.

The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the
same shape my BillingParty lexical detector applies on
OSB::Client + Odoo::res_partner — same mechanism, different domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
AdaWorldAPI pushed a commit that referenced this pull request Jun 20, 2026
…esOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord

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
AdaWorldAPI pushed a commit that referenced this pull request Jun 21, 2026
OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004).
Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI
chain (4 source classes → one canonical), proving binary cross-curator
convergence on real Rails sources.

Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62
alongside #61. OGAR's project-management quartet (project,
project_work_item, billable_work_entry, project_actor) is
complementary to this commit's commerce/billing/erp sextet
(CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty,
PaymentRecord, CurrencyPolicy). Different domain, same promotion
mechanics.

The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the
same shape my BillingParty lexical detector applies on
OSB::Client + Odoo::res_partner — same mechanism, different domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
AdaWorldAPI pushed a commit that referenced this pull request Jun 21, 2026
…esOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord

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
AdaWorldAPI pushed a commit that referenced this pull request Jul 29, 2026
The placement law is satisfied: the A9 witness register is now a value
tenant lane [204,220) rather than an owned struct in a sibling Vec. This
is the additive path Tekamolo = 13 and the triangle lanes (#717) both
took; the "batched mint" gate it nominally waited on was audited first
(see below) and found to be cited by neither of those merges, stale in
every numeric particular, and absent from crates/ entirely.

RESERVATIONS BY ORDINAL, NEVER BY OFFSET. The in-file BoardAggregates
reservation had drifted THREE times — @152 (taken by FrozenStyle), @188
(taken by Tekamolo), @204 (taken here) — because it was recorded as an
ABSOLUTE BYTE OFFSET, which is a derived value that goes stale whenever
anything lands in front of it. Rewritten to reserve the next DISCRIMINANT
after CausalWitness (= 15), offset derived via value_offset(), drift
history recorded as the reason. The reservation is re-based, not
cancelled.

This is T5's own law. The Addendum-12a battery's fifth item is
"fixed-offset-sweeper safety" — written 2026-07-02, guarding READERS
against hardcoded offsets. The substrate discovered the law on day one,
applied it to readers, and then recorded its own reservation as a literal
offset and drifted three times. Same law, three sites, one guarded.
Reader-side residue is queued (task #62): the prescribed schema.has()
gate is still absent from nan_projection and symbiont::domino.

⊘ THE TWO-PLACES RULE IS "TWO TO DECIDE, THREE THE COMPILER ENFORCES."
The knowledge doc written this morning claimed "everything else is
derived". A const assert falsified it within hours:
  const _: () = assert!(Full.field_mask().count() == VALUE_TENANTS.len())
ValueSchema::Full's field_mask is a hand-maintained position list that
LOOKS derived (Full = "all tenants") but is not; plus three carve-total
test literals moved 172 -> 188. Read as a compliment to the substrate:
the assert makes the mismatch window uncompilable, so it can never exist
in a commit. Doc corrected in place.

tenants.md refreshed from code-as-truth: it is a MANDATORY auditor read
and had been frozen at 28f17cd (2026-07-02), stopping at tenant 9
Kanban [144,152) while the shipped carve ran past 204 — four tenants of
drift serving wrong data to any reviewer who bootloaded it correctly.
Now covers 0-14 with derived ranges and the cite-symbolically rule.

One transient-read correction inside that refresh: the worker generated
the doc mid-mint and recorded "Full lists 0-13 vs VALUE_TENANTS 15" as a
live defect. That state was never committed — the const assert makes it
uncompilable — it was only visible in a moving working tree. Corrected,
and kept as a note, because it is this document's own lesson turned on
itself: a value read from a moving surface is transient, and writing it
down as standing fact is the same error class as recording a derived
offset as primary.

Arithmetic: 204 + 16 = 220 <= 480; 260 B slab headroom; NODE_ROW_STRIDE
512 unchanged; no ENVELOPE_LAYOUT_VERSION bump (no assert forces one).

Gates: fmt clean, clippy --all-targets -D warnings zero, 1108 lib tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K3RyLEbuNSHxxB3NTTrGki
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