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

21 lines
4.3 KiB
JSON

[
{ "id": "T001", "description": "DB migration sanity: canonicalize `per_unit` to `usage`, build mode-default pricing schema, and backfill successfully on representative tenant data.", "implemented": true, "featureIds": ["F001", "F002", "F003", "F037"] },
{ "id": "T002", "description": "DB migration guard: migration fails fast with actionable error when required source defaults are missing/corrupt.", "implemented": true, "featureIds": ["F003"] },
{ "id": "T003", "description": "Wizard integration happy path: create contract with same service used across fixed, hourly, and usage sections; all line creations succeed with context-based validation.", "implemented": true, "featureIds": ["F004", "F005", "F006", "F008", "F009", "F010"] },
{ "id": "T004", "description": "Template wizard parity test: template authoring and resume round-trip preserve decoupled selections and prefills across fixed/hourly/usage.", "implemented": true, "featureIds": ["F007", "F016", "F017"] },
{ "id": "T005", "description": "Contract-line service attach integration: add/attach validates against target line mode and rejects only true context violations.", "implemented": true, "featureIds": ["F011"] },
{ "id": "T006", "description": "Prefill precedence integration: contract override > mode-specific catalog default > empty for fixed/hourly/usage service configs.", "implemented": true, "featureIds": ["F012", "F013", "F014", "F015"] },
{ "id": "T007", "description": "Engine allocation integrity test: remove unconditional null-line fallback and allocate explicit + uniquely disambiguated entries exactly once.", "implemented": true, "featureIds": ["F018", "F019", "F020", "F021", "F022"] },
{ "id": "T008", "description": "Engine unresolved path test: ambiguous unassigned time/usage remain non-contract and are not billed through any contract line.", "implemented": true, "featureIds": ["F020", "F021", "F022", "F026", "F027"] },
{ "id": "T009", "description": "Pricing regression bundle: hourly minimum/rounding/overtime, usage tiering/minimum/custom-rate, and bucket overage remain unchanged after allocation rewrite.", "implemented": true, "featureIds": ["F023", "F024", "F025"] },
{ "id": "T010", "description": "Automatic invoicing UI integration: non-contract candidates appear as first-class children and can be selected independently from contract-backed items.", "implemented": true, "featureIds": ["F028", "F029", "F030"] },
{ "id": "T011", "description": "Mixed generation compatibility test: compatible mixed selections combine; incompatible mixed selections split by scope (PO/currency/tax/export/window).", "implemented": true, "featureIds": ["F031", "F032"] },
{ "id": "T012", "description": "API contract test suite: service and product APIs enforce canonical vocabulary and reject legacy alias fields/legacy mode inputs.", "implemented": true, "featureIds": ["F001", "F038", "F039"] },
{ "id": "T013", "description": "Shared schema/types compile test: financial + contract-line schemas/interfaces compile and validate with decoupled semantics only.", "implemented": true, "featureIds": ["F040"] },
{ "id": "T014", "description": "Service query integration bundle: billing service list/search/sort and shared billing-clients service queries behave correctly after decoupling.", "implemented": true, "featureIds": ["F033", "F034"] },
{ "id": "T015", "description": "Scheduling + client-portal integration bundle: service lookups and availability payloads stop using billing mode as identity/type proxy.", "implemented": true, "featureIds": ["F035", "F036"] },
{ "id": "T016", "description": "Catalog settings/onboarding integration bundle: service-type changes no longer silently rewrite billing behavior and onboarding creates decoupled-compliant records.", "implemented": true, "featureIds": ["F041", "F042"] },
{ "id": "T017", "description": "Usage tracking UI integration: usage picker behavior is driven by contract/usage context, not catalog billing-method gating.", "implemented": true, "featureIds": ["F043"] },
{ "id": "T018", "description": "Hard-cutover static/debt guard: no legacy compatibility branches, no service_type aliases, no catalog-method eligibility gates, and no unconditional null-line fallback clauses remain.", "implemented": true, "featureIds": ["F044", "F004", "F005", "F006", "F018", "F019"] }
]