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

2959 lines
79 KiB
JSON

[
{
"id": "T001",
"description": "Inventory captures every live reference to `resolveServicePeriod` in recurring billing execution paths",
"implemented": true,
"featureIds": [
"F003"
]
},
{
"id": "T002",
"description": "Inventory captures every live reference to `billing_cycle_alignment` in runtime, models, schemas, UI, and tests",
"implemented": true,
"featureIds": [
"F003",
"F090"
]
},
{
"id": "T003",
"description": "Inventory captures every persisted reader of `service_period_start` and `service_period_end` outside the billing engine",
"implemented": true,
"featureIds": [
"F004",
"F005"
]
},
{
"id": "T004",
"description": "Inventory captures recurring timing dependencies in credits, prepayment, and negative-invoice flows",
"implemented": true,
"featureIds": [
"F005"
]
},
{
"id": "T005",
"description": "Parity fixture matrix includes monthly, quarterly, semi-annual, annual, advance, arrears, mid-start, and mid-end scenarios",
"implemented": true,
"featureIds": [
"F007",
"F010"
]
},
{
"id": "T006",
"description": "Parity fixture matrix includes pricing schedules, discounts, PO, bucket, product, and license recurring scenarios",
"implemented": true,
"featureIds": [
"F007",
"F010"
]
},
{
"id": "T007",
"description": "Parity harness can execute old and new recurring timing for a representative client-cadence billing run",
"implemented": true,
"featureIds": [
"F008"
]
},
{
"id": "T008",
"description": "Parity harness reports blocking versus non-blocking differences explicitly",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T009",
"description": "Out-of-scope matrix explicitly lists time, usage, materials, and manual-only flows with compatibility notes",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T010",
"description": "Recurring timing fixture builders can create cadence-owner-aware scenarios without invoice side effects",
"implemented": true,
"featureIds": [
"F010",
"F020"
]
},
{
"id": "T011",
"description": "Canonical service-period type preserves cadence owner, source obligation, and period boundaries without billing-engine-specific leakage",
"implemented": true,
"featureIds": [
"F011"
]
},
{
"id": "T012",
"description": "Canonical invoice-window type remains distinct from service-period type in type checks and unit tests",
"implemented": true,
"featureIds": [
"F012"
]
},
{
"id": "T013",
"description": "Cadence-owner enum defaults are explicit and serializable across shared, server, and package types",
"implemented": true,
"featureIds": [
"F013",
"F083"
]
},
{
"id": "T014",
"description": "Boundary-generator interface supports client and contract strategies with identical output contracts",
"implemented": true,
"featureIds": [
"F014"
]
},
{
"id": "T015",
"description": "Activity-window intersection trims start boundaries correctly under inclusive and exclusive date rules",
"implemented": true,
"featureIds": [
"F015",
"F018"
]
},
{
"id": "T016",
"description": "Activity-window intersection trims end boundaries correctly under inclusive and exclusive date rules",
"implemented": true,
"featureIds": [
"F015",
"F018"
]
},
{
"id": "T017",
"description": "Partial-period settlement produces stable coverage factors without a separate proration subsystem",
"implemented": true,
"featureIds": [
"F016"
]
},
{
"id": "T018",
"description": "Advance and arrears due-position mapping operate on the same service period rather than creating alternative service periods",
"implemented": true,
"featureIds": [
"F017"
]
},
{
"id": "T019",
"description": "Inclusive and exclusive date semantics remain consistent across billing cycles, assignment dates, and invoice detail persistence",
"implemented": true,
"featureIds": [
"F018"
]
},
{
"id": "T020",
"description": "Invoice detail persistence contract for recurring lines can be asserted without generating a full invoice document",
"implemented": true,
"featureIds": [
"F019",
"F020"
]
},
{
"id": "T021",
"description": "Monthly client-cadence generation reproduces current anchored periods for a mid-month anchor such as the 10th",
"implemented": true,
"featureIds": [
"F021"
]
},
{
"id": "T022",
"description": "Monthly client-cadence generation reproduces current month-boundary periods when no custom anchor exists",
"implemented": true,
"featureIds": [
"F021"
]
},
{
"id": "T023",
"description": "Quarterly client-cadence generation reproduces current anchor month and day behavior",
"implemented": true,
"featureIds": [
"F022"
]
},
{
"id": "T024",
"description": "Semi-annual client-cadence generation reproduces current anchor month and day behavior",
"implemented": true,
"featureIds": [
"F023"
]
},
{
"id": "T025",
"description": "Annual client-cadence generation reproduces current anchor month and day behavior",
"implemented": true,
"featureIds": [
"F024"
]
},
{
"id": "T026",
"description": "Weekly client-cadence generation preserves [start, end) semantics and due-window alignment",
"implemented": true,
"featureIds": [
"F025"
]
},
{
"id": "T027",
"description": "Bi-weekly client-cadence generation preserves [start, end) semantics and due-window alignment",
"implemented": true,
"featureIds": [
"F026"
]
},
{
"id": "T028",
"description": "Anchor changes on future non-invoiced cycles preserve current transition-period behavior under the canonical generator",
"implemented": true,
"featureIds": [
"F027"
]
},
{
"id": "T029",
"description": "Historical billing cycles remain deterministic when billing settings changed after prior invoices were created",
"implemented": true,
"featureIds": [
"F029"
]
},
{
"id": "T030",
"description": "Legacy or partial client-billing-cycle data falls back predictably without generating overlapping service periods",
"implemented": true,
"featureIds": [
"F030"
]
},
{
"id": "T031",
"description": "Advance timing maps the current service period onto the current invoice window for client cadence",
"implemented": true,
"featureIds": [
"F031"
]
},
{
"id": "T032",
"description": "Arrears timing maps the previous service period onto the current invoice window for client cadence",
"implemented": true,
"featureIds": [
"F032"
]
},
{
"id": "T033",
"description": "Mid-period start on a recurring line produces a partial first service period rather than bespoke proration logic",
"implemented": true,
"featureIds": [
"F033",
"F035"
]
},
{
"id": "T034",
"description": "Mid-period end on a recurring line produces a partial final service period rather than bespoke proration logic",
"implemented": true,
"featureIds": [
"F034",
"F035"
]
},
{
"id": "T035",
"description": "Product and license recurring lines use the same partial-period settlement rules as fixed recurring lines",
"implemented": true,
"featureIds": [
"F036",
"F040"
]
},
{
"id": "T036",
"description": "Newly activated recurring lines have explicit first-period behavior under advance timing",
"implemented": true,
"featureIds": [
"F037"
]
},
{
"id": "T037",
"description": "Newly activated recurring lines have explicit first-period behavior under arrears timing",
"implemented": true,
"featureIds": [
"F037"
]
},
{
"id": "T038",
"description": "Terminated recurring lines have explicit final-period behavior under advance timing",
"implemented": true,
"featureIds": [
"F038"
]
},
{
"id": "T039",
"description": "Terminated recurring lines have explicit final-period behavior under arrears timing",
"implemented": true,
"featureIds": [
"F038"
]
},
{
"id": "T040",
"description": "Zero-coverage or empty service periods never emit duplicate or spurious recurring charges",
"implemented": true,
"featureIds": [
"F039",
"F040"
]
},
{
"id": "T041",
"description": "Fixed recurring charge calculation no longer depends on `resolveServicePeriod` after cutover",
"implemented": true,
"featureIds": [
"F041",
"F042"
]
},
{
"id": "T042",
"description": "Fixed recurring parity holds for a full-period monthly client-cadence contract",
"implemented": true,
"featureIds": [
"F041",
"F050"
]
},
{
"id": "T043",
"description": "Fixed recurring parity holds for a mid-start monthly client-cadence contract",
"implemented": true,
"featureIds": [
"F041",
"F050"
]
},
{
"id": "T044",
"description": "Fixed recurring parity holds for a mid-end monthly client-cadence contract",
"implemented": true,
"featureIds": [
"F041",
"F050"
]
},
{
"id": "T045",
"description": "Arrears-specific skip logic is absent from the migrated fixed recurring execution path",
"implemented": true,
"featureIds": [
"F043"
]
},
{
"id": "T046",
"description": "Advance termination credit behavior is reproduced through canonical partial-period settlement instead of a special branch",
"implemented": true,
"featureIds": [
"F044"
]
},
{
"id": "T047",
"description": "FMV allocation totals remain unchanged when fixed recurring timing switches to canonical service periods",
"implemented": true,
"featureIds": [
"F045"
]
},
{
"id": "T048",
"description": "Pricing schedule overrides still take precedence over contract-level base rates under fixed recurring cutover",
"implemented": true,
"featureIds": [
"F046"
]
},
{
"id": "T049",
"description": "Contract-level custom-rate overrides still apply correctly under fixed recurring cutover",
"implemented": true,
"featureIds": [
"F047"
]
},
{
"id": "T050",
"description": "Fixed recurring invoice detail rows persist canonical service-period metadata without subtotal drift",
"implemented": true,
"featureIds": [
"F049",
"F050"
]
},
{
"id": "T051",
"description": "Tax allocation for fixed recurring charges remains stable when timing source changes to canonical service periods",
"implemented": true,
"featureIds": [
"F048"
]
},
{
"id": "T052",
"description": "Tax-region selection for fixed recurring charges remains stable when timing source changes to canonical service periods",
"implemented": true,
"featureIds": [
"F048"
]
},
{
"id": "T053",
"description": "PO-required recurring charges remain associated to the correct invoice lines after fixed recurring cutover",
"implemented": true,
"featureIds": [
"F049",
"F059"
]
},
{
"id": "T054",
"description": "Pricing schedule effective-date boundaries are evaluated correctly against canonical recurring periods",
"implemented": true,
"featureIds": [
"F046",
"F055"
]
},
{
"id": "T055",
"description": "Discount start and end applicability still produces the same recurring discount coverage under canonical timing",
"implemented": true,
"featureIds": [
"F054"
]
},
{
"id": "T056",
"description": "Bucket or allowance recurring lines map their included units to the correct canonical service period",
"implemented": true,
"featureIds": [
"F051"
]
},
{
"id": "T057",
"description": "Bucket rollover behavior remains correct when recurring period boundaries become canonical and explicit",
"implemented": true,
"featureIds": [
"F052"
]
},
{
"id": "T058",
"description": "Bucket overage charges still attach to the correct invoice window after recurring timing cutover",
"implemented": true,
"featureIds": [
"F053"
]
},
{
"id": "T059",
"description": "Negative recurring totals and credit-generating allocations behave predictably under canonical service periods",
"implemented": true,
"featureIds": [
"F057"
]
},
{
"id": "T060",
"description": "Out-of-scope bucket, time, and usage behaviors are documented explicitly rather than left implicit in the plan",
"implemented": true,
"featureIds": [
"F060"
]
},
{
"id": "T061",
"description": "Recurring product charge paths that currently depend on late-stage proration are fully inventoried before migration",
"implemented": true,
"featureIds": [
"F061"
]
},
{
"id": "T062",
"description": "Recurring product charges derive timing from canonical service periods under client cadence",
"implemented": true,
"featureIds": [
"F062"
]
},
{
"id": "T063",
"description": "Recurring product charges preserve catalog-price versus contract-override precedence after cutover",
"implemented": true,
"featureIds": [
"F063"
]
},
{
"id": "T064",
"description": "Recurring product tax behavior remains unchanged after moving products to canonical service periods",
"implemented": true,
"featureIds": [
"F064"
]
},
{
"id": "T065",
"description": "Recurring license charge paths that currently depend on late-stage proration are fully inventoried before migration",
"implemented": true,
"featureIds": [
"F065"
]
},
{
"id": "T066",
"description": "Recurring license charges derive timing from canonical service periods under client cadence",
"implemented": true,
"featureIds": [
"F066"
]
},
{
"id": "T067",
"description": "Recurring license quantity and price sourcing remain correct after cutover",
"implemented": true,
"featureIds": [
"F067"
]
},
{
"id": "T068",
"description": "Recurring license tax behavior remains unchanged after moving licenses to canonical service periods",
"implemented": true,
"featureIds": [
"F068"
]
},
{
"id": "T069",
"description": "Recurring product invoice detail rows persist canonical service-period metadata correctly",
"implemented": true,
"featureIds": [
"F069"
]
},
{
"id": "T070",
"description": "Recurring license invoice detail rows persist canonical service-period metadata correctly",
"implemented": true,
"featureIds": [
"F070"
]
},
{
"id": "T071",
"description": "Invoice generation selects due recurring service periods for a billing cycle instead of deriving them ad hoc in each charge path",
"implemented": true,
"featureIds": [
"F071"
]
},
{
"id": "T072",
"description": "Invoice header billing_period_start and billing_period_end remain stable after recurring service-period cutover",
"implemented": true,
"featureIds": [
"F072"
]
},
{
"id": "T073",
"description": "Invoice subtotal and total calculations remain unchanged for client-cadence recurring invoices after cutover",
"implemented": true,
"featureIds": [
"F071",
"F072"
]
},
{
"id": "T074",
"description": "Invoice finalization and status transitions continue to function after recurring service-period-first billing lands",
"implemented": true,
"featureIds": [
"F073"
]
},
{
"id": "T075",
"description": "Invoice detail readers return canonical recurring service-period metadata without breaking existing query contracts",
"implemented": true,
"featureIds": [
"F019",
"F125"
]
},
{
"id": "T076",
"description": "One-cycle invoice preview uses canonical service periods and still matches expected recurring totals",
"implemented": true,
"featureIds": [
"F075"
]
},
{
"id": "T077",
"description": "Recurring invoice generation for a cycle containing no eligible recurring service periods produces the expected empty-result behavior",
"implemented": true,
"featureIds": [
"F071",
"F080"
]
},
{
"id": "T078",
"description": "Billing-period end dates used for billed-through calculations remain correct after canonical service-period selection",
"implemented": true,
"featureIds": [
"F080"
]
},
{
"id": "T079",
"description": "Invoice workflow events continue to describe recurring invoice creation and updates correctly after cutover",
"implemented": true,
"featureIds": [
"F079",
"F128"
]
},
{
"id": "T080",
"description": "Canonical recurring service-period metadata remains stable through invoice reload and reread paths",
"implemented": true,
"featureIds": [
"F073",
"F125"
]
},
{
"id": "T081",
"description": "Automatic recurring billing runs select the correct due recurring service periods under client cadence",
"implemented": true,
"featureIds": [
"F074"
]
},
{
"id": "T082",
"description": "Automatic recurring billing runs do not double-bill recurring service periods when rerun idempotently",
"implemented": true,
"featureIds": [
"F074",
"F080"
]
},
{
"id": "T083",
"description": "Recurring invoice preview and generate-one-cycle flows surface canonical service periods in preview state",
"implemented": true,
"featureIds": [
"F075"
]
},
{
"id": "T084",
"description": "Manual invoice creation remains uncoupled from recurring service-period generation",
"implemented": true,
"featureIds": [
"F076"
]
},
{
"id": "T085",
"description": "Manual invoice editing and viewing continue to work when invoice detail rows include canonical recurring periods",
"implemented": true,
"featureIds": [
"F076",
"F126"
]
},
{
"id": "T086",
"description": "Duplicate-invoice prevention still blocks a second invoice for the same recurring due window",
"implemented": true,
"featureIds": [
"F080"
]
},
{
"id": "T087",
"description": "Billed-through detection for recurring lines remains correct after service-period-first cutover",
"implemented": true,
"featureIds": [
"F080"
]
},
{
"id": "T088",
"description": "Client invoice preview used by portal or pay flows remains stable when recurring detail periods are canonical",
"implemented": true,
"featureIds": [
"F126",
"F140"
]
},
{
"id": "T089",
"description": "Recurring invoice selection remains stable when non-recurring charges are present on the same invoice",
"implemented": true,
"featureIds": [
"F071",
"F076"
]
},
{
"id": "T090",
"description": "Invoice detail queries used by dashboard dialogs still return expected recurring line ordering and metadata",
"implemented": true,
"featureIds": [
"F125",
"F126"
]
},
{
"id": "T091",
"description": "Credit application still applies against invoices generated from canonical recurring service periods",
"implemented": true,
"featureIds": [
"F077"
]
},
{
"id": "T092",
"description": "Credit reconciliation still works when recurring invoice detail rows carry more explicit service periods",
"implemented": true,
"featureIds": [
"F078"
]
},
{
"id": "T093",
"description": "Credit expiration still interprets recurring invoice timing correctly after service-period cutover",
"implemented": true,
"featureIds": [
"F078"
]
},
{
"id": "T094",
"description": "Negative invoice creation remains valid when the originating recurring charges use canonical service periods",
"implemented": true,
"featureIds": [
"F077"
]
},
{
"id": "T095",
"description": "Negative-invoice follow-on positive invoice reconciliation remains valid after recurring service-period cutover",
"implemented": true,
"featureIds": [
"F077",
"F078"
]
},
{
"id": "T096",
"description": "Prepayment invoice generation still produces correct recurring prepayment behavior under canonical service periods",
"implemented": true,
"featureIds": [
"F058"
]
},
{
"id": "T097",
"description": "Prepayment invoice updates across multiple cycles remain consistent after recurring timing cutover",
"implemented": true,
"featureIds": [
"F058"
]
},
{
"id": "T098",
"description": "Credit-related invoice detail readers and summaries remain stable after canonical recurring periods are introduced",
"implemented": true,
"featureIds": [
"F078",
"F125"
]
},
{
"id": "T099",
"description": "PO-related invoice flows continue to operate when credits and recurring service periods intersect",
"implemented": true,
"featureIds": [
"F059",
"F131"
]
},
{
"id": "T100",
"description": "Recurring timing changes do not break credit or prepayment integration tests that previously depended on client billing cycles alone",
"implemented": true,
"featureIds": [
"F077",
"F078",
"F058"
]
},
{
"id": "T101",
"description": "Cadence-owner persistence location is explicit and covered by schema, type, and repository tests",
"implemented": true,
"featureIds": [
"F081",
"F082",
"F083"
]
},
{
"id": "T102",
"description": "Existing recurring records default to client cadence without write-time ambiguity",
"implemented": true,
"featureIds": [
"F082",
"F089"
]
},
{
"id": "T103",
"description": "Shared interfaces serialize and deserialize cadence_owner consistently across packages",
"implemented": true,
"featureIds": [
"F083"
]
},
{
"id": "T104",
"description": "Repository readers and writers preserve cadence_owner while staging billing_cycle_alignment deprecation",
"implemented": true,
"featureIds": [
"F084",
"F090"
]
},
{
"id": "T105",
"description": "Server API schemas accept cadence_owner and reject unsupported values or combinations",
"implemented": true,
"featureIds": [
"F085",
"F088"
]
},
{
"id": "T106",
"description": "Action-layer writes for recurring lines, presets, templates, and wizards persist cadence_owner correctly",
"implemented": true,
"featureIds": [
"F086"
]
},
{
"id": "T107",
"description": "Fixture builders and test helpers create valid client-cadence and contract-cadence recurring scenarios with stable defaults",
"implemented": true,
"featureIds": [
"F087",
"F134"
]
},
{
"id": "T108",
"description": "Compatibility readers preserve client-cadence behavior when cadence_owner is absent on legacy records",
"implemented": true,
"featureIds": [
"F089"
]
},
{
"id": "T109",
"description": "billing_cycle_alignment remains readable for staged rollout while no longer being required for new writes",
"implemented": true,
"featureIds": [
"F090",
"F137"
]
},
{
"id": "T110",
"description": "Schema and defaulting migrations do not mutate existing invoice outputs for untouched tenants",
"implemented": true,
"featureIds": [
"F082",
"F114",
"F135"
]
},
{
"id": "T111",
"description": "Recurring contract line configuration UI presents cadence owner in business language without exposing internal engine jargon",
"implemented": true,
"featureIds": [
"F091"
]
},
{
"id": "T112",
"description": "Contract wizard captures cadence_owner for new recurring lines and preserves it across step transitions",
"implemented": true,
"featureIds": [
"F092"
]
},
{
"id": "T113",
"description": "Contract wizard resume and draft flows preserve cadence_owner and recurring timing defaults",
"implemented": true,
"featureIds": [
"F092",
"F144"
]
},
{
"id": "T114",
"description": "Template wizard and template detail configuration capture cadence-owner defaults for recurring lines",
"implemented": true,
"featureIds": [
"F093"
]
},
{
"id": "T115",
"description": "Fixed recurring configuration panels explain partial-period coverage rather than proration-as-workaround",
"implemented": true,
"featureIds": [
"F094"
]
},
{
"id": "T116",
"description": "Billing dashboard quick-start and overview copy no longer teaches users to infer timing primarily via proration",
"implemented": true,
"featureIds": [
"F095"
]
},
{
"id": "T117",
"description": "Client billing schedule preview clarifies that client cadence is a cadence owner choice rather than the only recurring timing model",
"implemented": true,
"featureIds": [
"F096",
"F122"
]
},
{
"id": "T118",
"description": "Preset-based recurring line creation carries cadence-owner defaults without relying on billing_cycle_alignment",
"implemented": true,
"featureIds": [
"F123"
]
},
{
"id": "T119",
"description": "Template-authored recurring defaults clone cadence-owner safely into instantiated contract lines",
"implemented": true,
"featureIds": [
"F138"
]
},
{
"id": "T120",
"description": "Draft and resume flows across contract and template creation keep cadence-owner and timing defaults stable end to end",
"implemented": true,
"featureIds": [
"F123",
"F138",
"F144"
]
},
{
"id": "T337",
"description": "Resuming a recurring draft returns cadence_owner and partial-period defaults together from the contract wizard reread action",
"implemented": true,
"featureIds": [
"F144"
]
},
{
"id": "T338",
"description": "Resaving a resumed recurring draft preserves cadence_owner and partial-period defaults on the emitted draft payload",
"implemented": true,
"featureIds": [
"F144"
]
},
{
"id": "T121",
"description": "Client portal invoice detail dialogs render canonical recurring service-period metadata correctly",
"implemented": true,
"featureIds": [
"F097",
"F140"
]
},
{
"id": "T122",
"description": "Client portal plan or contract-line detail dialogs render canonical recurring service periods correctly",
"implemented": true,
"featureIds": [
"F097",
"F130"
]
},
{
"id": "T123",
"description": "Recent-client-invoice and billing-overview actions preserve correct recurring period interpretation after cutover",
"implemented": true,
"featureIds": [
"F126",
"F130"
]
},
{
"id": "T333",
"description": "Client-portal billing overview cards surface canonical recurring service-period summaries instead of invoice-header-only timing copy",
"implemented": true,
"featureIds": [
"F140"
]
},
{
"id": "T334",
"description": "Client-portal payment-success views surface canonical recurring service-period summaries for the paid invoice",
"implemented": true,
"featureIds": [
"F140"
]
},
{
"id": "T124",
"description": "Remaining bucket unit reporting aligns to the intended canonical recurring period semantics",
"implemented": true,
"featureIds": [
"F130"
]
},
{
"id": "T125",
"description": "Revenue report behavior remains correct when recurring invoices are interpreted through canonical service periods",
"implemented": true,
"featureIds": [
"F098",
"F129"
]
},
{
"id": "T126",
"description": "Expiration or reconciliation reports do not regress when recurring period semantics are clarified",
"implemented": true,
"featureIds": [
"F098",
"F129"
]
},
{
"id": "T127",
"description": "Accounting export repository outputs stable service-period fields after cutover",
"implemented": true,
"featureIds": [
"F099",
"F127"
]
},
{
"id": "T128",
"description": "QuickBooks export adapters still map the intended recurring service date semantics after cutover",
"implemented": true,
"featureIds": [
"F099"
]
},
{
"id": "T129",
"description": "Xero and CSV export adapters still map the intended recurring service date semantics after cutover",
"implemented": true,
"featureIds": [
"F099"
]
},
{
"id": "T130",
"description": "Invoice template preview and sample invoice data render canonical recurring service periods correctly in previews and designer flows",
"implemented": true,
"featureIds": [
"F133"
]
},
{
"id": "T335",
"description": "Company-sync and accounting mapping services remain free of invoice-header or service-period field assumptions after recurring cutover",
"implemented": true,
"featureIds": [
"F141"
]
},
{
"id": "T336",
"description": "Accounting export validation preserves canonical export-line service-period context while rejecting mapping or realm issues",
"implemented": true,
"featureIds": [
"F141"
]
},
{
"id": "T131",
"description": "Monthly contract-cadence generation emits assignment-anniversary service periods for a start date on the 8th",
"implemented": true,
"featureIds": [
"F101"
]
},
{
"id": "T132",
"description": "Quarterly contract-cadence generation emits assignment-anniversary service periods across quarter boundaries",
"implemented": true,
"featureIds": [
"F102"
]
},
{
"id": "T133",
"description": "Semi-annual contract-cadence generation emits assignment-anniversary service periods across six-month boundaries",
"implemented": true,
"featureIds": [
"F103"
]
},
{
"id": "T134",
"description": "Annual contract-cadence generation emits assignment-anniversary service periods across yearly boundaries",
"implemented": true,
"featureIds": [
"F104"
]
},
{
"id": "T135",
"description": "Future-start assignments under contract cadence do not emit due service periods before the assignment starts",
"implemented": true,
"featureIds": [
"F105"
]
},
{
"id": "T136",
"description": "Renewed or renewed-in-place contracts under contract cadence continue cadence behavior according to the documented rule",
"implemented": true,
"featureIds": [
"F105"
]
},
{
"id": "T137",
"description": "First invoice behavior for contract-cadence lines starting mid-client-cycle matches the documented rule",
"implemented": true,
"featureIds": [
"F106"
]
},
{
"id": "T138",
"description": "Final invoice behavior for contract-cadence lines ending mid-period matches the documented rule",
"implemented": true,
"featureIds": [
"F107"
]
},
{
"id": "T139",
"description": "Contract-cadence recurring product and license lines inherit the same contract-anniversary service-period model",
"implemented": true,
"featureIds": [
"F101",
"F102",
"F103",
"F104"
]
},
{
"id": "T140",
"description": "Contract-cadence recurring invoice detail rows persist contract-owned service-period boundaries correctly",
"implemented": true,
"featureIds": [
"F101",
"F125"
]
},
{
"id": "T141",
"description": "Mixed cadence-owner recurring lines due in the same invoice window follow the documented grouping rule",
"implemented": true,
"featureIds": [
"F108",
"F110"
]
},
{
"id": "T142",
"description": "Mixed cadence-owner recurring lines due in different windows follow the documented grouping rule",
"implemented": true,
"featureIds": [
"F109",
"F110"
]
},
{
"id": "T143",
"description": "Unsupported mixed-cadence combinations fail fast in the action layer with clear validation errors",
"implemented": true,
"featureIds": [
"F088",
"F136"
]
},
{
"id": "T144",
"description": "Unsupported mixed-cadence combinations fail fast in API schemas with clear validation errors",
"implemented": true,
"featureIds": [
"F085",
"F136"
]
},
{
"id": "T145",
"description": "Unsupported mixed-cadence combinations surface clear validation in UI configuration flows",
"implemented": true,
"featureIds": [
"F091",
"F136"
]
},
{
"id": "T146",
"description": "Recurring run selection remains deterministic when both cadence owners are present on one client",
"implemented": true,
"featureIds": [
"F110"
]
},
{
"id": "T147",
"description": "Portal and export consumers remain stable when invoices contain mixed cadence-owner recurring lines",
"implemented": true,
"featureIds": [
"F097",
"F099",
"F110"
]
},
{
"id": "T148",
"description": "Mixed cadence-owner disputes can be traced using the documented runbook and persisted metadata",
"implemented": true,
"featureIds": [
"F149"
]
},
{
"id": "T149",
"description": "End-exclusive overlap semantics remain correct when mixed cadence owners coexist",
"implemented": true,
"featureIds": [
"F145"
]
},
{
"id": "T150",
"description": "No recurring execution path mixes legacy and canonical timing models on the same line during staged rollout",
"implemented": true,
"featureIds": [
"F143"
]
},
{
"id": "T151",
"description": "Rollout plan keeps client-cadence parity enabled before any contract-cadence capability is exposed",
"implemented": true,
"featureIds": [
"F111"
]
},
{
"id": "T152",
"description": "DB-backed pre-cutover validation proves monthly client-cadence recurring invoices are unchanged under the new engine",
"implemented": true,
"featureIds": [
"F112"
]
},
{
"id": "T153",
"description": "DB-backed pre-cutover validation proves quarterly or annual client-cadence recurring invoices are unchanged under the new engine",
"implemented": true,
"featureIds": [
"F112"
]
},
{
"id": "T154",
"description": "Rollout controls or safety gates allow comparison mode without mutating live invoice outputs",
"implemented": true,
"featureIds": [
"F113"
]
},
{
"id": "T155",
"description": "Cadence-owner backfill writes safe defaults to existing recurring records",
"implemented": true,
"featureIds": [
"F114",
"F135"
]
},
{
"id": "T156",
"description": "Cadence-owner backfill does not mutate invoice behavior for untouched client-cadence tenants",
"implemented": true,
"featureIds": [
"F114",
"F135"
]
},
{
"id": "T157",
"description": "Guardrails keep time, usage, materials, and manual-only paths outside the first hard cutover",
"implemented": true,
"featureIds": [
"F115"
]
},
{
"id": "T158",
"description": "Partial rollout protection prevents fixed recurring from using canonical timing while product or license recurring still use legacy timing on the same execution path",
"implemented": true,
"featureIds": [
"F143"
]
},
{
"id": "T159",
"description": "End-exclusive query behavior remains correct in billing-engine selection logic after helper removal",
"implemented": true,
"featureIds": [
"F145"
]
},
{
"id": "T160",
"description": "Operational runbook covers parity checks, mixed-cadence troubleshooting, and rollback posture clearly enough for execution handoff",
"implemented": true,
"featureIds": [
"F119",
"F149"
]
},
{
"id": "T161",
"description": "billing_cycle_alignment is no longer required for new recurring writes after cutover staging lands",
"implemented": true,
"featureIds": [
"F090",
"F137"
]
},
{
"id": "T162",
"description": "billing_cycle_alignment no longer changes live recurring execution for migrated paths",
"implemented": true,
"featureIds": [
"F116",
"F137"
]
},
{
"id": "T163",
"description": "Source grep shows resolveServicePeriod is absent from migrated recurring charge execution paths",
"implemented": true,
"featureIds": [
"F117",
"F146"
]
},
{
"id": "T164",
"description": "Source grep shows duplicated proration implementations are absent from migrated recurring fixed, product, and license paths",
"implemented": true,
"featureIds": [
"F117",
"F146"
]
},
{
"id": "T165",
"description": "Source grep shows obsolete recurring timing terminology is removed from migrated UI copy and docs where appropriate",
"implemented": true,
"featureIds": [
"F142"
]
},
{
"id": "T166",
"description": "Database and source validation prove live recurring outputs no longer depend on billing_cycle_alignment",
"implemented": true,
"featureIds": [
"F116",
"F146"
]
},
{
"id": "T167",
"description": "Database and source validation prove live recurring outputs no longer depend on resolveServicePeriod",
"implemented": true,
"featureIds": [
"F117",
"F146"
]
},
{
"id": "T168",
"description": "Follow-on boundaries for advanced service-period ledger extensions are captured explicitly instead of leaking into v1 implementation",
"implemented": true,
"featureIds": [
"F147"
]
},
{
"id": "T169",
"description": "Follow-on boundaries for time and usage unification are captured explicitly instead of leaking into v1 implementation",
"implemented": true,
"featureIds": [
"F148"
]
},
{
"id": "T170",
"description": "Feature-to-subsystem mapping remains internally consistent so implementation progress can be tracked across all affected surfaces",
"implemented": true,
"featureIds": [
"F150"
]
},
{
"id": "T171",
"description": "DB-backed sanity: existing monthly client-cadence recurring invoice generation succeeds unchanged after service-period-first cutover",
"implemented": true,
"featureIds": [
"F112",
"F118"
]
},
{
"id": "T172",
"description": "DB-backed sanity: existing quarterly client-cadence recurring invoice generation succeeds unchanged after service-period-first cutover",
"implemented": true,
"featureIds": [
"F112",
"F118"
]
},
{
"id": "T173",
"description": "DB-backed sanity: recurring product invoices continue to generate correctly under client cadence after cutover",
"implemented": true,
"featureIds": [
"F062",
"F118"
]
},
{
"id": "T174",
"description": "DB-backed sanity: recurring license invoices continue to generate correctly under client cadence after cutover",
"implemented": true,
"featureIds": [
"F066",
"F118"
]
},
{
"id": "T175",
"description": "DB-backed sanity: contract-cadence monthly recurring billing succeeds for a contract starting mid-month",
"implemented": true,
"featureIds": [
"F101",
"F118"
]
},
{
"id": "T176",
"description": "DB-backed sanity: mixed cadence-owner client billing follows documented grouping rules in an integration scenario",
"implemented": true,
"featureIds": [
"F108",
"F109",
"F118"
]
},
{
"id": "T177",
"description": "DB-backed sanity: credits and negative invoices still reconcile correctly after recurring service-period-first cutover",
"implemented": true,
"featureIds": [
"F077",
"F078",
"F118"
]
},
{
"id": "T178",
"description": "DB-backed sanity: accounting export readers produce stable service-period fields after recurring cutover",
"implemented": true,
"featureIds": [
"F099",
"F127",
"F118"
]
},
{
"id": "T179",
"description": "Plan scratchpad and PRD explicitly capture the system-wide blast radius and recursive decomposition instead of only engine-level goals",
"implemented": true,
"featureIds": [
"F002",
"F150"
]
},
{
"id": "T180",
"description": "Plan artifacts remain valid after expansion and keep enough granularity to manage a multi-pass implementation safely",
"implemented": true,
"featureIds": [
"F150"
]
},
{
"id": "T181",
"description": "Recurring run execution identity supports client-cadence scheduling without relying only on billingCycleId",
"implemented": true,
"featureIds": [
"F151",
"F155"
]
},
{
"id": "T182",
"description": "Recurring run execution identity supports contract-cadence scheduling as a first-class path",
"implemented": true,
"featureIds": [
"F151",
"F156"
]
},
{
"id": "T183",
"description": "Background job payloads can select due recurring service periods without requiring a raw billingCycleId input",
"implemented": true,
"featureIds": [
"F152"
]
},
{
"id": "T184",
"description": "Recurring run retries remain idempotent when due service periods rather than billingCycleId drive execution",
"implemented": true,
"featureIds": [
"F153"
]
},
{
"id": "T185",
"description": "Comparison-mode execution records preserve enough identity metadata to compare legacy and canonical recurring outputs safely",
"implemented": true,
"featureIds": [
"F154"
]
},
{
"id": "T186",
"description": "Client-cadence due-work selection remains deterministic when billing settings or anchors changed historically",
"implemented": true,
"featureIds": [
"F155"
]
},
{
"id": "T187",
"description": "Contract-cadence due-work selection remains deterministic around assignment-start anchors and boundary crossings",
"implemented": true,
"featureIds": [
"F156"
]
},
{
"id": "T188",
"description": "Due service periods split into separate invoices when grouping would violate single-contract invoice constraints",
"implemented": true,
"featureIds": [
"F157"
]
},
{
"id": "T189",
"description": "Due service periods split into separate invoices when purchase-order scope requires it",
"implemented": true,
"featureIds": [
"F158"
]
},
{
"id": "T190",
"description": "Due service periods split into separate invoices when tax-source, currency, or export constraints require it",
"implemented": true,
"featureIds": [
"F159",
"F160"
]
},
{
"id": "T191",
"description": "A recurring invoice can persist one parent charge with multiple canonical detail periods and readers hydrate both levels correctly",
"implemented": true,
"featureIds": [
"F161",
"F162"
]
},
{
"id": "T192",
"description": "Historical invoices with no canonical detail rows still hydrate correctly through the same invoice readers",
"implemented": true,
"featureIds": [
"F164",
"F169"
]
},
{
"id": "T193",
"description": "Invoice APIs expose canonical recurring detail periods for new invoices without breaking existing consumer payloads",
"implemented": true,
"featureIds": [
"F163",
"F169"
]
},
{
"id": "T194",
"description": "Preview rows reflect multi-detail recurring charges according to the documented projection contract",
"implemented": true,
"featureIds": [
"F165",
"F168"
]
},
{
"id": "T195",
"description": "Invoice rendering adapters flatten or expand canonical recurring detail periods according to the documented policy",
"implemented": true,
"featureIds": [
"F166",
"F168"
]
},
{
"id": "T196",
"description": "Client-portal invoice detail readers project canonical recurring periods according to the documented omission and flattening rules",
"implemented": true,
"featureIds": [
"F167",
"F168"
]
},
{
"id": "T197",
"description": "Ordering and aggregation of multi-period recurring charges remain stable across invoice reads, previews, and rendering flows",
"implemented": true,
"featureIds": [
"F168"
]
},
{
"id": "T198",
"description": "Old-shape and new-shape invoice payloads remain schema-compatible across shared interfaces and API readers",
"implemented": true,
"featureIds": [
"F169"
]
},
{
"id": "T199",
"description": "Workflow events and audit records retain recurring detail provenance after service-period-first cutover",
"implemented": true,
"featureIds": [
"F170"
]
},
{
"id": "T200",
"description": "Invoice consumers can distinguish authoritative recurring detail periods from header grouping metadata after hydration",
"implemented": true,
"featureIds": [
"F161",
"F163",
"F169"
]
},
{
"id": "T201",
"description": "Billed-through readers derive recurring enforcement from canonical detail periods instead of invoice header periods",
"implemented": true,
"featureIds": [
"F171"
]
},
{
"id": "T202",
"description": "Contract-line edit and remove guards respect canonical detail periods when determining whether a recurring line has already been invoiced",
"implemented": true,
"featureIds": [
"F172"
]
},
{
"id": "T203",
"description": "Renewal and replacement flows respect previously persisted recurring detail periods on the superseded line",
"implemented": true,
"featureIds": [
"F173"
]
},
{
"id": "T204",
"description": "Mid-cycle termination and end-date shortening honor partial or future canonical service periods correctly",
"implemented": true,
"featureIds": [
"F174"
]
},
{
"id": "T205",
"description": "Deletion and cancellation safeguards behave correctly when recurring detail periods exist on draft and finalized invoices",
"implemented": true,
"featureIds": [
"F175"
]
},
{
"id": "T206",
"description": "Invoice recalculation preserves canonical recurring detail periods rather than rebuilding timing from invoice headers",
"implemented": true,
"featureIds": [
"F176"
]
},
{
"id": "T207",
"description": "Manual edits to recurring invoice charges preserve or update canonical detail provenance according to policy",
"implemented": true,
"featureIds": [
"F177"
]
},
{
"id": "T208",
"description": "Rerender and preview-refresh flows use canonical recurring detail periods after invoice persistence",
"implemented": true,
"featureIds": [
"F178"
]
},
{
"id": "T209",
"description": "Percentage-discount and net-total recalculation remains correct on recurring invoices backed by canonical detail periods",
"implemented": true,
"featureIds": [
"F179"
]
},
{
"id": "T210",
"description": "Zero-dollar recurring invoices finalize or remain intentionally non-finalized according to the documented service-period-first policy",
"implemented": true,
"featureIds": [
"F180"
]
},
{
"id": "T211",
"description": "Manual invoice lines follow the documented policy for canonical service-period fields",
"implemented": true,
"featureIds": [
"F181"
]
},
{
"id": "T212",
"description": "Manual and recurring charges can coexist on one invoice without corrupting canonical recurring detail semantics",
"implemented": true,
"featureIds": [
"F181",
"F177"
]
},
{
"id": "T213",
"description": "Manual lines tied to recurring contract-line provenance preserve that linkage according to policy",
"implemented": true,
"featureIds": [
"F182"
]
},
{
"id": "T214",
"description": "Prepayment invoices follow the documented non-service service-period policy",
"implemented": true,
"featureIds": [
"F183"
]
},
{
"id": "T215",
"description": "Negative invoices offset recurring work according to the documented canonical service-period semantics",
"implemented": true,
"featureIds": [
"F184"
]
},
{
"id": "T216",
"description": "Credit memo issuance preserves lineage and date semantics when source invoices are detail-period-backed",
"implemented": true,
"featureIds": [
"F185"
]
},
{
"id": "T217",
"description": "Credit application behaves correctly when applying credits to invoices backed by canonical recurring detail periods",
"implemented": true,
"featureIds": [
"F186"
]
},
{
"id": "T218",
"description": "Credit expiration and reconciliation flows use the documented date basis after recurring timing cutover",
"implemented": true,
"featureIds": [
"F187"
]
},
{
"id": "T219",
"description": "Credit transfer and reporting maintain correct lineage when credits originate from detail-period-backed recurring invoices",
"implemented": true,
"featureIds": [
"F188"
]
},
{
"id": "T339",
"description": "Dashboard and portal views make non-service financial artifacts explicit when recurring service-period metadata is absent",
"implemented": true,
"featureIds": [
"F189"
]
},
{
"id": "T340",
"description": "DB-backed validation proves recurring invoice generation still succeeds after dropped recurrence-related tables are removed from the live schema",
"implemented": true,
"featureIds": [
"F221"
]
},
{
"id": "T341",
"description": "Shared recurring timing types define the persisted service-period record contract with identifiers, obligation linkage, cadence owner, boundaries, provenance, and lifecycle state",
"implemented": true,
"featureIds": [
"F231"
]
},
{
"id": "T342",
"description": "Persisted recurring service-period migration creates schedule lookup, obligation-state, and due-selection indexes alongside the physical ledger table",
"implemented": true,
"featureIds": [
"F232"
]
},
{
"id": "T220",
"description": "Financial artifacts with missing canonical period metadata follow the documented fallback and failure-handling behavior",
"implemented": true,
"featureIds": [
"F190"
]
},
{
"id": "T221",
"description": "Billing overview and finance reporting surfaces use the documented invoice-date versus service-period date basis",
"implemented": true,
"featureIds": [
"F191",
"F192"
]
},
{
"id": "T222",
"description": "Contract revenue, expiration, and reconciliation reporting use the documented canonical recurring date basis where required",
"implemented": true,
"featureIds": [
"F191",
"F193"
]
},
{
"id": "T223",
"description": "Financial analytics remain semantically stable when invoice dates and recurring service periods diverge under mixed cadence ownership",
"implemented": true,
"featureIds": [
"F194"
]
},
{
"id": "T224",
"description": "Accounting export repositories read canonical recurring detail periods authoritatively and fall back only for historical invoices",
"implemented": true,
"featureIds": [
"F195"
]
},
{
"id": "T225",
"description": "Stored export batches can be reread when they contain a mix of historical flat invoices and canonical detail-backed recurring invoices",
"implemented": true,
"featureIds": [
"F196"
]
},
{
"id": "T226",
"description": "Export batch replay and retry remain stable after service-period-first cutover",
"implemented": true,
"featureIds": [
"F197"
]
},
{
"id": "T227",
"description": "QuickBooks export mapping handles recurring ranges, single dates, and null-period fallbacks according to the documented adapter policy",
"implemented": true,
"featureIds": [
"F198"
]
},
{
"id": "T228",
"description": "Xero export mapping handles recurring ranges, description flattening, and null-period fallbacks according to the documented adapter policy",
"implemented": true,
"featureIds": [
"F199"
]
},
{
"id": "T229",
"description": "Internal and external tax reconciliation consumers use the documented date semantics after recurring detail periods become available",
"implemented": true,
"featureIds": [
"F200"
]
},
{
"id": "T230",
"description": "Portal and dashboard metrics use the documented date basis rather than silently inheriting invoice-header assumptions",
"implemented": true,
"featureIds": [
"F192",
"F194"
]
},
{
"id": "T231",
"description": "Contract wizard writes cadence-owner and timing defaults consistently with the canonical authoring policy",
"implemented": true,
"featureIds": [
"F201",
"F202"
]
},
{
"id": "T232",
"description": "Inline contract-line editing writes cadence-owner and timing defaults consistently with the canonical authoring policy",
"implemented": true,
"featureIds": [
"F201",
"F203"
]
},
{
"id": "T233",
"description": "Custom recurring-line creation writes cadence-owner and timing defaults consistently with the canonical authoring policy",
"implemented": true,
"featureIds": [
"F201",
"F204"
]
},
{
"id": "T234",
"description": "Preset creation, editing, and reuse preserve canonical recurring cadence semantics across create-time propagation",
"implemented": true,
"featureIds": [
"F205"
]
},
{
"id": "T235",
"description": "Template-line authoring persists canonical recurring cadence semantics wherever template support exists in v1",
"implemented": true,
"featureIds": [
"F206",
"F212"
]
},
{
"id": "T236",
"description": "Template-to-contract cloning propagates cadence-owner and recurring timing semantics explicitly",
"implemented": true,
"featureIds": [
"F207"
]
},
{
"id": "T237",
"description": "Post-clone contract editing remains independent from template edits with no recurring-cadence ambiguity",
"implemented": true,
"featureIds": [
"F208"
]
},
{
"id": "T238",
"description": "Authoring previews explain first invoice behavior correctly for client-cadence recurring lines",
"implemented": true,
"featureIds": [
"F209"
]
},
{
"id": "T239",
"description": "Authoring previews explain first invoice behavior correctly for contract-cadence recurring lines",
"implemented": true,
"featureIds": [
"F209"
]
},
{
"id": "T240",
"description": "Unsupported authoring combinations fail early with clear validation by line type, cadence owner, timing mode, and billing frequency",
"implemented": true,
"featureIds": [
"F210"
]
},
{
"id": "T241",
"description": "The recurrence-storage model is internally consistent across live contract lines, template lines, presets, and shared interfaces",
"implemented": true,
"featureIds": [
"F211",
"F220"
]
},
{
"id": "T242",
"description": "Template-line cadence_owner schema and backfill behavior are correct wherever template recurrence semantics are supported",
"implemented": true,
"featureIds": [
"F212"
]
},
{
"id": "T243",
"description": "Preset-backed recurrence defaults carry cadence_owner semantics correctly through backfill or create-time propagation",
"implemented": true,
"featureIds": [
"F213"
]
},
{
"id": "T244",
"description": "billing_timing defaults are standardized across wizard, custom-line, preset, template, and repository write paths",
"implemented": true,
"featureIds": [
"F214"
]
},
{
"id": "T245",
"description": "Legacy billing_cycle_alignment defaults are normalized consistently before execution deprecation",
"implemented": true,
"featureIds": [
"F215"
]
},
{
"id": "T246",
"description": "Repository and model write paths no longer silently drop or normalize recurrence fields inconsistently",
"implemented": true,
"featureIds": [
"F216"
]
},
{
"id": "T247",
"description": "Dropped recurrence-related tables are no longer joined or read by live models before service-period-first work begins",
"implemented": true,
"featureIds": [
"F217",
"F221"
]
},
{
"id": "T248",
"description": "Documentation and models no longer describe superseded recurrence-storage tables or assumptions as authoritative",
"implemented": true,
"featureIds": [
"F218"
]
},
{
"id": "T249",
"description": "Compatibility readers and writers handle partially migrated recurrence records across authoring and read-model surfaces",
"implemented": true,
"featureIds": [
"F219"
]
},
{
"id": "T250",
"description": "The documented recurrence field source-of-truth matrix matches actual table, repository, action, and API behavior",
"implemented": true,
"featureIds": [
"F220"
]
},
{
"id": "T251",
"description": "Source and DB validation prove authoritative recurring readers prefer canonical detail periods over invoice header periods when both exist",
"implemented": true,
"featureIds": [
"F222"
]
},
{
"id": "T252",
"description": "Source and DB validation prove contract-cadence execution paths are not blocked on billingCycleId-only assumptions",
"implemented": true,
"featureIds": [
"F223"
]
},
{
"id": "T253",
"description": "Reader-first then writer and scheduler cutover stages preserve compatibility while historical invoices and new invoices coexist",
"implemented": true,
"featureIds": [
"F224"
]
},
{
"id": "T254",
"description": "Reporting, portal, and export cutover stages preserve compatibility after the canonical recurring read-model contract lands",
"implemented": true,
"featureIds": [
"F225"
]
},
{
"id": "T255",
"description": "Rollback posture is defined and works when historical flat invoices and canonical detail-backed invoices coexist for an extended period",
"implemented": true,
"featureIds": [
"F226"
]
},
{
"id": "T256",
"description": "The projection-mismatch runbook is sufficient to diagnose header-versus-detail recurring period disagreements",
"implemented": true,
"featureIds": [
"F227"
]
},
{
"id": "T257",
"description": "The authoring-default drift runbook is sufficient to diagnose divergence across templates, presets, wizard flows, and custom lines",
"implemented": true,
"featureIds": [
"F228"
]
},
{
"id": "T258",
"description": "Persisted recurring execution records remain explicitly out of scope unless the documented follow-on boundary is invoked",
"implemented": true,
"featureIds": [
"F229"
]
},
{
"id": "T259",
"description": "Long-lived dual-shape invoice support remains explicitly bounded by the documented invoice-schema versioning follow-on",
"implemented": true,
"featureIds": [
"F230"
]
},
{
"id": "T260",
"description": "DB-backed sanity: mixed historical and canonical invoices remain queryable through the same invoice APIs during staged rollout",
"implemented": true,
"featureIds": [
"F164",
"F169",
"F226"
]
},
{
"id": "T261",
"description": "Mixed cadence due work still respects the documented single-contract invoice invariant during grouping",
"implemented": true,
"featureIds": [
"F157",
"F109"
]
},
{
"id": "T262",
"description": "PO-required and non-PO recurring charges split according to policy even when their due service periods coincide",
"implemented": true,
"featureIds": [
"F158"
]
},
{
"id": "T263",
"description": "Currency or tax-source grouping constraints force invoice splits according to policy when due work would otherwise combine",
"implemented": true,
"featureIds": [
"F159"
]
},
{
"id": "T264",
"description": "generateInvoice to persistence to getFullInvoiceById round-trips canonical recurring detail periods correctly",
"implemented": true,
"featureIds": [
"F162",
"F163"
]
},
{
"id": "T265",
"description": "Invoice query actions preserve canonical recurring detail periods through dashboard-level invoice reads",
"implemented": true,
"featureIds": [
"F163",
"F178"
]
},
{
"id": "T266",
"description": "Manual invoice actions remain stable when operating on invoices that also contain canonical recurring detail-backed charges",
"implemented": true,
"featureIds": [
"F177",
"F181"
]
},
{
"id": "T267",
"description": "Client-portal invoice detail dialogs intentionally render or omit canonical recurring detail periods according to policy",
"implemented": true,
"featureIds": [
"F167",
"F189"
]
},
{
"id": "T268",
"description": "Invoice rendering adapters produce stable output for invoices containing canonical recurring detail-backed charges",
"implemented": true,
"featureIds": [
"F166",
"F178"
]
},
{
"id": "T269",
"description": "Client-cadence parity validation still holds at the report-output level after detail-period-aware readers land",
"implemented": true,
"featureIds": [
"F112",
"F191",
"F192"
]
},
{
"id": "T270",
"description": "Validation catches header-versus-detail recurring period drift before it leaks into downstream readers or exports",
"implemented": true,
"featureIds": [
"F222",
"F227"
]
},
{
"id": "T271",
"description": "Source validation shows no live contract-cadence scheduler path depends on billingCycleId as its only execution identity",
"implemented": true,
"featureIds": [
"F151",
"F223"
]
},
{
"id": "T272",
"description": "Source validation shows authoritative recurring readers no longer fall back to header-period fields when canonical detail periods exist",
"implemented": true,
"featureIds": [
"F171",
"F222"
]
},
{
"id": "T273",
"description": "Zero-dollar recurring invoice handling is covered explicitly so the existing finalization seam cannot survive cutover unnoticed",
"implemented": true,
"featureIds": [
"F180"
]
},
{
"id": "T274",
"description": "QuickBooks and Xero adapter behaviors remain correct for mixed-cadence recurring invoices with canonical detail periods",
"implemented": true,
"featureIds": [
"F198",
"F199"
]
},
{
"id": "T275",
"description": "Canonical recurring detail periods survive recalculation and remain visible in export preview and downstream inspection flows",
"implemented": true,
"featureIds": [
"F176",
"F195",
"F197"
]
},
{
"id": "T276",
"description": "DB-backed sanity: a monthly contract-cadence recurring line starting on the 8th completes scheduling, grouping, invoice generation, and hydration correctly",
"implemented": true,
"featureIds": [
"F151",
"F156",
"F157",
"F162"
]
},
{
"id": "T277",
"description": "DB-backed sanity: an annual contract-cadence recurring line completes scheduling, grouping, invoice generation, and hydration correctly",
"implemented": true,
"featureIds": [
"F151",
"F156",
"F162"
]
},
{
"id": "T278",
"description": "DB-backed sanity: mixed cadence-owner invoices remain stable across export and portal readers when historical and canonical invoices coexist",
"implemented": true,
"featureIds": [
"F167",
"F195",
"F226"
]
},
{
"id": "T279",
"description": "Plan artifacts remain valid after the second decomposition pass and preserve feature-to-subsystem traceability at implementation-grade depth",
"implemented": true,
"featureIds": [
"F150",
"F220"
]
},
{
"id": "T280",
"description": "The expanded plan now carries hundreds of implementation-grade features and tests across runtime, storage, APIs, UI, and downstream consumers",
"implemented": true,
"featureIds": [
"F150",
"F220",
"F224"
]
},
{
"id": "T281",
"description": "Persisted service-period records store obligation linkage, cadence owner, boundaries, provenance, and lifecycle state coherently",
"implemented": true,
"featureIds": [
"F231",
"F233",
"F234"
]
},
{
"id": "T282",
"description": "Database constraints prevent invalid persisted service-period records from being written",
"implemented": true,
"featureIds": [
"F232"
]
},
{
"id": "T283",
"description": "Generated, edited, skipped, locked, billed, and superseded lifecycle states transition according to the documented model",
"implemented": true,
"featureIds": [
"F233"
]
},
{
"id": "T284",
"description": "Persisted provenance records distinguish generated periods from user-edited periods and retain the reason for divergence",
"implemented": true,
"featureIds": [
"F234"
]
},
{
"id": "T285",
"description": "Generation horizon replenishes future persisted service periods without creating overlaps or gaps",
"implemented": true,
"featureIds": [
"F235"
]
},
{
"id": "T286",
"description": "Existing client-cadence recurring lines backfill persisted future service periods without altering billed history",
"implemented": true,
"featureIds": [
"F236",
"F244"
]
},
{
"id": "T343",
"description": "Client-cadence materialization turns generated service periods into persisted future record candidates with canonical invoice-window mapping",
"implemented": true,
"featureIds": [
"F236"
]
},
{
"id": "T287",
"description": "Contract-cadence recurring lines materialize future service periods correctly once contract-owned cadence is enabled",
"implemented": true,
"featureIds": [
"F237"
]
},
{
"id": "T288",
"description": "Regeneration refreshes future unedited service periods when source recurrence rules change",
"implemented": true,
"featureIds": [
"F238",
"F254"
]
},
{
"id": "T289",
"description": "Regeneration preserves user-edited future service periods instead of silently overwriting them",
"implemented": true,
"featureIds": [
"F239"
]
},
{
"id": "T290",
"description": "Locked or billed persisted service periods cannot be edited except through explicitly allowed corrective flows",
"implemented": true,
"featureIds": [
"F240"
]
},
{
"id": "T291",
"description": "Persisted service periods link cleanly to resulting invoice detail rows after invoice generation",
"implemented": true,
"featureIds": [
"F241"
]
},
{
"id": "T344",
"description": "Persisted due-selection query contract filters eligible unlinked service-period records by schedule key, exact invoice window, and lifecycle state before runtime cutover",
"implemented": true,
"featureIds": [
"F242"
]
},
{
"id": "T345",
"description": "Boundary adjustment is the minimal supported v1 edit operation and creates an explicit edited revision before broader continuity or UI passes land",
"implemented": true,
"featureIds": [
"F245"
]
},
{
"id": "T346",
"description": "Skip and defer create explicit superseding revisions with preserved service-period provenance before broader continuity validation lands",
"implemented": true,
"featureIds": [
"F246"
]
},
{
"id": "T347",
"description": "Split and merge remain explicitly unsupported v1 edit operations while boundary adjustment, skip, and defer stay available",
"implemented": true,
"featureIds": [
"F247"
]
},
{
"id": "T348",
"description": "Future persisted service periods have an explicit listing query independent from due selection or invoice generation",
"implemented": true,
"featureIds": [
"F250"
]
},
{
"id": "T349",
"description": "Edit transport surfaces return explicit persisted-record provenance on success and structured validation feedback on failure before dashboard editing lands",
"implemented": true,
"featureIds": [
"F251"
]
},
{
"id": "T292",
"description": "Invoice generation selects due persisted service periods rather than deriving schedule boundaries on demand",
"implemented": true,
"featureIds": [
"F242",
"F256"
]
},
{
"id": "T293",
"description": "Parity comparison surfaces differences between legacy derived timing and persisted service-period schedules before cutover",
"implemented": true,
"featureIds": [
"F243"
]
},
{
"id": "T294",
"description": "Backfill initializes future persisted service periods for existing recurring lines under parity-safe rules",
"implemented": true,
"featureIds": [
"F244"
]
},
{
"id": "T295",
"description": "Boundary-adjustment edits to future persisted service periods are validated and saved explicitly",
"implemented": true,
"featureIds": [
"F245",
"F248",
"F251"
]
},
{
"id": "T296",
"description": "Skip or defer operations mark future persisted service periods without corrupting continuity or invoice linkage",
"implemented": true,
"featureIds": [
"F246",
"F248"
]
},
{
"id": "T297",
"description": "If split or merge operations are supported in v1, they preserve continuity, provenance, and due-selection semantics",
"implemented": true,
"featureIds": [
"F247",
"F248"
]
},
{
"id": "T298",
"description": "User edits that create overlaps, gaps, or invalid continuity are rejected with clear validation",
"implemented": true,
"featureIds": [
"F248"
]
},
{
"id": "T299",
"description": "Source-rule changes that conflict with user-edited future periods surface explicit conflict handling rather than silent corruption",
"implemented": true,
"featureIds": [
"F249"
]
},
{
"id": "T300",
"description": "Billing staff can list future persisted service periods independently of invoice generation",
"implemented": true,
"featureIds": [
"F250",
"F257"
]
},
{
"id": "T301",
"description": "Billing staff can edit future persisted service periods through documented APIs and UI flows with provenance preserved",
"implemented": true,
"featureIds": [
"F251",
"F252"
]
},
{
"id": "T302",
"description": "Service-period UI states clearly differentiate generated, edited, skipped, locked, billed, and superseded periods",
"implemented": true,
"featureIds": [
"F252"
]
},
{
"id": "T303",
"description": "Permissions and audit logs cover viewing, editing, skipping, regenerating, and correcting persisted service periods",
"implemented": true,
"featureIds": [
"F253"
]
},
{
"id": "T304",
"description": "Contract-line edits trigger persisted service-period regeneration according to the documented rules",
"implemented": true,
"featureIds": [
"F254"
]
},
{
"id": "T305",
"description": "Billing schedule changes trigger persisted service-period regeneration according to the documented rules",
"implemented": true,
"featureIds": [
"F254"
]
},
{
"id": "T306",
"description": "The boundary between source recurrence rules and service-period overrides remains understandable and queryable after edits",
"implemented": true,
"featureIds": [
"F255"
]
},
{
"id": "T307",
"description": "Fixed, product, and license recurring runtime all consume persisted service-period records consistently",
"implemented": true,
"featureIds": [
"F256",
"F261"
]
},
{
"id": "T308",
"description": "Schedule previews and explainers show future materialized service periods before a contract line is saved",
"implemented": true,
"featureIds": [
"F258"
]
},
{
"id": "T309",
"description": "Administrative regeneration or repair flows can restore missing or corrupt future persisted service periods safely",
"implemented": true,
"featureIds": [
"F259",
"F268"
]
},
{
"id": "T310",
"description": "Historical invoices without persisted service-period records coexist correctly with future schedules that have them",
"implemented": true,
"featureIds": [
"F260"
]
},
{
"id": "T311",
"description": "Bucket or allowance semantics remain coherent when users edit, skip, or regenerate future persisted service periods",
"implemented": true,
"featureIds": [
"F262"
]
},
{
"id": "T312",
"description": "Billed-through, renewal, and replacement logic uses persisted service periods coherently after materialization",
"implemented": true,
"featureIds": [
"F263"
]
},
{
"id": "T313",
"description": "Template, preset, and new-line authoring still produce predictable future persisted service-period schedules after creation",
"implemented": true,
"featureIds": [
"F264"
]
},
{
"id": "T314",
"description": "Editing future persisted service periods can move work across invoice windows and grouping responds according to policy",
"implemented": true,
"featureIds": [
"F265"
]
},
{
"id": "T315",
"description": "Client-facing explanations and support tooling surface service-period edits and provenance clearly enough to explain invoice outcomes",
"implemented": true,
"featureIds": [
"F266"
]
},
{
"id": "T316",
"description": "DB-backed validation proves persisted service-period generation, editing, regeneration, and invoice linkage stay coherent during staged rollout",
"implemented": true,
"featureIds": [
"F267"
]
},
{
"id": "T317",
"description": "Operator runbook is sufficient to diagnose service-period generation failures and override conflicts",
"implemented": true,
"featureIds": [
"F268"
]
},
{
"id": "T318",
"description": "Advanced mass-edit or bulk schedule transform capabilities remain explicitly out of v1 unless the documented follow-on boundary is invoked",
"implemented": true,
"featureIds": [
"F269"
]
},
{
"id": "T319",
"description": "Extending the materialized service-period ledger to time, usage, or other billing domains remains explicitly out of this recurring v1 plan",
"implemented": true,
"featureIds": [
"F270"
]
},
{
"id": "T320",
"description": "DB-backed sanity: a user can inspect future persisted service periods for a client-cadence monthly recurring line before invoice generation",
"implemented": true,
"featureIds": [
"F236",
"F250",
"F257"
]
},
{
"id": "T321",
"description": "DB-backed sanity: editing a future client-cadence service-period boundary affects due selection without rewriting billed history",
"implemented": true,
"featureIds": [
"F245",
"F242",
"F240"
]
},
{
"id": "T322",
"description": "DB-backed sanity: skipping a future service period prevents invoice generation for that period while preserving later continuity",
"implemented": true,
"featureIds": [
"F246",
"F242"
]
},
{
"id": "T323",
"description": "DB-backed sanity: regeneration after a contract-line change updates only eligible future periods and preserves edited ones",
"implemented": true,
"featureIds": [
"F238",
"F239",
"F254"
]
},
{
"id": "T324",
"description": "DB-backed sanity: billed persisted service periods become immutable after invoice linkage is created",
"implemented": true,
"featureIds": [
"F240",
"F241"
]
},
{
"id": "T325",
"description": "DB-backed sanity: future contract-cadence service periods can be inspected and edited before invoice generation",
"implemented": true,
"featureIds": [
"F237",
"F245",
"F250"
]
},
{
"id": "T326",
"description": "DB-backed sanity: mixed cadence-owner recurring obligations materialize distinct future period ledgers without collision",
"implemented": true,
"featureIds": [
"F236",
"F237",
"F248"
]
},
{
"id": "T327",
"description": "DB-backed sanity: invoice detail rows retain traceable links back to persisted service-period records after generation",
"implemented": true,
"featureIds": [
"F241",
"F267"
]
},
{
"id": "T328",
"description": "DB-backed sanity: runtime no longer needs to derive live recurring periods on demand once persisted service-period selection is active",
"implemented": true,
"featureIds": [
"F242",
"F256"
]
},
{
"id": "T329",
"description": "Plan artifacts now treat materialized service periods as in-scope v1 behavior rather than a deferred follow-on",
"implemented": true,
"featureIds": [
"F231",
"F242",
"F250"
]
},
{
"id": "T330",
"description": "The expanded plan preserves implementation-grade detail after adding materialized service periods and editable future billing objects",
"implemented": true,
"featureIds": [
"F150",
"F231",
"F267"
]
},
{
"id": "T331",
"description": "Contract line mapping and disambiguation helpers keep cadence_owner explicit instead of inferring recurring timing from billing_cycle_alignment or enable_proration",
"implemented": true,
"featureIds": [
"F124"
]
},
{
"id": "T332",
"description": "Billing dashboard overview and invoice-generation tabs explain automatic, manual, and prepayment flows in service-period-first language",
"implemented": true,
"featureIds": [
"F139"
]
}
]