Repository navigation
Complete owned monitoring-to-RatelDesk incident acceptance #141
Description
Current remaining scope — integrated owner acceptance
The Services, Monitoring backend/UI and Flows engineering work is delivered in #148–#151; implementation children #142, #143, #144 and #145 are closed with their evidence. The paired connector source is also delivered, but the exact two-product live acceptance below remains open.
This epic now owns the remaining #146 connector acceptance as well, avoiding a duplicate live-gate tracker. #146 is closed as superseded by this register, not as a passed physical incident journey. The owner's pairing-code scope amendment below remains authoritative; the former dual-consent/redirect/recovery ceremony stays retired.
Remaining acceptance
- Select only an owned disposable Windows/Linux service or disk rule and a verified paired, authorized RatelDesk receiver/mapping.
- A fresh sustained breach opens one persisted occurrence and creates one retained incident with the expected exact mapping.
- Repeated bad samples, reconnect/restart/replayed samples and an ambiguous delivery retry preserve the original action/receipt and do not create another incident.
- Acknowledge does not clear/rearm. Actual recovery or authorized explicit clear ends the occurrence; a fresh complete breach window creates a new occurrence and one new incident.
- Preserve tenant/credential isolation, current pairing/mapping/grant authority, immutable flow version and durable receipt/readback.
- Record actual source/version, occurrence/action/incident correlation, duplicate/recovery evidence and owned cleanup. Source regression tests or bounded monitoring/flow reads alone do not prove this sequence.
#294 retains the distinct original HTTP MCP context ledger and general owner release gates. This epic's live sequence can support exact matching assertions there with explicit attribution, without changing their requirements or double-counting tool calls.
Retained original scope and implementation history
Current M2M scope — owner decision, 9 October 2026
Replacement implementation: #180 ↔ BostonTechnologies/rateldesk#143.
The owner has retired the old NetRatel ↔ RatelDesk approval/redirect/recovery system and requested pairing codes: Generate a Pairing Code; address + code → Pair & connect; final tenant mapping/name/incident-or-automation capabilities → Save; View/Test/Delete. The replacement owns removal of old runtime/setup records, reviewed source changes, CI, normal merges and next compatible beta artifacts. Do not continue the earlier frozen-protocol, double-consent or manual/fallback setup criteria in this historical tracker.
Monitoring, Services, Flows, stable alert/action identity and real incident outcomes remain in scope. This epic stays open for its retained feature and acceptance obligations.
The old M2M-only issues are closed as superseded, not as evidence that their failed deployed journeys passed. Historical implementation and test receipts below retain their original meaning. Source/disposable acceptance and the owner’s deployed-beta acceptance must still be reported separately.
Goal
A focused MSP monitoring vertical slice: read-only Windows/Linux service inventory; tenant/selected-client/static-group CPU, disk and selected-service rules; durable non-spammy alert episodes; named versioned visual flows; first external action creates one RatelDesk incident per alert occurrence.
RC.17 bootstrap repair #140 is independent and must not wait for this epic. Start feature branches from freshly fetched main after the hotfix, use several reviewable PRs, and allocate any subsequent candidate only through Directory.Build.props. This issue is a plan, not an implementation or release receipt.
Children and dependency order
- Services: read-only Windows/systemd inventory, Akka projection and full-screen client viewer #142 — Windows/systemd service inventory, Akka projection and full-screen Services viewer.
- Monitoring: durable CPU/disk/service rule evaluation, alert episodes and suppression #143 — Durable monitoring rules, alert occurrences, freshness, suppression and event/outbox boundary.
- Monitoring UX: Signals dashboard, scoped rules/groups, alert clear and bypass management #144 — Monitoring dashboard and scoped Rules / Groups / Bypasses management.
- Flows: integrate VeloxDev editor with versioned safe graphs and durable bounded execution #145 — VeloxDev compatibility check, visual editor, immutable flow versions and bounded durable execution.
- Flows: RatelDesk incident connector with tenant mapping and idempotent delivery #146 — RatelDesk connector, explicit organization/customer mapping and deduplicated incident delivery.
- Integration: idempotent incident creation for NetRatel monitoring delivery rateldesk#116 — Companion receiver-side idempotent incident-create contract, independently reviewed and released before reliable automatic remote retries are enabled.
- Integrated owner acceptance and exact-source release evidence for the completed phase-one feature.
Recommended sequence: #140 first as RC.17; then #142; #143; #145 compatibility check and implementation; #144 can develop against settled monitoring/flow contracts; #146 after the RatelDesk receiver contract is verified. RatelDesk companion implementation is separately authorized/scoped. A compatibility check is bounded research, not permission for another general-purpose flow framework. Each PR closes only its completed child and references this epic; do not close the epic or #138 on a partial implementation.
Source-grounded foundations
- Existing AgentGatewayTelemetryPublisher / GatewayTelemetrySnapshotCollector, AgentTelemetryGatewayV2Service, ClientTelemetryContracts, TelemetryActor and ClientTelemetryRouterActor supply authenticated CPU/memory/disk snapshots and epoch/sequence fencing. Extend these rather than adding a competing heartbeat or telemetry architecture.
- ClientTelemetryRouterActor is currently explicitly single-node; do not turn this feature into cluster/sharding migration.
- The notification event bus is bounded in-memory UI fanout with DropOldest, not a durable automation queue. Persist alert transitions and delivery work in PostgreSQL before live fanout.
- VeloxDev is at https://github.com/Axvser/VeloxDev (master). Actual Razor adapter components include WorkflowSurfaceBehavior, WorkflowNodeDragBehavior, WorkflowSlotConnectionBehavior, WorkflowSlotLayoutBehavior and WorkflowMinimapOverlay. The source advertises a Core compiler/runtime, but durable application delivery must be owned by NetRatel. Pasted AI node attributes/sample APIs are not contracts.
- RatelDesk has POST /api/v1/incidents/ and API-purpose Bearer integration credentials. Its reviewed normal create handler has no idempotency-key contract; safe external retries require receiver verification/companion work.
Phase 1 boundaries
Services are collected read-only. Discovery can list installed services for selection, including stopped ones; only explicitly selected service names/units are continuously monitored. Windows SCM + Linux systemd initially; other init systems/macOS report unsupported rather than fabricated health. Replace the redundant card ping action with Services and a full-screen service dialog; preserve automatic heartbeat latency.
Navigation under Signals: Notifications, Monitoring, Flows. Monitoring has active alerts and a compact management pane for Rules, Groups, Bypasses. Flows has a list and a NetRatel-themed VeloxDev editor. Reference mockup is visual inspiration, not a catalogue of features.
Flow node scope: Alert raised, optional typed condition, incident-field mapping, RatelDesk Create incident. Draft/save/validate/publish-version/dry-run/run-history only. No arbitrary code/SQL/shell/HTTP, remediation, loops, delays, schedules, AI/MCP graph control, Slack/email, or bidirectional ticket sync in phase 1.
Non-spam contract
One logical series is tenant + rule + agent + resource. Fresh sustained breach opens one persisted episode; continued breach updates it without another action. Real sustained recovery clears/rearms. Acknowledge does not clear/rearm. Explicit operator Clear ends that occurrence and rearms only on NEW fresh samples and a new full breach window; a reason is required. Bypass suppresses actions for its scope while evaluation/audit continue. Silence expiry never replays a backlog. Missing/stale/unsupported/partial samples are Unknown, not zero/healthy. Reconnect/restart/replayed samples/config-label edits cannot emit duplicates.
Persist episode transition + event/outbox atomically; enforce uniqueness and concurrency fencing. Pin flow version/config for a dispatched event; persist per-action delivery keys and external receipt. Receiver deduplication is required for safe retry after an ambiguous HTTP outcome; never claim exactly-once from an in-memory flag or preflight ticket search.
Completion / validation
Children must cover code and rendered UX, durable restart/concurrency/duplicate/out-of-order/stale-sample tests, tenant/credential isolation, receiver timeout-after-commit replay, graph serialization roundtrip, and an owner acceptance path: selected Windows/Linux service or disk breach -> one incident -> repeated bad samples still one -> recovery/explicit clear -> new occurrence -> one new incident. Service read access must work for an offline cached inventory with clear timestamps. No live client lifecycle/enrollment CI is introduced.
Read AGENTS.md and any scoped instructions. Preserve Akka-only runtime, tenant/auth/consent, identity, package integrity, updater rollback, publication guards. No SQLite/Timescale/Redis/Kafka dependency or wholesale platform rewrite. Do not auto-close this epic when the first child merges.
Implementation progress — 2 October 2026
The owner's task authorizes the complete NetRatel feature work after the separate RC.17 hotfix. Each child has its own reviewable PR; beta changes remain unmerged.
- RC.17 complete: PR #147 merged; v0.1.0-rc.17 published with all build/publication checks complete. Thirteen public assets and five immutable image identities were independently verified. The orange early-development README warning is a separate commit. Main and the release tag remain at
c68f72d26d200b27c212aa3d85b500159ffb4ed7. - Services: read-only Windows/systemd inventory, Akka projection and full-screen client viewer #142 Services: PR #148, head
eb95f100895f4c23de8d446d058ebdd4a5ed8857; all 21 checks green. Independently verified 2,507 generic and 12 Windows tests, all passed with zero skips. - Monitoring: durable CPU/disk/service rule evaluation, alert episodes and suppression #143 Monitoring backend: PR #149, head
12732aff610e8cb2ea66dab4f1881259390915cb; all 21 checks green. Independently verified 2,613 generic and 12 Windows tests, all passed with zero skips. - Flows: integrate VeloxDev editor with versioned safe graphs and durable bounded execution #145 Flows: PR #150, head
d6f91b1a5474158445d8e57ca1c3d43ea0ba8ef9; all 21 checks green. Independently verified 2,735 generic and 12 Windows tests, all passed with zero skips. - Monitoring UX: Signals dashboard, scoped rules/groups, alert clear and bypass management #144 Monitoring UI: PR #151, head
2130e2317961cef69f7a6912d8a984398923b81d; all 21 checks green. Independently verified 2,773 generic and 12 Windows tests, all passed with zero skips. Hosted browser evidence verifies all six Services focus layouts after exact dialog removal, with stale-scope rejection covered by component tests. - Flows: RatelDesk incident connector with tenant mapping and idempotent delivery #146 NetRatel connector: PR #152, head
f283e6af810209b8e7b6b2ef6a78428d4da0a28f, above the final UI parent. Targeted proof passed 33 backend, 13 layout, 28 component and six browser cases, zero skips. All 21 checks green. Independently verified 2,833 generic and 12 Windows tests, all passed with zero skips. The receiver dependency remains explicit.
Canonical feature version is 0.1.1-beta.1, set only in Directory.Build.props. The owner will manually validate RC.17 on remote systems and cut stable v0.1.0; no beta merge, tag, public release or fleet rollout has occurred.
External delivery dependency: receiver duplicate protection remains unverified in RatelDesk #116, and the deployed receiver version is unknown. Configuration, protected credential rotation, read-only mapping checks and inert preview are implemented; executable publication/automatic incident POST remains unavailable with receiver-idempotency-unverified. No receiver code/deployment or live ticket creation is claimed. Full #146 delivery acceptance and this epic stay open; the separate stream-reset investigation #138 stays open.
Reciprocal Helpdesk M2M acceptance
Enhancement #164 adds the separate tenant-owned service registry and shared bostec.service-link.v1 foundation, consumed by the existing #146 / PR #152 connector. Companion implementation: RatelDesk #119, receiver #116, published RatelDesk 0.1.1-beta.9 at 006381c6f78ac1d37965f52ddc28bff002753055.
Expanded completion requires both initiating roles with final consent on both sides; real directional OAuth/catalog/ingest/request-task callback; protected and current tenant/resource grants; exact persisted Flow source identity; authenticated idempotent incident creation and same-receipt recovery after lost response/restart/concurrent replay; manual/policy rotation and truthful unlink recovery; actual rendered UX and supported-provider/native evidence. Preserve the five existing feature PRs and refresh/merge them in order after the independently reviewed M2M foundation. Reserved epochs alone must not displace committed gateway ownership.
The requested product release remains NetRatel 0.1.1-beta.1, independently of RatelDesk's version sequence. Keep this epic and #146 open until real two-product acceptance and the hosted release build/publication, immutable artifacts/images, anonymous pulls and published-image smokes are complete. Prior progress/history remains applicable to its original reviewed source; fresh final-head evidence will be appended.
Owner beta acceptance amendment — 2026-10-06
The owner moved the six complete two-product browser setup/consent/recovery journeys to acceptance of the deployed beta. That acceptance is pending and is no longer a prerequisite for merging the foundation or publishing NetRatel v0.1.1-beta.1. All retained automated protocol, authorization, database, ordinary browser, provider/upgrade, native, packaging and publication checks remain required. This newer decision supersedes earlier acceptance-placement wording only.
Foundation PR #166 was normally merged at a2279c4afa56115d9f52b8e289566f0fba5fa8da after the reviewed source passed all 21 PR checks. The narrow amendment preserves the existing job identities, smoke tests and required protocol/native coverage. The original owner run still records six failures at the NetRatel setup-to-login transition; their product/fixture/environment cause remains unresolved. No owner pass or setup fix is claimed, and the explicit diagnostic harness remains available.
The feature stack is prepared against the merged foundation and current Services/ownership fixes. The complete #152 sender, receiver evidence, recovery and migration continuity changes have passing focused local database, contract, component and ordinary-browser checks. Fresh public-source CI, including the hosted physical monitoring proof, and normal ordered merges #148 → #149 → #150 → #151 → #152 remain pending. The retained main validation and current #148 validation contain failed rotation checks; those negative receipts remain preserved and do not count as successful gates.
The supported published companion remains RatelDesk 0.1.1-beta.14, source a3017363d22205a6897087c0e7fed7b541a5d5d9. RatelDesk lifecycle fix #134 was normally merged at e543fb13eb0e23db09fdfd6b4232067cecf61675 with all 17 PR and main checks passing. Its beta.15 release build is still running; beta.15 will be bound only after its public assets and images are verified. The separate companion sequence does not change the requested NetRatel v0.1.1-beta.1 target.
Hosted NetRatel beta build/publication and deployment references remain outstanding. This epic, #146 and companion acceptance items stay open wherever owner deployment results are still required. Completed code and verified releases will be recorded separately; beta.2 client resilience remains outside this task.
Activity
Add Discord/Slack notifications, action groups, and grouped offline a…
[-]Epic: Phase 1 services monitoring and VeloxDev alert-to-RatelDesk flows[/-][+]Complete owned monitoring-to-RatelDesk incident acceptance[/+]Proxicon commentedon Oct 24, 2026
beta.47 carry-forward and integrated owner acceptance
The Services, Monitoring, Flows and paired-connector source remains delivered. The exact owned monitoring-to-RatelDesk incident journey remains open. Beta.47 also delivers the Services correlation and policy-administration surfaces tracked separately in #399 and #398; those additions do not by themselves prove incident delivery.
Implementation receipts from the completed engineering children remain credited within their recorded scope. The retired duplicate connector tracker remains superseded by this epic, not marked as a passed live journey. The owner's current pairing-code workflow remains authoritative; the historical dual-consent/redirect/recovery ceremony is not reinstated.
Remaining owner gate
Use only an owned disposable Windows/Linux service or disk rule and a verified currently authorized paired receiver/mapping. A fresh sustained breach must open one persisted occurrence and create one retained incident with the exact expected mapping and pinned flow version. Continued bad samples, reconnect/restart/replayed samples and an ambiguous delivery retry must preserve the original action/receipt and avoid a second incident.
Verify that acknowledgement does not clear or rearm the occurrence. Actual sustained recovery or an authorized explicit clear ends it; only a new full fresh breach window may create a new occurrence and one new incident. Preserve tenant/credential isolation, current pairing/mapping/grant authority, receiver duplicate protection and durable receipt/readback.
Retain the actual deployed source/version and the private occurrence/action/incident relationship, then complete owned cleanup in dependency order. Source tests, dry-runs and bounded monitoring/flow reads are not the complete physical incident sequence. Attribute any matching #294 assertion to its exact evidence without double-counting invocations or changing that ledger's requirements. Keep this epic open until the integrated live sequence is proved.
Delivered in the consolidated beta.47 change at source
f587d8f050ac991e126f3d6ab9d3375191a220e6. Distribution evidence: beta.47 release, all-target release build, and completed publication. These references establish source/build/distribution delivery; live acceptance is recorded separately.