Skip to content

[autonomy-atomicity] Central route manifest is a merge-conflict hotspot for parallel feature work #2976

@github-actions

Description

@github-actions

Autonomy / Atomicity Findings

1. Central route manifest creates forced file coupling across 23 modules

Category: Manual routing / Manifest hotspot
File(s):

  • peek/src/routes/paths.ts:22-712 — Central PAGE_PATHS object (712 lines, 52 page entries)
  • peek/src/routes/manifest.ts:4-62 — Central PAGE_MANIFEST object (lazy component imports)
  • 23 importing modules (App.tsx, AppHeader.tsx, AppSidebar.tsx, ChatPage.tsx, CommandPalette.tsx, and 18 feature/service pages)

Problem: Adding a new page requires simultaneous edits to both paths.ts (define route + nav metadata) and manifest.ts (lazy import). When parallel feature teams (e.g., Kubernetes + Services) add new pages concurrently, they both touch the same 712-line monolithic PAGE_PATHS constant, creating merge conflicts in a file that also touches 23 unrelated page components. Any routing change risks breaking page imports since they all depend on the stability of the PAGE_PATHS export.

Concrete Evidence:

  • PAGE_PATHS object spans lines 22–712 (690 lines of route metadata)
  • 52 page entries in a single constant (every new page requires an addition here)
  • 23 direct imports from feature pages, hooks, and services depend on this file staying stable
  • Every new feature page requires coordinated edits to both paths.ts AND manifest.ts

Scenario: Dev A adds /kubernetes/advanced page (edits paths.ts lines 200-210, manifest.ts line 42). Dev B simultaneously adds /services/cost-analysis page (edits paths.ts lines 220-230, manifest.ts line 43). Merge conflict in both files due to sequential line additions in monolithic objects.

Suggested Actions

  • Extract routing concerns: Split PAGE_PATHS into (1) minimal path/PageId definitions, (2) separate nav UI metadata (labels, icons, ordering, capability checks)
  • Make PAGE_MANIFEST auto-discoverable: Adopt import.meta.glob() pattern (already used in vizRegistry.tsx and health-checks/checks/index.ts) instead of manual imports
  • Decouple imports: Page components that only need to navigate should import lightweight path definitions, not the full PAGE_PATHS with UI metadata
  • Verify: Pages that depend on PAGE_PATHS for capability/nav logic should reference separate nav config, reducing the coupling surface

Note

🔒 Integrity filter blocked 3 items

The following items were blocked because they don't meet the GitHub integrity level.

  • #566 search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
  • #1671 search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
  • #1977 search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".

To allow these resources, lower min-integrity in your GitHub frontmatter:

tools:
  github:
    min-integrity: approved  # merged | approved | unapproved | none

What is this? | From workflow: Autonomy Atomicity Analyzer

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions