TenantAtlas/specs/005-bulk-operations/plan.md
2025-12-25 13:27:17 +01:00

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.