Dataforth UI push + dedup + refactor, GuruRMM roadmap evolution, Azure signing setup
Dataforth (projects/dataforth-dos/): - UI feature: row coloring + PUSH/RE-PUSH buttons + Website Status filter - Database dedup to one row per SN (2.89M -> 469K rows, UNIQUE constraint added) - Import logic handles FAIL -> PASS retest transition - Refactored upload-to-api.js to render datasheets in-memory (dropped For_Web filesystem dep) - Bulk pushed 170,984 records to Hoffman API - Statistical sanity check: 100/100 stamped SNs verified on Hoffman GuruRMM (projects/msp-tools/guru-rmm/): - ROADMAP.md: added Terminology (5-tier hierarchy), Tunnel Channels Phase 2, Logging/Audit/Observability, Multi-tenancy, Modular Architecture, Protocol Versioning, Certificates sections + Decisions Log - CONTEXT.md: hierarchy table, new anti-patterns (bootstrap sacred, no cross-module imports), revised next-steps priorities Session logs for both projects. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# GuruRMM - Project Context
|
||||
|
||||
**Last Updated:** 2026-04-14
|
||||
**Status:** Active Development - Tunnel Phase 1 Complete
|
||||
**Last Updated:** 2026-04-15
|
||||
**Status:** Active Development - Tunnel Phase 1 Verified Live; Phase 2 Unblocked
|
||||
|
||||
## Quick Start - Infrastructure Overview
|
||||
|
||||
@@ -38,10 +38,26 @@
|
||||
- SL-SERVER: **STUCK IN PENDING UPDATE** - requires manual service restart
|
||||
|
||||
### Recent Session Logs (MUST READ BEFORE CONTINUING WORK)
|
||||
- **2026-04-15:** End-to-end tunnel lifecycle verified via public API. Three actionable findings — `session-logs/2026-04-15-session.md`
|
||||
- **2026-04-14:** Tunnel API testing, authentication fix - `session-logs/2026-04-14-session.md`
|
||||
- **2026-04-02:** Tunnel implementation, update bug fixes - See git history
|
||||
- **2026-04-01:** Cloudflare Tunnel configuration - See credentials.md
|
||||
|
||||
### What To Do Next (priority order, revised 2026-04-15)
|
||||
|
||||
**Architectural pivot:** multi-tenancy is now a core requirement (product going to MSP market). Logging split into three tiers (agent OS-native / client event pull / tunnel audit to DB). Detailed breakdown in ROADMAP.md (sections: Logging & Audit, Multi-tenancy, Tunnel Channels).
|
||||
|
||||
1. **Fix `/api/v1/tunnel/status/{id}` 403 bug** — `server/src/db/tunnel.rs:94-103`. Small PR. Blocks Phase 2 integration tests. (Roadmap S8.)
|
||||
2. **Agent self-logging via OS-native sinks** — Windows Event Log provider, Linux journald, macOS os_log. Ship before anything else touches Phase 2. (Roadmap L1.)
|
||||
3. **Tech-side tunnel subscriber design** — browser needs a WS endpoint to receive tunnel data; `server/src/ws/mod.rs:808-825` currently discards `AgentMessage::TunnelData`. Decide pub-sub shape before implementing any channel. (Roadmap T5.)
|
||||
4. **Multi-tenancy schema** — `tenant_id` on every table. Auth middleware filters by tenant. Do this before building more features because retroactive migration cost scales with schema size. (Roadmap M1-M2.)
|
||||
5. **Terminal channel** — only after 1-4. `tokio::process::Command` in `agent/src/transport/websocket.rs:handle_tunnel_data()`. (Roadmap T1.)
|
||||
6. **Client event pull (`client_events` table)** — 15-min delta + on-tunnel-open/close. Windows Get-WinEvent, Linux journalctl, macOS log show. (Roadmap L2-L4.)
|
||||
|
||||
**Housekeeping:**
|
||||
- Update 1Password `Infrastructure/GuruRMM Server/Admin Password` to `GuruRMM2025` (stored value is stale and fails login).
|
||||
- Add agent file logging (`C:\ProgramData\GuruRMM\agent.log`) as bridge until OS-native sinks land — lets Phase 2 work proceed with visibility.
|
||||
|
||||
## Anti-Patterns (DON'T DO THIS)
|
||||
|
||||
❌ **DO NOT build on macOS** - Binaries won't run on Linux server. SSH to 172.16.3.30 and build natively.
|
||||
@@ -62,6 +78,22 @@
|
||||
|
||||
❌ **DO NOT use emojis** - ASCII markers only: [OK], [ERROR], [WARNING], [SUCCESS], [INFO]
|
||||
|
||||
❌ **DO NOT make breaking changes to `/api/v1/bootstrap/hello`** - This is the anchor that lets long-offline agents reconnect and self-upgrade. Input and output schemas are **additive-only forever**. An agent from v0.1 must be able to hit this endpoint in 2030 and get a meaningful response telling it how to update. Every other endpoint/message is free to evolve; this one is not. See ROADMAP.md V1-V10.
|
||||
|
||||
❌ **DO NOT cross module boundaries by importing another module's internals** - The product is architected modularly (core + PSA + backups + syslog + ...). Modules own their schema namespace and never touch another module's tables. Cross-module communication goes through the event bus or that module's exposed API only. Core and modules are separate Rust crates by design; enforce via `use` restrictions. Breaking this discipline once poisons the whole architecture. See ROADMAP.md X1-X12.
|
||||
|
||||
### Hierarchy Terminology (use these exact terms)
|
||||
|
||||
| Tier | Term | DB | Meaning |
|
||||
|---|---|---|---|
|
||||
| 1 | Platform | — | The software author (us, GuruRMM) |
|
||||
| 2 | Partner | `tenant_id` | An MSP — a paying customer of the Platform |
|
||||
| 3 | Client | `client_id` | A Partner's customer |
|
||||
| 4 | Site | `site_id` | A location within a Client (physical or logical) |
|
||||
| 5 | Agent | `agent_id` | An endpoint at a Site |
|
||||
|
||||
UI/API says "Partner"; DB column is `tenant_id`. Do not rename. Do not use "sub-tenant" or bare "customer". Full canonical definition + API path convention + event topic naming in ROADMAP.md Terminology section.
|
||||
|
||||
## Where to Find Things
|
||||
|
||||
### Codebase Structure
|
||||
@@ -304,10 +336,15 @@ enum AgentMessage {
|
||||
|
||||
### Backlog
|
||||
- [ ] Fix SL-SERVER stuck update (manual restart required)
|
||||
- [ ] Investigate 4 duplicate agent records in database
|
||||
- [ ] Investigate 4 duplicate agent records in database (2x SL-SERVER seen)
|
||||
- [ ] Windows update system testing (scheduled task timing)
|
||||
- [ ] Agent reconnection on network failure
|
||||
- [ ] Multi-tenant access control audit
|
||||
- [ ] **[2026-04-15] Status endpoint returns 403 for closed sessions** — should return `{status: closed}` with session record when caller owns it. See session log. (Tracked as Roadmap S8.)
|
||||
- [ ] **[2026-04-15] Agent writes no logs** — add tracing+file appender to `agent/src/main.rs`; logs to `C:\ProgramData\GuruRMM\agent.log`. (Bridge to Roadmap L1 OS-native sinks.)
|
||||
- [ ] **[2026-04-15] Logging redesign — three-tier architecture.** See ROADMAP.md "Logging, Audit & Observability" section (L1-L10).
|
||||
- [ ] **[2026-04-15] Multi-tenancy schema refactor.** See ROADMAP.md "Multi-tenancy / MSP SaaS" section (M1-M7). Blocks scaling to other MSPs.
|
||||
- [ ] **[2026-04-15] Tunnel Channels (Phase 2).** See ROADMAP.md "Tunnel Channels" section (T1-T8). T5 (tech-side subscriber) is the gating design decision.
|
||||
|
||||
## Useful Links
|
||||
|
||||
|
||||
Reference in New Issue
Block a user