Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

207 lines
7.9 KiB
JSON

[
{
"id": "T001",
"description": "Automatic invoices renders one parent group for a shared `client + invoice window` instead of separate top-level rows for each child candidate.",
"implemented": true,
"featureIds": ["F001", "F002", "F004"]
},
{
"id": "T002",
"description": "Parent rows display child count, aggregate amount, and invoice window summary correctly.",
"implemented": true,
"featureIds": ["F004", "F005"]
},
{
"id": "T003",
"description": "Expanding a parent row reveals child candidates with contract or assignment identity, cadence source, service period, and amount.",
"implemented": true,
"featureIds": ["F004", "F006"]
},
{
"id": "T004",
"description": "A parent row is combinable only when all ready children share the same client, currency, PO scope, tax source, and export shape.",
"implemented": true,
"featureIds": ["F007", "F008"]
},
{
"id": "T005",
"description": "A parent row becomes non-combinable when PO scope differs across children and shows the PO incompatibility reason.",
"implemented": true,
"featureIds": ["F007", "F008", "F012", "F023"]
},
{
"id": "T006",
"description": "A parent row becomes non-combinable when currency differs across children and shows the currency incompatibility reason.",
"implemented": true,
"featureIds": ["F007", "F008", "F012"]
},
{
"id": "T007",
"description": "A parent row becomes non-combinable when tax source differs across children and shows the tax incompatibility reason.",
"implemented": true,
"featureIds": ["F007", "F008", "F012"]
},
{
"id": "T008",
"description": "A parent row becomes non-combinable when export shape differs across children and shows the export incompatibility reason.",
"implemented": true,
"featureIds": ["F007", "F008", "F012"]
},
{
"id": "T009",
"description": "When a parent is combinable, selecting the parent selects the whole group as one invoice target.",
"implemented": true,
"featureIds": ["F008", "F009"]
},
{
"id": "T010",
"description": "When a parent is non-combinable, the parent checkbox is disabled while child rows remain individually selectable.",
"implemented": true,
"featureIds": ["F008", "F009", "F012"]
},
{
"id": "T011",
"description": "Partial child selection drives a tri-state parent indicator without silently changing execution semantics.",
"implemented": true,
"featureIds": ["F009"]
},
{
"id": "T012",
"description": "`Select All` selects combinable groups by parent row instead of selecting each child individually.",
"implemented": true,
"featureIds": ["F010"]
},
{
"id": "T013",
"description": "`Select All` selects child rows individually for non-combinable groups instead of attempting invalid parent selection.",
"implemented": true,
"featureIds": ["F010", "F012"]
},
{
"id": "T014",
"description": "Blocked child rows remain visible inside a group and do not become selectable through either child selection or parent `Select All`.",
"implemented": true,
"featureIds": ["F011"]
},
{
"id": "T015",
"description": "Previewing a selected combinable parent renders one combined invoice preview and states `This selection will generate 1 invoice`.",
"implemented": true,
"featureIds": ["F013", "F014", "F017"]
},
{
"id": "T016",
"description": "Previewing a non-combinable mixed child selection renders a multi-invoice preview state or summary with the correct invoice count.",
"implemented": true,
"featureIds": ["F013", "F014", "F018"]
},
{
"id": "T017",
"description": "Preview executes against the exact selected parent or child scope and does not include unselected sibling candidates from the same group.",
"implemented": true,
"featureIds": ["F013", "F016"]
},
{
"id": "T018",
"description": "Generating a selected combinable parent creates exactly one invoice spanning all selected compatible children.",
"implemented": true,
"featureIds": ["F015", "F016", "F017"]
},
{
"id": "T019",
"description": "Generating selected child rows from a non-combinable group creates multiple invoices while preserving the exact selected scope.",
"implemented": true,
"featureIds": ["F015", "F016", "F018"]
},
{
"id": "T020",
"description": "Grouped generation does not re-expand into unselected siblings when the same client and invoice window contain additional candidates.",
"implemented": true,
"featureIds": ["F015", "F016"]
},
{
"id": "T021",
"description": "Duplicate-prevention logic blocks re-invoicing the same grouped parent selection or member selection without blocking unrelated siblings.",
"implemented": true,
"featureIds": ["F019"]
},
{
"id": "T022",
"description": "A combined multi-assignment invoice persists successfully without requiring a fake invoice-header `client_contract_id` owner.",
"implemented": true,
"featureIds": ["F017", "F020"]
},
{
"id": "T023",
"description": "Charge persistence preserves `client_contract_id` attribution per charge for a combined multi-assignment invoice.",
"implemented": true,
"featureIds": ["F020", "F021"]
},
{
"id": "T024",
"description": "Invoice reads and invoice-detail rendering expose enough per-charge assignment attribution to explain a combined multi-assignment invoice.",
"implemented": true,
"featureIds": ["F021", "F022"]
},
{
"id": "T025",
"description": "Invoice history shows a combined grouped invoice clearly and does not mislabel it as belonging to only one assignment when it spans several.",
"implemented": true,
"featureIds": ["F022"]
},
{
"id": "T026",
"description": "Purchase-order enforcement keeps a parent non-combinable when child candidates do not share compatible PO scope.",
"implemented": true,
"featureIds": ["F007", "F023"]
},
{
"id": "T027",
"description": "A valid no-PO grouped combination can generate as one invoice without tripping header-assignment PO checks.",
"implemented": true,
"featureIds": ["F017", "F020", "F023"]
},
{
"id": "T028",
"description": "Legacy single-assignment parent groups still preview and generate exactly as before.",
"implemented": true,
"featureIds": ["F024"]
},
{
"id": "T029",
"description": "A single-child group still behaves like the legacy one-row flow and remains fully supported by preview and generation.",
"implemented": true,
"featureIds": ["F024"]
},
{
"id": "T030",
"description": "DB-backed integration proves two active contracts for the same client with no PO constraint can be selected as one grouped parent and generated as one invoice.",
"implemented": true,
"featureIds": ["F017", "F020", "F021"]
},
{
"id": "T031",
"description": "DB-backed integration proves two active contracts for the same client with incompatible PO scope remain grouped visually but require separate child-level invoicing.",
"implemented": true,
"featureIds": ["F007", "F012", "F018", "F023"]
},
{
"id": "T032",
"description": "DB-backed integration proves `Select All` combines compatible groups and fans out incompatible groups in the same run without cross-contamination.",
"implemented": true,
"featureIds": ["F010", "F017", "F018"]
},
{
"id": "T033",
"description": "DB-backed integration proves grouped duplicate protection remains correct when a prior combined invoice exists for part of the same client window.",
"implemented": true,
"featureIds": ["F019"]
},
{
"id": "T034",
"description": "Static/wiring coverage proves in-product copy, docs, and runbook text describe parent grouping, disabled non-combinable parents, and smart `Select All` semantics.",
"implemented": true,
"featureIds": ["F025"]
}
]