Evidence is kept indefinitely by default - #3
Merged
Conversation
Deleting contractual evidence on a convenient clock is the wrong
default: the day it matters is usually years past every schedule, and
of the two mistakes only one is reversible. Keeping can always become a
reviewed disposition later; a deletion is forever. So the default
flips: a policy that never says retain_with now runs under a built-in
evidence_kept_indefinitely class — no deletion clock on the core event,
none on request evidence — instead of refusing to boot. Deletion stays
exactly what it was: an explicit, reviewed, opt-in decision.
retain_core_event_indefinitely says the default out loud in a class of
your own; omitting the core rule means the same thing. Snapshots record
{"indefinite" => true}, the privacy inventory reports it as a decision
rather than a gap, events freeze no deadline, and the planner never
lists an indefinite event as due — not in ten years, not in a hundred
(pinned by test at exactly that horizon).
Registries now carry seeds: clear() returns a seeded registry to its
built-ins, never to nothing, so the default class survives every
to_prepare reload.
README: install from rubygems.org, the new retention posture, and HTML
pages / runtime resolver: sources for legal documents alongside
Markdown.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013A6ZmfmFuQ2z3GyvQCuECA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deleting legal contractual evidence after N years is self-harm: claims surface years later, and of the two possible mistakes only keeping is reversible. This flips the gem's retention default from "refuse to boot without a deletion schedule" to "keep indefinitely unless deletion is explicitly declared".
retain_withruns under a new built-inevidence_kept_indefinitelyclass — no clocks on anything. Previously it raised at boot.retain_core_event_indefinitely; omitting the core rule means the same. Snapshots carry{"indefinite" => true}; the privacy inventory reports{"kind" => "indefinite"}— a decision, not a gap.Registrygains seeds so the built-in class survives every reload'sclear.gem "clickwrap"from rubygems, the new retention posture, and HTML/resolver:document sources documented (both new examples execute in the doc-examples test).Deletion is unchanged where it was chosen: scheduled classes still stamp deadlines, plans still list them, dispositions still apply. 796 runs / 5238 assertions green, rubocop clean.
🤖 Generated with Claude Code
https://claude.ai/code/session_013A6ZmfmFuQ2z3GyvQCuECA