Claude/odoo rs transcode lf8ya5#33
Conversation
…dancy OGAR is Open Graph Active Record, so the canonical "recipe" IS the ActiveRecord lifecycle protocol; a best-shaped (AR-canonical) consumer stores that recipe once and carries only a per-class override bitmask + the genuine deltas. This adds the consumer-side falsifier for that conjecture. `tests/recipe_redundancy_probe.rs` is a default-build (offline, no ogar-emit, no git deps) measurement that mirrors `ogar_actions::corpus_to_actions`'s classification and measures how much of the lifted behavioural arm collapses to the two shared recipe shapes vs genuine per-class content. An ogar-emit-gated block pins the mirror to the real `corpus_action_rows` lift so the two can't drift. Result (slice_2 corpus, honest UPPER bound): guard arm : 47 guards -> 1 shared recipe (full collapse) compute arm : 101 distinct path-sets of 141 resolved (mostly genuine) headline : 45.7% recipe-collapsible / 54.3% leftover (188 resolved) This REFUTES the strong "Odoo -> 7%" reading and CONFIRMS the conjecture's scoping: 7% is the best-shaped Rails-AR case, not compute-heavy Odoo-Python. - excludes 170 reads-not-captured computes from the headline (data gap, not redundancy) - records the result in docs/ODOO-OGAR-MIGRATION-SPRINT.md - files two crate-path gaps in specs/UPSTREAM_WISHLIST.md (the live-source ruff_python_spo path drops _inherit; no method-body hash for true dedup) Cross-ref OGAR D-RECIPE-BITMASK / PROBE-OGAR-AR-RECIPE-COLLAPSE. Co-Authored-By: Claude <noreply@anthropic.com>
…ASK axis 2)
The recipe_redundancy_probe measured ONE collapse axis (within-class shape/path
dedup: 54.3% leftover on slice_2) and could NOT see inheritance — slice_2's base
mixins were out-of-slice. This adds the orthogonal axis: constructor-chaining
over LazyLock ClassViews shares inherited recipe parts at the base, so they are
not per-class leftover.
recipe_chaining_collapse.rs (default build, offline) measures it on the full
Odoo inheritance manifest (data/odoo_inheritance_manifest.ndjson, projected from
lance-graph's odoo_ontology corpus to has_function + inherits_from):
classes 388 (101 with ancestors, max depth 5); 166 inherits_from; 3328 methods
full recipe : chained 3328 / naive 4215 -> 21.0% collapse
behavioural : chained 2848 / naive 3684 -> 22.7% collapse
top bases : mail_activity_mixin (324 copies), account_move (220),
mail_thread (156)
This is the inheritance axis the slice_2 probe could not see; it STACKS with the
within-class 54.3% (a class's genuine leftover is its own-after-shape-dedup
methods, and even those are stored once and shared wherever inherited). Lower
bound — the corpus mixin harvest is shallow (real mail.thread ~100 methods, a
handful captured), so richer extraction only raises the collapse.
Also: pedantic-lint allow block on both probes (reporting fns are long, use
benign usize->f64 percentage casts, narrative docs).
Co-Authored-By: Claude <noreply@anthropic.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_e26a8682-b497-4170-aa1d-a1cc2ea2a8d2) |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d72431330f
ℹ️ 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".
| "reads_field" => { | ||
| reads | ||
| .entry(strip_ns(&t.s).to_string()) | ||
| .or_default() | ||
| .insert(strip_ns(&t.o).to_string()); |
There was a problem hiding this comment.
Build compute payloads from authoritative depends_on
The probe is supposed to measure each compute's dependency payload, but this branch records body-inferred reads_field rows; the corpus schema uses depends_on joined through emitted_by for the @api.depends inputs. In the committed data/slice_2.spo.ndjson, 167 _compute_* methods have no reads_field but do have depends_on dependencies, and the 141 methods with reads differ from their dependency sets (often just filtered/_fields), so the report marks many real computes as unresolved and the 54.3% leftover/collapse conclusion is computed from the wrong payload.
Useful? React with 👍 / 👎.
No description provided.