Skip to content

[OpenSpec] page-topology-cleanup #1335

Description

@github-actions

⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.

Artifacts

Specs

Tasks

  • A1.1 Convert ProcessMiningDashboard to type: "dashboard": declare config.widgets (KPI tiles, dwell-time bar chart, weekly throughput line chart, bottleneck ranking) + config.layout.
  • A1.2 Move its header/subtitle and the period NcActions control out of the component and onto the page declaration.
  • A2.1 Convert TermijnDashboard to type: "dashboard" with KPI-card and report-table widgets.
  • A2.2 Move its case-type filter and refresh control onto the page declaration.
  • A3.1 Unnest /doorlooptijd: split DoorlooptijdDashboard.vue so the page supplies the <h2> and filters and the widgets supply only content.
  • A3.2 Replace its single 12x12 widget with the real widget/layout set.
  • A4.1 Check all three against ADR-062 grid discipline; delete the per-page <style scoped> rules the shared grid now supplies.
  • A4.2 hydra-gate-dashboard-antipattern — asserted in-repo across all four dashboard pages: no single 12x12 widget, >=2 layout entries each, every custom widget has a slot. Gate itself runs in CI.
  • B1.1 Delete the ProcestConfiguration page (route /settings) and its section-admin slot from src/manifest.json.
  • B1.2 Unregister AdminRootView from src/customComponents.js and src/registry.js.
  • B1.3 hydra-gate-admin-router — the in-app admin route is gone; asserted no manifest page mounts an admin component. Gate itself runs in CI.
  • B2.1 Remove both ProcestConfiguration menu entries (order 95 "Case types", order 99 "Configuration"); add one settings-foldout link per ADR-044.
  • B3.1 Render TenantOnboardingDashboard.vue as a section/tab inside AdminRoot.vue.
  • B3.2 Delete the /tenant-onboarding page and its menu entry (order 92).
  • B4.1 Add <personal> registration + lib/Settings/PersonalSettings.php + templates/settings/personal.php + a procest-personal-settings webpack entry.
  • B4.2 Mount SubstitutionSettings.vue there; confirm the self-scope filter is enforced server-side, not only in the query.
  • B4.3 Delete the /substitution page and its menu entry (order 93). Leave /substitution-admin intact.
  • B5.1 Confirm the /cases map view covers the locations use-case (design.md Decision 3). If it does not, stop and drop B5 with a reason.
  • B5.2 Delete the Locations page, the LocationDetail route and the menu entry (order 98). Leave the location schema and the case-detail linkage untouched.
  • C1.1 Diff procest's VerwerkingenOverview.vue against OpenRegister's /avg page; list what OR does not yet provide.
  • C1.2 Land the gaps in OpenRegister (openspec change in that repo). Merge before C1.3.
  • C1.3 Delete /verwerkingen, its menu entry and VerwerkingenOverview.vue from procest.
  • C2.1 Inventoried. OR registers 19 nodes and every one is control-flow or data — none acts outward, so the six procest actions are CONTRIBUTED as nodes (procest.<type>) via RegisterFlowNodesEvent, the seam FlowNodeRegistry exists for and hermiq already uses. No OpenRegister-side change needed.
  • C2.1b Port SideEffectDispatcher to run step actions through OR's flow runner (full port, per the 2026-08-22 decision) instead of the private ActionRegistry.
  • C2.2 Repair step rewriting every ActionRef in caseType.workflowSteps (automaticActions, config.autoActions, config.escalationRule) to its procest.<type> node id. Idempotent, non-fatal. 9 references in the shipped seed alone.
  • C2.3 Delete /settings/automatic-actions, /settings/automatic-actions/:id, their menu entry and the backing controller/service from procest.
  • D1.1 Wait for consume-decidesk-besluitvorming-leaf to merge — it deliberately keeps the two besluitvorming routes alive.
  • D1.2 Map procest's agenda-compiler and vergadering-detail onto decidesk's /agenda-items and /meetings; land the gaps in decidesk. Merge before D1.3.
  • D1.3 Delete /besluitvorming/agenda, /besluitvorming/vergaderingen/:id, AgendaCompilerView.vue, VergaderingDetailView.vue and src/manifest.d/50-besluitvorming.json.
  • D2.1 Map bezwaaradviescommissie onto decidesk's governance-body; land it in decidesk. Merge before D2.2.
  • D2.2 Delete /settings/bezwaar-committees, /settings/bezwaar-committees/:id and their menu entry.
  • D3.1 Map parafeerroute onto decidesk's routed-document/approval model; land it in decidesk. Merge before D3.2.
  • D3.2 Delete /settings/parafeerroutes, /settings/parafeerroutes/:id and their menu entry.
  • D4.1 Verify the case-detail leaf is render-and-read only (ADR-066): no verb, no command. Anything procest needs decidesk to do travels as a typed event (ADR-041).
  • E1.1 Diffed. Hermiq's Approval is a GATE (blocking, pre-action); procest's aiAuditEntry is retrospective evidence (what the model proposed, what the human did). AiFeature registers that human intervention exists (Art. 49); neither records the per-decision evidence (Art. 14). Real gap, not a duplicate.
  • E1.2 Landed in hermiq (PR Eliminate type:custom pages — push to Tier-4 / ADR-024 #514): Approval.sourceType gains advisory, status gains overridden, plus advisoryContext, a typed AiOversightRecordedEvent, its listener/service, and an /ai-oversight surface. Merge before E1.3.
  • E1.3 Deleted /settings/ai-oversight, /settings/ai-oversight/:id and the menu entry; added a deeplink to hermiq. AiAuditService now delegates each decision; MigrateAiOversightToHermiq replays the existing ones.
  • F1 Rewrite affected e2e specs to assert each retired page is absent, not deleted (the retire-status-history-page precedent).
  • F2 Add e2e coverage for the three dashboards asserting one page heading and a multi-widget grid.
  • F3 Add e2e coverage for substitution under personal settings and tenant-onboarding under admin settings.
  • F4 npm run test:e2e green.
  • G1 USE_LOCAL_LIB=false npm run build compiles.
  • G2 composer check:strict passes.
  • G3 ./scripts/run-hydra-gates.sh . — no new findings.
  • G4 openspec validate page-topology-cleanup passes.

Design

See design.md for technical design details.


Synced from openspec/changes/page-topology-cleanup by OpenSpec workflow
App: dossiq

Metadata

Metadata

Assignees

No one assigned

    Labels

    openspecOpenSpec-driven changeopenspec:tasksOpenSpec phase: Tasksspec:too-largeSpec rejected: exceeds task-count cap (ADR-032)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions