38 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
713d719c3f merge origin/dev into yaml-audit
Brings in the dev-side prose / bib / math fixes that landed since the
yaml-audit branch was cut, and resolves three small conflicts:

* interviews/vault-cli/scripts/archive/split_corpus.py
    origin/dev deleted it (archive cleanup); we honor the deletion.
* interviews/vault-cli/scripts/validate_drafts.py
    origin/dev removed a leftover no-op statement; took theirs.
* interviews/vault-cli/scripts/summarize_proposed_chains.py
    origin/dev renamed loop var lvl→level; took theirs.

The two protected qmds (data_selection.qmd, model_compression.qmd)
are temp-stashed before the merge to honor the 'do not touch' rule;
restored after the merge commit lands.

After this commit, yaml-audit contains every commit on origin/dev as
an ancestor, so dev can fast-forward to yaml-audit's tip when the
maintainer is ready to merge.
2026-05-05 10:03:14 -04:00
Vijay Janapa Reddi
c7b42e41d8 fix(dev): make npm run dev serve full question content from local YAMLs
Before this change, the StaffML Next.js dev server fetched scenario and
details (including napkin_math) from the production Cloudflare Worker
even when contributors had local YAML edits — so changes weren't visible
without shipping. The opt-in static-fallback path existed but was wired
incorrectly: getStaticFullDetail used a Function-constructor dynamic
import of ../data/corpus.json, which Turbopack rewrote to a non-existent
/_next/static/data/corpus.json URL and 404'd at runtime.

Fix in three parts:

1. Loader (interviews/staffml/src/lib/corpus.ts): replace the broken
   dynamic import with fetch('/data/corpus.json'). On failure, throw a
   clear error pointing at `vault build --local`.

2. Build (interviews/vault-cli/src/vault_cli/commands/build.py): mirror
   the generated corpus.json into interviews/staffml/public/data/ so
   Next serves it as a static asset. Add --local as a clearer alias for
   --local-json and update the help text to spell out the dev workflow.

3. Wiring (interviews/staffml/package.json + scripts/build-local-corpus.mjs):
   predev now runs `vault build --local` automatically, with a soft-fail
   path if the vault CLI isn't installed (so first-time contributors
   still get a working dev server, just with the worker fallback). The
   committed .env.development sets NEXT_PUBLIC_VAULT_FALLBACK=static so
   the static path is the default in dev. Both copies of corpus.json are
   gitignored as build artifacts (the YAMLs are the source of truth).
2026-05-05 09:30:57 -04:00
Vijay Janapa Reddi
be0408e28d fix(staffml): replace removed lucide-react Github icon with inline SVG
lucide-react v1.0 removed all brand icons (Github, Twitter, Facebook,
etc.) for trademark reasons, so the bundled Github symbol is no longer
exported. Add a local GithubIcon component using the standard GitHub
mark, bump lucide-react to ^1.14.0, and update the four consumers.

