What's built today (most things), what's spine-ready (a few days of scaffolding away), what's still outstanding (the year-1 university roadmap).
20modules in MODULE_REGISTRY
263routes in app.py
144HTML templates
29,137lines in app.py
10,159crawler-pass score, Lab variant
0hard fails across 26k+ assertions
instruments finance receipts inbox notifications attendance todos letters queue calendar stats vehicles personnel vendor_payments mess qr_attendance tuck_shop compute admin insights
bcrypt password store, CSRF on by default, secure cookies, rate-limited login (10/5min/IP).
owner · super_admin · site_admin · instrument_admin · operator · member · finance · professor · requester. Two-layer scoping: role × area assignment.
Polymorphic approval_steps table — works across sample requests, leave requests, vendor payments, anything. Load-balances across approver pools.
SHA-256 chain on every mutation. Tamper-evident. Crawler verifies chain integrity on every wave.
In-database per-user inbox. Polymorphic emit, severity-tagged, deep-link to source entity.
Apple-tile aesthetic, card_heading / stat_blob / chart_bar / empty_state, data-vis per-role theming.
First cut at templates/org_chart.html: blobs per user, directional reporting arrows, click to change reports-to, drag to pin, super/site-admin gated. Extension to unit nodes is in flight. See mockup →
Privacy-floor user-behaviour telemetry: route hits, click actions (auto-inferred from DOM), session start/end, portal switches. 90-day retention purge runs at init_db. Does not capture raw mouse coordinates, keystrokes, form values, or any cross-session fingerprinting. Dashboard at /insights, backend in the insights module.
skeleton · testing · roleplay · feature · backend · data — 16+ strategies including csrf_token_present, css_variable_defined, aria_label_present. Hourly sanity, daily wave-all, weekly security sweep.
Two orthogonal axes: start_demo_channels.sh (release versions) and start_erp_triad.sh (module bundles). Same codebase, different config.
Policy + planning docs backing the build. All live under sahajpur-university/docs/ (source in private repo):
CHARTER.md · STRUCTURE_PROPOSAL_v1.md · PLAN.md · POPULATIONS_AND_BUILD_OPTIONS.md
APPROVAL_ROUTES.md · BUDGETS.md · AUDIT_RECORDS.md · OPENING_DAY.md · HOSTING.md
HIRING_STRATEGY.md · SCHOLARSHIPS.md · CURRICULUM_SHAPE.md
SECURITY_POLICY.md · INCIDENT_RUNBOOK.md · DATA_POLICY.md
MODULE_SPECS/admissions.md — full build spec for year-1 admissions portal. Others follow this template.
DEEP_CRAWL_REPORT.md · FIRE_PLAN_DAY1_REPORT.md · FIRE_PLAN_RAVIKIRAN_DEMO_7D.md
These don't need new architecture — just scaffolding on existing primitives:
org_chart.htmlaudit_logs)The year-1 MIT new University roadmap needs these — each is a full portal build, not a quick scaffold:
admissions academics (courses, programs, timetable) exams + grades + transcripts student self-service hostel library placement parent portal research output tracker compliance export (UGC/AICTE/NAAC) SMS notification channel structure-editor v2 (full Deco graph editing)
Each portal is 1-3 days of spine-backed scaffolding plus 1-2 weeks of refinement with real users. Build sequencing in STRUCTURE_PROPOSAL_v1.md §11. Full admissions spec in MODULE_SPECS/admissions.md (both source in private repo).
@requires_module decorator + code-mod.wave sanity on Operations + Compute variants. Fallback tile in dashboard.html pending.MODULE_REGISTRY (now 20 keys), ERP_PORTALS (lab + hq only), erp_portals DB table, doc'd CATALYST_MODULES bundles. Need reconciliation.cross_variant_bleed crawler strategy.seed_ravikiran_ops() and seed_compute() are literal TODOs.Full report in DEEP_CRAWL_REPORT.md (source in private repo). Day-2 of the fire plan is closing these.