---
spec_version: 0.5.1
id: PROJECT-6
name: Multi-Wave Launch Kit Test (v0.5.1)
extensions:
  - ext:tools
  - ext:constraints
  - ext:status
status: active
allowed_paths:
  - tmp/launch_kit/**
---

# Multi-Wave Launch Kit Test

This project is designed to exercise both wide parallel execution and deeper dependency chains.
Wave 1 should fan out broadly, while later waves should progressively assemble the final deliverables.

## Execution and Parallelization Table

| Wave | Agents in Wave | Parallel Width | Waits For | Output Produced | Optimization Effect |
| --- | --- | --- | --- | --- | --- |
| 1 | api_requirements_txt, api_main_py, ui_index_html, ui_styles_css, sample_data_json, env_example | 6 | None | Core API/UI/data/env baseline | Maximum fan-out to reduce startup latency |
| 2 | api_smoke_test_py, ui_app_js, ui_content_test_py | 3 | Wave 1 dependencies per agent | Tests and UI behavior wiring | Overlaps test + frontend logic after core files exist |
| 3 | dockerfile, compose_yaml | 2 | API/web assets from Waves 1-2 | Containerization layer | Builds packaging in parallel where possible |
| 4 | api_readme_md, web_readme_md | 2 | API/UI and tests from earlier waves | Component-level documentation | Documentation work parallelized across API and web |
| 5 | root_readme_md, healthcheck_script_ps1 | 2 | Compose + readmes + API | System-level docs + operability script | Final integration docs and ops helper run together |
| 6 | release_notes_md | 1 | Root README + healthcheck script | Final release summary | Single finalization step on fully assembled outputs |

## Speed and Realization Metrics

| Metric | Value | What It Means |
| --- | --- | --- |
| Total agents | 16 | Total units of work defined in this project |
| Wave count (critical stages) | 6 | Minimum stage depth imposed by dependencies |
| Peak parallel width | 6 (Wave 1) | Maximum concurrent throughput at start |
| Average agents per wave | 2.67 | Indicates moderate parallelism across the full run |
| Sequential baseline | 16 time units | If every agent ran strictly one-by-one |
| Ideal wave-based runtime | 6 time units | If each wave completes in one equal time unit |
| Theoretical speedup ceiling | 2.67x ($16/6$) | Best-case gain from current dependency structure |
| Main optimization lever | Keep wide fan-out early, minimize cross-wave dependencies | Preserves concurrency and shortens critical path |

## Tools

- save_to_file

<!-- markdownlint-disable MD022 -->
## Agents

### api_requirements_txt
wave: 1
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/api/requirements.txt.
Write minimal dependencies for a FastAPI service: fastapi, uvicorn, pytest, httpx.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### api_main_py
wave: 1
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/api/main.py.
Implement a minimal FastAPI app for "PROJECT-6" with endpoints:

- GET /health -> {"status":"ok","project":"PROJECT-6"}
- GET /catalog -> returns a small hard-coded list of 3 launch items

Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### ui_index_html
wave: 1
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/web/index.html.
Build a landing page for "PROJECT-6" with:

- a hero title
- a short subtitle
- a section with id="launch-items"
- a button with id="load-catalog"
- a status element with id="catalog-status"

Link styles.css and app.js from the same folder.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### ui_styles_css
wave: 1
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/web/styles.css.
Write responsive CSS for the landing page with:

- a modern centered layout
- visible card styling
- mobile-friendly breakpoints
- clear button and status styles

Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### sample_data_json
wave: 1
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/data/sample_launches.json.
Write a JSON array with 3 launch items, each having: id, title, owner, and priority.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### env_example
wave: 1
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/.env.example.
Write example environment variables for the API host, API port, and APP_ENV.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### api_smoke_test_py
wave: 2
after: [api_requirements_txt, api_main_py]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/tests/test_api_smoke.py.
Write pytest smoke tests for /health and /catalog.
Verify that /catalog returns exactly 3 items.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### ui_app_js
wave: 2
after: [ui_index_html, api_main_py, sample_data_json]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/web/app.js.
Implement JavaScript that on button click fetches /catalog and updates #launch-items.
Also update #catalog-status with success or failure text and show the latest check time.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### ui_content_test_py
wave: 2
after: [ui_index_html]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/tests/test_ui_content.py.
Write one basic test that asserts index.html contains the text "PROJECT-6" and the id "load-catalog".
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### dockerfile
wave: 3
after: [api_requirements_txt, api_main_py]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/Dockerfile.
Write a minimal Dockerfile for the API service using python:3.12-slim and uvicorn.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### compose_yaml
wave: 3
after: [dockerfile, ui_index_html, ui_styles_css, ui_app_js, env_example]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/docker-compose.yml.
Write a minimal docker-compose file with one API service and one static web service.
Assume the web service serves files from tmp/launch_kit/web.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### api_readme_md
wave: 4
after: [api_main_py, api_requirements_txt, api_smoke_test_py, dockerfile]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/api/README.md.
Document how to install dependencies, run the API, and run the API smoke tests.
Keep it short and practical.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### web_readme_md
wave: 4
after: [ui_index_html, ui_styles_css, ui_app_js, ui_content_test_py]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/web/README.md.
Document how to open the page, what the button does, and what the expected UI states are.
Keep it short and practical.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### root_readme_md
wave: 5
after: [compose_yaml, api_readme_md, web_readme_md, sample_data_json]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/README.md.
Document:

- what files were generated
- how to run the API locally
- how to open the website
- how to run the tests
- how docker-compose fits the setup

Keep it concise.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### healthcheck_script_ps1
wave: 5
after: [api_main_py, root_readme_md]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/scripts/healthcheck.ps1.
Write a small PowerShell script that calls /health and prints a clear success or failure message.
Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.

### release_notes_md
wave: 6
after: [root_readme_md, healthcheck_script_ps1]
tools: [save_to_file]

Create exactly one file at path tmp/launch_kit/RELEASE_NOTES.md.
Summarize the generated mini-system in 5-8 short bullet points:

- API
- UI
- tests
- Docker support
- operational helper script

Do not create any other files.
Do not run tests.
Do not call any tools other than save_to_file.
<!-- markdownlint-enable MD022 -->