Deterministic OSTEP-aligned simulator core implemented in Go with:
- deterministic engine + replay log + golden hash testing
- process lifecycle and schedulers (FIFO, RR, MLFQ)
- syscall/trap path with async device interrupts
- virtual memory (VA->PA, TLB, faults, FIFO replacement)
- filesystem path traversal + block mapping
- lesson engine with chapter-grounded lesson theory and deterministic challenge grading
- prerequisite-gated curriculum path (Virtualization -> Concurrency -> Persistence)
- basic completion analytics per challenge attempt
go test ./...
go run ./cmd/simcli -program "SYSCALL open /docs/readme.txt; SYSCALL read 4; SYSCALL write 3; SYSCALL exit" -steps 16
go run ./cmd/simcli -run-lesson-packgo run ./cmd/server -addr :8080
pnpm --dir=web install
pnpm --dir=web run devOptional infrastructure bootstrap:
- set
DATABASE_URLto enable Postgres pool bootstrap on server startup - leave
DATABASE_URLunset to run in simulator-only mode
Web routes:
/: OSTEP section overview with lesson titles (Introduction/Security shown as coming soon)/lesson/:lessonId/learn: theory-only lesson page/lesson/:lessonId/challenge: challenge page with actions, visualization, and goal+submit
- Backend:
chi,pgx+sqlc,golang-migrate,zap,golangci-lint,air - Frontend:
Vite,Tailwind CSS,TanStack Query,ESLint+Prettier,Vitest
Use make targets:
make fmt- format Go codemake fmt-check- verify Go formattingmake lint- run Go lint checksmake test- full testsmake test-race- race detector testsmake test-coverage- enforce package coverage targetsmake test-deterministic- deterministic regression suitemake lesson-pack- lesson-pack analytics smokemake sqlc-generate- generate typed DB access code from SQLmake sqlc-verify- verify generated DB code is up to datemake ci-go- Go CI-equivalent local runmake ci-web- web CI-equivalent local runmake ci-security- security CI-equivalent local runmake audit-unused- detect unused/dead code signals (Go + TypeScript)make db-up/make db-down/make db-status- run local DB migrationsmake db-create name=add_feature- create migration pairmake dev-server- run backend with live reload via airmake web-format-check- run Prettier check for web sourcesmake ci- full CI-equivalent local runmake security- vulnerability and dependency audit checksmake release-check- CI checks + full build
simcli supports:
- structured observability output:
-emit-observability - CPU profile:
-cpu-profile cpu.pprof - runtime trace:
-trace-file runtime.trace
Example:
go run ./cmd/simcli -program "ACCESS 0x0 r; ACCESS 0x1000 r; EXIT" -steps 12 -emit-observability -cpu-profile cpu.pprof -trace-file runtime.traceSee docs/release-checklist.md.
- API reference:
docs/api.md - Architecture:
docs/architecture.md - Engineering workflow:
docs/engineering-workflow.md - ADR index:
docs/adr/README.md - Contribution guide:
CONTRIBUTING.md - Security policy:
SECURITY.md
See docs/deployment-free.md for the recommended free setup (Render + Cloudflare Pages + GitHub deploy smoke checks).