Skip to content

fix(ogar-vocab): plural-table coverage for time_entries / issue_statuses / issue_priorities / memberships#69

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/codebook-table-plurals-fix
Jun 19, 2026
Merged

fix(ogar-vocab): plural-table coverage for time_entries / issue_statuses / issue_priorities / memberships#69
AdaWorldAPI merged 1 commit into
mainfrom
claude/codebook-table-plurals-fix

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Proactive fix — same defect class as #67 + #68 on 4 more concepts

Audit of compound-name promoted concepts (run after the codex P2 on #68) revealed that 4 more already-merged concepts have the same plural-table-alias gap — Rails uses irregular pluralization (ies→y, s→ses) that the single-s lexical fallback can't reverse, so ogar_codebook(rails_table_form) returns None:

Class Rails table Lex fallback Status
TimeEntry time_entries time_entrie BUG
IssueStatus issue_statuses issue_statuse BUG
IssuePriority issue_priorities issue_prioritie BUG
Membership memberships membership BUG

Same defect class codex flagged on #66 (wiki_pages, custom_fields → fixed in #67) and #68 (issue_relations → fixed on #68's branch). Each arm needs explicit plural-table forms.

Fix

billable_work_entry:  + "timeentries"   | "time_entries"
project_status:       + "issuestatuses" | "issue_statuses"
priority:             + "issuepriorities" | "issue_priorities"
project_membership:   + "membership"    | "memberships"

Tests

Extended plural_table_aliases_resolve_to_promoted_codebook_id with 11 new entries (3 per concept where applicable: snake, lowercase-concat, PascalCase) pinning each tableized variant → codebook id. The test now exhaustively covers the plural pattern for all promoted compound concepts.

Green

ogar-vocab 41 · clippy clean · all 10 real-corpus tests still pass · disk steady.

Companion to #68

#68 fixes the codex-flagged issue_relations directly on its branch (added the plural to the project_relation arm + 3 test entries). This PR is the proactive sweep covering the rest of the same defect class on already-merged concepts. They land independently.

🤖 Generated with Claude Code

Audit of compound-name promoted concepts revealed 4 more cases of the
plural-table-alias defect codex flagged on PR #66 (wiki_pages,
custom_fields, #67) and PR #68 (issue_relations, fixed on #68's branch):

  TimeEntry      Rails table 'time_entries'    lex 'time_entrie'  BUG
  IssueStatus    Rails table 'issue_statuses'  lex 'issue_statuse' BUG
  IssuePriority  Rails table 'issue_priorities' lex 'issue_prioritie' BUG
  Membership     plural 'memberships'           lex 'membership' BUG

All four cases: ogar_codebook(plural_form) returned None because the
single-s lexical fallback drops to a non-canonical string (Rails uses
irregular pluralization — ies→y, s→ses — that single-char drop doesn't
reverse). The promoted-arm only ran once on the full input, before lex,
so the lex'd string never got re-matched.

Fix: add the plural snake_case + lowercase-PascalCase forms to each arm:
  billable_work_entry:  + 'timeentries'   | 'time_entries'
  project_status:       + 'issuestatuses' | 'issue_statuses'
  priority:             + 'issuepriorities' | 'issue_priorities'
  project_membership:   + 'membership' | 'memberships'

Extended plural_table_aliases_resolve_to_promoted_codebook_id with 11
new entries (3 per concept where applicable) pinning each tableized
variant -> codebook id.

ogar-vocab 41 (test row count unchanged; entries inside extended);
clippy clean; all 10 real-corpus tests still pass.
@AdaWorldAPI AdaWorldAPI force-pushed the claude/codebook-table-plurals-fix branch from 894e541 to aa78315 Compare June 19, 2026 13:08
@AdaWorldAPI AdaWorldAPI merged commit 7a6b804 into main Jun 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants