3.2 KiB
Implementation Plan: Feature 005 - Bulk Operations
Branch: feat/005-bulk-operations | Date: 2025-12-25 | Spec: spec.md
Input: Feature specification from /specs/005-bulk-operations/spec.md
Note: This template is filled in by the /speckit.plan command. See .specify/templates/commands/plan.md for the execution workflow.
Summary
Add consistent bulk actions (delete/export/restore/prune/sync where applicable) across TenantPilot's primary admin resources (Policies, Policy Versions, Backup Sets, Restore Runs). Bulk operations create a tracking record, enforce permissions, support type-to-confirm for large destructive changes, and run asynchronously via queue for larger selections with progress tracking.
Technical Context
Language/Version: PHP 8.4.15
Primary Dependencies: Laravel 12, Filament v4, Livewire v3
Storage: PostgreSQL (app), SQLite in-memory (tests)
Testing: Pest v4 + PHPUnit 12
Target Platform: Containerized Linux (Sail/Dokploy)
Project Type: Web application (Laravel + Filament admin panel)
Performance Goals: Handle bulk actions up to hundreds of items with predictable runtime; keep UI responsive via queued processing for larger selections
Constraints: Tenant isolation; least privilege; safe destructive actions (confirmation + auditability); avoid long locks/timeouts by chunking
Scale/Scope: Admin-focused operations, moderate concurrency, emphasis on correctness/auditability over throughput
Constitution Check
GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.
The constitution file at .specify/memory/constitution.md is a placeholder template (no concrete principles/gates are defined). For this feature, the effective gates follow repository agent guidelines in Agents.md:
- Spec artifacts exist and are consistent: PASS (
spec.md,plan.md,tasks.md,research.md,data-model.md,quickstart.md) - Tests cover changes: PASS (Pest suite; full test run exits 0)
- Safe admin operations: PASS (explicit confirmations, type-to-confirm for large destructive ops, audit logging)
Re-check after Phase 1: PASS (no new unknowns introduced).
Project Structure
Documentation (this feature)
specs/005-bulk-operations/
├── plan.md # This file (/speckit.plan command output)
├── research.md # Phase 0 output (/speckit.plan command)
├── data-model.md # Phase 1 output (/speckit.plan command)
├── quickstart.md # Phase 1 output (/speckit.plan command)
├── contracts/ # Phase 1 output (/speckit.plan command)
└── tasks.md # Phase 2 output (/speckit.tasks command - NOT created by /speckit.plan)
Source Code (repository root)
app/
├── Filament/
│ └── Resources/
├── Jobs/
├── Models/
└── Services/
database/
├── factories/
└── migrations/
routes/
├── web.php
└── console.php
resources/
└── views/
tests/
├── Feature/
└── Unit/
Structure Decision: Web application (Laravel + Filament admin panel) using existing repository layout.
Complexity Tracking
No constitution violations requiring justification.