5.2 KiB
5.2 KiB
Task 019: End-To-End Demo Stack
Development description: Assemble and verify a complete demo-ready Docker Compose product path from article brief to Git-backed publish commit using deterministic runner/research/review fixtures and a local demo Next content repository.
Implementation Details
- Add demo fixtures:
- Seed target site.
- Demo Admin and Editor users.
- Fake Codex runner outputs for questions, plan, sections, SEO, language, assets.
- Fake research search/fetch corpus.
- Local bare Git repository or mounted demo Next content repository as publish target.
- Add end-to-end test path:
- Start stack.
- Create article.
- Generate/submit boundary answers.
- Generate/approve plan.
- Run research.
- Verify evidence matrix.
- Run production jobs.
- Assemble draft.
- Review assets, SEO, and language.
- Final approve.
- Dry run.
- Create publish commit.
- Add demo documentation:
- Setup.
- Login/role selection.
- Happy path.
- Failure demo path.
- How to inspect object storage, database state, and Git commit.
Public Interface
- A reviewer can run one command, open the frontend, and complete the pipeline without external credentials.
- The final demo produces a real Git commit in the configured demo repository.
Acceptance Criteria
- TDD pre-requirement: before implementation, write one failing end-to-end smoke test for the shortest happy path through public UI/API boundaries; add failure-path checks one behavior at a time and record evidence in
Result. docker compose up --buildstarts the complete demo stack.- Demo requires no real Codex, search, WHOIS, cloud S3, or GitHub credentials.
- Editor can complete the happy path from article brief to
PUBLISH_COMMIT_CREATED. - Final commit contains Markdown/MDX, frontmatter, and referenced assets according to site config.
- Object storage contains research source-section artifacts and manifests.
- Workflow timeline shows all major actions.
- Demo includes at least one visible failure/retry scenario.
- README/demo guide is accurate and enough for a new developer to run the product.
Verification
- Run the full end-to-end smoke suite.
- Run
docker compose up --buildfrom a clean checkout. - Manually execute the documented demo path.
- Inspect final Git commit, object storage artifacts, and workflow history.
Result
- Status: Implemented and verified (GREEN).
- Delivered:
- Deterministic demo runtime (
PIPELINE_DEMO_MODE) with local bare Git publish target bootstrap. - Demo seed data now points to local repository path in demo mode.
- Deterministic section scaffold fail-once behavior with visible retry success path.
- End-to-end smoke test now covers full public happy path to
PUBLISH_COMMIT_CREATEDplus failure/retry. - README + dedicated demo guide with setup, roles, happy/failure path, and artifact inspection.
- Deterministic demo runtime (
- Red evidence (pre-requirement):
apps/backend/tests/integration/test_end_to_end_demo_stack_smoke_public_api.pyinitially failed during RED phase as documented above.
- Green evidence:
test_demo_happy_path_reaches_publish_commit_created_with_failure_retryis green and verifies:- article path from brief to publish commit,
- deterministic failure (
AGENT_JOB_FAILED) and retry (AGENT_JOB_RETRIED), - commit payload contains frontmatter/markdown and assets in target repository,
- research manifests/artifacts exist in object storage,
- timeline includes major workflow events through
PUBLISH_COMMIT_CREATED.
- Refactor notes:
- Introduced
demo_runtime.pyto isolate demo-only behavior and avoid scattering env checks. - Reused existing job completion pipeline (
complete_agent_job) for demo auto-completion to preserve observability/audit behavior. - Fixed publish YAML template brace escaping in seed data.
- Introduced
- Verification output:
PYTHONPATH=/private/tmp/pupline-backend-deps python3 -m unittest apps/backend/tests/integration/test_end_to_end_demo_stack_smoke_public_api.pyRan 1 test ... OK
PYTHONPATH=/private/tmp/pupline-backend-deps python3 -m unittest apps/backend/tests/integration/test_draft_assembly_public_api.py apps/backend/tests/integration/test_evidence_matrix_public_api.py apps/backend/tests/integration/test_publishing_git_flow_public_api.py apps/backend/tests/integration/test_final_approval_gate_public_api.py apps/backend/tests/integration/test_agent_job_queue_public_api.py apps/backend/tests/integration/test_parallel_production_public_api.py apps/backend/tests/integration/test_observability_retry_cancel_audit_public_api.py apps/backend/tests/integration/test_boundary_questions_public_api.pyRan 37 tests ... OK
node apps/frontend/tests/article_detail.model.test.mjs- exit code
0
- exit code
node apps/frontend/tests/admin_script_versions.model.test.mjs- exit code
0
- exit code
node apps/frontend/tests/draft_editor.model.test.mjs- exit code
0
- exit code
node apps/frontend/tests/final_approval.model.test.mjs- exit code
0
- exit code
pnpm --dir apps/frontend typechecktsc --noEmitcompleted successfully
docker compose up --build -d- completed successfully; all services started.
docker compose ps- backend/frontend/runner/minio/postgres/redis are up (postgres/redis healthy).