levineuwirth.org/tools
Levi Neuwirth b856911279 Archive: close out the audit-pass refinements
Six follow-ups from the link-archive audit, all the items with a
code-shaped fix. Behaviour verified per feature (stubbed + live where a
network or browser was needed); ARCHIVE.md status notes updated alongside.

- suggest: `archive.py suggest` + `make archive-suggest` print works
  cited in data/*.bib (url wins, DOI-only resolves to doi.org/...) but
  absent from the manifest, as manifest-ready lines. Read-only, offline.

- aliases: optional `aliases:` manifest field for equivalent URLs no
  normalisation can derive (DOI vs. landing URL). Enforced like canonical
  URLs on both sides (archive.py pre-scan + Archive.hs validator);
  ArchiveIndex drops alias keys matching a takedown. FIPS 203 now carries
  its DOI form, so the simd paper's DOI citation resolves.

- check scheduling: systemd user timer (systemd/archive-check.{service,
  timer}, symlink-installed) runs the rot scan daily. cmd_check gains an
  offline canary guard so an unattended scan on an offline machine leaves
  state untouched instead of mass-flipping entries to rotted.

- Wayback fallback: an original already dead at first fetch falls back to
  its most recent existing Wayback capture (raw id_ bytes through the
  normal pipeline), honouring a preserved X-Archive-Orig noarchive and
  recording `fetched-from`. Dead-only, never during refresh.

- bibliography annotation: Filters.Archive exports annotateBlock;
  Citations.hs applies it to each CSL-rendered entry, so bibliography
  links get the same affordance / rotted-flip as body links.

- search-UI filter: archive "exclude/only" + "link status" filters on the
  search page, backed by a new data/archive-meta.json. Scoped apart from
  the epistemic `status` filter (own state, classes, labels) rather than
  renamed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 16:23:14 -04:00
..
bin Add link archive system: snapshots, backlinks, link-rot 2026-05-23 10:06:33 -04:00
hooks Tooling, manifest, and content polish 2026-06-10 11:13:34 -04:00
add-popup-source.sh Last audit stragglers: scaffolder, refreeze safety, atomic-write polish 2026-06-10 11:43:14 -04:00
archive.py Archive: close out the audit-pass refinements 2026-06-19 16:23:14 -04:00
audit-marks.py Marks II: broader monogram coverage + audit-marks tool 2026-05-23 12:05:08 -04:00
compress-assets.sh Validate tool inputs and surface tracebacks on errors 2026-05-07 15:09:02 -04:00
convert-images.sh Tooling robustness: atomic writes, verified downloads 2026-06-10 09:43:25 -04:00
download-leaflet.sh Tooling robustness: atomic writes, verified downloads 2026-06-10 09:43:25 -04:00
download-model.sh Tooling robustness: atomic writes, verified downloads 2026-06-10 09:43:25 -04:00
download-pdfjs.sh PDF compression 2026-04-22 12:40:22 -04:00
embed.py Last audit stragglers: scaffolder, refreeze safety, atomic-write polish 2026-06-10 11:43:14 -04:00
extract-dimensions.py Last audit stragglers: scaffolder, refreeze safety, atomic-write polish 2026-06-10 11:43:14 -04:00
extract-exif.py Last audit stragglers: scaffolder, refreeze safety, atomic-write polish 2026-06-10 11:43:14 -04:00
extract-palette.py Last audit stragglers: scaffolder, refreeze safety, atomic-write polish 2026-06-10 11:43:14 -04:00
import-photo.sh Tooling, manifest, and content polish 2026-06-10 11:13:34 -04:00
import-poetry.py audit: tooling, deploy ordering, README, repo hygiene 2026-04-10 17:41:33 -04:00
leaflet-checksums.sha256 Spec dilemma 2026-05-01 21:22:01 -04:00
model-checksums.sha256 Pin Hugging Face model revisions for downloader and embed pipeline 2026-05-07 15:08:14 -04:00
monolith-version.txt Add link archive system: snapshots, backlinks, link-rot 2026-05-23 10:06:33 -04:00
pdfjs-checksums.sha256 Fix broken PDF hyperlinks 2026-04-22 12:10:31 -04:00
preset-signing-passphrase.sh Tooling, manifest, and content polish 2026-06-10 11:13:34 -04:00
refreeze.sh Last audit stragglers: scaffolder, refreeze safety, atomic-write polish 2026-06-10 11:43:14 -04:00
sign-site.sh States/Context/Embeddings fixes 2026-04-26 11:22:57 -04:00
stamp-build-time.py Tooling, manifest, and content polish 2026-06-10 11:13:34 -04:00
subset-fonts.sh initial deploy! whoop 2026-03-17 21:56:14 -04:00
viz_theme.py GPG signing, embedding pipeline, visualization filter, search timing, sig popups 2026-03-20 20:14:49 -04:00