feat(ogar-vocab): MemberRole + CustomValue + EnabledModule — structural completers (domain saturation)#73
Merged
AdaWorldAPI merged 1 commit intoJun 19, 2026
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…l completers) Final structural-completion batch for the OP <-> Redmine project-mgmt domain. Each completes a relationship around an existing canonical: | Canonical | id | Completes | |--------------------------|---------|------------------------------------| | project_member_role | 0x0118 | RBAC triangle: membership <-> role | | project_custom_value | 0x0119 | value side of project_custom_field | | project_enabled_module | 0x011A | per-project module enablement | All three are identical across both curators (belongs_to joins). - project_member_role: membership -> ProjectMembership, role -> ProjectRole (closes the RBAC triangle now that ProjectRole exists via #72), plus the real inherited_from attribute both curators carry for group-derived role assignments. - project_custom_value: custom_field -> ProjectCustomField, polymorphic customized kept opaque (customized_type discriminator + value text). - project_enabled_module: project -> Project + name (module key). 0x0117 left reserved for project_role (OGAR#72, in flight) — this batch uses 0x0118-0x011A so neither PR rebases regardless of merge order. The member_role -> ProjectRole family edge references the target by string, so it's valid before #72 merges. - Resolver arms covering each curator name + plural-table forms + PascalCase (per the established doctrine). - Extended the 3 coverage tests + new real-corpus test redmine_and_openproject_memberrole_customvalue_module_converge. ogar-vocab 41, ogar-from-ruff 24, real-corpus 14 (+1); clippy clean. The OP <-> Redmine project-mgmt cross-curator overlap is now saturated: every substantive common-name model from the 38-name probe is promoted.
0b15ce0 to
346a1fd
Compare
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.
Structural-completion trio — saturates the OP↔Redmine project-mgmt overlap
Each promotion completes a relationship around an existing canonical concept:
project_member_role0x0118project_custom_value0x0119project_custom_fieldproject_enabled_module0x011AAll three are identical across both curators (pure
belongs_tojoins).project_member_role—membership → ProjectMembership,role → ProjectRole(closes the RBAC triangle now thatProjectRoleexists via feat(ogar-vocab): ProjectRole (RBAC) + Group folds into ProjectActor #72), plus the realinherited_fromattribute both curators carry for group-derived role assignments.project_custom_value—custom_field → ProjectCustomField; polymorphiccustomizedkept opaque (customized_typediscriminator +valuetext).project_enabled_module—project → Project+name(module key).ID coordination
0x0117left reserved forproject_role(#72, in flight). This batch uses0x0118–0x011Aso neither PR rebases regardless of merge order. Themember_role → ProjectRolefamily edge references the target by string, valid before #72 merges.Tests
Resolver arms (curator name + plural-table + PascalCase), the 3 coverage tests extended, and new real-corpus test
redmine_and_openproject_memberrole_customvalue_module_converge.Green
ogar-vocab41 ·ogar-from-ruff24 ·ogar-from-rails14 real-corpus (+1) · clippy clean.Domain saturation
With #72 + this PR merged, every substantive cross-curator model from the 38-name Redmine↔OpenProject overlap probe is promoted. The OP↔Redmine project-mgmt domain (
0x01XX) is at structural saturation:Remaining un-promoted commons are thin leaves (UserPreference, Change, WikiRedirect, Setting) or abstract STI bases (Enumeration) — low marginal value. Natural next direction: a new curator corpus / domain rather than more depth here.
🤖 Generated with Claude Code