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
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
190 lines
5.1 KiB
JSON
190 lines
5.1 KiB
JSON
[
|
|
{
|
|
"id": "T001",
|
|
"description": "Unit: monthly anchor day=10 produces current period start/end with end exclusive (e.g., 2026-01-09 => 2025-12-10..2026-01-10)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F031",
|
|
"F001"
|
|
]
|
|
},
|
|
{
|
|
"id": "T002",
|
|
"description": "Unit: monthly anchor day=1 matches existing calendar-aligned behavior (periods start on 1st, end on 1st of next month)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F031",
|
|
"F014"
|
|
]
|
|
},
|
|
{
|
|
"id": "T003",
|
|
"description": "Unit: weekly anchor weekday=Mon produces correct rolling weekly boundaries with end exclusive",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F032",
|
|
"F001"
|
|
]
|
|
},
|
|
{
|
|
"id": "T004",
|
|
"description": "Unit: bi-weekly anchor with first-start date produces stable parity across month boundaries (no drift) and end exclusive",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F033",
|
|
"F023"
|
|
]
|
|
},
|
|
{
|
|
"id": "T005",
|
|
"description": "Unit: quarterly anchor logic produces correct quarter boundaries (with configured start month if supported)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F034",
|
|
"F024"
|
|
]
|
|
},
|
|
{
|
|
"id": "T006",
|
|
"description": "Unit: semi-annual anchor logic produces correct 6-month boundaries",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F035"
|
|
]
|
|
},
|
|
{
|
|
"id": "T007",
|
|
"description": "Unit: annual anchor logic produces correct year boundaries (with configured month/day if supported)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F036",
|
|
"F024"
|
|
]
|
|
},
|
|
{
|
|
"id": "T010",
|
|
"description": "Unit: proration uses exclusive end dates (period days computed as end-start, not inclusive +1) and matches expected factor",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F050",
|
|
"F001"
|
|
]
|
|
},
|
|
{
|
|
"id": "T011",
|
|
"description": "Unit: time/usage queries do not include items exactly at the period end boundary (end exclusive)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F052",
|
|
"F001"
|
|
]
|
|
},
|
|
{
|
|
"id": "T012",
|
|
"description": "Unit: overlap/validation logic treats [start, end) correctly (touching boundaries do not overlap)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F051",
|
|
"F041"
|
|
]
|
|
},
|
|
{
|
|
"id": "T020",
|
|
"description": "Integration: createClientContractLineCycles creates the initial cycle aligned to configured monthly anchor for a client with no existing cycles",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F030",
|
|
"F031",
|
|
"F014"
|
|
]
|
|
},
|
|
{
|
|
"id": "T021",
|
|
"description": "Integration: createClientContractLineCycles backfills multiple cycles up to 'now' without overlaps under end exclusive semantics",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F030",
|
|
"F041"
|
|
]
|
|
},
|
|
{
|
|
"id": "T022",
|
|
"description": "Integration: manual createNextBillingCycle respects effectiveDate/anchor inputs (no longer ignored) and returns duplicate/suggestedDate correctly",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F040",
|
|
"F041"
|
|
]
|
|
},
|
|
{
|
|
"id": "T023",
|
|
"description": "Integration: changing anchor applies after the last invoiced cycle and creates a transition period to align to the next anchor boundary without gaps/overlaps",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F042",
|
|
"F041"
|
|
]
|
|
},
|
|
{
|
|
"id": "T024",
|
|
"description": "Integration: transition period fixed charges are prorated by (actualDays / canonicalCycleDays) under end exclusive semantics",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F043",
|
|
"F050"
|
|
]
|
|
},
|
|
{
|
|
"id": "T030",
|
|
"description": "Unit/UI: Client → Billing schedule editor renders upcoming periods preview and saving schedule calls the unified update action",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F020",
|
|
"F060"
|
|
]
|
|
},
|
|
{
|
|
"id": "T031",
|
|
"description": "UI: Client → Billing “Create Next Cycle” triggers createNextBillingCycle for that client",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F027"
|
|
]
|
|
},
|
|
{
|
|
"id": "T033",
|
|
"description": "UI: Billing → Billing Cycles is summary-only (no schedule editing controls) and links to Client → Billing for schedule changes",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F026"
|
|
]
|
|
},
|
|
{
|
|
"id": "T034",
|
|
"description": "Unit: updateClientBillingSchedule applies cutover after last invoiced cycle and deactivates future non-invoiced cycles; if no invoiced cycles exist, deactivates all non-invoiced cycles",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F044"
|
|
]
|
|
},
|
|
{
|
|
"id": "T035",
|
|
"description": "Unit: updateClientBillingSchedule atomically updates billing cycle + anchor and uses cutover semantics identical to anchor-only changes",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F045",
|
|
"F042",
|
|
"F044"
|
|
]
|
|
},
|
|
{
|
|
"id": "T032",
|
|
"description": "Unit: anchor validation errors are clear (invalid day-of-month/day-of-week or non-UTC-midnight reference dates)",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F013",
|
|
"F061"
|
|
]
|
|
}
|
|
]
|