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
4.3 KiB
4.3 KiB
Feature-To-Subsystem Map
Purpose
Use this file to keep implementation progress traceable by subsystem instead of only by chronological feature order.
The feature list is intentionally long because the billing cutover spans runtime, persistence, read models, authoring, downstream consumers, rollout, and the later materialized-service-period ledger. This map is the index for that breadth.
Tracking Discipline
When completing work from features.json:
- identify the primary subsystem from the map below
- note any secondary subsystem surfaces touched by the same checkpoint
- update
SCRATCHPAD.mdwith the concrete files and behavior changes - keep commit messages scoped to the feature ID or the coherent subsystem slice being advanced
When adding new features:
- place the new feature inside the correct subsystem band
- update this map if the feature introduces a new subsystem or a new cross-cut seam
- avoid creating feature IDs whose subsystem ownership is ambiguous from the artifact set
Subsystem Bands
| Subsystem | Primary feature bands | What lives here |
|---|---|---|
| Architecture, inventory, and parity scaffolding | F001-F010, F111-F120, F147-F150 |
pass-0 inventory, parity harness, rollout staging, follow-on boundaries, operator/runbook artifacts |
| Shared recurring timing domain | F011-F020 |
canonical service-period types, invoice-window types, cadence owners, due-position and coverage helpers |
| Client-cadence generation and parity engine | F021-F040 |
anchored client periods, partial-period rules, first/final period semantics, zero-coverage behavior |
| Runtime recurring charge execution | F041-F070, F143-F146, F256-F266 |
fixed/product/license timing, bucket timing, canonical runtime guardrails, eventual persisted-service-period runtime consumption |
| Invoice generation, persistence, and recurring billing runs | F071-F080, F151-F190, F241-F242 |
due selection, preview/generate flows, duplicate prevention, billed-through, recurring execution identity, grouping rules, financial artifact semantics |
| Data model, repositories, APIs, and recurrence storage reconciliation | F081-F090, F201-F230, F243-F255 |
cadence-owner persistence, compatibility readers/writers, repository cleanup, authoring-path storage normalization, regeneration and override policy |
| Authoring UI and recurring configuration surfaces | F091-F097, F121-F124, F138-F145, F202-F210, F250-F258, F264-F266 |
contract-line configuration, wizards, templates, presets, dashboard copy, portal detail policy, future service-period inspection/editing surfaces |
| Reporting, portal readers, and accounting/export consumers | F098-F100, F125-F133, F191-F200, F222, F225-F227 |
invoice readers, portal billing views, report date-basis policy, export adapters, projection-mismatch diagnosis |
| Contract cadence and mixed-cadence behavior | F101-F110, F156-F160, F223 |
anniversary-based service periods, mixed-window grouping, contract-cadence due selection, contract-cadence scheduler cutover |
| Materialized service-period ledger | F231-F270 |
persisted service-period schema, lifecycle state, provenance, generation, regeneration, editing, invoice linkage, repair flows |
Cross-Cut Seams To Recheck During Every Pass
- Runtime plus persistence: canonical recurring periods are only done when invoice detail writes and rereads stay coherent.
- Reader plus export surfaces: any header-versus-detail semantic change must be checked in dashboard, portal, and export consumers.
- Authoring plus storage: cadence-owner or timing defaults are only safe when wizard, template, preset, custom-line, repository, and API paths agree.
- Rollout plus cleanup: staged compatibility work must stay explicit until source and DB validation prove the legacy seam is actually dead.
Minimum Coverage Expectation
Before declaring the plan complete, the implemented feature set must still be traceable across all of these surfaces:
- runtime billing and timing domain
- invoice generation and persistence
- credits, prepayment, and negative-invoice flows
- repositories, APIs, and recurrence storage
- dashboard, wizard, template, and preset authoring
- client portal, reporting, and accounting exports
- rollout, cleanup, validation, and operator runbooks
- persisted service-period ledger design and lifecycle