Skip to content

docs(canon): recipe-bitmask + constructor-chaining + function-catalog + F15–F17#143

Merged
AdaWorldAPI merged 6 commits into
mainfrom
claude/odoo-rs-transcode-lf8ya5
Jun 30, 2026
Merged

docs(canon): recipe-bitmask + constructor-chaining + function-catalog + F15–F17#143
AdaWorldAPI merged 6 commits into
mainfrom
claude/odoo-rs-transcode-lf8ya5

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Summary

The canon arc for the recipe-bitmask / function-catalog thesis — five append-only commits to EPIPHANIES.md, DISCOVERY-MAP.md §2.8, and INTEGRATION-MAP.md §6 (falsifiers F15–F17). Doc-only; no source change.

  1. E-RECIPE-BITMASK + D-RECIPE-BITMASK + F15 — the behavioral arm of a lifted consumer = one canonical ActiveRecord-lifecycle recipe stored once + a per-class override bitmask (set = override, clear = inherited default; zero-fallback ladder). Redundant = content-hash-identical-to-default. Bitmask is a register, not VSA (I-VSA-IDENTITIES Test 0). Falsifier PROBE-OGAR-AR-RECIPE-COLLAPSE: Odoo upper-bound measured 45.7% collapse / 54.3% leftover (refutes the strong "Odoo→7%" reading; clean run is Rails where callbacks are first-class).

  2. E-RECIPE-BITMASK-CHAIN + F16 — the inheritance axis: naive flatten vs constructor-chained LazyLock<ClassView> over the inherits_from DAG. Falsifier PROBE-OGAR-CHAINING-COLLAPSE: Odoo measured naive 4215 vs chained 3328 → 21.0% / 22.7% behavioral; confirms chaining resolves F15's out-of-slice upper bound (real leftover sits below it). Orthogonal to F15, stacks.

  3. E-RECIPE-LABEL-DTO — recipe verbs + params are canonical concept ids + label DTOs (the classid-is-address / label-is-render-skin doctrine extended to the recipe vocabulary), not a per-consumer zoo.

  4. E-FUNCTION-CATALOG + E-ACCIDENTAL-IMPERATIVE + F17 — the function catalog is criteria over shipped deterministic verbs (filter = query/predicate, project = compute DAG, map = deterministic lookup ≠ CAM-PQ, reduce = semirings; CRUD = generic lifecycle). The hand-rolled residue = accidentally-imperative (AR verbs on AR targets with no declarative home) ∪ essentially-foreign; the body pass triages, it does not decompile. Falsifier PROBE-OGAR-BODY-TRIAGE (F17): round-trip-order-free each coarse (target, verb-class) group → PASS-rate = the recoverable fraction.

  5. F17 prerequisite shipped — F17 was gated on a ruff extension (capture writes/calls per function; ruff previously captured only reads/raises/traverses). That blocker is now cleared by the companion ruff PR (feat(spo): capture function writes/calls (command-shape facts) + lsp-types dev-unblock ruff#38): ruff_spo_triplet::Function gains writes/calls + the writes_field/calls predicates, and the ruff_ruby_spo body walker populates them. The F15/F16 measurements come from probes in odoo-rs (tests/recipe_redundancy_probe.rs, tests/recipe_chaining_collapse.rs); the F17 body-triage probe is now runnable (next deliverable). The accidentally-imperative ratio itself remains UNMEASURED — this records that its input capability now exists.

Test Plan

Doc-only — append-only canon (new entries prepended; only **Status:** lines edited in place, per the append-only rule). No code, no probe run in this PR. The measured numbers cited (F15 45.7%, F16 21.0%/22.7%) come from the odoo-rs probes already committed on that repo's branch; the F17 capability is verified by ruff#38.

🤖 Generated with Claude Code


Generated by Claude Code

claude added 5 commits June 30, 2026 17:07
OGAR is Open Graph Active Record, so the canonical "recipe" IS the
ActiveRecord lifecycle protocol; a class = the shared recipe + a per-class
override bitmask + the genuine deltas. This records the conjecture, its
discovery row, and the falsifier gate.

- EPIPHANIES: E-RECIPE-BITMASK (CONJECTURE [H]) — framing, the two guards
  (RESERVE-DON'T-RECLAIM slots; redundant = content-hash-equal-to-default),
  the mechanism (corpus_to_actions' two recipe shapes), the Odoo upper-bound
  result, and why Rails/OpenProject is the clean test.
- DISCOVERY-MAP §2.8: D-RECIPE-BITMASK row (H / EPIPHANY).
- INTEGRATION-MAP §6: F15 (PROBE-OGAR-AR-RECIPE-COLLAPSE) — Odoo upper-bound
  RUN (45.7% collapse / 54.3% leftover); promotes [H]->[G] on the Rails-AR
  clean run near the ~7% leftover target.

Falsifier shipped consumer-side: odoo-rs tests/recipe_redundancy_probe.rs.

Co-Authored-By: Claude <noreply@anthropic.com>
…e axis (measured)

Extends E-RECIPE-BITMASK with the second collapse axis: a derived ClassView is
built by chaining its base LazyLock<ClassView> constants + its own delta
(classid -> ClassView made compositional; chain = MRO; #533 resolve_overrides =
order). Two consequences: "out-of-slice" dissolves (the base is a registry
constant, not a slice dependency), and "redundant = content-hash-equal-to-default"
becomes referential identity (the inherited part IS the shared cached constant,
pointer-identical — the guard is structural, not a hash test).

Orthogonal to the 3x4 GUID carving (value/registry-side vs address/centroid-side)
-> 3x4 stands, no re-carve; the 4x3/2x6/6x2 fallbacks are not spent. Chain-order
correctness is the existing F1 falsifier; acyclic DAG.

MEASURED (F16 / PROBE-OGAR-CHAINING-COLLAPSE, odoo-rs tests/recipe_chaining_collapse.rs,
full Odoo inheritance manifest 388 classes / 166 edges / 3328 methods):
naive flatten 4215 vs chained 3328 -> 21.0% collapse / 22.7% behavioural; top base
mail_activity_mixin (324 copies). Orthogonal to the within-class 54.3% (F15);
stacks. Lower bound — shallow corpus mixin harvest.

- EPIPHANIES: E-RECIPE-BITMASK-CHAIN (FINDING measured / CONJECTURE on impl)
- DISCOVERY-MAP §2.8: D-RECIPE-BITMASK-CHAIN row
- INTEGRATION-MAP §6: F16

Co-Authored-By: Claude <noreply@anthropic.com>
…le concept ids, not a zoo

Pins the canonicalization doctrine the operator asked for: a recipe label
(Rails callback phase / ValidationKind / AssocKind / HandlerKind; Odoo
MethodKind / KausalSpec.event) is NOT a per-consumer enum variant — it is a
content-addressable concept id in ONE generic recipe ontology, with per-language
label DTOs ({concept_id, lang, surface}). Same classid-is-address / label-is-skin
doctrine OGAR already uses for class concepts (canonical_concept_id /
canonical_concept_name), extended to the recipe vocabulary.

Three rules: bitmask slot = concept id (RESERVE-DON'T-RECLAIM); one ontology +
N label DTOs (reuse the slot, mint nothing for a new surface); id is truth /
label is render-skin. So Rails before_save and Odoo before-persist land on one
slot -> the recipe-bitmask is cross-consumer comparable, the behavioural arm
converges the same way BILLABLE_WORK_ENTRY (0x0103) already converges the class
arm. Full kit + mapping table: openproject-nexgen-rs RAILS-COVERAGE-KIT.md §5.

Co-Authored-By: Claude <noreply@anthropic.com>
Records the function-catalog arc with the operator's corrections.

E-FUNCTION-CATALOG: the catalog is of CRITERIA over SHIPPED deterministic verbs
(filter=query engine / project=compute DAG / map=deterministic lookup /
reduce=semirings). A consumer function = (verb, criteria), criteria extracted not
authored, keyed by canonical concept id, lands on lance-graph-contract::action +
ogar-render-askama + ogar-vocab. Correction 1: map != CAM-PQ (Kontenerkennung is
deterministic relational rule + precedent; Test-0 register, not ANN).
Correction 2: CRUD is generic lifecycle + extracted criteria, not hand-rolled.

E-ACCIDENTAL-IMPERATIVE: the residue = accidentally-imperative (AR verbs on AR
targets, written imperatively only because the source had no declarative form --
Odoo @api.depends vs Rails before_save{sum} proves it's source-expressiveness,
not complexity; recoverable) UNION essentially-foreign (the only true escape).
The body pass TRIAGES to (target classid, verb-class, order-signature) -- not
decompile; lands at a coarse catalog tier + point-to-body (lossless-DO §1).
"random orders" = the round-trip-order-free recover/preserve gate. Three tiers:
clean / coarse / foreign.

F17 (PROBE-OGAR-BODY-TRIAGE): triage hooks -> round-trip-order-free each coarse
group; PASS-rate = the accidentally-imperative ratio. Gated on a ruff extension
(capture writes/calls per function). DISCOVERY-MAP D-FUNCTION-CATALOG +
D-ACCIDENTAL-IMPERATIVE rows added.

Co-Authored-By: Claude <noreply@anthropic.com>
…alls

The F17 body-triage falsifier (PROBE-OGAR-BODY-TRIAGE) and the
E-ACCIDENTAL-IMPERATIVE epiphany were both gated on a ruff extension:
capture writes/calls per function so "calls update on X" is extractable
(ruff previously captured only reads/raises/traverses).

That blocker is now cleared. AdaWorldAPI/ruff @ claude/odoo-rs-transcode-lf8ya5
(commit dd70588) adds, additively:
- ruff_spo_triplet::Function gains `writes` (self.<field>= setter targets)
  and `calls` ("receiver.method" lifecycle-mutator dispatches), both
  serde-skip-empty so existing ndjson is byte-identical;
- the closed predicate vocab grows 60 → 62: `writes_field` (Authoritative)
  + `calls` (Inferred);
- the ruff_ruby_spo body walker populates both from the Rails AST via a
  closed AR_MUTATORS set (self.x= → write, mutator dispatch → call,
  else read).

Updates (append-only / status-line in place):
- INTEGRATION-MAP §6 F17: strike the "gated on a ruff extension" note,
  mark the prerequisite SHIPPED + F17 RUNNABLE (probe still to author/run).
- EPIPHANIES E-ACCIDENTAL-IMPERATIVE Status line: same, with commit ref.

The accidentally-imperative ratio itself remains UNMEASURED — the
body-triage probe is the next deliverable; this only records that its
input capability now exists.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 21bbfdfebc

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/DISCOVERY-MAP.md Outdated
The D-ACCIDENTAL-IMPERATIVE source note still marked ruff writes/calls
capture as (gated), while INTEGRATION-MAP F17 and EPIPHANIES already
record it shipped/runnable. Aligns the DISCOVERY-MAP queue row to the
shipped state (AdaWorldAPI/ruff#38) so body-triage no longer reads as
blocked. Status correction in place (append-only canon).
@AdaWorldAPI AdaWorldAPI merged commit ed79365 into main Jun 30, 2026
1 check passed
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