Files
schalli 89f559ce62 docs(03): create phase plan for Module System & Domaincheck
4 plans across 3 waves: SDK + registry (W1), Domaincheck module +
lazy loading (W2), visual verification (W3). Covers MOD-01..04,
DCHK-01..03.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 12:13:20 +02:00

131 lines
4.7 KiB
Markdown

---
phase: 03-module-system-domaincheck
plan: 04
type: execute
wave: 3
depends_on: ["03-02", "03-03"]
files_modified: []
autonomous: false
requirements:
- MOD-01
- MOD-02
- MOD-03
- MOD-04
- DCHK-01
- DCHK-02
- DCHK-03
must_haves:
truths:
- "All phase success criteria verified by human"
- "Module system works end-to-end with domaincheck as proof"
artifacts: []
key_links: []
---
<objective>
Human verification that the complete module system and domaincheck module work as intended — admin activation, lazy loading, domain checking with colored results.
Purpose: Final validation before marking Phase 3 complete.
Output: Human approval or issues list for gap closure.
</objective>
<execution_context>
@/home/vicolab/.claude/gsd-core/workflows/execute-plan.md
@/home/vicolab/.claude/gsd-core/templates/summary.md
</execution_context>
<context>
@.planning/phases/03-module-system-domaincheck/03-01-SUMMARY.md
@.planning/phases/03-module-system-domaincheck/03-02-SUMMARY.md
@.planning/phases/03-module-system-domaincheck/03-03-SUMMARY.md
</context>
## Phase Goal
**As a** platform admin, **I want to** discover, register, and activate modules dynamically, **so that** tenants get access to new functionality without application restarts.
<tasks>
<task type="checkpoint:human-verify" gate="blocking">
<name>Task 1: Verify Module System End-to-End</name>
<what-built>
Complete module system with SDK, database registry, per-tenant activation, lazy-loaded frontend, and working Domaincheck module.
</what-built>
<how-to-verify>
1. Start the Docker Compose stack: docker compose up -d
2. Log in as Admin user
3. Verify module registry API:
- GET http://localhost:3001/modules — should show domaincheck module in list
- GET http://localhost:3001/modules/active — should show activated modules for tenant
4. If domaincheck not yet activated, activate it:
- POST http://localhost:3001/modules/{domaincheck-id}/activate
5. Navigate to http://localhost:3000/modules/domain-tools
- Should see category page with Domaincheck card (icon, name, description)
- Card should look good as a standalone module in the grid (D-05a)
6. Click "Open" on the Domaincheck card (or navigate to /modules/domain-tools/domaincheck)
- Should see expanded view with input field (D-05b)
7. Enter "google" in the domain input and click "Check"
- Should see results for google.de, google.com, google.net, google.org
- google.com and google.de should show RED "Registered" badge (D-01)
8. Enter a clearly available domain (e.g. "xyzabc123randomtest") and check
- Some TLDs should show GREEN "Available" badge
9. Verify i18n: switch language to English
- All labels should change to English equivalents
10. Verify theme: switch to dark mode
- Module UI should respect dark theme
11. Deactivate the module:
- POST http://localhost:3001/modules/{domaincheck-id}/deactivate
- Refresh /modules/domain-tools — domaincheck card should disappear
- Direct access to /modules/domain-tools/domaincheck should be blocked (403 from API)
</how-to-verify>
<read_first>
.planning/phases/03-module-system-domaincheck/03-01-SUMMARY.md,
.planning/phases/03-module-system-domaincheck/03-02-SUMMARY.md,
.planning/phases/03-module-system-domaincheck/03-03-SUMMARY.md
</read_first>
<acceptance_criteria>
- Module registry shows domaincheck in database
- Admin can activate/deactivate without restart (MOD-03)
- Category page renders with lazy-loaded cards (MOD-04)
- Domaincheck accepts input and returns colored results (DCHK-01, DCHK-02, DCHK-03)
- Deactivated module is inaccessible
- i18n and theming work correctly
</acceptance_criteria>
<resume-signal>Type "approved" or describe issues to fix</resume-signal>
</task>
</tasks>
<threat_model>
## Trust Boundaries
| Boundary | Description |
|----------|-------------|
| N/A | Verification-only plan, no new code |
## STRIDE Threat Register
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|-----------|----------|-----------|-------------|-----------------|
| T-03-12 | N/A | N/A | accept | No new attack surface — verification only |
</threat_model>
<verification>
Human confirms all 11 verification steps pass.
</verification>
<success_criteria>
- Human types "approved" after verifying all success criteria from Phase 3 roadmap
- Or provides specific issues that will generate gap closure plans
</success_criteria>
## Artifacts this phase produces
| Symbol | Location | Type |
|--------|----------|------|
| (none — verification only) | | |
<output>
Create `.planning/phases/03-module-system-domaincheck/03-04-SUMMARY.md` when done
</output>