| BL01 |
Scheduler Trigger |
P1 |
DONE |
ARC, ENDO |
M-NEXUS-E1 |
E1 (Execution Engine) |
Cron-style trigger node. Schedule a pipeline run at fixed interval or fixed time. Supports one-shot and recurring modes. Required for ARC email ingest (daily) and ENDO Marcin lead poll. |
| BL02 |
SMS Node |
P1 |
DONE |
ENDO (Marcin) |
M-NEXUS-D3 |
E1 |
Inbound and outbound SMS. D-08 resolved: Mock SMS (log payload + canvas display). Inbound: parse sender/body, write to pipeline run context. Outbound: log entry displayed in run view. |
| BL03 |
Validator Node |
P1 |
DONE |
Nesto, ARC |
M-NEXUS-E2 |
E1 |
Schema-driven field validation. Rule set configured at PICO scale. Outputs pass/fail + error list to run context. D-07 resolved: mock HTTP Forward — UAE API forward nodes use mock log + 200. Validator still runs against schema rules. For ARC: bank CSV column validation. |
| BL04 |
AI Transform (Text) |
P1 |
DONE |
ENDO (Irena, Marcin), ARC |
M-NEXUS-E2 |
E1 |
Send text payload to Claude API. D-05 resolved: Real Claude API key. Input: text + system prompt template (configured at MICRO). Output: structured JSON written to run context. Used for: lead qualification (Marcin), offer drafting (ARC), email sentiment (ARC). |
| BL05 |
HTTP Forward |
P2 |
DONE |
Nesto, ARC, ENDO |
M-NEXUS-E1 |
E1 |
POST run context (or subset) to a configured HTTP endpoint. Configurable: URL, headers, field mapping, timeout, retry policy. For Nesto: forward to MOHRE / Emirates ID / GDRFA (real or mock per D-07). For ARC: forward to client webhooks. |
| BL06 |
AI Transform (Voice) |
P2 |
DONE |
ENDO (Przemek) |
M-NEXUS-E3 |
BL04 + E2 |
Transcribe audio attachment (wav/mp3) via STT service, then pipe transcript through AI Transform / Real Claude (BL04). D-05 resolved: Real Claude API key. STT provider TBD (Whisper API / Azure Speech). |
| BL07 |
OCR Node |
P2 |
DONE |
Nesto, ENDO (Irena) |
M-NEXUS-E2 |
E1 + CV-1 (ChameleonV2 DocumentReference BDT) |
Extract text from uploaded PDF or image via OCR service. Write extracted fields to run context using field-mapping config (MICRO). For Nesto: passport fields + visa stamp. For Irena: invoice / document classification prep. OCR provider TBD (Tesseract / Azure Form Recognizer). |
| BL08 |
Transformer Node |
P2 |
DONE |
ARC (Invoice Match) |
M-NEXUS-E2 |
E1 |
Field mapping and data transformation. Input: run context fields. Config: JSONata or simple key-value map expressions. Output: transformed fields written back to run context. Used for bank CSV normalisation (ARC UC3-2) and date/currency format standardisation. |
| BL09 |
SMS Reply Node |
P3 |
DONE |
ENDO (Marcin) |
M-NEXUS-D4 |
BL02 |
Send outbound SMS reply using context from prior pipeline steps. Template engine: mustache-style field interpolation from run context. D-08 resolved: Mock SMS (log + canvas display). Used by Marcin pipeline step 6 (confirm appointment). |
| BL10 |
PDF Generator |
P3 |
DONE |
ARC (Offer Pipeline) |
M-NEXUS-E3 |
E2 + BL04 |
Render run context fields into a PDF using a configured HTML template. Output: PDF attachment stored to run context file reference. Used by ARC UC3-1b offer pipeline (step 5: PDF forward to client). Candidate library: WeasyPrint or Puppeteer headless. |
| BL11 |
Email Forward |
P3 |
DONE |
Nesto, ENDO (Irena), ARC |
M-NEXUS-E1 |
E1 |
Send email with configurable To/CC/subject/body template and optional attachment (from run context file reference). For Nesto: notify HR of decision (step 8). For Irena: forward categorised document (step 6). For ARC: send PDF offer (step 5). SMTP or SendGrid. |
| BL12 |
Report Generator |
P3 |
DONE |
ARC (Invoice Match) |
M-NEXUS-E3 |
E2 + BL08 |
Aggregate run context fields into a structured report (CSV or JSON). Config: field list, grouping, aggregation functions (sum, count). For ARC UC3-2: produce tax report from matched invoice rows. Output stored to run context and optionally forwarded via BL11. |
| BL13 |
Form Node |
P2 |
DONE |
Nesto, ENDO, ARC |
M-NEXUS-E2-1 |
ChameleonV2 |
Generate ChameleonV2 form URL for human data entry. Returns form_url + awaiting_submission status. Demo/test mode: prefilled_data bypasses the wait and returns data immediately. |
| BL14 |
Validate Node |
P2 |
DONE |
Nesto (compliance) |
M-NEXUS-E2-2 |
BL13, Nexus engine |
Call Nexus rule engine POST /api/validate with entity payload + rule_set. Returns per-field violation list. Raises ValueError on FAIL-severity violations (configurable raise_on_fail). |
| BL15 |
Store Node |
P2 |
DONE |
Nesto, ARC |
M-NEXUS-E2-3 |
BL14, deltaPrism |
Persist entity to deltaPrism Mode 1 warehouse. POST for create, PUT for upsert (id_field present). Returns stored entity_id. Raises RuntimeError if deltaPrism unreachable or response missing entity_id. |
| BL16 |
Human Gate Node |
P2 |
DONE |
Nesto, ARC |
M-NEXUS-E3-1 |
BL13, E1-3 SSE |
Pauses pipeline execution pending human decision. Demo mode: resolves immediately with resolution_data. Live mode: raises HumanGateAwaiting — runner stores awaiting_human state, resumes on ChameleonV2 form submit. Returns gate_result + gate_node_status. |
| BL17 |
Data Model Diagram (P-13) |
P2 |
DONE |
Platform |
M-ORCH |
— |
Add a visual relationship diagram to data-model.html showing all tables, primary keys, foreign keys, and cardinality (one-to-many / many-to-many). Required by documentation policy P-13. Use a sanctioned HTML/CSS diagram component (P-07). Covers: entities, profiles, rules, runs, logs, orgs, users, and the M-ORCH multi-tenant tables (org / team / account / user / pipeline / node_type / run). |
| BL18 |
Purge Schema from Architecture Docs (P-14) |
P2 |
DONE |
Platform |
M-ORCH |
BL17 |
Audit all architecture documents (architecture.html, NEXUS_HLD.html, ORCHESTRATION_PLAN.html, use case docs) for inline table schema. Any column lists, DDL, or field-type definitions found must be removed and replaced with a cross-reference link to data-model.html. Required by documentation policy P-14. Depends on BL17 (data model must be complete before schema is removed from architecture docs). |
| BL19 |
Rename demo-auto (remove theatre terminology) |
P1 |
DONE |
Demo |
M-ORCH |
— |
Rename id="demo-theatre" to id="demo-auto", window.demoTheatre to window.nexusAuto, all dt-* CSS classes to da-*. Remove all “theatre” wording from NEXUS_DEMO_SPEC.html. Existing animation overlay is deprecated by BL22. See NEXUS_DEMO_VISION.html. |
| BL20 |
Entity Creation Panels (Org, Team, User) |
P1 |
DONE |
Demo |
M-ORCH |
BL19 |
Add entity creation side-panel component using existing #class-panel infrastructure. Supports Org, Team, User entity types. Fields driven by the data template registry (BL21). Panel opens/closes with existing animation. Save writes to in-memory state and updates org/team/user dropdowns in the toolbar. |
| BL21 |
Data Template Registry + Intellisense Field Proposals |
P1 |
DONE |
Demo |
M-ORCH |
BL20 |
Implement DATA_TEMPLATES registry with 7+ built-in templates (Person, Worker UAE, Organisation, Team, Compliance Document, Pipeline Run Result, API Endpoint). Wire template selection into schema creation flow. Inline field proposal list on node/schema creation. Confirmation finalises schema and updates canvas palette. |
| BL22 |
Autonomous Mode Controller (window.nexusAuto) |
P1 |
DONE |
Demo |
M-ORCH |
BL20, BL21 |
Implement full 9-step autonomous sequence as defined in NEXUS_DEMO_VISION.html Section 03. Async generator architecture. No overlay — all DOM interactions through real UI paths. Canvas visible throughout. Pacing at inflection points. Speed multiplier support. Progress indicator in toolbar. Cancel on second DEMO click. Replaces current overlay entirely. |
| BL23 |
RBAC-Driven Form Generator |
P1 |
DONE |
Demo |
M-ORCH |
BL21 |
Form generation from schema + RBAC matrix. Four role variants: Entry (Submitter), Review (Validator), Decision (HR Manager), Payload (API Consumer). Form opens in the existing side panel. Fields generated from schema field list filtered by role visibility matrix. Style variant applied via CSS class on panel root. See NEXUS_DEMO_VISION.html Section 05. |
| BL24 |
Schema → Canvas Palette Sync |
P2 |
DONE |
Demo |
M-ORCH |
BL21 |
When a schema is confirmed, update the canvas node type palette with typed node variants: FormNode[SchemaName], StoreNode[SchemaName], ValidateNode[SchemaName]. Dragging a typed node auto-populates its config with the correct schema reference, required field list, and default rule set. |
| BL25 |
Demo Vision Doc — Registry + Nav + Index Card |
P2 |
DONE |
Platform |
M-ORCH |
— |
Add NEXUS_DEMO_VISION.html to NEXUS_DOC_HIERARCHY.html active registry (row 21). Update doc count to 21 in all relevant headers. Add doc card to index.html. Update NEXUS_DOC_POLICY.html sitemap to include the new file. |
| BL26 |
WORMWOOD_APP Pipeline Versioning UI — REQ-VER-005 |
P1 |
OPEN |
Platform |
M-ORCH |
REQ-VER-005 |
Add status badge pills (DRAFT amber / ACTIVE green / ARCHIVED grey) per pipeline row in WORMWOOD_APP.html pipeline list. Add per-row action buttons: Draft → [Publish][Edit][Export][Delete]; Active → [Deactivate][Fork][Export]; Archived → [Restore][Export]. Publish action shows confirmation dialog: “Publishing v{X} will archive current active v{Y}. Continue?”. Calls new API endpoints: POST /pipelines/{id}/publish, /deactivate, /restore, /fork, GET /pipelines/{id}/descriptor. |
| BL27 |
Hub Card Health Indicator — REQ-ENV-001 |
P1 |
OPEN |
Platform |
M-HUB |
REQ-ENV-001 |
Add live health dot + label (ONLINE/DEGRADED/OFFLINE/UNKNOWN) to each hub card. Poll GET /orgs/{org_slug}/environments/production at 10s interval. Clicking dot navigates to App Management page env detail. Requires BL28 (environments API) to exist first. |
| BL28 |
Environment Management — DB, API, Lifecycle — REQ-ENV-002/003/004 |
P1 |
OPEN |
Platform |
M-API |
REQ-ENV-002, REQ-ENV-003, REQ-ENV-004 |
Create DB table _tbl_org_environments (org_slug, name, slug, version, status, url, created_at, last_deployed_at). Implement 10 API endpoints: GET/POST /orgs/{org_slug}/environments; GET/start/stop/restart/backup/upgrade/downgrade /orgs/{org_slug}/environments/{env_slug}; GET /backups. Seed production environments for all active orgs. Alembic migration required. |
| BL29 |
App Management Page SPA — REQ-MGMT-001/002/003 |
P1 |
OPEN |
Platform |
M-HUB |
REQ-MGMT-001, REQ-MGMT-002, REQ-MGMT-003, BL28 |
Create docs/APP_MGMT.html SPA. Sections: header (org name, env selector, health dot), environments panel (list with action buttons), pipeline versions (REQ-VER-002), backups, settings (RMB editor). Prominent “Open App” CTA, “Back to Hub” button. Deep-link support: ?org=X&env=Y. Skin inherited via ?skin= param. Inherits NEXUS_APP.html enterWorkspace() for Open App action. |
| BL30 |
Hub Card Click → App Management (navigation change) — REQ-MGMT-001 |
P1 |
OPEN |
Platform |
M-HUB |
REQ-MGMT-001, BL29 |
Replace enterWorkspace() onclick on .hub-card with navigateToManagement(orgData) in NEXUS_APP.html. Update all Playwright E2E tests (test_card_click_nav_flow) to assert navigation to APP_MGMT.html rather than direct workspace entry. Update NEXUS_APP_SPEC.html US-HUB-020 ACs (already done 2026-05-06). |
| BL31 |
Hub Card RMB Context Menu — REQ-RMB-001/002/003 |
P2 |
OPEN |
Platform |
M-HUB |
REQ-RMB-001, REQ-RMB-002, REQ-RMB-003, BL28, BL29 |
Create DB table _tbl_org_rmb_items (org_slug, label, action_type, action_target, icon, order, enabled, demo_mode). Implement GET/PUT /orgs/{org_slug}/rmb-items. Add contextmenu event handler to .hub-card in NEXUS_APP.html: initCardRmb(), renderRmbMenu(), rmbAction(), dismissRmbMenu(). Default 4 items always present. Inline mini-dialog for env_action type. Toast notifications for action results. |
| BL32 |
RMB Demo Mode — REQ-RMB-005 |
P2 |
OPEN |
Platform |
M-HUB |
REQ-RMB-005, BL31 |
Add demo_mode boolean column to _tbl_org_rmb_items. In rmbAction(): if item.demo_mode, show walkthrough animation without executing real API call. Tag demo items with DEMO pill in the RMB menu. Useful for client demos that show capabilities without live env impact. |
| BL33 |
App Settings RMB Menu Editor — REQ-RMB-004 |
P2 |
OPEN |
Platform |
M-HUB |
REQ-RMB-004, BL29, BL31 |
In APP_MGMT.html Settings section: drag-drop reorder (HTML5 draggable or Sortable.js), toggle enabled per item, add new item form (label, action_type selector, target, icon), delete with confirmation, live preview pane. “Reset to defaults” restores 4 system defaults only. Saves via PUT /orgs/{org_slug}/rmb-items. |
| BL34 |
Hub App Filter — S-Tier Design Rework |
P2 |
OPEN |
Platform |
M-HUB |
REQ-HUB-FILTER, NEXUS_APP_STYLING.html |
The current filter row (SORTUJ pill, STATUS/TYP/KLIENT flat label rows, plain search input) is functional but not product-quality design. Required rework: (1) Filter chips with individual remove buttons per active filter, (2) Active filter count badge on filter toggle button, (3) Collapsible filter panel with animated open/close matching hub card glass aesthetic (dark glass, border glow), (4) STATUS filter uses coloured dot pills matching org status colours (green=Prod, amber=Dev, grey=Plan), (5) TYP filter uses category icon + label chips, (6) KLIENT dropdown replaced with searchable combobox, (7) “Clear all” action appears only when filters active, (8) Filter state persisted in URL params so filtered view is shareable. References: docs/NEXUS_APP_REQUIREMENTS.html REQ-HUB-FILTER-001..006, docs/NEXUS_APP_STYLING.html design token set, docs/NEXUS_APP_SPEC.html US-HUB-FILTER user stories. |
| BL35 |
RAID Log and Roadmap — Replace Arbitrary Mock Data with Accurate Real Content |
P1 |
OPEN |
Platform |
M-HUB |
NEXUS_ROADMAP.html, docs/NEXUS_OPERATIONAL_BACKLOG.md |
Current docs/NEXUS_ROADMAP.html milestone dates and phase labels are placeholders invented at document creation time and do not reflect actual sprint delivery history. Required: (1) Read docs/NEXUS_SPRINT4_RECKONING.html and docs/NEXUS_SPRINT5_PLAN.html — extract actual milestone completion dates, (2) Read docs/NEXUS_OPERATIONAL_BACKLOG.md — extract known upcoming deliverables, (3) Audit every date in docs/NEXUS_ROADMAP.html against those sources — remove any date with no documented evidence and replace with a realistic estimate derived from sprint velocity, (4) Read ROTC_MANIFEST.md RAID section — ensure every RAID item in the roadmap has a corresponding entry in docs/KNOWN_ISSUES.md or sprint reckoning doc, (5) Remove any roadmap item that has no corresponding backlog entry (BL01..BL37) or sprint task. Deliverable: NEXUS_ROADMAP.html where every date has a source citation in a HTML comment. |
| BL36 |
APP_MGMT Pipelines Section — Per-Pipeline Orchestrator Deep-Link Button |
P2 |
OPEN |
Platform |
M-HUB |
REQ-MGMT-002, BL29, BL26, docs/NEXUS_ORCHESTRATOR_USER_MANUAL.html |
The Pipelines/Versions section of docs/APP_MGMT.html lists pipeline rows but provides no way to open a specific pipeline in the Orchestrator canvas. Required: (1) Each pipeline row gets an “Open in Orchestrator” icon button (chain-link icon), (2) Button constructs URL: WORMWOOD_APP.html?org={org_slug}&pipeline={pipeline_slug}&skin={current_skin}&key={localStorage('nexus-api-key')}, (3) WORMWOOD_APP.html already reads all four params from the URL — no changes required there, (4) Button opens in same tab (not new tab), skin and key are passed the same way as the existing “Open App” button (T-14 in Sprint 5), (5) Gate 4 static check: assert the per-pipeline link construction exists in APP_MGMT.html, (6) Gate 11 section: assert at least one pipeline row has the link button and its href contains pipeline slug, skin, and key params. References: docs/NEXUS_APP_REQUIREMENTS.html REQ-MGMT-002, docs/NEXUS_ORCHESTRATOR_USER_MANUAL.html deep-link section. |
| BL37 |
APP_MGMT — Complete Gate 11 User Story Coverage Including Context Menu and All Hook Flows |
P1 |
OPEN |
Platform |
M-HUB |
NEXUS_APP_SPEC.html, REQ-MGMT-*, REQ-RMB-*, REQ-ENV-*, REQ-VER-* |
Gate 11 currently has sections covering APP_MGMT tabs (S20), orchestrator link (S21), user modal (S22), users save (S23), envs save (S24). Required: a dedicated Gate 11 section for EVERY user story in docs/NEXUS_APP_SPEC.html tagged US-MGMT-* or US-RMB-*. Specifically missing: (1) Context menu (RMB) complete user story flows — right-click card, menu renders with correct items, each action type executes correctly or shows demo animation, dismiss on click-outside; covers REQ-RMB-001 through REQ-RMB-005, (2) Environment action hooks — start/stop/restart/backup/upgrade/downgrade buttons trigger correct API calls or surface correct errors, (3) Pipeline version status badge rendering — DRAFT/ACTIVE/ARCHIVED badges visible per row, action buttons present per status, (4) Backup list render and download flow, (5) Health indicator poll and status update, (6) Settings RMB editor drag-reorder, toggle, add, delete, reset-to-defaults. Each user story gets its own _section_N_ function in scripts/gate_11_uat_visual.py with full screenshot sequence and field-level assertions. References: docs/NEXUS_APP_SPEC.html all US-MGMT-* and US-RMB-* stories, docs/NEXUS_APP_REQUIREMENTS.html REQ-MGMT-001..006 and REQ-RMB-001..005. |
| BL38 |
REQ-AUTH-005: Backend — User Management API + DB Migration |
P1 |
DONE |
Platform |
M-AUTH |
REQ-AUTH-005, NEXUS_LLD.html 7.7–7.9, A-16 |
Implement three user management API endpoints in wormwood/api/routes_auth.py and update the data model. (1) Add require_nexus_admin decorator: verifies Bearer JWT, checks nexus_role == nexus_admin, raises HTTP 403 if not. (2) GET /auth/users: returns all NexusPlatformUser rows as JSON array; fields: id, email, display_name, nexus_role, is_active, last_login_at, created_at. (3) PATCH /auth/users/{id}/role: body {"role": "nexus_admin"|"nexus_user"}. 422 on invalid role. 404 user not found. 409 + cannot_demote_self if id == jwt.sub. Writes role_updated_at = utcnow(), role_updated_by = requesting_admin_email. Returns updated record. (4) PATCH /auth/users/{id}/active: body {"is_active": true|false}. 409 + cannot_deactivate_self if id == jwt.sub. Auth callback checks is_active == 0 on every login and redirects with HTTP 403 + account_deactivated if false. (5) Update admin/models.py NexusPlatformUser: add is_active (Integer, default=1), role_updated_at (DateTime, nullable), role_updated_by (Text, nullable). (6) Create admin/migrate_m_nexus_06.py: ALTER TABLE _tbl_nexus_platform_users ADD COLUMN for all 3 new columns. create_all does not add columns to existing tables. DONE 2026-05-11 — ISSUE-073 fix deployed via ACT_deploy_engine_issue073.py. gate_11 S36 PASS. |
| BL39 |
REQ-AUTH-005: Frontend — Users Tab in APP_MGMT.html |
P1 |
DONE |
Platform |
M-AUTH |
REQ-AUTH-005, NEXUS_APP_MOCKUPS.html section 07 & 07b, BL38 |
Add "Użytkownicy" tab to docs/APP_MGMT.html. Visible only when JWT role == nexus_admin. (1) loadUsersTable(): calls GET /auth/users, renders glassmorphism table (Email/Imię, Rola badge, Status dot, Ostatnie logowanie, Dołączył, Akcje). Self row has action buttons disabled (self-protection guard, AC-005-06/07). Deactivated rows at opacity 0.65 + strikethrough email. (2) openRoleModal(userId, currentRole): renders role change modal (ref: NEXUS_APP_MOCKUPS.html 07b). Amber warning on nexus_admin escalation. Blocks if userId == jwt.sub. (3) patchUserRole(userId, newRole): calls PATCH /auth/users/{userId}/role. Success: toast + optimistic row update. 409: error message in modal. (4) patchUserActive(userId, isActive): calls PATCH /auth/users/{userId}/active. Success: toast + row visual state switch. 409: error toast. Depends on BL38. DONE 2026-05-11 — gate_11 S36 PASS. ISSUE-073 fix deployed. |
| BL40 |
REQ-AUTH-005: Post-build documentation update |
P2 |
DONE |
Platform |
M-AUTH |
REQ-AUTH-005, NEXUS_COMPONENT_STATUS.html, NEXUS_APP_USER_MANUAL.html, BL38, BL39 |
After BL38 + BL39 deployed and verified: (1) NEXUS_COMPONENT_STATUS.html auth components updated to VERIFIED (2026-05-11). (2) NEXUS_LLD.html updated with ISSUE-073 root cause and fix. (3) NEXUS_APP_USER_MANUAL.html updated with 8h session note. DONE 2026-05-11 — All documentation updated this session. gate_11 S34/35/36 PASS. |