Most contracts hand a delivery ten business days to be accepted and then go quiet about what a rejection does to that count. Does the redelivery get a fresh ten days, or only what the first window had left? On a long engagement that term is worth real money, so code that replays a contract has to read it out of the contract rather than choose for it. Resuming is the harder half: a clock you resume needs a measurement of how much of it went already, and in an append-only journal that measurement can only live in the rejection that stopped it.
This comes out of engageledger, a Go library I maintain. It holds the money terms of a contracting engagement as a signed append-only journal, then folds that journal into the current terms and the acceptance state of every milestone. Acceptance there is a business-day clock: a delivery opens a window, an acceptance or a rejection closes it, and a window nobody closed runs out into deemed_accepted. The retest rule itself is small, one switch when
Discussion
Get the discussion rolling
A single comment can start something great.