- Add speckit workflow infrastructure (.claude, .specify) - Create NixOS configuration skeleton (flake.nix, configuration.nix, hosts/ops-jrz1.nix) - Add sanitization scripts with 22 rules for personal info removal - Add validation scripts with gitleaks integration - Configure git hooks (pre-commit, pre-push) for security validation - Add project documentation (README, LICENSE) - Add comprehensive .gitignore for Nix, secrets, staging Phase 1 and Phase 2 complete. Foundation ready for module extraction from ops-base.
25 KiB
Tasks: Extract Matrix Platform Modules for ops-jrz1 Server
Input: Design documents from /specs/001-extract-matrix-platform/
Prerequisites: plan.md, spec.md, research.md, data-model.md, contracts/, quickstart.md
Organization: Tasks are grouped by user story to enable independent implementation and testing of each story. This is a repository extraction project, so tasks focus on extracting, sanitizing, documenting, and publishing rather than traditional software development.
Format: [ID] [P?] [Story] Description
- [P]: Can run in parallel (different files, no dependencies)
- [Story]: Which user story this task belongs to (US1-US5)
- Include exact file paths in descriptions
Path Conventions
This is a SINGLE repository project:
- ops-jrz1 (this repo): Planning docs + extracted modules + server configuration
All work happens in this repository:
- specs/001-extract-matrix-platform/: Planning and design docs (speckit workflow)
- staging/: Temporary workspace for extraction from ops-base
- modules/: Sanitized Matrix modules (extracted from ops-base)
- hosts/ops-jrz1.nix: Server-specific configuration
- flake.nix: Server flake configuration
- configuration.nix: Main server configuration
Repository Architecture
Current Phase: Extract modules from ops-base, sanitize, configure ops-jrz1 dev/test server Future (Deferred): Public template sharing when ready
Phase 1: Setup (Shared Infrastructure)
Purpose: Initialize workspace and create basic repository structure
- T001 Create staging directory structure in ~/proj/ops-jrz1/staging/{modules,configurations,docs}
- T002 (OBSOLETE - single repo) Create Forgejo repository - not needed, using ops-jrz1
- T003 (OBSOLETE - single repo) Clone template locally - not needed, using ops-jrz1
- T004 Create directory structure in ops-jrz1 repo root: modules/, hosts/, docs/, secrets/, scripts/ (per plan.md structure)
- T004a Create hosts/ops-jrz1.nix with dev/test server-specific configuration
- T004b Create flake.nix skeleton referencing ops-jrz1 host (will be expanded in T032)
- T004c Create configuration.nix importing ops-jrz1 host module
Phase 2: Foundational (Blocking Prerequisites)
Purpose: Core scripts and contracts that MUST be complete before ANY user story can be implemented
⚠️ CRITICAL: No extraction/sanitization work can begin until these tools are ready
- T005 Create scripts/sanitize-files.sh based on contracts/sanitization-rules.yaml (applies all 22 sanitization rules)
- T006 [P] Create scripts/validate-sanitization.sh (runs gitleaks + pattern checks from contracts)
- T007 [P] Create .pre-commit-config.yaml with pre-commit and pre-push hooks (gitleaks + nix flake check + build validation) - PRIMARY VALIDATION
- T008 [P] Create git hooks wrapper scripts in scripts/hooks/ (called by pre-commit framework)
- T009 Create initial .gitignore for ops-jrz1 repo (result, result-, secrets/.yaml except examples)
- T010 Create initial README.md in ops-jrz1 repo (work-in-progress status, planned features)
- T011 [P] Create LICENSE file in ops-jrz1 repo (MIT license text)
Checkpoint: Foundation ready - extraction and sanitization can now begin
Phase 3: User Story 2 - Sanitize and Publish Template (Priority: P1) 🎯 FOUNDATIONAL
Goal: Extract modules from ops-base, sanitize all personal information, and create clean publishable repository
Why First: This is the foundational story - must complete before US1 (deployment) can be tested. US2 creates the artifact that US1 uses.
Independent Test: Run sanitization scripts → verify gitleaks finds zero secrets → verify no personal domains/IPs → build all example configs successfully
Module Extraction (US2)
- T012 [P] [US2] Copy modules/matrix-continuwuity.nix from ops-base to staging/modules/
- T013 [P] [US2] Copy modules/mautrix-slack.nix from ops-base to staging/modules/
- T014 [P] [US2] Copy modules/mautrix-whatsapp.nix from ops-base to staging/modules/
- T015 [P] [US2] Copy modules/mautrix-gmessages.nix from ops-base to staging/modules/
- T016 [P] [US2] Copy modules/dev-services.nix from ops-base to staging/modules/
- T017 [P] [US2] Copy modules/security/fail2ban.nix from ops-base to staging/modules/security/
- T018 [P] [US2] Copy modules/security/ssh-hardening.nix from ops-base to staging/modules/security/
- T019 [P] [US2] Copy modules/matrix-secrets/default.nix from ops-base to staging/modules/matrix-secrets/
Configuration Extraction (US2)
- T020 [P] [US2] Copy configurations/vultr-dev.nix from ops-base to staging/configurations/example-vps.nix
- T021 [P] [US2] Copy configurations/dev-vps.nix from ops-base to staging/configurations/example-dev.nix
Sanitization (US2)
- T022 [US2] Run scripts/sanitize-files.sh on staging/modules/ → output to modules/
- T023 [US2] Run scripts/sanitize-files.sh on staging/configurations/ → output to hosts/
- T024 [US2] Manual review of all .nix files for personal references in comments (checklist: comments, docs, inline notes)
- T025 [US2] Add REPLACE_ME comments to domain/workspace/secret fields in sanitized files
Validation (US2)
- T026 [US2] Run scripts/validate-sanitization.sh on modules/ (expect: zero personal domains/IPs/paths)
- T027 [US2] Run scripts/validate-sanitization.sh on hosts/ (expect: zero personal domains/IPs/paths)
- T028 [US2] Run gitleaks detect --no-git --source . (expect: zero secrets found)
Example Files (US2)
- T029 [P] [US2] Create examples/secrets.yaml.example with sops-nix template structure
- T030 [P] [US2] Create examples/.sops.yaml.example with age key placeholder
- T031 [P] [US2] Create examples/minimal-matrix.nix as simplest working configuration
Flake Configuration (US2)
- T032 [US2] Create flake.nix in ops-jrz1 repo (imports: nixpkgs, sops-nix; outputs: ops-jrz1 nixosConfiguration)
- T033 [US2] Run nix flake lock in ops-jrz1 repo to generate flake.lock
- T034 [US2] Run nix flake check in ops-jrz1 repo (expect: all checks pass)
- T035 [US2] Run nix build .#nixosConfigurations.ops-jrz1.config.system.build.toplevel (expect: builds successfully)
- T036 (OBSOLETE - single config) Run nix build .#nixosConfigurations.example-dev.config.system.build.toplevel (expect: builds successfully)
Initial Commit (US2)
- T037 [US2] Commit sanitized modules to ops-jrz1 repo: "Add sanitized NixOS modules for Matrix platform"
- T038 [US2] Commit ops-jrz1 server configuration: "Add ops-jrz1 server configuration"
- T039 (OBSOLETE - single repo) Push to Forgejo (work stays in ops-jrz1 branch)
Checkpoint: User Story 2 complete - sanitized modules in ops-jrz1 repo, builds pass, zero secrets detected
Phase 4: User Story 5 - Documentation Extraction (Priority: P3)
Goal: Extract pattern documentation from worklogs and create comprehensive guides
Why Before US1: Documentation must exist for US1 (deployment) testing. Developers need guides to deploy.
Independent Test: Read each doc → verify technical accuracy → verify no personal infrastructure references → verify examples use generic domains/IPs
Pattern Documentation (US5)
- T040 [P] [US5] Extract docs/patterns/config-generation.md from mautrix-slack-bridge-implementation-gmessages-pattern.org worklog
- T041 [P] [US5] Extract docs/patterns/admin-room-setup.md from conduwuit-admin-room-discovery-password-reset.org worklog
- T042 [P] [US5] Sanitize docs/patterns/*.md for personal infrastructure references (check for clarun.xyz, talu.uno, personal IPs)
Bridge Setup Guides (US5)
- T043 [P] [US5] Extract docs/bridges/slack-setup.md from mautrix-slack-socket-mode-oauth-scopes-blocker.org worklog (Socket Mode, OAuth scopes)
- T044 [P] [US5] Create docs/bridges/whatsapp-setup.md from module configuration and QR pairing pattern (authentication flow, troubleshooting)
- T045 [P] [US5] Create docs/bridges/gmessages-setup.md from module configuration and pairing process (prerequisites, common issues)
- T046 [US5] Sanitize docs/bridges/*.md for personal infrastructure references
Core Documentation (US5)
- T047 [P] [US5] Extract docs/secrets-management.md from sops-nix-secrets-management-rfc.md (sops-nix setup, age keys, workflow)
- T048 [P] [US5] Create docs/architecture.md from RFC and worklogs (system design, module relationships, deployment model)
- T049 [P] [US5] Create docs/getting-started.md with 5-minute quickstart (prerequisites, customization, deployment steps)
- T050 [P] [US5] Create docs/deployment.md with detailed deployment guide (VPS setup, DNS, TLS, troubleshooting)
- T051 [US5] Sanitize docs/*.md for personal infrastructure references
Validation (US5)
- T052 [US5] Review all documentation for technical accuracy against actual module code
- T053 [US5] Verify all code examples in docs use example.com/10.0.0.x/generic values
- T054 [US5] Verify all docs link to correct files and sections (no broken internal links)
Commit Documentation (US5)
- T055 [US5] Commit documentation to ops-jrz1 repo: "Add comprehensive documentation extracted from worklogs"
- T056 (OBSOLETE - single repo) Push documentation to Forgejo (work stays in ops-jrz1 branch)
Checkpoint: User Story 5 complete - all 8 required documentation sections present and sanitized
Phase 5: User Story 3 - Community Governance (Priority: P3 - OPTIONAL/DEFERRED)
Goal: Add governance files (CONTRIBUTING.md, SECURITY.md) and CI/CD to enable community contributions
Status: Per spec.md US3 is P3-DEFERRED for future public sharing. Can be implemented later when ready for community contributions.
Independent Test: Fork repo → make sample change → verify CI runs → verify contribution guidelines clear
Governance Files (US3)
- T057 [P] [US3] Create CONTRIBUTING.md with contribution guidelines, testing requirements, PR process
- T058 [P] [US3] Create SECURITY.md with vulnerability disclosure process, supported versions, response times
- T059 [P] [US3] Create .github/ISSUE_TEMPLATE/bug_report.yml with structured bug report template
- T060 [P] [US3] Create .github/ISSUE_TEMPLATE/feature_request.yml with feature request template
- T061 [P] [US3] Update README.md with community links, contribution section, code of conduct reference
Git Hooks Validation (US3)
- T062 [US3] Install pre-commit framework in ops-jrz1 repo: pre-commit install
- T063 [US3] Test pre-commit hook blocks bad commit (intentionally add clarun.xyz, verify hook rejects)
- T064 [US3] Test pre-push hook validates builds (make change, verify nix flake check runs before push)
- T065 [US3] Verify hooks pass with valid changes (fix typo, confirm commit/push succeeds)
Repository Settings (US3) - Forgejo
- T066 [US3] Add repository description in Forgejo: "Production-ready NixOS modules for Matrix homeserver with bridges"
- T067 [US3] Configure repository topics in Forgejo: nixos, matrix, continuwuity, mautrix, homeserver, nix-flakes
- T068 [US3] Set repository visibility to private (development phase)
- T069 [DEFER] Enable community features when publishing to public platform (Phase 8)
Commit Governance (US3)
- T070 [US3] Commit governance files to ops-jrz1 repo: "Add community governance and contribution guidelines"
- T071 (OBSOLETE - single repo) Push governance files to Forgejo (work stays in ops-jrz1 branch)
Checkpoint: User Story 3 complete - community can fork, contribute, and submit PRs with git hooks validation
Phase 6: User Story 4 - Sync Workflow (Priority: P2)
Goal: Create documented workflow and scripts for syncing future improvements from ops-base to template
Independent Test: Identify sample ops-base changes → run sync script → verify changes sanitized → verify no secrets leaked → builds pass
Sync Scripts (US4)
- T072 [US4] Create scripts/sync-to-template.sh based on research.md sync workflow (identify changes, sanitize, validate)
- T073 [US4] Create sync-log.md in ops-jrz1 repo with initial publication entry (date, ops-base commit, modules list)
- T074 [US4] Add quarterly sync schedule to maintainer calendar (January, April, July, October reminders)
Sync Documentation (US4)
- T075 [US4] Document sync workflow in ops-jrz1 repo README (when to sync, how to use scripts, validation steps)
- T076 [US4] Create sync testing checklist based on contracts/sanitization-rules.yaml (validation steps, expected results)
Sync Testing (US4)
- T077 [US4] Test sync workflow with mock change in ops-base (add comment to module, sync to template, verify sanitized)
- T078 [US4] Verify sync validation catches personal references (intentionally add clarun.xyz, verify script rejects)
- T079 [US4] Verify sync creates git tag and sync-log.md entry correctly
Commit Sync Workflow (US4)
- T080 [US4] Commit sync scripts and documentation to ops-jrz1 repo: "Add sync workflow for ongoing maintenance"
- T081 (OBSOLETE - single repo) Push sync workflow to Forgejo (work stays in ops-jrz1 branch)
Checkpoint: User Story 4 complete - maintainer can sync improvements from ops-base quarterly
Phase 7: User Story 1 - Deploy to ops-jrz1 Server (Priority: P1) 🎯 VALIDATION
Goal: Deploy Matrix platform to ops-jrz1 dev/test server using extracted and sanitized modules
Why Last: Requires sanitized modules (US2) and documentation (US5) to be complete before deployment
Independent Test: Customize configuration for ops-jrz1 → deploy to server → verify Matrix responds → verify bridges work
ops-jrz1 Server Provisioning (US1)
- T082 [US1] Verify ops-jrz1 server exists and is accessible via SSH (x86_64-linux, NixOS 24.05+)
- T083 [US1] Configure DNS for ops-jrz1 domain pointing to server IP
- T084 [US1] SSH to ops-jrz1 and verify NixOS version and nix flake support
Deployment Following Docs (US1)
- T085 [US1] Verify ops-jrz1 repo is up to date on branch 001-extract-matrix-platform
- T086 [US1] Follow docs/getting-started.md step-by-step, time the process (target: <30 minutes)
- T087 [US1] Customize hosts/ops-jrz1.nix with server domain and settings
- T088 [US1] Generate age key on ops-jrz1 server: ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub
- T089 [US1] Create secrets/secrets.yaml with ops-jrz1 values (matrix registration token, acme email)
- T090 [US1] Encrypt secrets with sops: sops -e -i secrets/secrets.yaml
- T091 [US1] Deploy to ops-jrz1: nixos-rebuild switch --flake .#ops-jrz1 --target-host root@
Functional Validation (US1)
- T092 [US1] Verify Matrix homeserver responds: curl https:///_matrix/client/versions (expect: JSON response)
- T093 [US1] Verify .well-known endpoints: curl https:///.well-known/matrix/server (expect: JSON)
- T094 [US1] Create test user via registration: use matrix registration token
- T095 [US1] Login to Element Web with test user credentials (verify authentication works)
- T096 [US1] Verify systemd services running: ssh root@ops-jrz1 systemctl status matrix-continuwuity
Bridge Testing (US1)
- T097 [US1] Follow docs/bridges/slack-setup.md to configure Slack bridge (if testing bridges)
- T098 [US1] Verify bridge appservice registered with Matrix homeserver
- T099 [US1] Test bridge message flow (send test message, verify delivery)
Issues and Documentation Updates (US1)
- T100 [US1] Document any unclear steps or issues encountered during deployment
- T101 [US1] Update docs/getting-started.md based on deployment experience (fix ambiguities, add troubleshooting)
- T102 [US1] Update docs/deployment.md with any missing steps or common issues discovered
Timing and Metrics (US1)
- T103 [US1] Verify total deployment time from clone to working Matrix was <30 minutes (SC-001)
- T104 [US1] Record deployment experience notes for README improvement
Checkpoint: User Story 1 complete - ops-jrz1 server deployed with working Matrix homeserver in <30 minutes
Phase 8: Polish & Cross-Cutting Concerns (Partial Deferral)
Purpose: Final improvements affecting multiple user stories, preparation for v1.0 publication
Note: Public release tasks (T119-T125) are DEFERRED per spec.md Out of Scope. Security validation and build checks remain in scope.
README Expansion
- T105 [P] Expand README.md with ops-jrz1 server overview, Matrix platform features, deployment status
- T106 [P] Add license badge to README:
- T107 (DEFERRED) Add repository links to README (for future public template)
- T108 (DEFERRED) Add community contact info to README (for future public sharing)
Final Security Validation
- T109 Run gitleaks on full ops-jrz1 repository (expect: zero findings) - final verification
- T110 Manual grep for all sensitive patterns: rg 'clarun|talu|192.168.1.|45.77|/home/dan' in sanitized modules/hosts/docs (expect: no matches)
- T111 Review git log for any accidentally committed secrets or personal info in branch 001-extract-matrix-platform
- T112 Verify no .sops.yaml with real age keys committed (only .sops.yaml.example if present)
Build Validation
- T113 Run nix flake check (expect: all checks pass)
- T114 Build ops-jrz1 configuration: nix build .#nixosConfigurations.ops-jrz1 (expect: success)
- T115 (OBSOLETE - single config) Build example-dev configuration - not needed for single-repo ops-jrz1
Module Checklist Verification (SC-004)
- T116 Verify all 6+ core modules present and building: matrix-continuwuity ✓, mautrix-slack ✓, mautrix-whatsapp ✓, mautrix-gmessages ✓, fail2ban ✓, ssh-hardening ✓, plus optional dev-services ✓ and matrix-secrets ✓
Documentation Checklist Verification (SC-005)
- T117 Verify core documentation complete: README ✓, deployment guide ✓, secrets-management ✓, plus optional bridge/pattern docs: slack-setup.md ✓, whatsapp-setup.md ✓, gmessages-setup.md ✓, config-generation.md ✓, admin-room-setup.md ✓
Release Preparation
- T118 Create v1.0.0 release tag: git tag v1.0.0 -m "Initial release - ops-jrz1 Matrix platform"
- T119 (DEFERRED) Create public repository (GitHub/tangl.sh) for template publication
- T120 (DEFERRED) Push sanitized template with tags to public repository
Announcement Preparation (DEFERRED)
- T121 (DEFERRED) [P] Draft announcement post for Matrix.org community (#nix:nixos.org)
- T122 (DEFERRED) [P] Draft announcement post for NixOS Discourse
- T123 (DEFERRED) [P] Draft announcement post for Reddit r/NixOS
- T124 (DEFERRED) [P] Draft Show HN post for Hacker News
- T125 (DEFERRED) Publish announcements across all channels (coordinate timing)
Dependencies & Execution Order
Phase Dependencies
- Phase 1 (Setup): No dependencies - can start immediately
- Phase 2 (Foundational): Depends on Phase 1 (Setup) - BLOCKS all user stories
- Phase 3 (US2 - Sanitize): Depends on Phase 2 (Foundational) - scripts must exist first
- Phase 4 (US5 - Docs): Depends on Phase 3 (US2) - modules must be sanitized first
- Phase 5 (US3 - Governance): Can start after Phase 2, parallel with US2/US5
- Phase 6 (US4 - Sync): Can start after Phase 2, parallel with other stories
- Phase 7 (US1 - Deployment): Depends on Phase 3, Phase 4, Phase 5 (needs complete template to test)
- Phase 8 (Polish): Depends on all user stories complete
User Story Dependencies
- US2 (Sanitize/Publish): FOUNDATIONAL - no dependencies, enables all others
- US5 (Documentation): Depends on US2 (modules must exist to document them)
- US3 (Governance): Independent, can run parallel with US2/US5
- US4 (Sync Workflow): Independent, can run parallel with US2/US5
- US1 (Deployment): Depends on US2 + US5 + US3 (needs modules + docs + CI to test)
Critical Path
Phase 1 (Setup)
↓
Phase 2 (Foundational - scripts/CI)
↓
Phase 3 (US2 - Extract & Sanitize Modules) ← CRITICAL PATH
↓
Phase 4 (US5 - Extract Documentation) ← CRITICAL PATH
↓
Phase 7 (US1 - VPS Deployment Test) ← CRITICAL PATH
↓
Phase 8 (Polish & Release)
Parallel Opportunities:
- Phase 5 (US3) and Phase 6 (US4) can run in parallel with Phase 3/4
- Within Phase 3: T012-T021 (module/config copies) all parallel
- Within Phase 4: T040-T051 (doc extraction) most are parallel
- Within Phase 8: Many polish tasks parallel (T105-T108, T121-T124)
Within Each Phase
Phase 3 (US2) order:
- Copy all modules/configs in parallel (T012-T021)
- Run sanitization sequentially (T022-T023) - depends on copies
- Manual review (T024-T025) - depends on sanitization
- Validation (T026-T028) - depends on review
- Create examples in parallel (T029-T031)
- Flake config sequentially (T032-T036) - incremental dependencies
- Commit (T037-T039)
Phase 7 (US1) order:
- VPS provisioning (T082-T084)
- Clone and customize sequentially (T085-T091) - follows docs
- Functional validation (T092-T096)
- Optional bridge testing (T097-T099)
- Documentation improvements (T100-T102)
- Metrics collection (T103-T104)
Parallel Execution Examples
Phase 2: Foundational Scripts
# All foundational scripts can be created in parallel:
Task: "Create scripts/sanitize-files.sh"
Task: "Create scripts/validate-sanitization.sh"
Task: "Create .github/workflows/ci.yml"
Task: "Create .pre-commit-config.yaml"
Task: "Create LICENSE file"
Phase 3: Module Extraction (US2)
# All module copies can run in parallel:
Task: "Copy modules/matrix-continuwuity.nix"
Task: "Copy modules/mautrix-slack.nix"
Task: "Copy modules/mautrix-whatsapp.nix"
Task: "Copy modules/mautrix-gmessages.nix"
Task: "Copy modules/dev-services.nix"
Task: "Copy modules/security/fail2ban.nix"
Task: "Copy modules/security/ssh-hardening.nix"
Task: "Copy modules/matrix-secrets/default.nix"
Task: "Copy configurations/example-vps.nix"
Task: "Copy configurations/example-dev.nix"
Phase 4: Documentation (US5)
# Pattern docs in parallel:
Task: "Extract docs/patterns/config-generation.md"
Task: "Extract docs/patterns/admin-room-setup.md"
# Bridge guides in parallel:
Task: "Extract docs/bridges/slack-setup.md"
Task: "Create docs/bridges/whatsapp-setup.md"
Task: "Create docs/bridges/gmessages-setup.md"
# Core docs in parallel:
Task: "Extract docs/secrets-management.md"
Task: "Create docs/architecture.md"
Task: "Create docs/getting-started.md"
Task: "Create docs/deployment.md"
Implementation Strategy
MVP First (US2 + US5 + US1)
- Complete Phase 1: Setup (T001-T004)
- Complete Phase 2: Foundational (T005-T011) - CRITICAL
- Complete Phase 3: US2 Sanitize (T012-T039) - Extract modules
- Complete Phase 4: US5 Documentation (T040-T056) - Add docs
- Skip Phase 5-6 temporarily (governance/sync can wait)
- Complete Phase 7: US1 Deployment Test (T082-T104) - VALIDATE
- STOP and EVALUATE: Do we have a working template?
Full v1.0 (All Stories)
- Complete MVP (above)
- Add Phase 5: US3 Governance (T057-T071) - Community contributions
- Add Phase 6: US4 Sync Workflow (T072-T081) - Maintenance
- Complete Phase 8: Polish (T105-T125) - Final touches & publication
Incremental Delivery
- Week 1: Setup + Foundational + Module Extraction (T001-T039) → Sanitized modules exist
- Week 2: Documentation (T040-T056) → Comprehensive docs exist
- Week 3: Deployment Testing (T082-T104) → Validated working template
- Week 4: Governance + Sync + Polish (T057-T125) → v1.0 ready for publication
Task Summary
Total Tasks: 125
- Phase 1 (Setup): 4 tasks
- Phase 2 (Foundational): 7 tasks (BLOCKING)
- Phase 3 (US2 - Sanitize): 28 tasks
- Phase 4 (US5 - Documentation): 17 tasks
- Phase 5 (US3 - Governance): 15 tasks
- Phase 6 (US4 - Sync): 10 tasks
- Phase 7 (US1 - Deployment): 23 tasks
- Phase 8 (Polish): 21 tasks
By User Story:
- US2 (Sanitize/Publish): 28 tasks - FOUNDATIONAL
- US5 (Documentation): 17 tasks
- US3 (Governance): 15 tasks
- US4 (Sync Workflow): 10 tasks
- US1 (Deployment Test): 23 tasks
- Shared (Setup/Foundational/Polish): 32 tasks
Parallel Opportunities: 45+ tasks marked [P] for parallel execution
Independent Test Criteria:
- US2: gitleaks zero findings + builds pass + no personal refs
- US5: docs complete + sanitized + technically accurate
- US3: fork + change + CI passes + guidelines clear
- US4: sync mock change + validate + no secrets leaked
- US1: clone + deploy + Matrix responds + <30 min
Suggested MVP Scope: US2 + US5 + US1 (73 tasks) - Delivers working template with docs, validated on VPS
Notes
- This is a repository extraction project, not traditional software development
- Primary activity is copying, sanitizing, documenting, and validating
- Testing is manual validation (gitleaks, nix flake check, VPS deployment)
- No automated test suite needed - validation is built into sanitization/CI contracts
- Each user story delivers independent value:
- US2: Clean sanitized modules (buildable)
- US5: Comprehensive documentation (readable)
- US3: Community contribution capability (forkable)
- US4: Ongoing maintenance workflow (sustainable)
- US1: End-to-end deployment validation (usable)
- Success criteria SC-004/SC-005 validated by module/doc checklists in Phase 8
- Security validation (SC-003/SC-009) enforced by gitleaks throughout
- Deployment timing (SC-001) measured during Phase 7