Skip to content

feat(ogar-vocab): ProjectForum — Board ↔ Forum cross-curator unification#71

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/ogar-vocab-project-forum
Jun 19, 2026
Merged

feat(ogar-vocab): ProjectForum — Board ↔ Forum cross-curator unification#71
AdaWorldAPI merged 1 commit into
mainfrom
claude/ogar-vocab-project-forum

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

ProjectForum — closes the project_message parent-container ref

Same cross-curator name-divergence pattern as project_status's IssueStatus/Status and project_type's Tracker/Type. Redmine Board and OpenProject Forum unify onto project_forum.

Canonical id Redmine OpenProject
project_forum 0x0116 Board Forum

Closes the parent-container forward reference from project_message (the threaded discussion lives in a Board/Forum). The reciprocal family edge has_many :messages → ProjectMessage is on the canonical class.

What

  • 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 board/boards/forum/forums + PascalCase.
  • Extended the three coverage tests with project_forum.
  • ogar-from-rails real-corpus: redmine_board_and_openproject_forum_converge_as_project_forum — iterates both curators' extracted classes and asserts same canonical_concept + canonical_id.

Green

ogar-vocab 41 · ogar-from-ruff 24 · ogar-from-rails 13 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. My family_edge("project", "Project") declarations are semantic; lance-graph's memberof(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

…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.)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the missing message-to-forum edge

Adding only the ProjectForumProjectMessage 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 ProjectMessageProjectForum family edge, otherwise the canonical graph still loses the message container relationship this promotion is meant to close.

Useful? React with 👍 / 👎.

@AdaWorldAPI AdaWorldAPI merged commit 156c016 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