84 lines
3.8 KiB
Markdown
84 lines
3.8 KiB
Markdown
---
|
|
gsd_state_version: 1.0
|
|
milestone: v1.7
|
|
milestone_name: Content Generation
|
|
status: verifying
|
|
stopped_at: Completed 40-02-PLAN.md — HTTP routes, app.ts mount, integration tests
|
|
last_updated: "2026-04-04T12:50:26.357Z"
|
|
last_activity: 2026-04-04
|
|
progress:
|
|
total_phases: 6
|
|
completed_phases: 1
|
|
total_plans: 2
|
|
completed_plans: 2
|
|
percent: 0
|
|
---
|
|
|
|
# Project State
|
|
|
|
## Project Reference
|
|
|
|
See: .planning/PROJECT.md (updated 2026-04-04)
|
|
|
|
**Core value:** A fresh onboard asks for ONE thing (root directory), auto-creates PM + Engineer agents, and drops you in the dashboard.
|
|
**Current focus:** Phase 40 — job-infrastructure
|
|
|
|
## Current Position
|
|
|
|
Phase: 41
|
|
Plan: Not started
|
|
Status: Phase complete — ready for verification
|
|
Last activity: 2026-04-04
|
|
|
|
Progress: [░░░░░░░░░░] 0%
|
|
|
|
## Performance Metrics
|
|
|
|
**Velocity:**
|
|
|
|
- Total plans completed: 0 (v1.7)
|
|
- Average duration: -
|
|
- Total execution time: 0 hours
|
|
|
|
## Accumulated Context
|
|
|
|
### Decisions
|
|
|
|
Decisions are logged in PROJECT.md Key Decisions table.
|
|
Key constraints for v1.7:
|
|
|
|
- content_jobs table + renderPipelineService stub must exist before any renderer is built — Phase 40 is the hard dependency for all other phases
|
|
- Async job pattern is mandatory — all render requests return 202 + job ID immediately; never block HTTP on render
|
|
- sourceTaskId is required on every generated asset from day one (prevents SSD orphan accumulation)
|
|
- MAX_GENERATED_ASSET_BYTES constant bypasses the 10MB upload limit for generated/namespace — separate from upload route
|
|
- Mermaid securityLevel must be "strict" — strip %%{init}%% and click directives before render, DOMPurify on SVG output
|
|
- OKLCH via culori for all theme generation — HSL is forbidden as an intermediate (perceptually non-uniform)
|
|
- Remotion bundle() called once at startup, not per-render — cached bundle path passed to renderMedia() per request
|
|
- Remotion isolated in packages/content-renderer/ workspace package — webpack bundler must not enter Vite/tsc server context
|
|
- Phase 42 and Phase 41 both depend on Phase 40 but are independent of each other (can parallelize if needed)
|
|
- Phase 43 (PDF/Brand) depends on Phase 41 because PDF templates may reuse satori/SVG pipeline components
|
|
- Phase 44 (Remotion) depends only on Phase 40 (job infra) — can start after Phase 40, independent of 41-43
|
|
- Phase 45 (Skills) is last — skill markdown files reference API contracts finalized in Phases 41-44
|
|
- AI-bridged conversion (CONV-05) is the fallback for all format pairs — never show a format pair as blocked
|
|
- CONV-08: converter availability detected at startup via probe; unavailable direct paths fall to AI bridge
|
|
- CONV-09: magic-byte MIME validation before processing — reject misnamed files with a clear error
|
|
- [Phase 40]: content_jobs uses no FK for resultAssetId or sourceTaskId — avoids circular FK, tasks are string IDs not UUIDs
|
|
- [Phase 40]: renderContent is a stub in Phase 40 — phases 41-45 add real renderers keyed by jobType
|
|
- [Phase 40]: SSE uses EventEmitter subscription not polling for content_job.* events
|
|
|
|
### Pending Todos
|
|
|
|
None yet.
|
|
|
|
### Blockers/Concerns
|
|
|
|
- [v1.7 pre-start] Verify correct resvg package name: `@resvg/resvg-js` (v2.6.2) vs `resvg-js` (v0.1.97) — run `npm info @resvg/resvg-js` before pnpm add in Phase 41
|
|
- [v1.7 pre-start] Check whether playwright-chromium and @mermaid-js/mermaid-cli can share a Chromium binary via PUPPETEER_EXECUTABLE_PATH — could save ~300MB on Mac Mini SSD
|
|
- [v1.7 pre-start] Run pnpm build after adding packages/content-renderer/ to verify no Vite/webpack conflicts before Phase 44 implementation
|
|
- [v1.7 pre-start] Confirm pdf-lib scope: Playwright for design-rich PDFs, pdf-lib for data-driven invoices — decide at Phase 43 planning
|
|
|
|
## Session Continuity
|
|
|
|
Last session: 2026-04-04T12:45:05.515Z
|
|
Stopped at: Completed 40-02-PLAN.md — HTTP routes, app.ts mount, integration tests
|
|
Resume file: None
|