Skip to content

feat(coordination): umbrella↔subordinate cross-call-out check - #282

Merged
thewrz merged 1 commit into
mainfrom
feat/issue-264
Jun 25, 2026
Merged

feat(coordination): umbrella↔subordinate cross-call-out check#282
thewrz merged 1 commit into
mainfrom
feat/issue-264

Conversation

@thewrz

@thewrz thewrz commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Why

Umbrella sections (broad-scope NN 00 00 "general") should be cross-referenced by each subordinate section. SpecR had no concept of this relationship.

What

Adds an umbrella_not_called_out coordination finding for Divisions 26/27/28: a subordinate section that does not cite its division umbrella (DD 00 00) is flagged. Surfaced through both the REST coordination report and the coordination_report MCP tool. Adds ADR-037 and renders the new group in the web demo coordination panel behind API_FEATURES.umbrellaCallout.

Design decisions

  • Umbrella registry limited to Div 26/27/28 (the "easy" set); partial coverage is reported in notes[], never silent.
  • Umbrella = exact DD 00 00 (aligns with ADR-023's exact-section model); reuses already-classified section refs — no new citation scanner.
  • The finding fires even when the umbrella spec isn't in scope (the call-out may target an externally-issued umbrella). Rationale in ADR-037 "Alternatives Considered".

Testing

  • Unit 3/3 + integration 13/13 (run on an isolated DB during review)
  • pnpm build, pnpm lint, redocly lint openapi.yaml
  • Div 26 subordinate without cite → exactly one finding; with cite → none; unsupported division skipped + noted
  • CI green

🤖 Implemented by Codex (GPT-5.5 xhigh), reviewed by Claude Opus 4.8. Closes #264.

Co-Authored-By: Codex <noreply@openai.com>
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@thewrz, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 33 minutes and 1 second. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 30287173-584e-4055-86c1-13dedfa449f4

📥 Commits

Reviewing files that changed from the base of the PR and between 294d62f and c9bca2b.

📒 Files selected for processing (8)
  • docs/adr/037-umbrella-subordinate-coordination.md
  • examples/web_ui_demo/js/coordination.js
  • examples/web_ui_demo/js/features.js
  • openapi.yaml
  • src/db/queries/coordination.integration.test.ts
  • src/db/queries/coordination.ts
  • src/db/queries/umbrella-callouts.test.ts
  • src/db/queries/umbrella-callouts.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/issue-264

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thewrz
thewrz merged commit a1d1c63 into main Jun 25, 2026
5 checks passed
@thewrz
thewrz deleted the feat/issue-264 branch June 25, 2026 13:05
thewrz added a commit that referenced this pull request Jul 1, 2026
#325)

* docs(readme): sync capabilities to last month of merged PRs

Reflect shipped work in the README's "Included Today", "API Surface", and MCP
tool table, validated against the merged diffs and current main:

- PDF ingest (text-layer + OCR + font-encoding recovery) accepted by POST /parse
  (#287, #290, #311)
- coordination / E&O report + submittal register (#241, #269, #277, #282, #283,
  #284) and article-role tagging (#273)
- onboarding pipeline: library import, editability review/override, reclassify,
  finalize/reopen, open-comments (#243, #247, #248, #249, #272)
- spec/project soft-delete + restore (#257, #313), document concurrency (#197),
  revision/addendum manual rendering (#221), numbering profiles (#317, #322)
- add missing MCP tools get_numbering_profile, submittal_register,
  open_comments_report; document GET /docs (Scalar) (#213, #285)
- add Example Client pointer to examples/web_ui_demo (#225)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(roadmap): move shipped work to done; re-date to 2026-07-01

Reconcile the roadmap with merged reality (was stamped 2026-06-17). Moved from
planned/in-progress to Included, each validated against the diff:

- PDF ingest (#287, #290, #311) — remove from "Later"
- deep paragraph nesting pr6/pr7 (#215)
- revision nomenclature (#216) + revision/addendum manual rendering (#221) —
  the two "Near Term" Phase 2e items are done
- coordination / E&O report, required-sections, article-role, submittal register
  (#239, #241, #269, #273, #277, #282, #283, #284) — new "Coordination and
  Semantics" section; removed "coordination report" from planned Phase 4
- onboarding APIs (#243, #247, #248, #249, #272) — API done; UI remains planned
- soft-delete/withdraw (#257, #313), section-number format (#266, #271),
  external-content associations (#242), structural numbering profiles (#317)

Kept as planned (foundation only): header/footer composition (#222, #314) and
keynote surfacing (#315) — DB/AST exist, no resolution/render/export yet.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(architecture): reflect merged structural changes

Update the architecture spec for shipped work, validated against the diffs and
current schema/routes:

- Tech Stack + Data Flow: Parse — PDF text-layer (unpdf/pdfjs-dist) + OCR
  (tesseract.js/@napi-rs/canvas) path and numberingProfileId override (#287,
  #290, #311, #317; ADR-034, ADR-039)
- DB schema — specs.onboarding_status/withdrawn_at, projects.section_number_format
  /deleted_at/deleted_by, paragraphs.source_facts/classification/
  editability_override; "Additional tables" summary for editing_conventions,
  paragraph_associations, required_sections, keynotes, header_footer_configs,
  numbering_profiles, revision_nomenclature_profiles (foundation-only tables
  flagged) (ADR-021/022/023/028/031/032; #187, #242)
- new Coordination Report / E&O section (finding vocabulary) and Document
  Concurrency section (locks/optimistic/lifecycle) (#197, #241, #269, #277,
  #282, #283, #284; ADR-018, ADR-033/035/036/037)
- AST meta.articleRole (#273, ADR-033); API-surface note pointing at the
  CI-enforced openapi.yaml + GET /docs; refreshed MCP tool list

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

feat(coordination): umbrella↔subordinate cross-call-out check

1 participant