6 Commits
Author SHA1 Message Date
Vijay Janapa Reddi 3b92f664b8 StaffML: require taxonomy tags at publish; retire the old concept graph
Publishing fails when a question lacks a known taxonomy subject or cites
an unknown concept. Remove vault/taxonomy.json, an unused 825-concept
graph, and scripts/vault_invariants.py, which read a vault/corpus.json
that no longer exists; the scorecard reports taxonomy coverage instead.
2026-10-22 17:22:31 +02:00
Vijay Janapa Reddi e23f79a02d StaffML: ship taxonomy areas with the labels and rebuild the site bundle
The labels file now lists the 20 taxonomy areas in order (code, group,
guiding question, subjects) and each subject's definition. The committed
corpus summary is rebuilt, so every question carries its taxonomy tags;
its textbook links follow dev's renamed chapter folders.
2026-10-22 17:22:11 +02:00
Vijay Janapa Reddi 4ea354b235 StaffML: add ML Systems Taxonomy tags to the question schema
Questions gain optional taxonomy_subject and taxonomy_concepts (identities
from shared/concepts). The model checks their format and vault check
--strict checks they exist, naming the replacement for a retired concept.
They join the content hash (CANON_VERSION 3), SQLite and D1
(questions.taxonomy_subject, question_concepts), and the site corpus, and
vault build writes the labels the site needs.
2026-10-22 14:26:54 +02:00
Vijay Janapa Reddi a70aebd249 Move authoring tooling out of the repository
Removes content-authoring scripts, figure and data generators, and their working notes, which are not needed to build, check, or release the books and sites. The vault CLI drops the matching subcommands and doctor check; docs, comments, ignore rules, and the codegen hash are updated to match what remains.
2026-09-12 11:55:22 +02:00
Vijay Janapa Reddi 57d7440671 Repair paths the book/ and publishing/ layouts left behind
Moving the sources under books/ and the toolchain under bindery/ rewrote
slash-style paths but missed paths built with Path and os.path.join, test
fixtures, and a few regexes. Several checks and scripts have been pointing
at directories that no longer exist, most of them silently.

- binder check index scanned book/ and found nothing; it now scans the 151
  book sources. The callout reference check read its prefix table from a
  toolchain quarto/config folder that does not exist and reported itself
  inert; it now reads books/config and scans 140 files. Both pass.
- The registry checks, the audit command, bib update, the EPUB baseline,
  the table layout audit, release, and doctor looked for book/tools,
  book/tests, book/binder, or book/.layout.
- Five call sites computed the repository root as books/../.., one level
  above the repository.
- The StaffML vault looked for chapter sources under book/quarto/contents,
  so its book cross-references silently fell back to slug titles and skipped
  link-checking.
- The VS Code extension located the repository by book/binder and read
  chapter lists from book/quarto/contents.
- Tests loaded Lua filters, build scripts, the LaTeX header, and a patched
  module from paths that do not exist. The binder suite went from 12
  collection errors, with no test running, to 342 passed; the 8 that still
  fail are the mlsysim import path and the URL flattening script, both
  fixed separately.
- test_content_structure and test_volume_bibliography matched config
  entries by a contents/ prefix, so "every config path exists" checked
  nothing. They now match the flat books/ paths. The structure generator
  wrote books/STRUCTURE.md rather than books/shared/STRUCTURE.md, which is
  regenerated here; the committed copy was missing the Volume III and IV
  front matter the PDF configs list.
- extract_figures.py fell back to a hard-coded personal path.
- Five documents linked to ../book/README.md or ../quarto/config/, and the
  SocratiQ bundle README described a symlink that does not exist.

A legacy quizzes script under _legacy/ still names a cwd-relative
quarto/config and is left as it is.
2026-09-10 15:13:28 +02:00
Vijay Janapa Reddi f1ffe5b6fa Rename interviews/ to staffml/ and drop the repeated prefix inside it
interviews/ held StaffML and nothing else, so the directory now carries the
product's name. Three names inside it repeated that prefix, and now line up
with vault/, vault-cli/, and paper/:

  interviews/staffml/               -> staffml/app/
  interviews/staffml-vault-worker/  -> staffml/vault-worker/
  interviews/staffml-vault-types/   -> staffml/vault-types/

Every repository path moved with it: workflow paths: triggers and variable
fallbacks, pre-commit hooks, .gitignore, contributor tooling, vault-cli path
joins, the app's tsconfig mapping to the shared types, and the docs.

Left alone on purpose:
- the published /interviews/ redirect to /staffml/ and the gh-pages subsite
  lists that protect it; those are URLs, not repository paths
- package and worker names (staffml-vault-worker, @staffml/vault-types) and
  the vitest job name, which branch protection may key on
- question YAMLs and generated track JSON, which are content-addressed.
  Three questions carry an older corruption, "recall @interviews/vault/
  questions/...", that predates this change
- the applied D1 migration 0001 and the vault CHANGELOG, which are history

codegen-hashes.txt is re-recorded; the three pinned artifacts changed only in
path strings. vault-cli: 97 passed, codegen --check clean.

interviewer.py's __main__ loader was one parent short and pointed at a
corpus.json that never existed; it now resolves staffml/app/src/data/
corpus.json. tools/validate_playbook.py and generate_interview_flashcard.py
still expect per-track directories that no longer exist; they point at the
new root but remain dead.

The GitHub repository variables STAFFML_ROOT, VAULT_DIR, and VAULT_CLI_DIR
still name the old paths and must change when this reaches origin.
2026-09-10 14:48:04 +02:00