CRM job catalogue
Contract & Subscription
Milestone 12 implemented for the local slice — ADR-018 addendum, docs/CONTRACT_ACTIVATION.md
10 jobs in this area. 5 partially supported, 5 not supported.
validated end to end An automated test or a checked-in example proves the whole job. This is the only status that counts as evidence.
partially supported Part of the job works and is proved; the rest is named rather than implied. Read what is excluded before planning around it.
technically supported The primitives exist but no test proves the job end to end, so it is not claimed as working.
not supported No implementation and no test. It would have to be built. This is the default status in the catalogue — a row moves out of it only when a test proves it.
JTBD-CS-01 · Activate a commercial contract from a signed Order
partially supported
order.activate-contract (human actor only) creates one contract, its immutable version and one line per order component, atomically and idempotently, with every amount copied…
tests/contracts-activation-e2e.test.jstests/contracts-review.test.jstests/signed-terms-e2e.test.jstests/signed-terms-integrity.test.jsJTBD-CS-02 · Activate a subscription with lines and an initial term
partially supported
one subscription per contract, with a line for every component whose commercial axis is subscription — including recurring components that also carry a service or delivery…
tests/contracts-activation-e2e.test.jstests/lifecycle-amendment-execution-e2e.test.jstests/signed-terms-e2e.test.jsJTBD-CS-03 · Amend seats or quantity on a live subscription
not supported
still no in-place amendment primitive, and M16b deliberately does not add one: a quantity change produces a successor agreement from its own signed Order, and the live…
JTBD-CS-04 · Record an expansion or contraction, classified at the time of change
partially supported
M16b executes a governed successor agreement from a signed Order and records the change with a classification derived from the immutable line delta — renewal, expansion,…
tests/admin-lifecycle.test.jstests/lifecycle-amendment-execution-e2e.test.jstests/lifecycle-amendment-execution.test.jsdocs/RENEWAL_AMENDMENT.mdJTBD-CS-05 · Calculate MRR, ARR and TCV from real contract data
not supported
deliberately not derived — M12 now provides a term and an active subscription, but normalizing unlike periods into one figure is a stated business policy that does not exist…
JTBD-CS-06 · Schedule a renewal ahead of term end
not supported
self-host timer consumers can open a lifecycle review ask when an application explicitly starts its worker, but full renewal scheduling and execution are not established by that…
docs/strategy/JOBS_AND_OUTBOX.mdJTBD-CS-07 · Create a renewal opportunity from an expiring subscription
not supported
needs CS-06
JTBD-CS-08 · Apply a versioned price-uplift policy at renewal
not supported
unchanged by M16b. The versioned-policy mechanism exists (ADR-015/016/018) and M16b runs the activation policy over the successor's components, but it computes no price and…
JTBD-CS-09 · Cancel or non-renew with an audited reason
partially supported
the non-renew half only, as recorded intent. M16a's record-renewal-decision stores an immutable not_renewing decision with a required human reason, its actor, the term boundary…
tests/lifecycle-renewal-operations-e2e.test.jstests/lifecycle-renewal-operations.test.jsJTBD-CS-10 · Read a complete amendment history
partially supported
M16b records an immutable contract-succession row per amendment: source and successor contract, version, subscription and Order, the derived classification with its basis, the…
tests/admin-lifecycle.test.jstests/lifecycle-amendment-execution-e2e.test.jstests/lifecycle-amendment-execution.test.jsdocs/RENEWAL_AMENDMENT.mdWhat a status here does not mean
These statuses describe this repository at this commit. None of them implies the framework is deployable: no authentication ships, so a deployment must supply the verifier before anyone but you reaches it, whatever any row says. Every claim and every limitation is on one page.