Tasks: Root Project Layout
Input: Specification, plan, research, model, and contracts in this directory.
Phase 1: Setup
- [x] T001 Verify baseline, checklist gates, and deployment inventory using
docs/specs/019-root-project-layout/checklists/requirements.mdanddocker-compose.yaml. - [x] T002 Amend directory governance in
.specify/memory/constitution.mdand align.specify/templates/*.mdwith root projects.
Phase 2: Foundation
- [x] T003 Capture failing root-layout/artifact regressions in
tests/packaging/before completing source moves. - [x] T004 Establish root task orchestration in
Taskfile.yamlwith includedtaskfiles/python.yamlandtaskfiles/frontend.yaml.
Phase 3: US1 — Complete distributions (P1)
Independent test: Standard root build and direct wheel both contain the UI; an unmodified sdist rebuilt outside the checkout without JavaScript retains its assets.
- [x] T005 [US1] Move
backend/pyproject.toml,backend/uv.lock,.python-version, and Python source/resources into root metadata andsrc/camply/. - [x] T006 [US1] Add the development build frontend using uv in
pyproject.tomlanduv.lock. - [x] T007 [US1] Implement standard-build-only compilation, frozen install, archive inventory, and forced inclusion in
hatch_build.py. - [x] T008 [US1] Package existing Gunicorn configuration in
src/camply/server/gunicorn.py. - [x] T009 [US1] Extend
tests/packaging/for default/direct/archive builds, invalid/stale assets, missing tools, installed resources, and optional extras. - [x] T010 [US1] Remove redundant
backend/src/hatchling/plugin.pyandscripts/stage_frontend.pyafter artifact ownership moves tohatch_build.py. - [x] T011 [US1] Verify root builds, archive-only rebuilding, installed Gunicorn, and standalone resources using
tests/packaging/andtests/server/integration/test_standalone_smoke.py.
Phase 4: US2 — Root development (P1)
Independent test: Root uv/pnpm/Task commands find the canonical projects and tests; Python editable installation works without JavaScript.
- [x] T012 [P] [US2] Move frontend manifests/configuration to root and application/public files to
src/frontend/. - [x] T013 [US2] Move utility scripts and codegen into
src/frontend/tooling/and update their root/output calculations. - [x] T014 [US2] Update Vite, HTML, Tailwind, lint/format, aliases, test setup, and browser/Node/Functions type scopes in root configuration files.
- [x] T015 [US2] Move Python suites into
tests/, retain colocated React/utility tests, and move approved PNGs intotests/frontend/snapshots/baselines/. - [x] T016 [US2] Update Python/frontend task definitions in
taskfiles/while preserving existing public namespaces and preventing recursive root task calls. - [x] T017 [US2] Fix path-sensitive API-generation, integration-smoke, and snapshot references in
tests/andsrc/frontend/tooling/. - [x] T018 [US2] Update root
.gitignore, remove tracked compiler/report output, and eliminate obsolete root project/tooling directories. - [x] T019 [US2] Verify root language checks, tests, API drift, snapshot tools, and no-JavaScript editable behavior through
Taskfile.yaml.
Phase 5: US3 — Deployment definitions (P2)
Independent test: Consolidated container definitions retain service/storage contracts; installed Gunicorn and nested credential-free Pages validation work.
- [x] T020 [P] [US3] Consolidate shared build stages and backend/frontend runtime targets in root
Dockerfileand.dockerignore. - [x] T021 [US3] Consolidate services/storage in root
docker-compose.yaml, moving infrastructure files intodeploy/. - [x] T022 [US3] Update
docker-bake.release.hclandtests/release.test.mjsfor root context, complete build fixtures, and existing version/tag contracts. - [x] T023 [P] [US3] Add pinned Wrangler via pnpm, nested
src/frontend/wrangler.jsonc, andsrc/frontend/functions/discovery. - [x] T024 [US3] Add root Pages check/dev tasks and local synthetic proxy/config tests in
src/frontend/tooling/andtests/frontend/. - [x] T025 [US3] Update
.github/caches, setup ordering, working directories, artifact paths, and.pre-commit-config.yaml. - [x] T026 [US3] Verify rendered Compose parity, Bake plans, both Docker targets, Pages bundling/local HTTP, and root release behavior.
Phase 6: US4 — Docs and Spec-Kit (P2)
Independent test: Features create/resume/plan/task under docs/specs; moved local links resolve and agent integrations share one source.
- [x] T027 [P] [US4] Add disposable feature lifecycle regressions in
tests/test_specify_workflows.pyand demonstrate the current creation-root mismatch. - [x] T028 [US4] Move historical
specs/intodocs/specs/and current guides intodocs/{development,architecture,operations}/plus root roadmap/checklist. - [x] T029 [US4] Update creation defaults, numbering, and guidance in
.specify/scripts/bash/,.specify/templates/, and.gemini/commands/. - [x] T030 [US4] Repair documentation links, reconcile current runtime/setup instructions, and make
CLAUDE.md/GEMINI.mdpoint toAGENTS.md. - [x] T031 [US4] Verify saved-state/override/no-persist behavior, task/plan setup, numbering, and local documentation links in
tests/test_specify_workflows.py.
Phase 7: Integration and closure
- [x] T032 Run root fix/lint/type/test/pre-commit gates and all explicit smoke/snapshot acceptance entrypoints defined in
quickstart.md. - [x] T033 Record build sizes/timings and actual validation evidence in
docs/specs/019-root-project-layout/quickstart.md. - [x] T034 Update feature status, task markers, and global
docs/CHECKLIST.md; update the existing PR title/body to describe the implemented result.
Dependencies and parallel execution
T001–T002 precede implementation. Capture failing tests while establishing each component's paths. Python packaging (T005–T011), frontend (T012–T014, T023–T024), deployment/CI (T020–T022, T025), and docs/Spec-Kit (T027–T031) have distinct file owners and can proceed concurrently. Root task integration and complete artifact/container validation depend on their combined results. T032–T034 follow all stories.
The first consumer deliverable is US1's complete artifact contract, supported by the root source moves in US2. All four stories are in this implementation's scope. Do not publish or modify hosted deployment settings during validation.