feat(ogar-vocab): ProjectForum — Board ↔ Forum cross-curator unification#71
Conversation
…ner ref Cross-curator name-divergence pattern (parallel to ProjectStatus's IssueStatus/Status and ProjectType's Tracker/Type): Redmine 'Board' and OpenProject 'Forum' unified onto project_forum. | Canonical | id | Redmine | OpenProject | |-----------------|---------|---------|-------------| | project_forum | 0x0116 | Board | Forum | Closes the parent-container forward reference from project_message (threaded discussion lives in a Board/Forum). The reciprocal family edge has_many :messages -> ProjectMessage is on the canonical class. - ogar-vocab: project_forum() — project + last_message + has_many messages + name/description/position. Language::Unknown. - CODEBOOK entry 0x0116 in the project-mgmt block. - Resolver promoted arm covering both curator names + PascalCase. - Extended codebook_ids_are_domain_prefixed_and_consistent, project_mgmt_batch_promotions_each_have_a_codebook_id_and_shape, project_mgmt_resolver_arms_collapse_curator_names with project_forum. - ogar-from-rails real-corpus: redmine_board_and_openproject_forum_- converge_as_project_forum iterates both extracted classes and asserts same canonical_concept + canonical_id. ogar-vocab 41, ogar-from-ruff 24, real-corpus 13 (+1); clippy clean. Project-mgmt block (0x01XX) is now 22 concepts. (Context: lance-graph#549 just landed the substrate-level members(basin)/memberof(node) family navigation over the GUID radix trie — complementary to OGAR canonical declarations. The two layers meet at consumption: OGAR declares semantic family edges, lance-graph navigates structural GUID-prefix parents at runtime.)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ca70cf9272
ℹ️ 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".
| c.canonical_concept = Some("project_forum".to_string()); | ||
| c.associations = vec![ | ||
| family_edge("project", "Project"), | ||
| family_has_many("messages", "ProjectMessage"), |
There was a problem hiding this comment.
Add the missing message-to-forum edge
Adding only the ProjectForum → ProjectMessage collection edge leaves the new parent-container reference one-way: project_message() still emits only author and last_reply, so consumers that start from a ProjectMessage cannot navigate to its canonical Board/Forum parent even though both Rails surfaces carry that parent association. Please add the corresponding ProjectMessage → ProjectForum family edge, otherwise the canonical graph still loses the message container relationship this promotion is meant to close.
Useful? React with 👍 / 👎.
ProjectForum — closes the project_message parent-container ref
Same cross-curator name-divergence pattern as
project_status'sIssueStatus/Statusandproject_type'sTracker/Type. RedmineBoardand OpenProjectForumunify ontoproject_forum.project_forum0x0116BoardForumCloses the parent-container forward reference from
project_message(the threaded discussion lives in a Board/Forum). The reciprocal family edgehas_many :messages → ProjectMessageis on the canonical class.What
ogar_vocab::project_forum()—project+last_message+has_many :messages+name/description/position.Language::Unknown.CODEBOOKentry0x0116in the project-mgmt block.board/boards/forum/forums+ PascalCase.project_forum.redmine_board_and_openproject_forum_converge_as_project_forum— iterates both curators' extracted classes and asserts same canonical_concept + canonical_id.Green
ogar-vocab41 ·ogar-from-ruff24 ·ogar-from-rails13 real-corpus (+1) · clippy clean.Note on lance-graph#549
The substrate just landed
members(basin)/memberof(node)family navigation over the GUID radix trie — complementary to OGAR canonical declarations. Myfamily_edge("project", "Project")declarations are semantic; lance-graph'smemberof(work_package_row)is structural (pure GUID-prefix arithmetic). They meet at consumption: OGAR declares what the family edges mean; lance-graph navigates the actual hierarchy.Codebook is now 24 promoted concepts
Project-mgmt (
0x01XX): 22 concepts. Commerce (0x02XX): 6.🤖 Generated with Claude Code