Jump to release
v25.7.57 ยท Sprint 5 v25.7.57 ยท Sprint 4 v25.7.57 ยท Sprints 1-3 v25.7.54โ56 v25.7.47โ53 v25.7.42โ46 v25.7.37โ41 Legacy v7.0โv25.7.36v25.7.57 ยท Sprint 5 โ ๐ Council Chamber + ๐ฎ Game Studio + Async-Task Pattern + ES-Modules Phase 2
February 2026 ยท iteration_127 โ iteration_128 (19/19 backend, 4/4 frontend) ยท version held per directive
backend AI Directors โ Council Chamber
routes/ai_directors.pyยทPOST /api/ai-directors/council/discussโ spawnsasyncio.create_task(_run_council), returns{session_id, status:'running'}in 152ms.- 4-turn sequence:
whca_director_business(Ops) โproduct_dev_manager(Schematic) โapp_janitor(Risk) โwhca_director_health(Human-Impact). Each turn ends withโ DELEGATE/โ APPROVE/โ ESCALATE. - Per-turn progress persisted to
db.ai_council_sessionsso polling shows live state. GET /api/ai-directors/council/job/{session_id}returns the running row + transcript array. Frontend/ai/council.htmlpolls every 4s.
backend Game Studio (full creator pipeline)
- New router
routes/game_studio.py(~530 LOC). Pipeline:draft โ upload-bundle (SHA-256) โ submit (council review async) โ approve (Merkle proof registered) โ published โ play (sandboxed iframe). - Mongo:
db.games,db.tcl_game_proofs. Status state machine:draft | reviewing | submitted | published | rejected. - Bundle constraints: 25 MB cap, .html-only (single-file games), filename sanitised to alphanumerics+dot+dash, content-filter scan for banned phrases.
- Revenue models:
sovereign95/5 vsspotlight80/20.starter_qncapped 0-10 on the server. - Play endpoint: returns the bundle with strict CSP (
frame-ancestors *intentional for embedding; SA can lock down later).
infra The asyncio.to_thread fix
- iter-127 finding: 4ร sequential Claude calls (~20s each) inside one HTTP handler exceeded the K8s ingress ~100s read timeout, causing 502s while backend silently completed.
- iter-127 first refactor: moved work into
asyncio.create_taskโ but convene latency was still 23s. Root cause:emergentintegrations.llm.chatuses sync HTTP under the hood, soawait chat.send_message()blocks the asyncio loop. - iter-128 fix verified: wrap each LLM call in
asyncio.to_thread(lambda: asyncio.run(...))โ spins up a worker thread + nested event loop per call. Convene/submit now return in 152ms; concurrent calls verified non-blocking.
reply = await asyncio.wait_for(
asyncio.to_thread(lambda: asyncio.run(chat_obj.send_message(UserMessage(text=user_msg)))),
timeout=45,
)
security Anonymous IP rate-limit
ai_directors.pyยท_rate_limit_anon(ip)uses a per-IPcollections.dequewith rolling 1-hour window. ANON_PER_HOUR = 8.- Returns 429 with friendly L1 signup CTA in
detail. Per-process only โ multi-replica deploys will have per-replica counters (acceptable for current scale).
frontend ES-Modules Phase 2
js/dashboard.js(2042 LOC) relocated tojs/features/dashboard.js. Loaded BEFORE main-app.js so all dashboard globals (loadMemberDashboard, executeHashNavigation, goHome, goToDashboard) are present at SPA boot.- Phase 3 plan: extract
features/qinote.js,features/messaging.js,features/admin.jsfrommain-app.js(now ~8990 LOC, down from a high of ~9100). - Phase 4 plan: switch index.html to
<script type="module">and drop the window.* compat shim.
backend NuWallet bridge wired
js/wallet-live-update.js:50โ everyrefreshWallet()call now also firesNuWallet.localUpdate({delta})so subscribers (chip, dashboard pill, wallet widget) repaint sub-second.js/learning-tasks.js:219+js/fba-phase2.js:244โ optimisticlocalUpdatethe moment the server confirms a credit.
db New collections / fields this sprint
db.ai_council_sessions { id, session_id, status, convened_by, question, context, transcript[], turn_completed, created_at, completed_at }
db.games { id, title, pitch, format, revenue_model, creator_id, creator_email, status, bundle_path, bundle_sha256, bundle_size, council_review{transcript[], overall_verdict}, merkle_proof, plays, is_deleted, ... }
db.tcl_game_proofs { game_id, asset_sha256, registered_at, registered_by }
db.ai_dept_trainers { agent_key, department_id, name, title, system_prompt, min_tier, active, created_at, created_by }
v25.7.57 ยท Sprint 4 โ ๐ AI Directors Framework
February 2026 ยท iteration_126 (14/14 backend)
routes/ai_directors.pybuilt โAGENT_REGISTRYwith 4 in-house agents (Dr. Sekhmet/whca_director_health, Director Het-Heru/whca_director_business, Imhotep/product_dev_manager, Watcher Nun/app_janitor). Each has tuned system prompt with_BASE_TERMINOLOGY("the NuBein ePronomy", "Wholistic HealthCare", capitalised We/Us/Our).- RBAC by
min_tier: 0/1/2/5 โ anonymous gets only Dr. Sekhmet (rudimentary), L2+ unlocks Business + Product Dev, Steward+ unlocks App Janitor. - WHCA Health is tier-aware: same agent_key but the user-message has an appended VIEWER-TIER block that swaps between the short-rudimentary CTA and the full HealthCare protocol response.
_resolve_agent()also pulls SA-managed dept trainers fromdb.ai_dept_trainers(created viaPOST /trainers, listed/deleted atGET/DELETE /trainers).- Frontend:
/ai-directors.html(tier-aware grid) + per-agent themed pages/ai/{whca-health,whca-business,product-dev,app-janitor}.htmlusing sharedjs/ai-directors-chat.jsmount helper.
v25.7.57 ยท Sprints 1-3 โ What's New Card + ES-Modules Phase 1 + Test-Credentials Migration
February 2026 ยท version held since sprint 1
- Sprint 1:
js/whatsnew-card.jsโ one-time release-notes modal keyed onseen_whatsnew_V25.7.57*LS flag. - Sprint 2:
state/auth.js+state/config.js(and nowstate/wallet.js) โ formal Phase-1 boundary. Loaded BEFORE all other JS. Mirrors towindow.*for compat. - Sprint 3:
backend/tests/_migrate_credentials.pymigrated 148 hardcoded test credentials across 64 files toos.environ.get(...).tests/_credentials.pyis now the canonical source.
v25.7.54โ56 ยท Code-Review Triage + Streak Multiplier + Final Scaffold Delete
February 2026
- Auto-rotating promo videos with editable/approvable list (
routes/videos.pyยท 4 endpoints + 6h background loop). - Streak Multiplier in Sovereign Arcade โ 10+ steward actions = 1.5ร, 30+ = 2.0ร. Compounds with growth-path multiplier (
routes/arcade.py). - Permanent delete of
frontend/src/_archived_react_scaffold_v25_7_54/(37 files).randomโsecretsintcl_common.py+challenges.py.memory/CODE_REVIEW_NOTES.mddocuments resolved false positives.
v25.7.47โ53 ยท NuBrowser + Auto-Polls + UX Modes + Sprint C Videos + Spotlight + Steward Queue
February 2026
routes/feature_gates.pywith 35 seeded block-gates + 6 global flags. SA-configurable via/sa-feature-gates.html.routes/auto_polls.pyยท Civic Pulse Agent generates 2-3 polls/3-days via Claude (Emergent LLM key), curated fallback. Per-poll doughnut stats, reminder bulk-insert.routes/steward_queue.pyunified L4 approval queue (glossary + lessons + jobs). Streak: every 10 actions = +50 QN todb.wallets.balance_qinote.- Sprint C:
routes/videos.py7 endpoints with 600 MB cap + Emergent object storage. Landing banner + announcement system. - Sovereign Spotlight 1-screen signup CTA (
js/sovereign-spotlight-cta.js) for anonymous visitors.
v25.7.42โ46 ยท PaC Birth Registry + WHCA Foundations + Login Dead-Click Fix
February 2026
routes/nubein_registry.pyยท field-level Fernet AES encryption (BIRTH_REGISTRY_FERNET_KEYin .env). Tiered permissions L1-L5+. Co-parent flow viaPOST /{id}/co-sign.- WHCA mission seeded: 6 glossary terms, 3 lessons, 4 recruiting reqs (pending SA approval).
- Login modal simplified to email+password (role auto-defaults to
member). Brute-force_login_attempts.clear()on boot. SA reset-password endpoint added. - Version badge converted to
<a href>(popup-blocker safe). Button + overlay audit module with bubble exemptions.
v25.7.37โ41 ยท Earning while Learning + Active QN + Learning Tasks + Engagement
February 2026
routes/arcade_engagement.pyโ POST/api/arcade/engagement/pingawards QN per category (SA-adjustable rate + daily cap).routes/learning_tasks.pyโ Claude-generated tasks behind admin approval; curated fallback seeded on first boot.- SA Arcade Editor extended with
engagement_rates+engagement_daily_qn_cap. - Frontend:
js/active-qn.jsheartbeat + corner chip;js/learning-tasks.jsJob-Board injection + replayable intro.
v7.0 โ v25.7.36 ยท Legacy (high-level)
2024โ2025
- v25.7.27โ35: Sovereign Arcade (5 retro games), Avatars (chat/RPG/leaderboards), Files Vault (Trash/Restore), EmperiaL Music 5-stage AI pipeline, universal "What's Next" CTAs.
- v25.7.24: Terminology pivot to "the NuBein ePronomy" (replaces Nu-Conomy everywhere). FBA Phase 2 Stripe Checkout + Plaid ACH stubs. Anu Guide nudges + Department group To-Dos.
- v25.7.x RPG Revamp: XP bar, level-up cutscenes, Quest Arc skin on 9-Day-Strong calendar, Pillar Guild Hall themes, Tribal Treasury Living Map, Oracle Crystal help bubble.
- v23 tCL Sovereignty: per-entry public Merkle inclusion-proof endpoints (
routes/tcl_audit.py), plain-talk help guide. - v19โ22: The AnkhCestral Codex + 9 Enlightenment Lessons + Group Chat + Job Board.
- v7โv18: Membership Levels (L1โL5), QiNote Treasury + Tribal Treasury, EmperiaL Music Industry v1, Pillar Journey + Focus, Notifications stack (in-app/email/SMS/push), Delivery + Rideshare scaffolding, Department managers + AI persona stubs, QiNote Pay P2P, TNSE marketplace, Daily Anu Guide Nudge v1, Admin Asset Manager, Free-trial allowance.
For per-iteration test reports, see /app/test_reports/iteration_*.json.
For source of truth on architectural decisions, see /app/memory/PRD.md and /app/memory/CODE_REVIEW_NOTES.md.