Skip to content

feat(redmine-canon): app module — pull OGAR via class (0x0007 twin of op-canon)#19

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/redmine-canon-app-twin
Jun 22, 2026
Merged

feat(redmine-canon): app module — pull OGAR via class (0x0007 twin of op-canon)#19
AdaWorldAPI merged 1 commit into
mainfrom
claude/redmine-canon-app-twin

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

The Redmine-side lance-graph#589 landing shape, symmetric to op-canon's W0 (openproject-nexgen-rs#56): redmine-canon::app pulls the canonical class_id for a Redmine surface name via ogar_vocab::ports::RedminePort::class_id (no bridge), and composes the full render classid under Redmine's reserved prefix 0x0007 (APP-CLASS-CODEBOOK-LAYOUT.md §2). class_id_of("Issue") == Some(0x0102) — the same low-half concept OpenProject's WorkPackage pulls (two renders, one concept). Includes a port<->snapshot drift guard. Built+tested on 1.95.

… op-canon)

Adds `crates/redmine-canon/src/app.rs`, the symmetric Redmine-side twin of
op-canon's `app.rs` (lance-graph#589 landing shape).

Public API (mirrors op-canon's FINAL naming):
- `APP_PREFIX: u16 = 0x0007` — Redmine's reserved render prefix
  (APP-CLASS-CODEBOOK-LAYOUT.md §2; OpenProject's twin is 0x0001)
- `class_id_of(surface_name) -> Option<u16>` — pulls via RedminePort::class_id,
  no bridge, no hand-rolled registry
- `render_classid(concept: u16) -> u32` — stamps the Redmine prefix:
  (0x0007 << 16) | concept => 0x0007_DDCC
- `render_classid_of(surface_name) -> Option<u32>` — pull + compose in one step

Tests:
- `class_id_of("Issue") == Some(0x0102)` (same project_work_item id as
  OpenProject's WorkPackage — the fork-lineage convergence invariant)
- `render_classid(0x0102) == 0x0007_0102`
- `port_pull_agrees_with_the_snapshot` drift guard: iterates the vendored
  Redmine snapshot's curator_classes; for every name the port resolves,
  asserts it returns the same id as the snapshot. Checked 28 surface names
  (all 28 Redmine port aliases appear in the snapshot).

Wires `pub mod app;` into redmine-canon/src/lib.rs respecting
`#![warn(missing_docs)]`.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

1 similar comment
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@AdaWorldAPI AdaWorldAPI merged commit b142d36 into main Jun 22, 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