docs(canon): recipe-bitmask + constructor-chaining + function-catalog + F15–F17#143
Merged
Merged
Conversation
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.
There was a problem hiding this comment.
💡 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".
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The canon arc for the recipe-bitmask / function-catalog thesis — five append-only commits to
EPIPHANIES.md,DISCOVERY-MAP.md§2.8, andINTEGRATION-MAP.md§6 (falsifiers F15–F17). Doc-only; no source change.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-IDENTITIESTest 0). FalsifierPROBE-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).E-RECIPE-BITMASK-CHAIN+ F16 — the inheritance axis: naive flatten vs constructor-chainedLazyLock<ClassView>over theinherits_fromDAG. FalsifierPROBE-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.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.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. FalsifierPROBE-OGAR-BODY-TRIAGE(F17): round-trip-order-free each coarse(target, verb-class)group → PASS-rate = the recoverable fraction.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::Functiongainswrites/calls+ thewrites_field/callspredicates, and theruff_ruby_spobody 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