fix(ogar-vocab): three codex P2s — neutral language, typed boolean flag, canonical target#59
Merged
AdaWorldAPI merged 1 commit intoJun 19, 2026
Conversation
…ag, canonical target All three P2s from codex on the merged OGAR#57 + OGAR#58. 1. (#57 P2) Synthetic canonical classes default to Language::Ruby via Default<Language>, but they're not Ruby-harvested. TripleEmitter writes ogar:sourceLanguage = Ruby and routes them through Ruby-specific handling. Set c.language = Language::Unknown in both billable_work_entry() and project_work_item() (proactive same-defect fix; project_work_item wasn't flagged separately but has the identical bug from the same one-line cause). 2. (#57 P2) Attribute::new('billable') leaves type_name=None; DDL adapters default untyped fields to string-like. The defining flag is boolean — type it as such so generated schemas don't store billable-as-text. 3. (#58 P2) BillableWorkEntry's family edge still pointed at the OP curator surface name, but PR #58 promoted Redmine Issue and OP WorkPackage to canonical ProjectWorkItem. The edge now targets ProjectWorkItem so consumers traversing BillableWorkEntry.about see both curators converge. Updates the test fixture accordingly. Test additions pin all three contracts: - assert_eq!(c.language, Language::Unknown) on both canonical classes - assert_eq!(billable.type_name.as_deref(), Some('boolean')) - expected family-edge target list switches 'WorkPackage' -> 'ProjectWorkItem' 21 ogar-vocab + 22 ogar-from-ruff + 6 real-corpus green; clippy clean.
AdaWorldAPI
pushed a commit
that referenced
this pull request
Jul 9, 2026
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.
Three codex P2s — all valid, all fixed
From the post-merge codex review of OGAR#57 (ec33225) and OGAR#58 (4146bb4).
1. Neutral language on synthetic canonical classes (#57 P2)
Class::new(...)defaults toLanguage::RubyviaDefault<Language>, butbillable_work_entry()/project_work_item()are hand-authored canonical concepts, not Ruby-harvested models. TheTripleEmitterwritesogar:sourceLanguageso consumers were about to route the canonical classes through Ruby-specific handling. Setc.language = Language::Unknownon both — codex flagged BillableWorkEntry; ProjectWorkItem has the identical one-line cause, fixed proactively.2. Typed
billableflag (#57 P2)Attribute::new("billable")lefttype_name = None; DDL adapters default untyped fields to string-like, so generated schemas would storebillableas text. Settype_name = Some("boolean").3. Canonical target on the
aboutfamily edge (#58 P2)family_edge("about", "WorkPackage")still pointed at the OP curator surface name, but #58 promoted RedmineIssueand OPWorkPackageto canonicalProjectWorkItem. The edge now targetsProjectWorkItemso consumers traversingBillableWorkEntry.aboutsee both curators converge through the same shared concept.Tests pin each contract
c.language == Language::Unknownon both canonical classes.billable.type_name == Some("boolean")."WorkPackage"→"ProjectWorkItem".21 ogar-vocab + 22 ogar-from-ruff + 6 real-corpus green; clippy clean.
🤖 Generated with Claude Code