wip: phase 09 paused after wave 1 (2/6 plans done)
This commit is contained in:
@@ -3,70 +3,71 @@ context: phase
|
|||||||
phase: 09-cert-manager-module
|
phase: 09-cert-manager-module
|
||||||
task: null
|
task: null
|
||||||
total_tasks: null
|
total_tasks: null
|
||||||
status: planning
|
status: in_progress
|
||||||
last_updated: 2026-07-01T13:42:33.474Z
|
last_updated: 2026-07-01T21:27:15.045Z
|
||||||
---
|
---
|
||||||
|
|
||||||
# BLOCKING CONSTRAINTS — Read Before Anything Else
|
# BLOCKING CONSTRAINTS — Read Before Anything Else
|
||||||
|
|
||||||
_No blocking constraints identified this session._
|
_Keine blocking constraints identifiziert._
|
||||||
|
|
||||||
<current_state>
|
<current_state>
|
||||||
Phase 9 (Cert Manager Module) ist vollständig besprochen und CONTEXT.md geschrieben.
|
Phase 9 (cert-manager-module) Execution läuft. Wave 1 abgeschlossen (09-01 + 09-02 committed). Wave 2–5 noch ausstehend (09-03 bis 09-06).
|
||||||
plan-phase wurde gestartet, aber durch den UI-SPEC Safety Gate blockiert — UI-SPEC.md fehlt noch.
|
|
||||||
|
|
||||||
Nächster Schritt: `/gsd-ui-phase 9` ausführen, dann `/gsd-plan-phase 9`.
|
Letzter Commit: `76d1a31` — "docs(phase-09): update tracking after wave 1"
|
||||||
</current_state>
|
</current_state>
|
||||||
|
|
||||||
<completed_work>
|
<completed_work>
|
||||||
|
|
||||||
- Dashboard-Grid-Fix: `compactType={null}` → `compactor={noCompactor}` (react-grid-layout v2 API) — deployed
|
- Phase 9 geplant: 6 Pläne in 5 Waves (commit 812eb06)
|
||||||
- Phase 9 zu ROADMAP.md hinzugefügt (commit a32f5f9)
|
- Wave 1 ausgeführt und gemerged:
|
||||||
- `09-CONTEXT.md` mit allen Entscheidungen erstellt (commit a32f5f9)
|
- **09-01** (API Foundation): node-forge 1.4.0 + Vitest installiert, NestJS CertManagerModule scaffolded (Module/Controller/Service/Seed/DTOs), in app.module.ts registriert, 11 Tests grün
|
||||||
- plan-phase initialisiert → UI-SPEC-Gate erkannt und korrekt geblockt
|
- **09-02** (Web Shell): Next.js Page mit 4 Tabs, DropZone, PasswordField, actions.ts (downloadBase64), i18n de/en, 7 Render-Tests grün
|
||||||
|
- Merge-Konflikte in Wave 1 manuell gelöst:
|
||||||
|
- `app.module.ts`: CertManagerModule + FavoritesModule beide behalten
|
||||||
|
- `de.json` / `en.json`: JSON-Merge via python (strukturell korrekt)
|
||||||
|
- STATE.md + ROADMAP.md aktualisiert (2/6 Pläne complete)
|
||||||
</completed_work>
|
</completed_work>
|
||||||
|
|
||||||
<remaining_work>
|
<remaining_work>
|
||||||
|
|
||||||
1. `/gsd-ui-phase 9` — UI-Design-Kontrakt (UI-SPEC.md) erstellen
|
- **Wave 2**: Plan 09-03 — Inspect-Endpoint + InspectTab (CERT-01, CERT-05 read) — depends_on: [09-01, 09-02]
|
||||||
2. `/gsd-plan-phase 9` — Pläne erstellen (nach UI-SPEC)
|
- **Wave 3**: Plan 09-04 — Split-Endpoint + SplitTab (CERT-02) — depends_on: [09-03]
|
||||||
3. `/gsd-execute-phase 9` — Implementierung
|
- **Wave 4**: Plan 09-05 — Convert-Endpoint + ConvertTab PEM/DER/P7B (CERT-04) — depends_on: [09-04]
|
||||||
|
- **Wave 5**: Plan 09-06 — Merge + PFX-create + MergeTab + PFX-Convert (CERT-03, CERT-04, CERT-05) — depends_on: [09-05]
|
||||||
|
- Post-execution: Verifier spawnen, VERIFICATION.md, Phase complete
|
||||||
</remaining_work>
|
</remaining_work>
|
||||||
|
|
||||||
<decisions_made>
|
<decisions_made>
|
||||||
|
|
||||||
- **Verarbeitung**: Server-seitig (NestJS API), nicht client-seitig
|
- **Module-Pfad**: `apps/api/src/cert-manager/` (nicht `apps/api/src/modules/cert-manager/` — kein modules/ Verzeichnis existiert)
|
||||||
- **Persistenz**: Ephemer — kein DB, kein Dateisystem, alles In-Memory
|
- **Test-Runner**: Vitest in @tessera/api installiert (war noch nicht vorhanden)
|
||||||
- **"Teilen"** = Aufteilen (fullchain → Einzelzertifikate), NICHT Versenden
|
- **Encoding**: `toForgeBuffer()` helper nutzt `toString('binary')` — nie 'utf-8'
|
||||||
- **Zusammenführen** = PEM-Kette ODER PFX-Bundle (mit Passwort)
|
- **Binary-Download**: `downloadBase64()` in actions.ts — POST → base64-JSON → Blob-URL
|
||||||
- **Bibliothek**: `node-forge` (pure JS, PEM/DER/PFX/P7B)
|
- **Merge-Konflikte**: Beide Worktrees branchen vom gleichen Base (88db54f) — app.module.ts und i18n-Dateien hatten parallele Änderungen
|
||||||
- **Passwort**: Konditionell bei PFX/PKCS12 (lesen + erstellen)
|
|
||||||
- **UI**: 4 Tabs — Analysieren / Aufteilen / Zusammenführen / Konvertieren
|
|
||||||
- **API**: 4 Endpoints: `/parse` `/split` `/merge` `/convert` unter `/modules/cert-manager`
|
|
||||||
- **Modul**: slug=`cert-manager`, category=`security-tools`
|
|
||||||
- **Muster**: Domaincheck-Modul als Vorlage (OnModuleInit seed, @UseModule guard)
|
|
||||||
</decisions_made>
|
</decisions_made>
|
||||||
|
|
||||||
<blockers>
|
<blockers>
|
||||||
- UI-SPEC.md fehlt → plan-phase UI-Safety-Gate blockiert
|
- Keine aktiven Blocker.
|
||||||
- Workaround: `/gsd-plan-phase 9 --skip-ui` (nicht empfohlen)
|
- **Hinweis**: Nach Wave 1 (09-01) muss ein Admin `cert-manager` im Marketplace aktivieren, da `isSystem:true` NICHT auto-aktiviert. ModuleGuard gibt 403 zurück bis zur manuellen Aktivierung.
|
||||||
</blockers>
|
</blockers>
|
||||||
|
|
||||||
## Required Reading (in order)
|
## Required Reading (in order)
|
||||||
1. `.planning/phases/09-cert-manager-module/09-CONTEXT.md` — alle Entscheidungen
|
1. `.planning/phases/09-cert-manager-module/09-03-PLAN.md` — nächster Plan (Inspect-Endpoint)
|
||||||
2. `apps/api/src/domaincheck/` — Modul-Pattern (NestJS)
|
2. `.planning/phases/09-cert-manager-module/09-RESEARCH.md` — Pitfalls (Encoding, Binary-Download)
|
||||||
3. `apps/web/src/app/(portal)/modules/domaincheck/` — Frontend-Pattern
|
3. `.planning/phases/09-cert-manager-module/09-01-SUMMARY.md` — was in Wave 1 gebaut wurde
|
||||||
|
|
||||||
## Infrastructure State
|
## Infrastructure State
|
||||||
- Docker: alle Container laufen (web, api, db)
|
- Docker: alle Container laufen (web, api, db)
|
||||||
- dashboard-grid.tsx: `compactor={noCompactor}` — deployed und aktiv
|
- git: branch `main`, HEAD `76d1a31`
|
||||||
|
- Uncommitted files (aus früheren Sessions, NICHT Phase 9): `.mcp.json`, `auth.service.ts`, `user.controller.ts`, `dashboard-grid.tsx`, `note-widget.tsx`, `widget-wrapper.tsx`, `account-settings-form.tsx`, `auth-actions.ts`, `dashboard-store.ts` — diese IGNORIEREN, nicht committen
|
||||||
|
|
||||||
<context>
|
<context>
|
||||||
Phase 9 Cert Manager: vollständig geplant auf Konzeptebene. Bereit zur UI-Spec-Erstellung.
|
Execution läuft Wave-by-Wave sequential (Wave 2–5 haben jeweils nur 1 Plan). Jeder Wave: einen gsd-executor spawnen, auf Completion warten, Worktree mergen, nächste Wave starten. Waves 2–5 sind sequential (depends_on chain), kein Parallel-Exec mehr.
|
||||||
Uncommitted files aus früheren Sessions (auth, user-controller, dashboard-store etc.) existieren noch — nicht Teil von Phase 9.
|
|
||||||
</context>
|
</context>
|
||||||
|
|
||||||
<next_action>
|
<next_action>
|
||||||
Start with: `/gsd-ui-phase 9` — UI-Design-Kontrakt für Cert Manager erstellen
|
Start with: `/gsd-execute-phase 9 --wave 2`
|
||||||
Then: `/gsd-plan-phase 9`
|
|
||||||
|
Wave 2 = Plan 09-03 (1 Agent, kein Parallel-Merge nötig, sequential auf main).
|
||||||
</next_action>
|
</next_action>
|
||||||
|
|||||||
Reference in New Issue
Block a user