You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The engine writes every trace call to a run-log continuum, durable the moment a run seals. But it evicts: getTrace starts answering that the run is below the retention horizon, and an answer whose link opens nothing is not an audit trail. An app that promises receipts cannot keep them there.
Filed from section 4.2 of the Rocket CRM runtime findings (docRevision 252). Part of the Rocket CRM build tracked in rocketride-ai/rocketride-saas#456.
Mechanism
Retention is a property of the engine's log, not of the app's promise. The app cannot declare how long its own runs must remain resolvable, cannot be told when one is about to go, and cannot learn that one has gone except by asking for it and being refused.
What we do today
Runs are copied into the app's own database, synced on the node rather than in the browser — which also catches runs no browser ever saw. Combined with the process-lifetime problem (filed separately as section 4.7), the app now sweeps after every turn.
Ask
A retention policy an app can declare for its own project, or
an export hook at seal time — the app is told a run is complete and copies it then.
The seal-time hook is the better of the two: it removes the guesswork about when to copy, and it is the same hook the run-log-lifetime issue asks for. Without either, every app that promises receipts will build this same archive.
The engine writes every trace call to a run-log continuum, durable the moment a run seals. But it evicts:
getTracestarts answering that the run is below the retention horizon, and an answer whose link opens nothing is not an audit trail. An app that promises receipts cannot keep them there.Filed from section 4.2 of the Rocket CRM runtime findings (docRevision 252). Part of the Rocket CRM build tracked in rocketride-ai/rocketride-saas#456.
Mechanism
Retention is a property of the engine's log, not of the app's promise. The app cannot declare how long its own runs must remain resolvable, cannot be told when one is about to go, and cannot learn that one has gone except by asking for it and being refused.
What we do today
Runs are copied into the app's own database, synced on the node rather than in the browser — which also catches runs no browser ever saw. Combined with the process-lifetime problem (filed separately as section 4.7), the app now sweeps after every turn.
Ask
The seal-time hook is the better of the two: it removes the guesswork about when to copy, and it is the same hook the run-log-lifetime issue asks for. Without either, every app that promises receipts will build this same archive.
Related