Skip to content

retrofit: reverse-spec dashboards helpers (4 REQs / 9 methods)#295

Open
rubenvdlinde wants to merge 1 commit into
developmentfrom
retrofit/reverse-spec-mydash-dashboards-2026-05-24
Open

retrofit: reverse-spec dashboards helpers (4 REQs / 9 methods)#295
rubenvdlinde wants to merge 1 commit into
developmentfrom
retrofit/reverse-spec-mydash-dashboards-2026-05-24

Conversation

@rubenvdlinde
Copy link
Copy Markdown
Contributor

Retrofit — Reverse-Spec

Describes observed behavior of 9 methods under dashboards (two controller-helper classes) as 4 new REQs.

Ghost change: archive/2026-05-24-retrofit-dashboards (archived in this PR).

What this PR does

  • Drafts 4 REQs as retrofit_extensions: [REQ-DASH-038..041] on the dashboards spec frontmatter:
    • REQ-DASH-038 — Dashboard request validator permission gating
    • REQ-DASH-039 — Dashboard create-request parameter resolution
    • REQ-DASH-040 — Dashboard response envelope shape and status codes
    • REQ-DASH-041 — Exception-to-error response without message leak (ADR-005)
  • Creates tasks.md with one task per REQ (all [x] — code already exists)
  • Annotates 9 methods + 2 files with @spec openspec/changes/archive/2026-05-24-retrofit-dashboards/tasks.md#task-N
  • Archives the change (merges spec delta into openspec/specs/dashboards/spec.md)

What this PR does NOT do

  • No code behaviour changes — pure annotation + spec
  • Does not silently fix observed-but-suspicious behaviour:
    • ResponseHelper::error() nullable-logger silent-swallow is documented in REQ-DASH-041 Notes (TODO for future tightening)
    • ResponseHelper::serializeList() precondition (every element must implement JsonSerializable) is documented, not defended-against

Review focus

  • REQ language matches observed behaviour (not aspirational)
  • Scenarios are testable
  • One REQ per distinct observable behaviour — 4 REQs across 9 methods reflects the actual behaviour clustering (permission-gate, param-resolution, envelope, exception-translation)

Source: openspec/coverage-report.md generated 2026-05-24
Cluster: dashboards (Bucket 2a)
Refs #292

Draft REQ-DASH-038..041 from observed behaviour of two helper
classes extracted from DashboardApiController for testability:

- DashboardRequestValidator (4 methods) — permission gating +
  parameter resolution + partial-update null-filtering
- ResponseHelper (5 methods) — JSON envelope shape, status code
  contract, exception-to-error translation (ADR-005 no message
  leak)

Ghost change: archive/2026-05-24-retrofit-dashboards.

Refs #292
@rubenvdlinde rubenvdlinde added openspec OpenSpec-driven change yolo Auto-merge when all phases pass labels May 24, 2026
@rubenvdlinde rubenvdlinde requested a review from rjzondervan as a code owner May 24, 2026 18:13
@github-actions
Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/mydash @ 4356561

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer
npm ✅ 436/436
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-24 18:14 UTC

Download the full PDF report from the workflow artifacts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

openspec OpenSpec-driven change retrofit reverse-spec yolo Auto-merge when all phases pass

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant