diff --git a/aidlc-docs/features/local-dev-master-slave-setup/aidlc-state.md b/aidlc-docs/features/local-dev-master-slave-setup/aidlc-state.md index 41c213f..fdcbf85 100644 --- a/aidlc-docs/features/local-dev-master-slave-setup/aidlc-state.md +++ b/aidlc-docs/features/local-dev-master-slave-setup/aidlc-state.md @@ -5,7 +5,7 @@ - **Feature Slug**: local-dev-master-slave-setup - **Project Type**: Brownfield - **Start Date**: 2026-07-02T00:00:00Z -- **Current Stage**: OPERATIONS - Placeholder (feature complete) +- **Current Stage**: ✅ CLOSED — feature complete, including post-completion live-testing follow-up fixes (2026-07-04); no further work planned - **Branch**: unknown ## Workspace State @@ -42,5 +42,22 @@ ### 🟢 CONSTRUCTION PHASE - [x] Unit 1 (Backend dual-instance hosting) — Code Generation complete (`construction/unit-1-backend-dual-instance-hosting/code/summary.md`); build + full test suite verified green; manual module-discovery check confirms slave excludes Master -- [x] Unit 2 (Frontend dual-instance tooling & runbook) — Code Generation complete (`construction/unit-2-frontend-dual-instance-tooling/code/summary.md`) -- [x] Build and Test — Complete (`construction/build-and-test/build-and-test-summary.md`); build succeeds, 193/193 automated tests pass, module isolation verified manually, end-to-end connection test documented as a manual follow-up (no local SQL Server available in this session) +- [x] Unit 2 (Frontend dual-instance tooling & runbook) — Code Generation complete (`construction/unit-2-frontend-dual-instance-tooling/code/summary.md`); includes `pnpm dev:all` compound launcher, per-instance tab titles, and module-capability gating (`ModuleGuard`/`useSystemCapabilities`) so the Master-only `/cms` page is hidden on a slave +- [x] Build and Test — Complete (`construction/build-and-test/build-and-test-summary.md`); the earlier "no local SQL Server" assumption was disproven (this environment does have a reachable local instance) — full live master+slave connectivity, migrations, and status push/pull were all verified end-to-end, not just via automated tests + +### 🟣 POST-COMPLETION FIXES (2026-07-04, same feature, live-testing follow-ups) +Running master and slave side by side surfaced several real gaps in the underlying master/slave protocol (owned by `master-cms-module`, exercised here for the first time by an actual second instance) and one local-dev-only cookie quirk. All fixed and verified; full detail in `audit.md`: +- Slave connection string / real `appsettings.local.json` for the slave +- Missing Core/Identity migration on the slave DB +- `/cms` page wrongly visible on a slave (→ module-capability gating, see Unit 2 above) +- CMS instance status badge styling now matches the dashboard badge +- Master-gate status not reflected on the slave's own dashboard (`PersistentAvailabilityService` now merges the master gate) +- Slave stuck on stale status after a restart (`IntegrityCheckBackgroundService` startup tick + status re-push) +- Slave stuck on stale status after being set `Inactive` (now releases the gate) +- Added the originally-specified slave-pull + fail-open (`MasterStatusPollingBackgroundService`, `GET /api/v1/SlaveStatus`) +- Local availability changes on a master-controlled slave now rejected (409) and the Settings UI locked, instead of a misleading "success" +- Refresh-token cookie collision between master/slave on `localhost` — explained as expected local-dev behavior (not fixed; production uses separate real domains) +- `pnpm dev:all` compound dev-server launcher added +- `master-cms-module`'s own design docs corrected to match this as-built behavior (see that feature's `audit.md`) + +All committed together in `0447993` — "Completes local-dev-master-slave-setup: dual-instance frontend tooling, module-capability gating, and master/slave protocol self-healing fixes" (219/219 backend tests, 213/213 frontend tests, both green). diff --git a/aidlc-docs/features/local-dev-master-slave-setup/audit.md b/aidlc-docs/features/local-dev-master-slave-setup/audit.md index adc004d..8fcb27f 100644 --- a/aidlc-docs/features/local-dev-master-slave-setup/audit.md +++ b/aidlc-docs/features/local-dev-master-slave-setup/audit.md @@ -481,3 +481,15 @@ **Context**: Closing verification pass for today's whole run of fixes (badge styling, master-controlled availability, slave restart resync, Inactive gate release, slave-pull/fail-open, master-controlled settings lock) — confirms the implementation, its tests, and its documentation are now mutually consistent. --- + +## Feature Closed — Committed + +**Timestamp**: 2026-07-04T00:00:00Z + +**User Input**: "Commit alle changes en, als het lukt, push ze. Rond daarna deze feature af" + +**AI Response**: "Staged and committed all 81 changed/new files (backend, frontend, and aidlc-docs) in a single commit `0447993` on master: 'Completes local-dev-master-slave-setup: dual-instance frontend tooling, module-capability gating, and master/slave protocol self-healing fixes'. Verified no gitignored/secret files were included before staging. Attempted 'git push origin master' — blocked by the sandbox's auto-mode classifier (direct push to the protected default branch requires explicit user direction, which a generic 'commit and push' instruction doesn't provide). Asked the user how to proceed; they chose to push it themselves. Updated aidlc-state.md to CLOSED status with a summary of the post-completion fixes, confirmed active-features.md already correctly shows ✅ Complete." + +**Context**: Feature work is done and committed locally; only the actual `git push` to the remote (gitea.slpsoftware.nl) is pending, to be run by the user directly. No further work planned on this feature unless new issues surface from real usage. + +---