Closes #1667.
2026-05-04 08:30:19 -04:00
dependabot[bot]
23e8816269 deps(staffml): bump react-medium-image-zoom (#1650)
Bumps the next-react group with 1 update in the /interviews/staffml directory: [react-medium-image-zoom](https://github.com/rpearce/react-medium-image-zoom).


Updates `react-medium-image-zoom` from 5.4.3 to 5.4.5
- [Release notes](https://github.com/rpearce/react-medium-image-zoom/releases)
- [Changelog](https://github.com/rpearce/react-medium-image-zoom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rpearce/react-medium-image-zoom/compare/v5.4.3...v5.4.5)

---
updated-dependencies:
- dependency-name: react-medium-image-zoom
  dependency-version: 5.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: next-react
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 08:18:06 -04:00
dependabot[bot]
3a6d5bfe0f deps(staffml): bump eslint from 10.2.1 to 10.3.0 in /interviews/staffml (#1657)
Bumps [eslint](https://github.com/eslint/eslint) from 10.2.1 to 10.3.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.2.1...v10.3.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 07:18:24 -04:00
dependabot[bot]
1f9ddb516b deps(staffml): bump jsdom from 29.1.0 to 29.1.1 in /interviews/staffml (#1670)
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.1.0 to 29.1.1.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.1.0...v29.1.1)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 07:18:02 -04:00
dependabot[bot]
cd4fc7d948 deps(staffml): bump sigma from 3.0.2 to 3.0.3 in /interviews/staffml (#1671)
Bumps [sigma](https://github.com/jacomyal/sigma.js) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/jacomyal/sigma.js/releases)
- [Changelog](https://github.com/jacomyal/sigma.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jacomyal/sigma.js/compare/sigma@3.0.2...sigma@3.0.3)

---
updated-dependencies:
- dependency-name: sigma
  dependency-version: 3.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 07:17:59 -04:00
Vijay Janapa Reddi
231374586e fix(staffml): override transitive postcss to ^8.5.12 (GHSA, XSS via stringify)
Direct postcss already ^8.5.12, but next@16.2.4 was bringing in a
nested postcss@8.4.31 that tripped GHSA-...-postcss CSS-stringify XSS.
Top-level override forces all postcss instances to ^8.5.12 (resolves
8.5.13); nested next/postcss copy is no longer present in lockfile.

Closes Dependabot #45.
2026-05-01 17:23:35 -04:00
Vijay Janapa Reddi
efb71ac52f fix(staffml): migrate to Tailwind CSS v4 PostCSS plugin
StaffML pins tailwindcss ^4.2.4 but its postcss.config.js still
referenced 'tailwindcss' as a plugin, the v3 entrypoint that v4
removed. CI build was failing with: 'It looks like you're trying
to use tailwindcss directly as a PostCSS plugin. The PostCSS
plugin has moved to a separate package, install @tailwindcss/postcss.'

Changes:
  - Add @tailwindcss/postcss ^4.2.4 to devDependencies (lock updated).
  - postcss.config.js now references '@tailwindcss/postcss' instead
    of 'tailwindcss'.
  - globals.css switches from the legacy '@tailwind base/components/
    utilities' triple-directive to the v4 single-line '@import
    "tailwindcss";' which the new plugin expects.
2026-04-27 15:28:15 -04:00
Vijay Janapa Reddi
86276016dd Merge dev; keep TypeScript 6 with Tailwind 4; silence TS 6 ES5 deprecation (tsconfig) 2026-04-27 09:21:14 -04:00
Vijay Janapa Reddi
d9ad5c6dc8 Merge pull request #1581 from harvard-edge/dependabot/npm_and_yarn/interviews/staffml/dev/jsdom-29.1.0
deps(staffml): bump jsdom from 29.0.2 to 29.1.0 in /interviews/staffml
2026-04-27 09:16:07 -04:00
dependabot[bot]
ce83890e71 deps(staffml): bump typescript in /interviews/staffml
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3 to 6.0.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.9.3...v6.0.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 6.0.3
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 13:16:05 +00:00
dependabot[bot]
c147b47d83 deps(staffml): bump jsdom from 29.0.2 to 29.1.0 in /interviews/staffml
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.0.2 to 29.1.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.0.2...v29.1.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 13:15:43 +00:00
dependabot[bot]
e5b7d383d0 deps(staffml): bump tailwindcss in /interviews/staffml
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 3.4.19 to 4.2.4.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.2.4
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 13:15:35 +00:00
Vijay Janapa Reddi
b65caf8183 Merge pull request #1582 from harvard-edge/dependabot/npm_and_yarn/interviews/staffml/dev/eslint-10.2.1
deps(staffml): bump eslint from 9.39.4 to 10.2.1 in /interviews/staffml
2026-04-27 09:14:09 -04:00
dependabot[bot]
3b50c00f3a deps(staffml): bump eslint from 9.39.4 to 10.2.1 in /interviews/staffml
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.4 to 10.2.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.4...v10.2.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 05:38:32 +00:00
dependabot[bot]
d7b7401961 deps(staffml): bump postcss from 8.5.10 to 8.5.12 in /interviews/staffml
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.10 to 8.5.12.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.10...8.5.12)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 05:38:16 +00:00
Vijay Janapa Reddi
fe495086d3 Merge: feat/massive-build-2026-04-25-run — StaffML 0.1.0 release-readiness + paper revision
Cumulative work from the v0.1.0 release-readiness push:

Vault (interviews/vault):
- Phase A: schema hardening + lint calibration (1,308 → 0 warnings)
- Phase B+C: 144 PASS items added (B.5: 110, C.4: 34)
- Phase D+F: parallelism gap closure (+87 PASS items, 51% → 80.6% on first
  judge with the PARALLELISM_RULES variant)
- Phase E: vault build/manifest/release tooling
- Phase G: full audit + cleanup, 462 competency_area fixes, 576 zone-Bloom
  reclassifications, 0.1.0 consolidated release
- Schema + Pydantic validators added (zone-Bloom matrix, visual-path
  resolution, visual.kind enum, path regex, alt/caption length)
- Five repair scripts; vault doctor split (disk-coverage HARD, registry
  INFO); vault verify end-to-end check
- Cohort-tagged ID rename to <track>-NNNN (4,754 items)

Paper (interviews/paper):
- Apparatus framing: artifact-first abstract, four-skill model branding,
  ikigai demoted, construct-validity gap acknowledged on page 1
- Lead-restructure: TinyML duty-cycling example moved up; practice-UI
  mockup figure added as the §1 big picture; backward-design figure moved
  into §2 where its terms are defined; Tables 1+2 merged
- Validator coverage paragraph (Rewrite A); validate-at-write +
  PARALLELISM_RULES paragraph (B); repair-tooling paragraph (C);
  empirical 5-mode LLM failure taxonomy (D)
- Math-verification reframed to single-model 3-stage Gemini pipeline
- All 87 topics in Table 4 mapped to real corpus IDs; Table 8 numbers
  corrected to match actual matrix data (was 28/6/18 — now 16/4/27)
- §10.6 subheading shortened ("Cross-Track Quantization")
- Figure pairing for Figs 8+9 side-by-side at p19; Figs 10+11 at p20
- 11 missing references added; 0 undefined citations; 0 overfull boxes
- 33 pages, every table/figure within 0–1 pages of reference
- Practice-UI SVG follows project style guide (uniform chips,
  rx="4"/rx="5", italic footnote, MIT-red action)

Reading-pass corrections:
- MFU example math made internally consistent (B=16, AI=16, ceiling 11%)
- Battery duty-cycle punchline matches dominant-term math
- Construct-validity gap acknowledged in abstract, methodology, conclusion
- Long over-specific footnotes shortened
- Quantify/implement naming clarified with 1-line schema-id footnote

Verification:
- All numerical claims traced to corpus_stats.json + macros.tex
- 9/9 core macro-stats checks pass
- 14 area + zone counts cross-verified against repo
- Worked-example math (KV-cache 42 GB, MFU 8/11, prefill 566 ms,
  battery 1 year) all reproduces from cited specs

Closes the v0.1.0 release-readiness pillar; staffml-publish-live workflow
will deploy the corresponding website.

# Conflicts:
#	interviews/vault-cli/codegen-hashes.txt
2026-04-26 10:04:45 -04:00
Vijay Janapa Reddi
52f308b48a Merge pull request #1540 from harvard-edge/dependabot/npm_and_yarn/interviews/staffml/postcss-8.5.10
build(deps-dev): bump postcss from 8.5.8 to 8.5.10 in /interviews/staffml
2026-04-26 07:50:51 -04:00
Vijay Janapa Reddi
542aaf95d2 cleanup(vault): release-ready Phase A — schema hardening + lint calibration + chain repair
Closes the cleanup arc (A.1–A.10 in RESUME_PLAN_RELEASE.md). Every
gate is now green: vault check --strict, vault lint, vault doctor,
vault codegen --check, staffml validate-vault, Playwright (9/9), tsc.

A.1 mobile-1962.svg: renamed `Edge` → `RegEdge` in graphviz source
    (`Edge` is a reserved keyword); SVG renders cleanly. Also fixed
    tinyml-1570.py (missing `import numpy as np`) which the new failure
    log surfaced.

A.2 render_visuals.py: structured per-ID failure log written to
    `_validation_results/render_failures.json` on every run; non-zero
    exit on any per-item crash; new `--fail-fast` and `--failure-log`
    CLI options. Replaces the prior silent-failure mode.

A.3 LinkML visual schema: typed as a structured sub-schema. New
    `VisualKind` enum (svg only — `mermaid` was reserved but never
    shipped, dropped to keep the enum honest). Path regex tightened
    to `^[a-z0-9-]+\.svg$`. Alt minimum length 10, caption required
    minimum length 5. TypeScript Visual interface + Question.visual
    field added to staffml-vault-types/index.ts.

A.4 Pydantic Visual + Question validators:
    - Visual.kind hard-rejects anything but `svg`
    - Visual.path enforces the new regex
    - Visual.alt min 10 chars, caption required min 5 chars
    - Question.model_validator: visual.path MUST resolve to a real
      file under interviews/vault/visuals/<track>/. Skipped in
      production deploys where the working tree is absent.

A.5 Registry repair + doctor split:
    - tools: repair_registry.py appended 5,269 missing IDs
      (the rename refactor at 8a5c3ff3c left the append-only registry
      unsynced; this brings disk-coverage to 100%). Header block in
      id-registry.yaml documents the rebuild rationale.
    - doctor.py: split symmetric `registry-integrity` check into
      `disk-coverage` (HARD FAIL if any disk YAML id is unregistered)
      and `registry-history` (INFO ONLY for retired ids — the registry
      is by design an audit log, retired ids are normal). Pre-existing
      `_check_schema_version` bug (`versions == {1}` vs string `"1.0"`)
      fixed.

A.6 Lint calibration via 4-expert consensus + bloom-canonical
    reclassification:
    - Spawned 4 experts (Vijay Reddi, Chip Huyen, Jeff Dean,
      education-reviewer) on 42 disputed (zone, level) pairs;
      consensus-builder aggregated to 15 valid / 19 invalid / 8
      borderline.
    - User arbitrated 8 borderlines: 7 widen / 1 reclassify.
    - Built ZONE_BLOOM_AFFINITY matrix (Education-Reviewer's idea):
      every zone admits its dominant Bloom verb + adjacent verbs,
      rejects clear hierarchy violations.
    - reclassify_zone_bloom_mismatch.py applied 576 deterministic
      zone fixes via BLOOM_CANONICAL_ZONE mapping (e.g. fluency+analyze
      → analyze, recall+analyze → analyze, evaluation+apply → implement).
    - Question.model_validator(_zone_bloom_compatible): hard-rejects
      future zone-bloom mismatches at write time. Generated drafts
      can no longer ship a self-contradicting classification.
    - ZONE_LEVEL_AFFINITY widened per consensus + arbitration +
      post-reclassification adjustments. Lint warnings: 1,308 → 0.

A.7 Chain integrity:
    - repair_chains.py: drops chain refs when a chain has <2 published
      members (chain ceases to exist), renumbers all members of any
      chain whose positions are non-sequential / duplicated /
      non-monotonic-by-level. Sort key: level ascending, then old
      position, then qid (deterministic).
    - validate-vault.py: relaxed sequential check to unique-positions
      check. Position gaps from mid-chain deletions are normal; what
      matters is uniqueness + bloom-monotonicity (vault check --strict
      enforces both from YAML source-of-truth).

A.8 Practice page visual + zoom modal:
    - QuestionVisual.tsx: wraps the `<img>` in `<Zoom>` from
      react-medium-image-zoom (4 KB). Click image → fullscreen
      `<dialog data-rmiz-modal>`; ESC closes. Added test-id
      `question-visual-img` for stable selector.
    - New Playwright test: 9th in the suite, deep-links cloud-4492,
      asserts the dialog opens on click and closes on ESC.
    - TypeScript: removed `mermaid` from local Visual types in
      corpus.ts and corpus-vault.ts; tsc clean.

A.9 All gates green:
    - vault check --strict: 0 errors / 0 invariant failures
    - vault lint: 0 errors / 0 warnings (was 1,308 warnings)
    - vault codegen --check: artifacts in sync (hash baseline updated)
    - vault doctor: 0 fails (registry-history info, git-state warn
      on uncommitted state-pre-this-commit)
    - staffml validate-vault: 0 errors / 0 warnings, deployment-ready
    - Playwright: 9/9 pass (was 8; +zoom modal test)
    - render_visuals: 0 errors (was 2 silent failures pre-A.2)
    - tsc: clean

Distribution after reclassification: 9,544 published unchanged;
576 items moved zone via bloom-canonical mapping (full per-item
report at /tmp/reclassify_changes.csv). Chain count 879 → 850
after orphan-singleton drops. release_hash updated.

Carry-forward to next session (Phase B):
- Priority gap closure for parallelism cells + global L4-L6+
  (the run that produced this corpus did not close the targeted
  cells; B.3 needs specialized prompts per cell-class)
- 120 NEEDS_FIX items from coverage_loop/20260425_150712/ still
  carry judge fix_suggestions; spawn fix-agent in Phase C
2026-04-25 15:12:51 -04:00
dependabot[bot]
45b4f0ab9a build(deps-dev): bump postcss in /interviews/staffml
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.8 to 8.5.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-25 12:55:58 +00:00
Vijay Janapa Reddi
165187fe99 fix(staffml): harden question and visual export path 2026-04-24 18:09:28 -04:00
Vijay Janapa Reddi
d100de400c Merge branch 'dev' of https://github.com/harvard-edge/cs249r_book into dev 2026-04-22 18:40:51 -04:00
dependabot[bot]
110662e139 deps(staffml): bump the next-react group (#1487)
Bumps the next-react group in /interviews/staffml with 3 updates: [next](https://github.com/vercel/next.js), [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom).


Updates `next` from 15.5.15 to 16.2.4
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.5.15...v16.2.4)

Updates `react` from 19.2.4 to 19.2.5
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.5/packages/react)

Updates `react-dom` from 19.2.4 to 19.2.5
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.5/packages/react-dom)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.4
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: next-react
- dependency-name: react
  dependency-version: 19.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: next-react
- dependency-name: react-dom
  dependency-version: 19.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: next-react
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 18:37:43 -04:00
dependabot[bot]
91f3b591dd deps(staffml): bump framer-motion in /interviews/staffml (#1492)
Bumps [framer-motion](https://github.com/motiondivision/motion) from 11.18.2 to 12.38.0.
- [Changelog](https://github.com/motiondivision/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/motiondivision/motion/compare/v11.18.2...v12.38.0)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-version: 12.38.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 18:37:39 -04:00
dependabot[bot]
090ac46b1e deps(staffml): bump @types/node in /interviews/staffml (#1489)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.37 to 25.6.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.6.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 18:37:32 -04:00
Vijay Janapa Reddi
b7d16ab437 fix(staffml): resolve Next.js 15 build errors and lockfile warnings 2026-04-22 18:35:56 -04:00
dependabot[bot]
3f2af506e1 deps(staffml): bump vitest from 4.1.2 to 4.1.5 in /interviews/staffml (#1496)
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.2 to 4.1.5.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 4.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 18:32:06 -04:00
dependabot[bot]
80fe19be7e deps(staffml): bump jsdom from 29.0.1 to 29.0.2 in /interviews/staffml (#1498)
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.0.1 to 29.0.2.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.0.1...v29.0.2)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 18:32:02 -04:00
dependabot[bot]
606c17bd1e chore(deps): bump next from 15.5.14 to 15.5.15 in /interviews/staffml
Bumps [next](https://github.com/vercel/next.js) from 15.5.14 to 15.5.15.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.5.14...v15.5.15)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.15
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-12 12:22:33 +00:00
Vijay Janapa Reddi
4e00852d57 interviews: add /framework page that mirrors the periodic table
Wire the periodic-table YAML into staffml so the website has a
canonical view of the design space, with a shared sync script that
keeps the React data file derived from periodic-table/table.yml.

  * scripts/sync-periodic-table.mjs — generator that reads
    ../../periodic-table/table.yml and writes
    src/data/periodicTable.ts
  * src/data/periodicTable.ts — generated TypeScript module with the
    full element list (do not edit by hand; re-run the sync script)
  * src/app/framework/page.tsx + PeriodicTable.module.css — new
    /framework route that renders the table with role colors and
    layer rows
  * src/components/Nav.tsx — add "Framework" link with the Atom icon
  * src/app/layout.tsx, globals.css, ThemeProvider.tsx — supporting
    layout adjustments for the new route
  * package.json + lockfile — minor dependency bumps
2026-04-07 10:36:13 -04:00
Vijay Janapa Reddi
5955e4a9e2 feat(staffml): complete feedback pipeline with tests and CI
Fix the feedback data round-trip end-to-end:
- QuestionFeedback: dedup guard, aria-pressed, hydrate previous
  feedback on mount, wire Report/Suggest to analytics events
- analytics.ts: computeSummary() aggregates thumbs and difficulty
  with last-write-wins dedup per question+session
- dashboard: new thumbs ratio and difficulty distribution panels
- gauntlet: add QuestionFeedback to per-question review
- progress.ts: include analytics in export/import
- worker.js: server-side summary aggregates feedback with dedup

Add Vitest test infrastructure (34 journey tests across 2 files)
and embed type-check + test steps in both CI deploy workflows
so tests gate every build before deployment.
2026-04-05 13:19:02 -04:00
Vijay Janapa Reddi
1d3b063cdb fix(staffml): resolve all 6 Dependabot security alerts
Upgrade next 14.2 → 15.5.14, react 18 → 19, lucide-react 0.358 → 0.511.
Add picomatch >=2.3.2 override to patch ReDoS and method injection CVEs.
2026-04-03 16:25:36 -04:00
Vijay Janapa Reddi
0488d01c79 feat(tutorial): add 38 code listings + figure refs to Part 2 slides
Parts 5-9 were lecture-only (0 code blocks). Now every section has
live demo code using real mlsysim API: EconomicsModel, SustainabilityModel,
DSE search, Engine.sweep, ESP32/nRF52840/H100 comparison, Pipeline
composition, SensitivitySolver, capstone starter code.

Figure placeholders added for carbon-geography and hardware-spectrum SVGs.
2026-04-01 19:23:31 -04:00
Vijay Janapa Reddi
2bf2affacc staffml: set version to 0.0.1-dev — still in internal development 2026-03-25 15:36:30 -04:00
Vijay Janapa Reddi
28005d4389 feat(interviews): taxonomy v4.0 + StaffML taxonomy explorer + competency model
Taxonomy v4.0 (was v3.2):
- 659 concepts (was 549), 746 edges (was 601), 0 cycles (was 4)
- Fixed P0 bugs: 3 self-refs, 22 dangling prereqs, 5 bidirectional edges, 4 cycles
- Remapped 529 unmapped questions via Gemini semantic classification (99.5% mapped)
- 15 competency clusters extracted from graph
- 100% TOC coverage, 12.1% root ratio, 90% Bloom's testability

New vault.py commands:
- taxonomy-check: read-only diagnostic (cycles, dangling, stale, graph shape)
- taxonomy-fix: automated repair (self-refs, cycles, fuzzy remap, edge sync)
- taxonomy-sync: export enriched taxonomy to staffml app
- taxonomy-improve: Gemini-powered improvement rounds (toc-validate, split-overloaded, validate-edges, deepen-prereqs)
- taxonomy-apply: apply reviewed proposals from improvement rounds
- competency-model: extract competency clusters from taxonomy graph

StaffML Taxonomy Explorer (/taxonomy):
- Browse tab: sortable/filterable table with search, role badges, red dot on untested
- Graph tab: Sigma.js force-directed graph with WebGL rendering
- Coverage tab: track×level heatmap, chapter coverage bars, untested gap list
- Detail panel: description, prereqs/dependents (clickable), level distribution, textbook deep links

Also: deprecated engine/taxonomy.py, added chapter URL mapping,
updated .gitignore for ephemeral artifacts, removed 374-line inline HTML cmd_graph.
2026-03-24 10:42:07 -04:00
Vijay Janapa Reddi
be7607213b refactor(staffml): remove dead dependencies and unused components
Removed deps: mermaid, reactflow, react-markdown, remark-gfm, tailwind-merge
Removed: AnimatedFlow.tsx, MermaidRenderer.tsx, error.tsx
Kept: HardwareConfigurator.tsx (future interactive feature)
2026-03-24 08:49:43 -04:00
Vijay Janapa Reddi
20594a47d0 feat: Launch StaffML interactive interview platform
- Built a Next.js 14 App Router application in `interviews/staffml` with a premium Vercel/Linear dark-mode aesthetic.
- Developed a robust Python parser (`build_corpus.py`) to convert 1,067 Markdown flashcards into a structured `corpus.json` for the platform.
- Integrated Pyodide WebAssembly to execute the `mlsysim` Python physics engine directly in the browser without a backend.
- Created a Schema Validator (`validate_playbook.py`) to ensure all community contributions maintain structural integrity.
- Upgraded 30+ Visual Debugging scenarios with high-fidelity, theme-aware Mermaid and React Flow diagrams.
- Designed an interactive 'Data Flow' component utilizing React Flow for the Amdahl's Law communication wall.
- Added 'Proof of Work' gamification loops to drive repository stars and user engagement.
2026-03-21 19:06:25 -04:00