A public practice room for reasoning and technical work in a real editor. The DSA study packet owns the practice engine, catalog, problems, tests, authored guides, reference sheets, and printable sources. This repository owns the static reading surface at dsa-woodshed.space, navigation, search, and publication.
Python is the currently runnable discipline. Future language curricula require actual exercises and acceptance evidence. Personal practice records and employer material stay downstream.
Work from a personal fork with origin pointing to your fork and upstream to
DSA-Woodshed/dsa-woodshed.space. See CONTRIBUTING.md.
nix develop .#playwright
just setup
just gate
just e2e
just devjust is the public entrypoint. The pinned site.scaffold Nix shell supplies
Node 22, Bazelisk, pnpm, Just, Python, and Chromium. Bazel owns finite build,
typecheck, lint, unit test, and package actions. just build transactionally
materializes //:build at build/; the build includes Pagefind and verifies
content, diagrams, the printable digest, and the exact deployment receipt.
Package scripts delegate to Just and never recursively call themselves.
The public xoxd.ai navigation, footer, theme picker, palette, and licensed fonts
come from immutable xoxd_public_chrome and xoxd_theme modules. First-party
packages are linked from their Bazel //:pkg targets. Anonymous builds require
no private package registry or credentials. Local execution, GitHub-hosted runner
pickup, shared-cache attachment, and remote execution are separate evidence;
local validation proves this graph; GitHub Actions runs the same commands on public hosted runners.
The committed src/content/.manifest.json pins one exact packet commit and a
printable release digest. Normal sync and build reproduce that lock; just packet-lock <40-character-sha> is the only command that advances the revision.
To advance the printable release in the same transaction, pass a validated
booklet metadata file as the second argument. Sync verifies the PDF size and
digest before accepting the new lock and restores prior outputs on failure.
Set WOODSHED_PACKET_PATH to the packet Git checkout, or put it next to this
checkout as ../dsa-study-packet. Sync reads immutable Git objects, exports the
packet catalog into /capabilities.json, and verifies generated bytes before
publication. The site's guided start dialog uses that same catalog to select
intent, a time budget, and an available capability before opening Codespaces.
The two rendering lanes remain distinct: mdsvex .svx for prose and the raw
Markdown renderer for code-heavy reference sheets. Change authored content in
the packet repository, then advance this repository's lock. Every content page
links to its packet source.
Practice opens the active challenges. Library collects algorithms, references, and printables. Method explains the practice flow. Project is a concise public landing that links the source-of-truth and contribution rules. Legacy orientation URLs redirect to Project. Personal agent integrations and provider instructions live in contribution-fork overlays, outside org mains.
Production Pages jobs run only in DSA-Woodshed/dsa-woodshed.space, refuse stale
main revisions, and verify the served site commit, packet commit, and PDF digest.
DNS custody remains in the existing private infrastructure overlay.