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

47 lines
8.7 KiB
JSON

[
{ "id": "F001", "description": "Enforce canonical billing vocabulary `fixed|hourly|usage` and reject/normalize legacy `per_unit` inputs at all write boundaries.", "implemented": true, "prdRefs": ["Requirements > L1.A"] },
{ "id": "F002", "description": "Introduce mode-specific catalog default pricing storage keyed by service, billing_mode, currency, tenant with strict uniqueness.", "implemented": true, "prdRefs": ["Requirements > L1.A"] },
{ "id": "F003", "description": "Run one-way migration/backfill from existing catalog defaults into mode-specific default pricing and fail if required mappings are missing.", "implemented": true, "prdRefs": ["Requirements > L1.G"] },
{ "id": "F004", "description": "Remove fixed-step wizard picker filtering by catalog billing method while preserving `item_kind=service` constraint.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F005", "description": "Remove hourly-step wizard picker filtering by catalog billing method while preserving `item_kind=service` constraint.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F006", "description": "Remove usage-step wizard picker filtering by catalog billing method while preserving `item_kind=service` constraint.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F007", "description": "Apply identical picker policy to template wizard fixed/hourly/usage service steps.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F008", "description": "Replace fixed-service server submit billing-method rejection with contract-context validation rules only.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F009", "description": "Replace hourly-service server submit billing-method rejection with contract-context validation rules only.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F010", "description": "Replace usage-service server submit billing-method rejection with contract-context validation rules only.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F011", "description": "Update contract line service attach actions to validate by target line mode/context instead of catalog billing method.", "implemented": true, "prdRefs": ["Requirements > L1.B"] },
{ "id": "F012", "description": "Implement fixed-line rate default prefill from mode-specific catalog defaults with clear override semantics.", "implemented": true, "prdRefs": ["Requirements > L1.C"] },
{ "id": "F013", "description": "Implement hourly-line rate default prefill from mode-specific catalog defaults with clear override semantics.", "implemented": true, "prdRefs": ["Requirements > L1.C"] },
{ "id": "F014", "description": "Implement usage-line rate default prefill from mode-specific catalog defaults with clear override semantics.", "implemented": true, "prdRefs": ["Requirements > L1.C"] },
{ "id": "F015", "description": "Update contract-line service form metadata to display effective billing mode and default-rate source.", "implemented": true, "prdRefs": ["UX / UI Notes", "Requirements > L1.C"] },
{ "id": "F016", "description": "Ensure contract wizard draft/resume faithfully round-trips decoupled service selections and prefills.", "implemented": true, "prdRefs": ["Requirements > L1.B", "Requirements > L1.C"] },
{ "id": "F017", "description": "Ensure template wizard draft/resume faithfully round-trips decoupled service selections and prefills.", "implemented": true, "prdRefs": ["Requirements > L1.B", "Requirements > L1.C"] },
{ "id": "F018", "description": "Remove unconditional time-entry null-line fallback allocation from billing engine contract-line loops.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F019", "description": "Remove unconditional usage-record null-line fallback allocation from billing engine contract-line loops.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F020", "description": "Allocate unassigned time only when service-based contract-line disambiguation resolves uniquely.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F021", "description": "Allocate unassigned usage only when service-based contract-line disambiguation resolves uniquely.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F022", "description": "Enforce service-membership checks so records cannot bill through contract lines that do not include that service.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F023", "description": "Preserve hourly rounding/minimum/overtime behavior after allocation rewrites.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F024", "description": "Preserve usage minimum/custom-rate/tiering behavior after allocation rewrites.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F025", "description": "Preserve bucket overage behavior after allocation rewrites.", "implemented": true, "prdRefs": ["Requirements > L1.D"] },
{ "id": "F026", "description": "Materialize unresolved approved billable time as explicit non-contract invoice candidates.", "implemented": true, "prdRefs": ["Requirements > L1.E"] },
{ "id": "F027", "description": "Materialize unresolved approved billable usage as explicit non-contract invoice candidates.", "implemented": true, "prdRefs": ["Requirements > L1.E"] },
{ "id": "F028", "description": "Expose non-contract candidates in grouped automatic invoicing as first-class selectable children.", "implemented": true, "prdRefs": ["Requirements > L1.E", "UX / UI Notes"] },
{ "id": "F029", "description": "Support generating only contract-backed selections without consuming non-contract candidates.", "implemented": true, "prdRefs": ["Requirements > L1.E"] },
{ "id": "F030", "description": "Support generating only non-contract selections without consuming contract-backed candidates.", "implemented": true, "prdRefs": ["Requirements > L1.E"] },
{ "id": "F031", "description": "Apply compatibility checks for mixed contract/non-contract combined generation (client/window/currency/tax/export/PO).", "implemented": true, "prdRefs": ["Requirements > L1.E"] },
{ "id": "F032", "description": "Update preview/generation summaries to explicitly state one-invoice vs multi-invoice outcomes for mixed selections.", "implemented": true, "prdRefs": ["Requirements > L1.E"] },
{ "id": "F033", "description": "Update service catalog API filtering/sorting to decoupled semantics while preserving query correctness.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F034", "description": "Update shared billing-clients service query helpers to decoupled semantics.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F035", "description": "Update scheduling time-entry service lookup APIs to stop using catalog billing method as service identity/type proxy.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F036", "description": "Update client-portal availability service mapping to decoupled semantics.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F037", "description": "Update product catalog create/update logic to canonical mode behavior with no active `per_unit` writes.", "implemented": true, "prdRefs": ["Requirements > L1.A", "Requirements > L1.F"] },
{ "id": "F038", "description": "Update service API schemas to hard-cutover decoupled contracts with no legacy alias compatibility.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F039", "description": "Update product API schemas to hard-cutover canonical vocabulary with no legacy alias compatibility.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F040", "description": "Update financial/contract-line schemas and shared interfaces to hard-cutover decoupled semantics.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F041", "description": "Update onboarding service/service-type creation flows to stop enforcing identity-level billing-mode coupling.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F042", "description": "Update service settings forms to stop auto-overwriting billing behavior from service-type selection.", "implemented": true, "prdRefs": ["Requirements > L1.F"] },
{ "id": "F043", "description": "Update usage tracking service pickers to contract-context behavior instead of catalog-method gating.", "implemented": true, "prdRefs": ["Requirements > L1.B", "Requirements > L1.F"] },
{ "id": "F044", "description": "Remove stale compatibility branches and static-fallback paths so the codebase operates in single-mode hard-cutover state.", "implemented": true, "prdRefs": ["Rollout / Migration", "Non-functional Requirements"] }
]