2 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
3f9b044b31 chore(ci): rename vault-ci.yml → staffml-validate-vault.yml
Brings the last outlier workflow file into the repo-wide
<cluster>-<verb>-<scope>.yml naming convention. Every other cluster
(book, tinytorch, kits, labs, instructors, mlsysim, slides, site,
staffml) uses this pattern; vault-ci.yml was the only one that didn't.

  vault-ci.yml  →  staffml-validate-vault.yml
  name: '🎯 StaffML · 🔎 Vault CI'  →  '🎯 StaffML ·  Validate (Vault)'

Now staffml-validate-vault.yml is a direct sibling of
staffml-validate-dev.yml — the former validates the vault data + CLI
+ worker, the latter validates the site build. Same verb, different
scope, easy to reason about.

Updated references:
  .github/workflows/staffml-validate-vault.yml — self-reference in
    the paths trigger (so the workflow still fires when it's edited)
  interviews/vault/ARCHITECTURE.md §19.3 and §51 — both path refs
  interviews/vault/TESTING.md §4.1 — workflow name + display name
  interviews/vault-cli/scripts/check_registry_append_only.py — docstring

No branch-protection settings change needed — GitHub matches required
checks on the workflow's 'name:' field, not the filename. Anyone with
a bookmark to the old Actions-tab URL will get a 404 (harmless).

Other workflow naming I surveyed but deliberately LEFT alone
(all consistent with existing conventions):
  staffml-update-paper.yml      matches tinytorch-update-pdfs pattern
  staffml-auto-pr.yml           matches bot-workflow convention
  staffml-welcome.yml           single-word verb, standard
  auto-label / update-contributors / infra-* / publish-all-live
    are cross-cutting (no cluster prefix) by design
2026-04-22 11:27:37 -04:00
Vijay Janapa Reddi
1bc93374e1 feat(vault): Phase-1/2 polish + LICENSEs + corpus cutover branch
vault-cli/src/vault_cli/commands/stats.py (NEW, B.8)
  vault stats — live scorecard over vault.db with --format-prometheus
  scrape mode + --exemplar-coverage audit shim. Reports total / topics
  / chains / by_status / by_track / by_provenance. Resolves R3 gap
  about missing stats subcommand.

vault-cli/src/vault_cli/commands/codegen.py (NEW, B.7)
  vault codegen --check — Phase-1 presence-and-non-empty verification
  of the 3 shared-artifact files (models.py, d1-schema.sql,
  @staffml/vault-types/index.ts). Full LinkML-driven generation is
  Phase-2 follow-up.

vault-cli/Makefile (NEW, B.2)
  make install / test / lint / hooks / hooks-uninstall. Hooks target
  symlinks pre_commit_corpus_guard.py into .git/hooks/pre-commit.

vault-cli/scripts/check_registry_append_only.py (NEW, B.3)
  CI script verifying id-registry.yaml is append-only vs base branch.
  Rejects removed or reordered lines — C-5 enforcement at merge time.

vault/questions/LICENSE (NEW)
  CC-BY-4.0 for corpus content. BibTeX template with release_hash
  placeholder. Scope note clarifies vault-cli is MIT separately.

vault-cli/LICENSE (NEW)
  MIT for vault-cli Python package + scripts + docs. Scope note
  clarifies corpus is CC-BY-4.0 separately.

staffml/src/lib/corpus-vault.ts (NEW, B.11)
  Vault-API-backed data source mirroring corpus.ts public surface.
  Adapts @staffml/vault-types Question → legacy Question shape so
  callers don't need to change. Not wired into any component yet —
  the swap happens via corpus-source.ts.

staffml/src/lib/corpus-source.ts (NEW, B.11)
  Cutover router: getCorpusSource() returns 'static' or 'vault-api'
  based on NEXT_PUBLIC_VAULT_FALLBACK. Components that opt into the
  cutover import from here; others continue using corpus.ts directly
  (unchanged behavior). Phase-4 cutover flips components one-by-one
  rather than big-bang-replacing corpus.ts.

Phase-1/2 now has the full CLI surface (19 subcommands), LICENSEs
for legal Phase-3 deploy, and the site-side cutover pathway ready
for Phase-4 canary.
2026-04-16 13:10:16 -04:00