Skip to content

op-codegen-pipeline: klickweg harvest bridge — wire the board's nav to ruff #62's Rails navigates_to harvest#90

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/klickweg-harvest-bridge
Jul 8, 2026
Merged

op-codegen-pipeline: klickweg harvest bridge — wire the board's nav to ruff #62's Rails navigates_to harvest#90
AdaWorldAPI merged 1 commit into
mainfrom
claude/klickweg-harvest-bridge

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What & why

The board's klickweg connectivity was verified against a hand-authored edge table (op-server::nav::NAV_EDGES, derived from the ClassView association graph). ruff #62 shipped the Rails navigates_to harvest (two shapes: ERB link_to/button_to clicks + controller redirect_to redirects). This wires the harvest into the pipeline so the klickweg becomes harvest-derived rather than hand-authored — closing the loop the klickweg thread was about.

New op_codegen_pipeline::nav_harvest

  • harvest_klickweg{,_with_report}(app_root) — runs ruff_ruby_spo::extract_nav_edges over an OpenProject Rails source tree, restricted to the served screens (OPENPROJECT_SCREENS = work_packages, projects).
  • klickweg_pairs(edges) — the shape-agnostic (source, target) connectivity graph (ERB + redirect edges between the same screens collapse to one pair).
  • RESOURCE_TO_CONCEPT / concept_for — the 1:1 bridge from Rails resource stems (the harvest vocabulary) to op-server ClassView concept names (work_packagesProjectWorkItem, projectsProject), so the harvested graph and the ClassView graph are provably the same graph under the map.

Proof — tests/nav_harvest_probe.rs

Over a synthetic Rails fixture (tests/fixtures/rails_nav/, no proprietary source):

  1. the harvested screen pairs are exactly the board klickweg (work_packages ↔ projects, both directions) — i.e. the harvest reproduces what NAV_EDGES encodes by hand;
  2. both harvest shapes fire (ERB click + controller redirect);
  3. every served screen bridges to a ClassView concept.

op-server::nav::NAV_EDGES gains a doc note recording that it is the baked mirror of this harvest, regenerating from the harvest once the OpenProject source is in the pipeline input.

Status

Additive — new module + test + fixture; no existing behavior changed. op-codegen-pipeline suite green (incl. 3 new probe tests); new code is clippy-clean (remaining warnings are pre-existing, in git-dep crates). This is the consumer half of the ruff #62 arm; the producer (Ruby harvester) is already on ruff main.

🤖 Generated with Claude Code


Generated by Claude Code

…o ruff #62's Rails navigates_to harvest

The board's klickweg connectivity was verified against a HAND-AUTHORED
edge table (op-server::nav::NAV_EDGES, derived from the ClassView
association graph). ruff #62 shipped the Rails `navigates_to` harvest
(two shapes: ERB `link_to`/`button_to` clicks + controller `redirect_to`
redirects). This wires the harvest into the pipeline so the klickweg
becomes HARVEST-DERIVED rather than hand-authored.

New `op_codegen_pipeline::nav_harvest`:
- `harvest_klickweg{,_with_report}(app_root)` — runs
  `ruff_ruby_spo::extract_nav_edges` over an OpenProject Rails source
  tree, restricted to the served screens (`OPENPROJECT_SCREENS` =
  work_packages, projects).
- `klickweg_pairs(edges)` — the shape-agnostic `(source, target)`
  connectivity graph (ERB + redirect edges between the same screens
  collapse to one pair).
- `RESOURCE_TO_CONCEPT` / `concept_for` — the 1:1 bridge from Rails
  resource stems (harvest vocabulary) to op-server ClassView concept
  names (`work_packages`→`ProjectWorkItem`, `projects`→`Project`), so
  the harvested graph and the ClassView graph are provably the same
  graph under the map.

Proof (tests/nav_harvest_probe.rs, over a synthetic Rails fixture at
tests/fixtures/rails_nav/ — no proprietary source):
- the harvested screen pairs are EXACTLY the board klickweg
  (work_packages ↔ projects, both directions) — i.e. the harvest
  reproduces what NAV_EDGES encodes by hand;
- both harvest shapes fire (ERB click + controller redirect);
- every served screen bridges to a ClassView concept.

op-server::nav::NAV_EDGES gains a doc note recording that it is the
baked mirror of this harvest, regenerating from the harvest once the
OpenProject source is in the pipeline input.

Additive: new module + test + fixture; no existing behavior changed.
op-codegen-pipeline suite green (incl. 3 new probe tests); new code
clippy-clean (remaining warnings are pre-existing, in git-dep crates).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U9t3fRwXmPC6tCpMtnfTrM
@AdaWorldAPI AdaWorldAPI merged commit caacc37 into main Jul 8, 2026
@cursor

cursor Bot commented Jul 8, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_67e0aafa-fd44-47ef-a11f-3250d73a9aaa)

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