contract: FMA_ANATOMY → V3 classid + causal-edge warning cleanup#665
Conversation
… body substrate q2's osint-bake/body (the /helix body.soa substrate) already mints CLASSID_FMA_V3, so lance-graph's V1-pinned FMA_ANATOMY domain was the inconsistency. Flip it to CLASSID_FMA_V3 (cfg-selected, V1 fallback under --no-default-features), mirroring OSINT_GOTHAM. The routing was already tail-aware: `hhtl_path` dispatches V3 classids to `from_guid_prefix_v3` (folds HEEL·HIP·TWIG·LEAF, classid NOT folded) and `nearest_anchor` uses it. So the anchor hop depths legitimately change under V3 (the classid_lo tier drops out of the fold): the `nearest_anchor` test now asserts the V3 values (lcp 3 ⇒ 26, lcp 0 ⇒ 32) under the feature and keeps the V1 values (18/24) under --no-default-features. Ordering is invariant either way. (An earlier revert of this flip was wrong — it mistook the correct V3 fold depth for a degraded fallback; the operator corrected it: q2 /helix is V3.) PROJECT/ERP stay V1 — no CLASSID_*_V3 registered for them yet. Verification: default 854 lib tests green (V3, 26/32); --no-default-features anchor test green (V1, 18/24); fmt clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLBnPuScZy6w9di2QEjsXM
Per-site #[allow(deprecated)] / #[allow(dead_code)] on the v1 accessor paths that remain live under one feature config and deprecated under the other. No semantics change — the mantissa-bug fix (v2 signed 4-bit read via from_mantissa; pack writes to_mantissa) is untouched; this only quiets the noise so consumers vendoring causal-edge build clean. - edge.rs from_bits / PLAST_SHIFT: dead under v2 (superseded by mantissa decode / crate::layout::PLAST_SHIFT), live under v1 → #[allow(dead_code)]. - edge.rs compose t_out + resolved_infer v1 arm: v1 reads deprecated under v2 layout; the pack() below already drops temporal → per-arm allow. - edge.rs Debug fmt / network.rs evidence_trail sort: v1 diagnostic/ordering views, deprecated but harmless under v2 → #[allow(deprecated)]. Verified warning-free for both default (v2) and --no-default-features (v1); 48/48 tests green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLBnPuScZy6w9di2QEjsXM
… to V3 Adds CLASSID_PROJECT_V3 (0x0101_1000) / CLASSID_ERP_V3 (0x0202_1000) + _LEGACY pre-flip aliases (0x1000_0100 / 0x1000_0200), mirroring the exact CLASSID_OSINT_V3/CLASSID_FMA_V3 encoding: canon-HIGH domain:appid byte pair, fixed 0x1000 V3-generation marker in the custom-LOW half. Registers ReadMode::PROJECT_V3/ERP_V3 (same Cognitive value model as their V1 read-modes) in BUILTIN_READ_MODES, both new-form and legacy-alias keys. Encoding-verification finding: the existing V3 consts' custom/low u16 does NOT carry an AppPrefix render-lens value (render_classid's concept-HIGH / app-prefix-LOW composition) — it carries the fixed 0x1000 marker, with the appid instead packed into the canon-HIGH half's low byte alongside the domain (q2 = 0x01 for OSINT/FMA/CPIC). Per the operator's ruling that PROJECT/ERP own their own appid (OpenProject=0x01, Odoo=0x02, not q2's 0x01), those bytes are substituted into the SAME canon-HIGH position: 0x01<<8|0x01 = 0x0101 (PROJECT), 0x02<<8|0x02 = 0x0202 (ERP) — verified against the already-existing test fixtures canonical_concept_domain(0x0101)==ProjectMgmt / (0x0206)==Commerce, which independently confirm the domain-byte-only routing these canon halves need. Flips soa_graph::PROJECT/ERP DomainSpecs to the new V3 classids under the same #[cfg(feature = "guid-v3-tail")] / --no-default-features V1-fallback pattern already used for OSINT_GOTHAM/FMA_ANATOMY. Both domains have empty anchor_families, so no nearest_anchor hop-value test needed cfg-branching. Tests: cargo test -p lance-graph-contract — 854 passed (default), 840 passed (--no-default-features); no new/changed test assertions needed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Board hygiene only, no code change in this repo. woa-rs's ERP account-GUID minter (src/erp/canon.rs::make_account_guid_bytes) was migrated to the V3 tail today (2026-07-08, operator ruling) in the sibling woa-rs repo: leaf(u16)/family(u16)/identity(u16) byte-identical to new_v2/mint_for(V3); Personenkonten trailing digits (SKR03 70000-99999) now a real LEAF (part_of:is_a) rail via skr_leaf() instead of the old V1 family-hash stuffing; Parallelbetrieb invariant pinned (MySQL ORM stays authoritative, identity = MySQL row id, u16-by-signature with a loud try_from at call sites, never a silent alias). 11/11 tests green in woa-rs. Prepended as a new dated entry (this file's own discipline: newest first, double-entry, no deletions) — this is a THIRD residue arm under the ISS-V1-TAIL-RESIDUE umbrella, alongside the two lance-graph-contract mint sites resolved 2026-07-07 (ocr.rs/aiwar.rs, below). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 10 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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_fd0c2cf1-0df8-4694-9aee-7d0b9a2a4ab3) |
What
Two independent follow-ups after #663 (ISS-V1-TAIL-RESIDUE) merged:
350f6bed— FMA_ANATOMY domain → V3 classsoa_graph.rs—FMA_ANATOMY.classid→CLASSID_FMA_V3(cfg-selected; V1CLASSID_FMAfallback under--no-default-features), matching the q2/helixbody-anatomy substrate which already renders V3. Thenearest_anchor_ranks_by_hhtl_hop_counttest is cfg-branched: V3 depth 26/32, V1 depth 18/24.OSINT_GOTHAM—project_snapshotfilters rows by exact classid, so a V1-pinned domain constant silently drops V3-minted rows. The read path (family_of/identity_of) was already tail-aware; only the constant lagged.774d34fc— causal-edge v1/v2 warning cleanupPer-site
#[allow(deprecated)]/#[allow(dead_code)]on the v1 accessor paths that stay live under one feature config and deprecated/dead under the other. No semantics change — the mantissa-bug fix (v2 signed 4-bit read viafrom_mantissa;packwritesto_mantissa) is untouched. This only quiets the noise so downstream crates vendoringcausal-edgebuild clean.edge.rsfrom_bitsdead_codefrom_mantissaedge.rsPLAST_SHIFTdead_codecrate::layout::PLAST_SHIFTedge.rscomposet_outdeprecatedpack()drops it under v2edge.rscomposeresolved_inferv1 armdeprecatededge.rsDebugfmtdeprecatedinference_type/temporalnetwork.rsevidence_trail sortdeprecatedVerification
causal-edge: warning-free under bothdefault(v2) and--no-default-features(v1); 48/48 tests green.Note
This branch was previously used for #663 (merged). These two commits were rebased fresh onto
main(9a79920f) — they are new work, not a re-open of #663.🤖 Generated with Claude Code
Generated by Claude Code