Local-first deprecation intelligence for software repositories.
Status: accepted
Lifecycle rules can be drafted by importers: small modules that read one authoritative, machine-readable source and return draft rules in the v2 format. Importers live in tools/importers/ and implement one interface (Importer in tools/importers/types.ts): an id, the ecosystem they feed, the sources they read, and import(context).
registry/ through a pull request. Review is required before any imported fact reaches a rule.provenance field. The runner stamps each draft with the run date as observedAt and reviewedAt, the importer’s id as importer, and the reviewer pending-review. An importer cannot present its output as reviewed, and a test fails if pending-review ever appears in a bundled registry.context.fetchText and reads the time only from context.now. That lets tests replay recordings (no network in tests or in npm run check) and keeps output deterministic: drafts are sorted by id and key order is canonical.The registry has 15 hand-written rules and will not reach hundreds that way. Authoritative sources such as release schedules and registry metadata already publish most lifecycle facts in machine-readable form. Drafting from them removes transcription errors and keeps every rule traceable, while keeping a human between the source and the data users rely on.
run --list once it is added to tools/importers/index.ts.