Skip to content

fix(manifest): restore clobbered Enrolment/Regulation schemas; conform manifest to nc-vue v1.4.0; drop dead scaffold files - #40

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/manifest-restore
May 12, 2026
Merged

fix(manifest): restore clobbered Enrolment/Regulation schemas; conform manifest to nc-vue v1.4.0; drop dead scaffold files#40
rubenvdlinde merged 1 commit into
developmentfrom
fix/manifest-restore

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Investigation + fix for manifest-system regressions found in Wave 2. See commit message for the full root-cause analysis.

tl;dr

  • Wave 2's dashboard PR (feat(dashboard): apply role-aware dashboard via schema widgets (closes #26) #32) silently clobbered the full Enrolment and Regulation schemas with widget-only stubs (lost their lifecycle/calculations/notifications/aggregations/relations + most properties). Restored from the last-good commit + merged the dashboard widgets back in.
  • appendOnly: true was nested inside x-openregister on Credential/XapiStatement/Attestation — OR's Schema::hydrate() only reads top-level appendOnly, so it was silently dropped (those schemas were NOT append-only). Moved to top level.
  • src/manifest.json didn't validate against nc-vue's manifest schema v1.4.0 (14 errors: visibleIf on pages, public on pages, widget-ref widgets, href/visibleIf on actions — all features the sub-agents guessed at that don't exist yet). Conformed it; tests/validate-manifest.js now PASSes.
  • Deleted dead scaffold files: src/router/index.js, src/views/Dashboard.vue, src/navigation/MainMenu.vue, lib/Controller/DashboardController.php.

🤖 Generated with Claude Code

…m manifest to nc-vue v1.4.0; drop dead scaffold files

## Root cause

All 5 Wave-2 worktrees were branched off the same pre-Wave-2 base, so the sub-agents
worked blind to each other. The dashboard agent wrote intentional STUB Enrolment +
Regulation schemas ("declare a stub if it doesn't exist yet"). When the dashboard PR
was cherry-picked LAST onto a development that already had #31's full Enrolment and
#33's full Regulation, git's line-based JSON merge kept the stub (the schemas were
declared at different file positions, so no textual conflict — git appended both and
`json.load` resolved the duplicate key to the stub). The merge-resolver script was
only re-run on manifest.json, not scholiq_register.json.

## Fixes

- **Restore full Enrolment schema** (10 props + x-openregister + lifecycle pending→active→completed|withdrawn|failed + relations learner/course + calculations isOverdue/daysRemaining/ragStatus + notifications welcomeOnActivate/completionOnComplete/reminderT30/T7/T1/managerAlertOnOverdue) and merge in the dashboard's myMandatoryTraining widget.
- **Restore full Regulation schema** (12 props + x-openregister + lifecycle draft→published→archived + aggregations mandatoryEnrolledCount/mandatoryCompletedCount/attestationCount/validCredentialCount + calculations coveragePercent/ragStatus + notifications officerAlertOnCoverageDrop/onPublished) and merge widgets coverageGrid+boardProof+attestationCount.
- **Move `appendOnly: true` to top level** on Credential, XapiStatement, Attestation — OR's Schema::hydrate() only reads top-level `appendOnly` (it calls setAppendOnly()); when nested inside `x-openregister` the flag was silently dropped, so these schemas were NOT actually append-only.
- **Conform src/manifest.json to nc-vue manifest schema v1.4.0**: removed `visibleIf` from pages, `public` from CredentialVerify, fixed dashboard widgets to {id,title,type:'custom'}, stripped non-schema keys (href, visibleIf) from the viewInMydash action. `tests/validate-manifest.js` now PASSes (was FAIL with 14 errors).
- **Delete dead scaffold files**: src/router/index.js, src/views/Dashboard.vue, src/navigation/MainMenu.vue (none imported anywhere), lib/Controller/DashboardController.php (no route).

Follow-ups: nc-vue needs `visibleIf` page predicates, `public` pages, and `widget-ref` page-content (umbrella #200) before the dashboard can be fully declarative; until then the dashboard pages are conformant-but-minimal.
@rubenvdlinde
rubenvdlinde merged commit 3ee0f5e into development May 12, 2026
@rubenvdlinde
rubenvdlinde deleted the fix/manifest-restore branch May 12, 2026 05:14
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/scholiq @ 726d45f

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

Quality workflow — 2026-05-12 05:15 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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant