Skip to content

Complete owned monitoring-to-RatelDesk incident acceptance #141

Open

Description

@Proxicon

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

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.

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

  1. changed the title [-]Epic: Phase 1 services monitoring and VeloxDev alert-to-RatelDesk flows[/-] [+]Complete owned monitoring-to-RatelDesk incident acceptance[/+] on Oct 22, 2026
  2. Proxicon commented on Oct 24, 2026

    @Proxicon
    ContributorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions