Changelog
Updates
Every commit to the archive's code and catalog, newest first, generated straight from git history at build time. See how the agents, gates, and audit records fit together.
September 9, 2026
- Stop the filter bar flickering between its two heights
- Outreach nightly log: 2026-09-09, ninth night all channels exhausted/capped/gated
- Dead-link reclaim run 2026-09-09: mises.org blocked all 15 probes
- Log 2026-09-09 forum links refresh
- Refresh forum thread cards
- End a chapter at the next chapter's anchor, not at a document boundary
- Read a two-column PDF down its columns, not across the gutter
September 8, 2026
- simplify permissions text
- Record Reisman's 2025 signed licence, which does not commence yet
- Sync the Government Against the Economy EPUB byte count
- Convert Capitalism to EPUB and publish its reading pages
- Redraw the Capitalism cover in the author's own palette
- Document the scaled conversion timeout in the pdf-to-epub spec
- Redirect the Capitalism cover brief to the 1996 jacket's palette
- Write an original Reisman bio, and document the guide's new edition fields
- Verify the edition of Reisman's Capitalism, and give the page a guide
- Publish the permission basis in licenses.json and the runbooks
- Document rights-holder permissions in the governing specs
- Record rights-holder permissions, and Reisman's for Capitalism
- Log 2026-09-08 outreach run: all channels still exhausted/capped/gated
- Log 2026-09-08 forum links refresh
- Refresh forum thread cards
September 7, 2026
- Costs of War: replace the ratchet cover at David's request
- Install 42 covers from batch 2, reject 7, and queue the Costs of War redraw
- Cover proposals: batch 2 landed complete, 100 of 100
- Install interim cover and refresh cache mtime
- Hoppe: swap A Theory of Socialism and Capitalism to the other variant
- Man, Economy, and Liberty: record the shade rejection as a dated note
- Man, Economy, and Liberty: bar the lamp shade, brief the bare socket
- Deploy: restore the SEO gate; make pre-push's skip explicit
- Weekly KPI: /read/ growth continues, off-page links flat 8/111 two weeks running
- commission_covers: --skip-proposed kept skipping the rejected books
- Outreach drafts nightly: 2026-09-07, staged 0 (all channels exhausted/capped/gated)
- Refresh forum thread cards
September 6, 2026
- Redo Land Bubble cover: drop the gavel, bar it in the brief
- Install 46 commissioned covers, reject 4, from the 100-image batch
- Cover briefs: an impossible object is a tell, exclusion 7
- Deploy: drop the WordOps origin assertion, keep the IIS one
- Cover proposals: the 100-image batch landed complete
- Record actual push outcome for tonight's outreach log entry
- Outreach nightly log: 2026-09-06, sixth night all channels exhausted/capped/gated
- Series rail: keep its heading at the width where the disclosure is forced open
- Course page: the play control sits with its lecture, and progress counts a part-heard one
- Lecture pages: series rail, player toolbar, share and auto-continue
- Player dock: place the close button on the phone layout, not below it
- Refresh forum thread cards
September 5, 2026
- Course pages: shared player module, dock, progress and .m3u playlists
- Publish wiki-link coverage to the dashboard, and spec the author rule
- Link the archive and the quote site to each other on author pages
- Match authors to the wiki by reading its index, not by guessing names
- stats: icons for distribution cards and the two bare section headers
- Spec the course and lecture page redesign: shared player, progress, dock, rail
- commission_covers: codex reports two shapes of reset time, not one
- Clear 249 catalogue descriptions that were PDF metadata, not prose
- commission_covers: --wait-for-quota, so a large batch drains itself
- commission_covers: a spent quota ended the whole run, silently
- Add freecapitalists-cover-proposals-nightly, a draft-tier routine
- commission_covers: make a batch resumable, because the quota ends it
- Commission twelve covers from the generated brief corpus, ranks 12-28
- top_books: report the commissioned tier it was blind to
- outreach-status: date bump from the nightly routine
- Cover briefs: final pass, and the last agent's skip logic held
- Second pass over 22 briefs from the overlapping batch
- Every book in the catalogue now has a cover brief: 969 of 969
- Cover briefs: batch 026 of the generated corpus
- Normalise all 46 Freeman volumes onto one register, and land batches 020, 023
- Cover briefs: batch 024 of the generated corpus
- Cover briefs: batch 025 of the generated corpus
- Cover briefs: batch 022 of the generated corpus
- Cover briefs: batch 019 of the generated corpus
- Cover briefs: batch 028, the tail of the catalogue
- Cover briefs: a numbered run of one publication is the exception to variety
- Cover briefs: batch 015 of the generated corpus
- Cover briefs: batches 016, 017 and 018 of the generated corpus
- Cover briefs: batches 012 and 014 of the generated corpus
- Add scripts/catalog_description_audit.py
- Cover briefs: batch 013 of the generated corpus
- Fix five em dashes, and stop demanding Context of briefs that cannot have one
- Cover briefs: more of the generated corpus
- Stop parsing the brief directories' own documentation as briefs
- Commit the corpus runbook and the writer prompt it uses
- Cover briefs: further batches of the generated corpus
- Install a new America's Great Depression cover, and record a backend failure
- Retire the second Introduction to Economics scan, keep the measured one
- cover_check: the blind spot is bigger than one proposal
- Cover briefs: make the corpus resumable, and land what survived the interruption
- Fix five catalogue errors the cover-brief pass found, and credit co-authors
- Cover briefs: batches 001 and 003 of the generated corpus
- Install new covers for Human Action, Socialism, and Hoppe
- Add scripts/cover_brief_audit.py, and fix two briefs it caught
- cover_check: note the blind spot on typographic and flat-poster covers
- Rewrite the three flagship briefs, and let codex generations overlap
- commission-cover: judge against the shelf, and a corpus builder for briefs
- Cover briefs: name a register, track spent motifs, exclude the generated look
- Add scripts/cover_check.py: measure a cover at card size
- Outreach nightly log: 2026-09-05, fifth night all channels exhausted/capped/gated
- Refresh forum thread cards
September 4, 2026
- Outreach nightly log: 2026-09-04, fourth night all channels exhausted/capped/gated
- Refresh forum thread cards
September 3, 2026
- Add skill runbooks for core content workflows
- AI visibility test: first run, 2026-09-03
- Record actual push outcome for tonight's outreach log entry
- Outreach nightly log: 2026-09-03, third night all channels exhausted/capped/gated
- Log 2026-09-03 forum-links refresh
- Refresh forum thread cards
September 2, 2026
- Outreach nightly log: 2026-09-02, all channels capped/exhausted/gated
- Dead-link reclamation: run 2, ranks 17-31, 3 dead / 0 candidates
- Refresh forum thread cards
September 1, 2026
- fix grammar
- Clean overly verbose copy
- Revert "Add Top content section to /stats/: real Search Console clicks, above the method note"
- Add Top content section to /stats/: real Search Console clicks, above the method note
- Record actual push outcome for tonight's outreach log entry
- Outreach nightly: log a genuine zero-item night, all channels exhausted/capped/gated
- Log forum-links nightly refresh: 2026-09-01
- Refresh forum thread cards
August 31, 2026
- Weekly KPI: /read/ pages nearly double reach, author-page rebuild still undeployed
- Outreach nightly: stage OpenDOAR, OER Commons, DOAB directory items
- Log nightly forum-links refresh
- Refresh forum thread cards
August 30, 2026
- Outreach nightly: exhaust open-library queue, resolve OBP directory mechanism
- Log forum thread cards refresh 2026-08-30
- Refresh forum thread cards
August 29, 2026
- Fix academic outreach channel: real drafts blocked by dead-end search
- Record actual push outcome for tonight's outreach log entry
- Outreach nightly: stage 3 Open Library work-record edits
- Add competitor feature scan: full-text search is the top gap
- Size the lecture-speaker author-page gap left open in today's entry
- Record the 2026-08-29 two-engine pull and route the IndexNow runbook
- Fix two byline defects in lecture and book titles
- Add IndexNow submission, aimed at the engine that actually ranks this archive
August 28, 2026
- Refresh forum thread cards
August 27, 2026
- Point /stats/ at the companion wiki's own Special:Statistics
- Wire publish_dashboard_stats.py into the nightly forum-links runbook
- Update Open Library outreach status records
- Record actual push outcome for tonight's outreach log entry
- Outreach nightly: stage 3 more Open Library work-record edits
- Refresh forum thread cards
August 26, 2026
- Refresh outreach status timestamp
- Outreach nightly: stage 3 Open Library work-record edits
- Dead-link reclamation: first run, cursor at 15, zero candidates
- Refresh forum thread cards
August 25, 2026
- Match the catalog against a second forum's topics, for objectivism-online
- Publish book/course-forum discussion-card coverage to dashboard.davidveksler.com
- Update outreach-status.json
- Refresh forum thread cards
August 24, 2026
- Draft two institutional rights-holder emails, the ask that unlocks the most held text
- Write up the 08-24 SEO read: where the full-text blockers actually are
- Publish full text for The Progressive Era and two more; audit the shared-EPUB trap first
- Make author pages read as bibliographies, and fix their inverted authorship schema
- Record actual push outcome for tonight's outreach log entry
- Stage nightly outreach: DataHoarder post and two Open Library edits
- Refresh forum thread cards
August 23, 2026
- Add sixth pipeline card: local forum AI on desktop GPU
- Refresh forum thread cards
August 22, 2026
- Update forum-activity.md with what actually shipped on the forum side
- Add a live forum activity widget to the homepage
- Widen the crosslink card to all three link directions
- Create settings.local.json
- Add forum-wiki crosslink release data
- Add forum crosslinks pipeline to built page
- Add a Companion forum section to llms.txt, next to the wiki pointer
- Put a start-a-thread CTA on every book and course page, not just matched ones
- Record that the first forum-links build went live
- Correct the per-run topic-fetch figure to the measured 105
- Link book and course pages to the forum threads that name them
- Outreach nightly: second run this day, cap already spent, no new items
- Fix what the outreach routine's first live run exposed
- Stage nightly outreach: HN/reddit posts and Open Library edit for Human Action
August 21, 2026
- Scaffold four marketing routines for the authority constraint
August 20, 2026
- Send contact mail from the verified domain, not resend.dev
- Record the Turnstile gate as live and verified
- Correct the contact Worker's deploy status; stage TURNSTILE_SECRET
- Gate the contact form behind Cloudflare Turnstile
- Promote the relaunched Mises Community forums to top-level nav
- Rename archive subdomain to forum host
August 19, 2026
- Recover imprint-page run-on boundary; split real front matter into its own chapter
- Document the copyright-page drop and the withdrawn-chapter redirect family
- Clear 3 more held books on existing CCE renewal-search evidence
- Drop publisher copyright/imprint pages from public-domain books' reading pages
- Mark The Law public domain: essay text confirmed clean of Mises Institute's 2007 Foreword copyright
- Add reciprocal archive-to-quotes-site link on author pages
- Enrich author pages: close bio/portrait gaps, match search vocabulary
- Log week-4 GSC read: /read/ chapter pages are the ranking engine
August 18, 2026
- Add extract-book-text.ps1 wrapper for the held-book full-text pipeline
- Authorize full text of Bureaucracy despite a direct renewal record
- Fetch the two Bastiat Collection volume EPUBs, closing the Stage 0 gap
- Execute Stage 0 sweep: fetch 19 EPUBs mises.org already publishes
- Sweep all 422 EPUB-less books: 21 exist upstream as EPUBs
- Flag mises.org pages that answer for more than one catalog record
- Add Stage 0: find books mises.org already publishes as an EPUB
August 16, 2026
- Merge two duplicate catalog records found by a manual dedup scan
August 15, 2026
- Mark seo-backlog item 11 satisfied by the wiki link repointing
- Remove the quote-CTA affinity bridge; Tier C authors get no book link
- Waive legitimate rare tokens/punctuation in new Rothbard quotes
- Resolve Rothbard/Hayek quotes to their shelved author slugs
- Fix misleading quote CTA label for the affinity bridge
- add quotes
August 14, 2026
- Publish unsourced and Tier C quotes; add 108 legacy-collection quotes
- Show a random archive quote in the /authors/ page-head whitespace
- Fix short-quote meta descriptions, raise quotes-site scale threshold
- Waive legitimate rare tokens, drop footnote-noise context for Mises import
- Verify Mises quotes against archive corpus, regenerate quotes.json
- Update quotes-source.json
- Resolve stale-waiver catch-22 between CI's lint and the full quotes build
- Waive three more legitimate non-dictionary tokens in Bastiat quote context
- Fix quote-title generation and gate checks exposed by the 219-quote import
- Remove /contact redirect to blogs subdomain
- Update quotes.json
- Update research.html
- Fix quote OCR typo and add text waivers
- Update quotes.json
- deploy-quotes: drop verify_quotes.py from the deploy path
- Quote validation work in progress
- docs: define OAIS preservation profile
- Harden quotes site copy and rendering pipeline
- Update research template copy and visibility
- Point docs/deploy.md at the new quotes-site deploy script
- Add guarded deploy script for quotes.freecapitalists.org
- feat: add economic research hub
- Back up legacy quotes DB before the quotes.freecapitalists.org cutover
- Spec the /research/ hub bridging primary texts to CheatSheets analysis
- Add /contact/ page backed by a new Cloudflare Worker + Resend
- Compose the site description from model.stats instead of freezing it
- Neutral provenance in the About block, per David
- Note the GiB-labelled-GB basis for the 140 GB figure in the About copy
- Rewrite homepage hero, About, and provenance FAQ in first person
- Implement quotes.freecapitalists.org Phase 0/1: ingest, verify, Tier A pages
- Summarize OCR runs and add icons to /how-its-built/
- Hide footer links and trim license page
- Add two build-time timeline visuals: authors by birth decade, PDFs by scan year
- Fix bio_sources to reject sub-year Wikidata date precision
- Fix bogus 2000 birth year for frank-shostak
August 13, 2026
- Add icons to /stats/ headline tiles and section headers
August 14, 2026
- Merge pull request #2 from DavidVeksler/quotes-site-spec
August 13, 2026
- Add spec for quotes.freecapitalists.org
- Hyperlink the /stats/ timeline bars to their /books/?era= filter
- Add OCR sweep totals and a publication-year timeline to /stats/
- Add book summary link to catalog
- Add external-link book pattern; list The Dao of Capital via Amazon
- Restore original PDF metadata for 322 of the 447 OCR-swept files
- Sweep the whole library for missing text layers, OCR and replace 447 of them
- Add PDF metadata restore, guard the OCR sweep, delete stale backups
- Clarify archive rights and license original site work
- docs: the legacy-backup coverage gap is by design, not a risk
- docs: record PDF scan provenance and the immutable legacy backup
- docs: consolidate rights policy
- Simplify AGENTS.md preamble
- docs: condense full-text pages spec
- docs: remove completed work items
- docs: streamline deployment runbook
- docs: streamline book rights specification
- docs: streamline project agent instructions
- Ignore temporary files
- Ignore Python cache files
- Distinguish font obfuscation from real DRM in the EPUB encryption gate
- Extract full-text reading pages for 11 previously-ungenerated books
August 12, 2026
- Apply the wiki reverse-links plan: 91 articles now link to the archive
- Refresh wiki reverse-links dry-run plan (backlog item 11)
- Log first post-cutover GSC read: growth is real, positions not yet the bottleneck
- Document the div-as-paragraph extraction fix and NON_WORK_CHAPTERS
- Fix flattened paragraphs in i-pencil, drop FEE back-matter chapter
- Fix drifted numbers, model naming and strip layout on /how-its-built/
- shorten TTS disclosure: "Machine-generated narration (TTS)"
- Add extract_voice_ref.py script for extracting voice reference clips
- Regenerate i-pencil.m4b with Milton Friedman voice clone for Afterword
- Build recruiter-facing engineering record page
- Add .m4b MIME mapping for TTS audiobooks
- Update i-pencil TTS to use Milton Friedman voice clone for Afterword
- Add Milton Friedman voice reference for i-pencil Afterword narration
- Fix book-tts.json sidecar shape to match the site loader
- Generate i-pencil TTS narration with Leonard Read voice clone
- Extract LeFevre's Journal per-issue tables of contents from the Mises DB
- Document the local Mises SQL Server database as a governing spec
- Amend audio-tts.md to permit real-voice cloning for Leonard Read
- Wire up TTS audio narration: generator script, data model, templates, JSON-LD
- Update "How It's Build" spec
- Use multiple voice for multiple writers
- Spec the /how-its-built/ recruiter page: five models, four pipelines, evidence rules
- Record the i-pencil TTS pilot's decisions: Chatterbox, M4B chapters, front-matter exclusion
- Add automatic /updates/ changelog page from raw git history
- Draft text-to-speech audio narration spec, pilot candidate I, Pencil
- Fix stray doc reference in _fingerprint_assets docstring
- Fix LCP lazy-loading bug and minify site.css for client-side performance
- Recover 1 more book cover via fetch_covers.py
August 11, 2026
- Add held-but-not-published byte totals to /stats/
- Diversify homepage hero medallions: more Austrian greats, add women
- Redesign journal marks as full-width nameplate bands
- Fix unreachable download links on book pages with read-online enabled
- Refresh chapter OCR audit findings
- Enable Human Action's full-text reading pages; add enable-book-fulltext skill
- Correct 15 more books' legacy-OCR chapter headings from the audit backlog
- Add Legal Foundations of a Free Society (Kinsella, 2023)
- refine instructions
- Add The Machinery of Freedom by David D. Friedman
- Update god-of-the-machine.png
- Install the commissioned God of the Machine cover
- Fix legacy-OCR chapter headings on god-of-the-machine, add the correction mechanism
- Recreate the God of the Machine first-edition jacket, not just its argument
- Add a God of the Machine cover brief drawing on the first-edition jacket's own metaphor
- Add a triage script confirming legacy OCR heading errors are catalog-wide
- Add a third dist preview port
- Set the site tagline to the bare domain
- Fix the sticky courses toolbar flicker at rest
- Build the hero "Lineage" author medallions
- Enrich the God of the Machine book page
- Compact the courses page head so a card row clears the fold
- Install commissioned covers for Acton, Hoppe, McCarran, and Mises' Socialism
- Trim hero-animation spec: drop rights and alternatives sections
- Compact the books filter bar: one control row plus a Filters disclosure
- Add manual topic overrides for canonical books with thin metadata
- Link homepage stat numbers to their index pages
- Spec the hero "Lineage" floating author-medallion animation
- Link study guides to the books they cover
- Add cover briefs for Acton, Hoppe, McCarran, and Mises' Socialism
- Import Cuhel's On the Theory of Needs and Reed's When Money Goes Bad
- Import 2 new Kirzner FEE titles, enrich 2 records with EPUBs
- Fix author page duplicate lead sentence and raw ISO life-span dates
- Update license-audit-report.md
- Fix FreemanFEE original-source link: freeman.fee.org, not mises.org
- Link journal series and issue pages to their original mises.org periodical page
- Sync 2 stale formats.pdf.bytes fields in catalog.json
- Delete mises-at-facts-dump.json
- Import 79 mises.at Denker biographies into author-bios.json
- Embed OCR text layer into the Mises Geldwertstabilisierung PDF
- Embed OCR text layer into the Strigl PDF; fix its garbled metadata
- Fill more /authors/ portrait gaps: full bio pass + mises.at merge
- Link authors index to mises.at's Austrian School family tree
- Add facts-only extractor for mises.at's 79-thinker Denker library
- Log the Strigl OCR run in data/ocr-runs.json
- Add scripts/ocr_pdf.py: manual OCR for scanned, no-text-layer catalog PDFs
- Stop triage rejecting permissions-only encrypted PDFs as unreadable
- Add per-issue table of contents for Rampart Journal
August 10, 2026
- Publish the FEE-era Freeman's per-issue tables of contents
- Add per-issue table of contents for the independent-era Freeman
- Surface journal article/table-of-contents detail on /stats/
- Add scripts/extract_faf_contents.py, the faf table-of-contents extractor
- Recover real interview titles/authors for the Austrian Economics Newsletter
- Add per-issue table of contents for American Affairs, and commit its shared rendering infrastructure
- Implement archive publication RSS feeds
- Add per-issue contents for The Free Market from dbo.FreeMarket
- Recover qjae article titles/authors from the Mises DB citation table
- Add rae article extraction script (data already merged upstream)
- Recover real per-article titles/authors for jls from the Mises DB
- Spec RSS feeds for the three indexes and each author page
- Fix circular PD-basis flattening in build_book_rights.py
- Source scholar working-paper metadata from the Mises DB, not just PDF layout
- Extract real titles/authors for scholar and lar journal PDFs
- Add author outreach row to AGENTS.md doc-routing table
- Merge FreemanFEE's 685 issues into catalog-media.json, add its provenance sidecar
- Import the real Libertarian Papers journal, replacing the lp_test.pdf placeholder
- Add the 2 missing book-rights records (recovered books, rebuild lag)
- Add the author outreach builder, email renderer and drafting skill
- Spec the author outreach campaign (permission, complete works, amplification)
- Add FreemanFEE journal: FEE's own Freeman run, 1955-2015
- Document the payload_requests reweight in courses-page.md and the proxy builder
- Weight file-host downloads above Wikipedia fame in demand proxy
- Add a description line and typographic mark to each /journals/ card
- Restamp 2 stale epub bytes fields in catalog.json
- Order /courses/ by demand instead of A to Z
- Commission an original cover for I, Pencil
- Add cover brief for I, Pencil
- Fix 184 stale formats.*.bytes fields in catalog.json
- Strip the outdated title-page banner image from 60 EPUBs
- Point the docs and generated install text at the new payload root
- Move the library payload root D: -> F: behind one resolver
- Add /stats/: every measured total the build can state
- Fix nested-anchor chapter-boundary bug; sweep catalog for the class
August 9, 2026
- Document the chapter-boundary ordering bug and its unswept scope
- Reconvert remaining 98 pypdf-html books; fix chapter-boundary ordering bug
- EPUB conversions progress checkin
- Commission a cover for The Myth of National Defense
- Brief a commissioned cover for The Myth of National Defense
- Document the pypdf-html converter bug fix and the zero-outline triage
- Fix EPUB converter's pypdf-html fallback: no page anchors, no rights metadata
- Split Economy, Society, and History into its real 15 chapters
- Fold pills and controls when the books/courses filter bar pins to top
- Commission an original cover for Man, Economy, and State with Power and Market
- Commission an original cover for Principles of Economics
- Stage top-10-by-demand books for this week's featured shelf
- Add a cover brief for Menger's Principles of Economics
- Add a cover brief for Man, Economy, and State with Power and Market
- Make the next commission run better: step 0, and the extraction boundary
- Refine the commission-cover skill from the Hazlitt session
- Commission an original cover for Economics in One Lesson
- Add a cover brief for Economics in One Lesson
- Turn the cover commissioning process into a reusable skill
- Replace the History of Money and Banking cover with the second-round pick
- Install For a New Liberty (variant 3) and let named briefs re-run
- Install four generated covers
- Record the fabrication failure in the cover-brief README
- Add Codex backend for cover generation
- Link book pages straight to their chapters
- Redraw 29 covers whose catalog titles were de-inverted
- Put both cover generators on generator/coverart.py
- Add the off-site content strategy: where rejected ideas go
- Draw cover art for the 37 lecture series with no cover
- Fit the author line and split dash subtitles (cover recipe v5)
- Add a harness to answer cover briefs with gpt-image-1
- Merge master: commissioned cover tier and per-slug grain seed
- Install four more commissioned covers
- Write cover briefs for the other nine top books
- Draw cover art for the 400 books with no usable cover
August 8, 2026
- Add a commissioned cover tier and install the Bureaucracy cover
- Add reversible provenance for machine-made artifacts
- Add a content-first cover brief for Bureaucracy
- Make top-N lookup and cover drawing repeatable in two commands
- Draw original cover art for the 10 most-requested books
- Fix two raw-filename titles left over from this session's metadata fixes
- Migrate the 4 audio-only hidden books into the media/courses catalog
- Recover our-enemy-the-state from a verified copy David supplied
- Un-hide tengreateconomists-schumpeter, point it at the archive.org record
- Recover 5 books, hide 19, resolve the last of the 36 degraded books
- Refresh metadata QA report after the no-google enrichment rerun
- Rerun enrich_metadata.py --no-google (Google Books IP quota exhausted)
- Rerun extract_book_extents.py against the current D: drive catalog
- Rerun build_book_topics.py; exclude catalog-hidden.json ids
- Fix book-text.json indent width from the prior prune
- Hide 6 books, prune stale sidecar entries after the dedupe pass
- Dedupe 6 orphan catalog records, add the book-hide sidecar mechanism
- Add a one-time proxy demand tier for unranked /books/ sorting
- Add the content strategy, written against measured state
- Sort /books/ by measured demand instead of A to Z
- Build the measured keyword-target bucket: 81 books, ranked on real demand
- Record what the fee.org and mises.org GSC exports change
- Import the fee.org and live mises.org GSC exports as catalog demand data
- Convert 74 more mechanical-ready PDFs to EPUB
August 7, 2026
- Convert 26 recovered PDFs and extract the newly public-domain books
- Point the extraction override at the consolidated rights record
- Fix the text-first EPUB fallback: rebuild paragraphs, don't emit one
- Update the doc routing and the six affected specs for the rights consolidation
- Deprecate the five rights sidecars without deleting them
- Switch the derivative and full-text gates to the shared rights record
- Switch the export gate and the book pages to the shared rights record
- Add the consolidated rights record and the one gate function
- Admit the audit's public-domain books to full-text extraction
- Add EPUB/AZW3 for Wieser; log 5 new conversions
- Record three EPUB QA failures
- Add the book-rights consolidation design note
- Export the public-domain books in the bulk dataset
- Let a public-domain determination clear the EPUB licence gate
- Treat unrenewed, not-published-abroad books as public domain
- Search the CCE renewal record for every renewal-era catalog book
- Extend license-audit.json's public-domain-by-age determination to pre-1932
- Update docs/deploy.md for the rsync transfer swap
- Fix deploy verification asserting <urlset on the sitemap index
- Fix deploy.ps1 rsync passing a bare "/" as a second source
- Replace deploy.ps1's tar+scp+extract transfer with a direct rsync
- Update about.html
- Link the published HuggingFace dataset from llms.txt and /about/
- Extend the public-domain gate from pre-1930 to pre-1932, per David's decision
- Update licensing docs and age thresholds
- Publish full text of Pictures of the Socialistic Future; document the process
- Publish full text of Against Intellectual Property; add Read online filter
- Condense licensing.md to cut token cost of parsing it
- Empty the descriptions that were only PDF document properties
- Retire pre-2014 books torrents and the Shanghai conference torrent
- Stop claiming the whole library is Creative Commons
- Merge llms.txt prose, file-host sitemap, and lecture rights JSON-LD
- Withhold the full text of books whose rights cannot be established
- Carry the text, not the links: rebuild llms-full.txt
- A payload sitemap the file host can legally serve
- Say what the lecture rights actually are, without inventing a licence
- Merge the pre-2000 rights review: 155 of 177 cannot be established
- Fix the next-lecture links, and gate the class of bug that hid them
- Propose retiring the pre-2000 basis, and flag the routing error behind it
- Correct the deploy payload size, and measure what a cutover now costs
- Re-determine the rights basis for the 177 books published on age alone
- Merge the lecture transcript release into the dataset export
- Publish the book text: 8,899 static chapter pages
- Open the lecture transcripts, on an operator authorisation and not a licence
- Recover the section headings the EPUBs encode as styled paragraphs
- Runbook for the dataset export, and route to it from AGENTS.md
- Publish per-work rights as data, and export the CC-licensed corpus
- Record why the corpus was invisible, and the two steps left
- Guard the crawler access the archive depends on
- Diagnose the 100-word failures: Calibre rasterizes a good text layer
- Quarantine has never actually quarantined anything
- Rebuild all 116 books at converter v5
- Record what v5 actually shipped, including the gate that had to be redesigned
- Converter v5: reflow the paragraphs, catch the decoding failures
- Correct the small-caps measurement, survey Calibre's options, scope the v5 run
- Measure what the converted EPUBs actually look like, and plan v5
August 6, 2026
- Reconvert all 116 books at converter v4
- Stop Calibre inflating small books with a cover nobody asked for
- FEE spec: the licence was in the ebook, not on the website
- Stamp every generated book with the converter version that made it
- Let the site state the FEE licences, and stop trusting the catalog about disk
- Update catalog.json
- Update pdf-epub-conversions.json
- Record FEE EPUB licenses in audit sidecar
- Record the FEE rights tiers from the strongest evidence in the file
- Import the six FEE ebooks whose licence is printed in the file
- Give the generated EPUBs structure, rights, and a Kindle edition
- FEE: fix the dedupe matcher, add the merit verdict, defer rights
- Add FEE import criteria: five gates, plus triage of the 162 fee.org ebooks
- Harden the PDF->EPUB pipeline: live licence gate, real QA, spec doc
- Strip HTML markup before it reaches Calibre's --title/--authors
- Fix wrong EPUB metadata: force --title/--authors, don't trust the PDF's own
- Finish PDF->EPUB conversion: all 116 mechanical-ready books done
- Record the Wayback snapshots as a rejected licence source (licensing.md 2.1)
- Drop duplicate Garrison "Lachmann Legacy" catalog record
- Record the 85 conversions from this session's batch run in the sidecar
- Fix catalog-write durability bug; backfill 80 converted books
- Add PDF->EPUB conversion pipeline; convert first 5 mechanical-ready books
- Rerun license verifier; refresh EPUB-candidate license gates
- Add PDF-only EPUB-candidate triage script
- Convert 8 mobi-only Review of Austrian Economics volumes to epub
- Update lecture-transcripts.json
- There is no transcription bug: the 15 are video duplicates
- Update lecture-transcripts.json
- Correct the wmav2 scope to 15 lectures and record the near-miss
- Re-transcribe five singleton lectures; no material change
- Fix Ctrl+C not stopping transcribe_lectures.py on Windows
- Clean up docs/: remove completed reports, dead WP-migration docs
- Transcribe WMV-only lectures from their converted MP4
- Record the completed transcript corpus and the WMV failure mode
- Update lecture-transcripts.json
- Stop the-quotable-mises's topic index from rendering as chapters
- Demote two book-structure.json entries that aren't chapter lists
August 5, 2026
- Update lecture-transcripts.json
- Record the chapter-table review and promotion in both specs
- Fix apparatus-filter gap; promote 493 high-confidence chapter tables
- Record the chapter-table extraction; correct the two projections it disproved
- Extract chapter tables from PDF outlines, proposed for review
- Record items 3.1, 3.4 and 3.8 as done; re-measure the coverage table
- Adjudicate the six companion-course candidates; add the alias sidecar
- Journal issue computed answers, and fix hours_phrase singular
- Order course lectures by mises.org document ID, not title
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Add book: Getting Libertarianism Right (Hans-Hermann Hoppe)
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- optimize images
August 4, 2026
- Prepare the books+journals move to R2
- Cost the cheaper file-host alternatives to R2
- Spec the in-browser EPUB viewer
- Add a 404 sweep for the published book/course download links
- Update lecture-transcripts.json
- Document the IIS MIME-map requirement on the file host
- Point I, Pencil at the canonical Leonard E Read directory
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Enrich the top-100 SEO-target books and courses
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Enrich the featured books and courses
- Update lecture-transcripts.json
- Document the incremental build and --full
- Update lecture-transcripts.json
- Make rebuilds incremental with a content-digest manifest
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Dedupe catalog records sharing a mises.org document id
- Update lecture-transcripts.json
- Update lecture-transcripts.json
- Make course pages rank on what a mirror cannot copy
- Publish the mises.org summaries for The Failure of the "New Economics"
- Order course lectures numerically; enrich The Failure of the "New Economics"
- Publish the lecture transcripts as a player-synced reader
- Update mechanical-seo.md
- Spec the remaining mechanical SEO work, measured and ranked
- Update lecture-transcripts.json
- Log page-type parity results and what was cut
- Extend computed FAQs and answer leads to courses, authors and lectures
- Harden rebuilds against Windows file locks
- Update Hazlitt PDF source
- Record measured coverage and the plan for scaling book guides
- Compute book-page FAQs from the model, for the whole catalog
- Link Economics in One Lesson to legal free copies elsewhere
- Document the book-guides enrichment layer and its baseline
- Enrich book pages with verified editions, chapter guides and FAQs
- Add companion book to course JSON-LD `about`
- Update lecture-transcripts.json
- Add book guides with chapters and FAQ schema
- Update lecture-transcripts.json
- Add tmp/ to .gitignore
- Add SEO targeting and ranking analysis
- Refactor generator pipeline for metadata integration
- Add lecture transcripts and journal article metadata
- Update site logo and styles
- Update author portraits and journal template
- Curate foundational authors shelf
- docs: record local IIS test URL
- Render faceted author pages and lecture catalog
- Build author index metadata and media relationships
- Update lecture-transcripts.json
- Temporarily disable SEO gate in deploy and pre-push
- Update lecture-transcripts.json
- Re-pull mises.org GSC at full depth; journals join, books do not
- Spec the authors index rebuild
- Add 20 new lecture transcript records
- Replace dead TOC scrape with the real files on the Mises trade-cycle essay
- Plan the 100-item SEO target search
- Strip stray HTML markup from publication_info
- Pick up further transcription progress
- Pick up further transcription progress
- Pick up further transcription progress
- Pick up further transcription progress
- Ignore local scratchpad dir; pick up latest transcription progress
- Merge journal issue-level pages (SEO backlog item 18)
- Group journal articles under real issue pages (seo-backlog #18)
- Merge AI answer-engine surfaces (SEO backlog item 10)
- Add AI answer-engine answerability blocks and visibility probe (backlog #10)
- Merge topic-hub cross-linking to courses and the wiki (SEO backlog item 7)
- Cross-link topic hub pages to courses and the companion wiki
- Merge book-page page-count surfacing (SEO backlog item 2)
- Surface book page counts on book detail pages; retire completed backlog items
- Merge reverse wiki-links dry-run tooling (SEO backlog item 11)
- Add wiki reverse-links dry-run planner (SEO backlog item 11)
- Remove SEO backlog item 19 (surname() fix already shipped)
- Further lecture-transcription progress
August 3, 2026
- Guard deploy verification against the apex pointing at the wrong origin
- Further lecture-transcription progress
- Further lecture-transcription progress
- Further lecture-transcription progress
- Drop the /tag/bittorrent/ live-verification check from both deploy twins
- Further lecture-transcription progress
- Further lecture-transcription progress
- Further lecture-transcription progress
- Note in assets/site.css that .license-note is currently unused
- Hide the per-book license-note block pending more licence-data refinement
- Remove the legacy /document/<id>/ book URL redirect
- Add scripts/audit_author_links.py: re-verify Wikipedia/Wikidata same_as links
- Merge pull request #1 from DavidVeksler/codex/dependabot-fleet
- Add chapter TOC, author card, and related-books to book detail pages
- Estimate the run from the model it will actually use
- Retry dist/ rmtree with backoff to survive transient Windows file locks
- Add indexable /topics/<slug>/ hub pages for the book topic taxonomy
- Fix util.surname() to actually implement its organisation-name promise
- Write up the pending SEO queue as docs/seo-backlog.md
- Stop the VAD from discarding the archival lecture recordings
- Automate Dependabot updates
August 2, 2026
- Replace the site-wide CC BY 4.0 claim with a per-book licence property
- Verify book licences per book instead of one blanket CC BY 4.0 claim
- Complete the manual per-book licence audit of all 990 books
- Licence audit: cross-check against the automated pass
- Licence audit: full file evidence in, report drafted
- Publish 2,728 lecture pages and 2,461 journal issue pages
- Licence audit: all 990 book files scanned
- Licence audit checkpoint: 717 of 990 books scanned
- Fix 13 wrong identity claims in the author biographies, and the matcher that made them
- Licence audit checkpoint: 398 of 990 books scanned
- Attribute the generated-description decision to David directly
- Start the manual per-book licence audit (checkpoint, scan in progress)
- Recover 68 real covers and 22 sourced descriptions from mises.org
- Publish the 54 owner-authorised books as an override, not a looser gate
- Extract full-text reading HTML from the archive's 312 EPUB books
- Finish the off-page outreach plan and wire it into the doc routing
- Extend the cover and metadata recovery sources (work in progress)
- Add the off-page outreach targets and backlink checker (work in progress)
- Add the lecture transcription pipeline (work in progress, pilot not yet run)
- Add the EPUB full-text extractor (work in progress, not yet wired in)
- Fix the title truncation bug and rebuild the SEO head
- Add project note: move the file payloads off the home IP
July 29, 2026
- Pin deploy.ps1's tar to Windows bsdtar instead of PATH
July 28, 2026
- Add the shield logo: favicon, apple-touch icon, masthead mark
July 23, 2026
- Add Start Here reading-order CTA and Kindle/Apple Books help modal
- Import 12 mises.org books, with a reusable add-book pipeline
- Fix deploy canary that false-failed on a hidden course
- Refresh the metadata enrichment QA report
- Finish the WMV conversion: all 133 lectures now stream
- Fix two encoder bugs that failed 26 of the WMV conversions
- Enroll 20 more courses in the mises.org metadata sidecar
- Update course-metadata sidecar with latest scraper progress
- Update course-metadata and wmv-conversion sidecars with latest progress
- Create wmv-conversions.json
- Add course year sorting and bulk metadata fetch
- Hide low-value conference/media series from the courses index
- Add a per-course podcast RSS feed
- Publish the mises.org lecture summaries on the Mises Archives course
- Convert the WMV-only lecture videos to streamable MP4
- Recover course recording years, dates and topics from mises.org
- Trim homepage featured books to 4 and reuse the /courses/ featured shelf
- Feature four courses on /courses/, and fingerprint asset URLs
- Redesign the courses filter into a faceted, shareable toolbar
- Strip dangling site-name separator when truncating <title> tags
- Merge four entity-mangled duplicate lecture series into canonical courses
- Require pwsh 7 in deploy.ps1: PS 5.1 falsely trips the target guard
- Add featured course and filter menu to the courses index
- Record the real crawler-403 cause: content_bots_protection, not Bot Fight Mode
- Redirect legacy WordPress paths to blogs.freecapitalists.org
- Enrich sitemap with lastmod, changefreq and priority
- Record the apex cutover: archive is live on the DO box, not local IIS
- Read the Cloudflare zone id from site.config.json so the purge stops skipping
- Promote the apex to the Liberty Archive; fix deploy verification UA
- Strip embedded YouTube videos from book/media descriptions
- Add wiki to primary nav before Torrents
- Point llms.txt at the companion wiki
- Link the archive to its companion wiki
July 22, 2026
- Fix the netplan trap with metadata-derived anchor policy routing
- Document the DO restore procedure and why the netplan trap stays
- Record the 2026-07-23 wipe, the WP-mu path rename, and the restore traps
- Refuse to rsync --delete over a foreign docroot in deploy scripts
- Remove biography source credits from author pages
- Improve author bio text and HTML across archive
- Standard Format For Author Biographies
- Add one-off catalog description cleanup script
- Resume author-bio resolution pass and fix 8 wrong-person matches
- Remove dead mises.org links from book and course descriptions
- Add author biographies, portraits and life dates to author pages
- Add light/dark theme toggle and link course speakers to author pages
- On-page SEO: rebalance meta descriptions toward content, away from licensing
- Merge duplicate author pages and dedupe records from scraped spelling variants
- Add agent-discovery Link headers and Content Signals to robots.txt
- Rewrite homepage hero: sharper H1, benefit-led subhead, add Download everything CTA
- Remove redundant tagline from About section
- Enrich book metadata: descriptions to 100%, original publication years to 94%
- Implement weekly featured section (books + courses) with hand-made selection
- Plan weekly-rotating homepage featured section (books + courses)
- Add real front covers for 82 books from Open Library (Phase 2)
- Add per-section OG cards and stop tracking scratchpad previews
- Derive book covers from PDF page 1 / EPUB when no real cover exists
- Cache cover thumbnails across builds
- Add generated OG card and Twitter metadata
- Refine redirects and homepage SEO output
- Add landing About/FAQ with FAQ schema
- Document generator architecture, build/serve/deploy commands, and current IIS hosting in AGENTS.md
- Add IIS redirect maps and rebuild wrappers
- Add Legacy Mises Community Forums link under torrent section on homepage
- Emit dist/web.config for local IIS hosting (webp/torrent MIME, 404, default doc)
- Phase C EXECUTED: WP-mu main site moved to blogs.freecapitalists.org; apex parked as 302
- Record DO daily snapshots as the worst-case rollback net (Phase B/E)
- Re-plan Phase C from Phase A findings; align goal/verification to live WP sites
- Phase A results: WP-mu relocation discovery (read-only) + STOP-and-re-plan verdict
- Add read-only WP-mu discovery script for Phase A relocation runbook
- Phase 6 prep: WP multisite relocation runbook
- Add guarded deploy scripts for the Liberty Archive
- Phase 5: draft deploy runbook and serving architecture
- Wire real torrent files into /torrents/, point file host at library subdomain
- Reindex media catalog: torrent complete, 0 incomplete
- Phase 4: build the Liberty Archive static site generator
- Drop CC license notice from book detail mockup
- Refine landing mockup for three-type architecture
- Drop License provenance section from spec
July 21, 2026
- Add verified journal code -> title lookup table
- Refine design spec for three document types (books/journals/courses)
- Remove homepage provenance section
- Add Liberty Archive design mockups
- Build media and journals catalog
- Spec: lock /tag/misesdotorg/ -> /torrents/ redirect into cutover plan
- Add master prompt wrapping all specs for one-shot execution
- Add Phase 3 SERP supply-side snapshot and analysis
- Add Phase 4 specs: static site generator + page design (landing/book/media)
- Phase 3 report: exact document-ID matching pass against catalog.json
- Spec: record hosting decision (NZXT serves books+media) and CC provenance evidence
- Phase 3: pull GSC keyword data for mises.org + baseline properties, add residual-demand report
- Phase 2: parse book Info.txt metadata into structured catalog.json
- Phase 1: index Mises Torrents 2014 collection (books/journals/media)
- Record Liberty Archive decision: governing spec, supersede A/B/C positioning
- Scaffold freecapitalists.org redesign: doc spine + positioning proposal