feat(guide): dev audience tier + GUIDE_SERVED_AUDIENCES env cap (prod = customer,internal)

4-tier ladder customer<internal<dev<bcos. Re-tagged Architect/Testing/Claude +
platform/technical from internal->dev; Processes stays bcos. Backend visible()
enforces a per-instance served-audiences cap at the API. bcos.dev/DLX serve all;
production sets GUIDE_SERVED_AUDIENCES=customer,internal so dev/bcos never leave
dev. Verified: capped instance returns only Customer+Internal, 404s dev/bcos.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 17:11:00 -04:00
parent e02aab4d3b
commit 930a4b968e
231 changed files with 262 additions and 233 deletions
@@ -22,6 +22,26 @@ public class MarkdownGuideService {
private volatile List<GuideDoc> docs = List.of(); private volatile List<GuideDoc> docs = List.of();
/** Which audience tiers this instance serves — the per-environment cap.
* bcos.dev/DLX = all; production = customer,internal. */
@org.springframework.beans.factory.annotation.Value("${guide.served-audiences:customer,internal,dev,bcos}")
private String servedRaw;
private volatile Set<String> served;
private Set<String> served() {
Set<String> s = served;
if (s == null) {
s = new HashSet<>();
for (String x : servedRaw.split(",")) {
x = x.trim().toLowerCase(Locale.ROOT);
if (!x.isEmpty()) s.add(x);
}
served = s;
log.info("Guide serving audience tiers: {}", s);
}
return s;
}
@PostConstruct @PostConstruct
public void load() { public void load() {
List<GuideDoc> loaded = new ArrayList<>(); List<GuideDoc> loaded = new ArrayList<>();
@@ -79,12 +99,17 @@ public class MarkdownGuideService {
return new GuideDoc(app, module, title, tab, order, audience, body); return new GuideDoc(app, module, title, tab, order, audience, body);
} }
/** audience tiers: customer (all) < internal (MSP/BCOS admin) < bcos (BCOS admin only). */ /** Audience ladder: customer < internal < dev < bcos.
* First the environment cap (served tiers), then the caller's role.
* customer→all · internal/dev→MSP or BCOS admin · bcos→BCOS admin only. */
private boolean visible(GuideDoc d, boolean includeInternal, boolean includeBcos) { private boolean visible(GuideDoc d, boolean includeInternal, boolean includeBcos) {
String a = d.audience(); String a = d.audience();
if ("bcos".equals(a)) return includeBcos; if (!served().contains(a)) return false; // environment cap (prod = customer,internal)
if ("internal".equals(a)) return includeInternal; return switch (a) {
return true; case "bcos" -> includeBcos;
case "internal", "dev" -> includeInternal;
default -> true; // customer
};
} }
/** apps → modules → tabs, filtered by audience. */ /** apps → modules → tabs, filtered by audience. */
@@ -23,6 +23,10 @@ internal.secret=${INTERNAL_SECRET:dev-internal-secret}
cors.allowed-origins=${CORS_ALLOWED_ORIGINS:http://localhost:5188} cors.allowed-origins=${CORS_ALLOWED_ORIGINS:http://localhost:5188}
# Audience tiers this instance serves (per-environment cap).
# bcos.dev / DLX = all four; production = customer,internal (dev/bcos never leave dev).
guide.served-audiences=${GUIDE_SERVED_AUDIENCES:customer,internal,dev,bcos}
# In-guide feedback → Gitea issues (server-side token; reaches Gitea via public route) # In-guide feedback → Gitea issues (server-side token; reaches Gitea via public route)
gitea.base-url=${GITEA_BASE_URL:https://hiveiq-gitea.directlx.dev} gitea.base-url=${GITEA_BASE_URL:https://hiveiq-gitea.directlx.dev}
gitea.feedback.token=${GITEA_FEEDBACK_TOKEN:} gitea.feedback.token=${GITEA_FEEDBACK_TOKEN:}
@@ -3,7 +3,7 @@ module: analytics.adoons
title: Adoons Insights title: Adoons Insights
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Written 2026-07-01 from `hiveops-analytics` source. Verify against code before relying on specifics. > **Internal · architecture.** Written 2026-07-01 from `hiveops-analytics` source. Verify against code before relying on specifics.
@@ -3,7 +3,7 @@ module: analytics.adoons
title: Adoons Insights title: Adoons Insights
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> **Internal · agent reference.** Grounded in `hiveops-analytics` @ 2026-07-01. Only confirmed facts below. > **Internal · agent reference.** Grounded in `hiveops-analytics` @ 2026-07-01. Only confirmed facts below.
@@ -3,7 +3,7 @@ module: analytics.adoons
title: Adoons Insights title: Adoons Insights
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Adoons Insights** (the **Fleet Insights** tab in Analytics, `analytics.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Adoons Insights** (the **Fleet Insights** tab in Analytics, `analytics.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: analytics.agents
title: Agents title: Agents
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Grounded in hiveops-analytics + hiveops-devices source (2026-07-01). Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership], [technical.analytics]. > **Internal · architecture.** Grounded in hiveops-analytics + hiveops-devices source (2026-07-01). Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership], [technical.analytics].
@@ -3,7 +3,7 @@ module: analytics.agents
title: Agents title: Agents
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> **Internal · AI agent quick-ref.** Confirmed against source 2026-07-01. Act on confirmed facts only. > **Internal · AI agent quick-ref.** Confirmed against source 2026-07-01. Act on confirmed facts only.
@@ -3,7 +3,7 @@ module: analytics.agents
title: Agents title: Agents
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Agents** tab in HiveIQ Analytics (`analytics.bcos.dev`). This tab is **view-only** — there is nothing to create, edit, or push. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Agents** tab in HiveIQ Analytics (`analytics.bcos.dev`). This tab is **view-only** — there is nothing to create, edit, or push. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: analytics.cash
title: Cash Intelligence title: Cash Intelligence
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Grounded in `hiveops-analytics` + `hiveops-recon` source, 2026-07-01. Key point: Cash Intelligence is a **synchronous fan-out**, not the usual executor→Kafka→record-store pattern. Analytics stores nothing for this feature and consumes no Kafka topic to build it. > **Internal · architecture.** Grounded in `hiveops-analytics` + `hiveops-recon` source, 2026-07-01. Key point: Cash Intelligence is a **synchronous fan-out**, not the usual executor→Kafka→record-store pattern. Analytics stores nothing for this feature and consumes no Kafka topic to build it.
@@ -3,7 +3,7 @@ module: analytics.cash
title: Cash Intelligence title: Cash Intelligence
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Terse agent reference. Cash Intelligence = **read-only pass-through**: analytics re-shapes one recon call. Analytics owns NO cash data. > Terse agent reference. Cash Intelligence = **read-only pass-through**: analytics re-shapes one recon call. Analytics owns NO cash data.
@@ -3,7 +3,7 @@ module: analytics.cash
title: Cash Intelligence title: Cash Intelligence
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Cash Intelligence** tab (`analytics.bcos.dev`). Open the tab in the UI and mark each row Pass or Fail. This tab is **view-only** — there is nothing to create, edit, or delete. Frontend test checklist for the **Cash Intelligence** tab (`analytics.bcos.dev`). Open the tab in the UI and mark each row Pass or Fail. This tab is **view-only** — there is nothing to create, edit, or delete.
@@ -3,7 +3,7 @@ module: analytics.fleet-health
title: Fleet Health title: Fleet Health
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **How it's built.** Fleet Health is a **synchronous fan-out aggregation** — not a snapshot/Kafka read. Grounded in `FleetHealthController` + `FleetHealthService` (hiveops-analytics) and the frontend `FleetHealthTab.svelte`. Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership]. > **How it's built.** Fleet Health is a **synchronous fan-out aggregation** — not a snapshot/Kafka read. Grounded in `FleetHealthController` + `FleetHealthService` (hiveops-analytics) and the frontend `FleetHealthTab.svelte`. Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership].
@@ -3,7 +3,7 @@ module: analytics.fleet-health
title: Fleet Health title: Fleet Health
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Act-without-guessing reference. All facts from `FleetHealthController`/`FleetHealthService`/`SecurityConfig` (hiveops-analytics) + `FleetHealthTab.svelte`/`api.ts`. > Act-without-guessing reference. All facts from `FleetHealthController`/`FleetHealthService`/`SecurityConfig` (hiveops-analytics) + `FleetHealthTab.svelte`/`api.ts`.
@@ -3,7 +3,7 @@ module: analytics.fleet-health
title: Fleet Health title: Fleet Health
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Fleet Health** tab in **Analytics** (`analytics.bcos.dev`). Click through in the UI and mark each row Pass or Fail. This screen is **read-only** — there is nothing to create, edit, or delete. Frontend test checklist for the **Fleet Health** tab in **Analytics** (`analytics.bcos.dev`). Click through in the UI and mark each row Pass or Fail. This screen is **read-only** — there is nothing to create, edit, or delete.
@@ -3,7 +3,7 @@ module: analytics.incidents
title: Incident Trends title: Incident Trends
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> How the **Incident Trends** tab is built. Grounded in `hiveops-analytics` + `hiveops-incident` source, 2026-07-01. Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership]. > How the **Incident Trends** tab is built. Grounded in `hiveops-analytics` + `hiveops-incident` source, 2026-07-01. Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership].
@@ -3,7 +3,7 @@ module: analytics.incidents
title: Incident Trends title: Incident Trends
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Terse agent reference. All facts confirmed in source 2026-07-01. `hiveops-ai` = "Adoons". > Terse agent reference. All facts confirmed in source 2026-07-01. `hiveops-ai` = "Adoons".
@@ -3,7 +3,7 @@ module: analytics.incidents
title: Incident Trends title: Incident Trends
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Incident Trends** tab in Analytics (`analytics.bcos.dev`). This tab is **read-only** — there is nothing to create, edit, or delete, so the tests focus on the four panels rendering correctly and on role scoping. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Incident Trends** tab in Analytics (`analytics.bcos.dev`). This tab is **read-only** — there is nothing to create, edit, or delete, so the tests focus on the four panels rendering correctly and on role scoping. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: analytics.transactions
title: Transactions title: Transactions
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> How the **Transactions** tab is built. It is a **synchronous pull-through aggregation**, not an event-driven or snapshot-backed view. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka]. > How the **Transactions** tab is built. It is a **synchronous pull-through aggregation**, not an event-driven or snapshot-backed view. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: analytics.transactions
title: Transactions title: Transactions
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Act-without-guessing reference. Transactions tab = analytics UI tab `id: 'journal', label: 'Transactions'` → `JournalCoverageTab.svelte` → `GET /api/analytics/journal-coverage`. Data source of truth is **hiveops-journal**, not analytics. > Act-without-guessing reference. Transactions tab = analytics UI tab `id: 'journal', label: 'Transactions'` → `JournalCoverageTab.svelte` → `GET /api/analytics/journal-coverage`. Data source of truth is **hiveops-journal**, not analytics.
@@ -3,7 +3,7 @@ module: analytics.transactions
title: Transactions title: Transactions
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Transactions** tab in **Analytics** (`analytics.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Transactions** tab in **Analytics** (`analytics.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: analytics.uptime
title: Uptime title: Uptime
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **How Uptime is built.** Grounded in `hiveops-analytics` source (2026-07-01). Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership]. > **How Uptime is built.** Grounded in `hiveops-analytics` source (2026-07-01). Cross-link [platform.data-architecture], [platform.kafka], [platform.service-ownership].
@@ -3,7 +3,7 @@ module: analytics.uptime
title: Uptime title: Uptime
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Terse agent reference for `analytics.uptime`. Only confirmed facts. Act, don't guess. > Terse agent reference for `analytics.uptime`. Only confirmed facts. Act, don't guess.
@@ -3,7 +3,7 @@ module: analytics.uptime
title: Uptime title: Uptime
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Uptime** tab in Analytics (`analytics.bcos.dev`). This screen is **read-only** — there are no buttons, forms, or actions, so the tests are all about what you can *see*. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Uptime** tab in Analytics (`analytics.bcos.dev`). This screen is **read-only** — there are no buttons, forms, or actions, so the tests are all about what you can *see*. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: aria.dashboard
title: Threat Dashboard title: Threat Dashboard
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the ARIA Threat Dashboard is built. The dashboard is a **thin read-only aggregation view** — it does not own data, run detection, or consume Kafka. It renders one snapshot from `hiveops-aria`'s tables. All the interesting machinery (ingestion, IOC matching, sequence detection) runs upstream and only *populates* the tables this view reads. How the ARIA Threat Dashboard is built. The dashboard is a **thin read-only aggregation view** — it does not own data, run detection, or consume Kafka. It renders one snapshot from `hiveops-aria`'s tables. All the interesting machinery (ingestion, IOC matching, sequence detection) runs upstream and only *populates* the tables this view reads.
@@ -3,7 +3,7 @@ module: aria.dashboard
title: Threat Dashboard title: Threat Dashboard
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse act-without-guessing reference. Owner service: **`hiveops-aria`** (port **8095**, DB **`hiveiq_aria`**). Frontend: `hiveops-aria/frontend/src/components/Dashboard.svelte`. Terse act-without-guessing reference. Owner service: **`hiveops-aria`** (port **8095**, DB **`hiveiq_aria`**). Frontend: `hiveops-aria/frontend/src/components/Dashboard.svelte`.
@@ -3,7 +3,7 @@ module: aria.dashboard
title: Threat Dashboard title: Threat Dashboard
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **ARIA Threat Dashboard** (`aria.bcos.dev`) — the landing screen of the ARIA SPA. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **ARIA Threat Dashboard** (`aria.bcos.dev`) — the landing screen of the ARIA SPA. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: aria.device-posture
title: Device Posture title: Device Posture
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **How Device Posture is built.** Grounded in `hiveops-aria` backend + `hiveops-agent/hiveops-module-aria-signals`. See also [technical.aria] for the wider ARIA service. Cross-links: [platform.data-architecture], [platform.kafka], [platform.service-ownership]. > **How Device Posture is built.** Grounded in `hiveops-aria` backend + `hiveops-agent/hiveops-module-aria-signals`. See also [technical.aria] for the wider ARIA service. Cross-links: [platform.data-architecture], [platform.kafka], [platform.service-ownership].
@@ -3,7 +3,7 @@ module: aria.device-posture
title: Device Posture title: Device Posture
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Terse agent reference. Every item below confirmed in `hiveops-aria` + `hiveops-agent/hiveops-module-aria-signals`. Act without guessing. > Terse agent reference. Every item below confirmed in `hiveops-aria` + `hiveops-agent/hiveops-module-aria-signals`. Act without guessing.
@@ -3,7 +3,7 @@ module: aria.device-posture
title: Device Posture title: Device Posture
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Device Posture** (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail. This screen is **read-only** — there is nothing to create, edit, or delete. Frontend test checklist for **Device Posture** (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail. This screen is **read-only** — there is nothing to create, edit, or delete.
@@ -3,7 +3,7 @@ module: aria.ioc-feeds
title: IOC Feeds title: IOC Feeds
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **IOC Feeds** feature is built. Everything for this feature lives inside **`hiveops-aria`** — it does not call any other HiveIQ service. Cross-link [platform.service-ownership]. How the **IOC Feeds** feature is built. Everything for this feature lives inside **`hiveops-aria`** — it does not call any other HiveIQ service. Cross-link [platform.service-ownership].
@@ -3,7 +3,7 @@ module: aria.ioc-feeds
title: IOC Feeds title: IOC Feeds
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference. Everything below is confirmed in `hiveops-aria` source. Terse agent reference. Everything below is confirmed in `hiveops-aria` source.
@@ -3,7 +3,7 @@ module: aria.ioc-feeds
title: IOC Feeds title: IOC Feeds
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **IOC Feeds** in ARIA (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **IOC Feeds** in ARIA (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: aria.ioc-management
title: IOC Management title: IOC Management
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the IOC watchlist is built and how it plugs into ARIA's threat pipeline. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka]. How the IOC watchlist is built and how it plugs into ARIA's threat pipeline. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: aria.ioc-management
title: IOC Management title: IOC Management
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse act-without-guessing reference. Owning service: **`hiveops-aria`** (port 8095, DB `hiveiq_aria`). Frontend: `hiveops-aria/frontend/src/components/IocManagement.svelte` via `ariaApi` → base `/api/aria`. Terse act-without-guessing reference. Owning service: **`hiveops-aria`** (port 8095, DB `hiveiq_aria`). Frontend: `hiveops-aria/frontend/src/components/IocManagement.svelte` via `ariaApi` → base `/api/aria`.
@@ -3,7 +3,7 @@ module: aria.ioc-management
title: IOC Management title: IOC Management
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **IOC Management** in ARIA (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **IOC Management** in ARIA (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: aria.precursor-alerts
title: Precursor Alerts title: Precursor Alerts
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Precursor Alerts** feature is built. Everything lives in **hiveops-aria** (port 8095, DB `hiveiq_aria`). ARIA owns detection end-to-end — it does not read another service's tables to build alerts. See [platform.service-ownership]. How the **Precursor Alerts** feature is built. Everything lives in **hiveops-aria** (port 8095, DB `hiveiq_aria`). ARIA owns detection end-to-end — it does not read another service's tables to build alerts. See [platform.service-ownership].
@@ -3,7 +3,7 @@ module: aria.precursor-alerts
title: Precursor Alerts title: Precursor Alerts
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference. Owned by **hiveops-aria** (port 8095, DB `hiveiq_aria`). All facts below confirmed in code. Terse agent reference. Owned by **hiveops-aria** (port 8095, DB `hiveiq_aria`). All facts below confirmed in code.
@@ -3,7 +3,7 @@ module: aria.precursor-alerts
title: Precursor Alerts title: Precursor Alerts
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Precursor Alerts** (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Precursor Alerts** (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: aria.threat-events
title: Threat Events title: Threat Events
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Threat Events** feature is built. It is owned end-to-end by **`hiveops-aria`** (the threat-intelligence service, `spring.application.name=hiveops-aria`, DB `hiveiq_aria`). The screen is a thin read view; the interesting work happens in the ingest → classify → store → (optionally) publish pipeline. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka]. How the **Threat Events** feature is built. It is owned end-to-end by **`hiveops-aria`** (the threat-intelligence service, `spring.application.name=hiveops-aria`, DB `hiveiq_aria`). The screen is a thin read view; the interesting work happens in the ingest → classify → store → (optionally) publish pipeline. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: aria.threat-events
title: Threat Events title: Threat Events
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse act-without-guessing reference. Owner service: **`hiveops-aria`** (`hiveiq_aria` DB, port 8095). All facts below confirmed in `hiveops-aria` source. Terse act-without-guessing reference. Owner service: **`hiveops-aria`** (`hiveiq_aria` DB, port 8095). All facts below confirmed in `hiveops-aria` source.
@@ -3,7 +3,7 @@ module: aria.threat-events
title: Threat Events title: Threat Events
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Threat Events** (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Threat Events** (`aria.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: claims.claim-detail
title: Claim Detail title: Claim Detail
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Claim Detail** panel is built end-to-end. See [platform.service-ownership] — this feature is owned entirely by **hiveops-claims**; no other HiveOps service is called for claim, message, note, attachment, or payment data. The only external dependency is the device mirror (below). How the **Claim Detail** panel is built end-to-end. See [platform.service-ownership] — this feature is owned entirely by **hiveops-claims**; no other HiveOps service is called for claim, message, note, attachment, or payment data. The only external dependency is the device mirror (below).
@@ -3,7 +3,7 @@ module: claims.claim-detail
title: Claim Detail title: Claim Detail
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference for the **Claim Detail** panel (`ClaimPanel.svelte`). Terse agent reference for the **Claim Detail** panel (`ClaimPanel.svelte`).
@@ -3,7 +3,7 @@ module: claims.claim-detail
title: Claim Detail title: Claim Detail
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Claim Detail** panel (`claims.bcos.dev`). Open a claim, click through each tab, and mark each row Pass or Fail. Frontend test checklist for the **Claim Detail** panel (`claims.bcos.dev`). Open a claim, click through each tab, and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: claims.dashboard
title: Claims Dashboard title: Claims Dashboard
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Claims Dashboard** is built. It is a thin read view over one service — **hiveops-claims** owns all the data it shows. See [platform.service-ownership]. How the **Claims Dashboard** is built. It is a thin read view over one service — **hiveops-claims** owns all the data it shows. See [platform.service-ownership].
@@ -3,7 +3,7 @@ module: claims.dashboard
title: Claims Dashboard title: Claims Dashboard
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference for the Claims Dashboard view. Owner service: **hiveops-claims** (`hiveiq-claims`, port 8092, image `hiveiq-claims`). Frontend: `Dashboard.svelte` in `hiveops-claims/frontend`. Terse agent reference for the Claims Dashboard view. Owner service: **hiveops-claims** (`hiveiq-claims`, port 8092, image `hiveiq-claims`). Frontend: `Dashboard.svelte` in `hiveops-claims/frontend`.
@@ -3,7 +3,7 @@ module: claims.dashboard
title: Claims Dashboard title: Claims Dashboard
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Claims Dashboard** (`claims.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Claims Dashboard** (`claims.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: claims.settings
title: Settings title: Settings
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the Claims **Settings** (vendor email templates) feature is built. Single-service, synchronous, DB-backed — **no Kafka, no executor/record-store pattern** in this feature. See [platform.service-ownership]. How the Claims **Settings** (vendor email templates) feature is built. Single-service, synchronous, DB-backed — **no Kafka, no executor/record-store pattern** in this feature. See [platform.service-ownership].
@@ -3,7 +3,7 @@ module: claims.settings
title: Settings title: Settings
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse reference. Feature = **vendor email templates** shown on the Claims Settings screen (read-only display of the *effective* template). Terse reference. Feature = **vendor email templates** shown on the Claims Settings screen (read-only display of the *effective* template).
@@ -3,7 +3,7 @@ module: claims.settings
title: Settings title: Settings
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Claims → Settings** (`claims.bcos.dev`). The Settings screen is a **read-only** view of the effective vendor-email template — there is nothing to create or edit here. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Claims → Settings** (`claims.bcos.dev`). The Settings screen is a **read-only** view of the effective vendor-email template — there is nothing to create or edit here. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: claims.vendors
title: Vendors title: Vendors
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** How the Vendor Registry feature is built. All facts grounded in hiveops-claims source (2026-07-01). See [platform.service-ownership], [platform.data-architecture], [platform.kafka]. > **Internal · architecture.** How the Vendor Registry feature is built. All facts grounded in hiveops-claims source (2026-07-01). See [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: claims.vendors
title: Vendors title: Vendors
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Act-without-guessing reference. All items code-confirmed in hiveops-claims (2026-07-01) unless marked (unverified). > Act-without-guessing reference. All items code-confirmed in hiveops-claims (2026-07-01) unless marked (unverified).
@@ -3,7 +3,7 @@ module: claims.vendors
title: Vendors title: Vendors
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Vendor Registry** (`claims.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Vendor Registry** (`claims.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: dashboard.cash-stats
title: Cash Stats title: Cash Stats
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Cash Stats** page is built end-to-end. It is a thin read view over data that another service derives — the interesting work happens in `hiveops-journal`, not in the dashboard. See [platform.service-ownership]. How the **Cash Stats** page is built end-to-end. It is a thin read view over data that another service derives — the interesting work happens in `hiveops-journal`, not in the dashboard. See [platform.service-ownership].
@@ -3,7 +3,7 @@ module: dashboard.cash-stats
title: Cash Stats title: Cash Stats
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference for `dashboard.cash-stats`. Read view over cassette bill counts. Terse agent reference for `dashboard.cash-stats`. Read view over cassette bill counts.
@@ -3,7 +3,7 @@ module: dashboard.cash-stats
title: Cash Stats title: Cash Stats
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Cash Stats** page (`dashboard.bcos.dev`). Click through in the UI and mark each row Pass or Fail. The page is **read-only** — there is nothing to create, edit, or delete, so testing is about what you can **see** and **filter**. Frontend test checklist for the **Cash Stats** page (`dashboard.bcos.dev`). Click through in the UI and mark each row Pass or Fail. The page is **read-only** — there is nothing to create, edit, or delete, so testing is about what you can **see** and **filter**.
@@ -3,7 +3,7 @@ module: dashboard.overview
title: Fleet Overview title: Fleet Overview
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
## Shape of the feature ## Shape of the feature
@@ -3,7 +3,7 @@ module: dashboard.overview
title: Fleet Overview title: Fleet Overview
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
## Identity ## Identity
@@ -3,7 +3,7 @@ module: dashboard.overview
title: Fleet Overview title: Fleet Overview
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Fleet Overview** landing page (`dashboard.bcos.dev`). Click through in the UI and mark each row Pass or Fail. This screen is **read-only** — there is nothing to create, edit, or delete, so testing focuses on what each card shows and on role scoping. Frontend test checklist for the **Fleet Overview** landing page (`dashboard.bcos.dev`). Click through in the UI and mark each row Pass or Fail. This screen is **read-only** — there is nothing to create, edit, or delete, so testing focuses on what each card shows and on role scoping.
@@ -3,7 +3,7 @@ module: devices.agent-profile
title: Agent Profile title: Agent Profile
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Agent Profile** feature is built end to end. Profiles are lightweight hardware-grouping records; the "which modules" logic is resolved at render time by joining profile records against a CDN-hosted module manifest. See [platform.service-ownership], [platform.data-architecture], [platform.kafka]. How the **Agent Profile** feature is built end to end. Profiles are lightweight hardware-grouping records; the "which modules" logic is resolved at render time by joining profile records against a CDN-hosted module manifest. See [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: devices.agent-profile
title: Agent Profile title: Agent Profile
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse act-without-guessing reference. Feature = hardware profiles controlling agent module provisioning. Terse act-without-guessing reference. Feature = hardware profiles controlling agent module provisioning.
@@ -3,7 +3,7 @@ module: devices.agent-profile
title: Agent Profile title: Agent Profile
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Agent Profile** (Devices Settings Agent Profile, `devices.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Agent Profile** (Devices Settings Agent Profile, `devices.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.agent-scripts
title: Agent Scripts title: Agent Scripts
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Architect · internal.** Written 2026-07-01 from source. Describes both what is **built** (a devices-owned CRUD store) and the **intended** signed-delivery pipeline that partly exists in hiveops-fleet + the agent but is **not yet connected** to this module's Push action. > **Architect · internal.** Written 2026-07-01 from source. Describes both what is **built** (a devices-owned CRUD store) and the **intended** signed-delivery pipeline that partly exists in hiveops-fleet + the agent but is **not yet connected** to this module's Push action.
@@ -3,7 +3,7 @@ module: devices.agent-scripts
title: Agent Scripts title: Agent Scripts
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Act-without-guessing reference. Only confirmed facts (hiveops-devices source, 2026-07-01). > Act-without-guessing reference. Only confirmed facts (hiveops-devices source, 2026-07-01).
@@ -3,7 +3,7 @@ module: devices.agent-scripts
title: Agent Scripts title: Agent Scripts
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Agent Scripts** (`devices.bcos.dev` → **Settings → Agent Scripts**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Agent Scripts** (`devices.bcos.dev` → **Settings → Agent Scripts**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.config-audit
title: Config Audit title: Config Audit
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture view.** How Config Audit is built inside `hiveops-devices`. Grounded in source 2026-07-01. > **Internal · architecture view.** How Config Audit is built inside `hiveops-devices`. Grounded in source 2026-07-01.
@@ -3,7 +3,7 @@ module: devices.config-audit
title: Config Audit title: Config Audit
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Terse agent reference. All facts below verified in `hiveops-devices` source (2026-07-01). > Terse agent reference. All facts below verified in `hiveops-devices` source (2026-07-01).
@@ -3,7 +3,7 @@ module: devices.config-audit
title: Config Audit title: Config Audit
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Config Audit** in the Devices app (`devices.bcos.dev` → **Settings → Config Audit**, header reads **Config Change Audit**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Config Audit** in the Devices app (`devices.bcos.dev` → **Settings → Config Audit**, header reads **Config Change Audit**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.device-detail
title: Device Detail title: Device Detail
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the single-device page is built. Component `AtmDetail.svelte` (~4.2k lines) is a tabbed shell; the "Details" surface is owned by **hiveops-devices**, but the page is a **multi-service aggregator** — most tabs fan out to other backends. See [platform.service-ownership] and [technical.devices]. How the single-device page is built. Component `AtmDetail.svelte` (~4.2k lines) is a tabbed shell; the "Details" surface is owned by **hiveops-devices**, but the page is a **multi-service aggregator** — most tabs fan out to other backends. See [platform.service-ownership] and [technical.devices].
@@ -3,7 +3,7 @@ module: devices.device-detail
title: Device Detail title: Device Detail
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Act-without-guessing reference for `devices.device-detail` (`AtmDetail.svelte`). Act-without-guessing reference for `devices.device-detail` (`AtmDetail.svelte`).
@@ -3,7 +3,7 @@ module: devices.device-detail
title: Device Detail title: Device Detail
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Device Detail** page (`devices.bcos.dev`). Open a device, click through the tabs and actions, and mark each row Pass or Fail. Frontend test checklist for the **Device Detail** page (`devices.bcos.dev`). Open a device, click through the tabs and actions, and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.device-groups
title: Device Groups title: Device Groups
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Grounded in `hiveops-devices` backend + `AtmGroups.svelte` + `api.ts` (2026-07-01). > **Internal · architecture.** Grounded in `hiveops-devices` backend + `AtmGroups.svelte` + `api.ts` (2026-07-01).
@@ -3,7 +3,7 @@ module: devices.device-groups
title: Device Groups title: Device Groups
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
## Owner ## Owner
@@ -3,7 +3,7 @@ module: devices.device-groups
title: Device Groups title: Device Groups
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Device Groups** (`devices.bcos.dev` → **Device Groups**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Device Groups** (`devices.bcos.dev` → **Device Groups**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.device-list
title: Device List title: Device List
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the Device List is built. Frontend: `hiveops-devices/frontend/src/components/AtmManagement/AtmList.svelte`. Backend of record: **hiveops-devices** (Spring Boot, port **8096**, DB `hiveiq_devices`). See [platform.service-ownership], [platform.data-architecture], [platform.kafka]. How the Device List is built. Frontend: `hiveops-devices/frontend/src/components/AtmManagement/AtmList.svelte`. Backend of record: **hiveops-devices** (Spring Boot, port **8096**, DB `hiveiq_devices`). See [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: devices.device-list
title: Device List title: Device List
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference. Frontend: `hiveops-devices/frontend/src/components/AtmManagement/AtmList.svelte`. Terse agent reference. Frontend: `hiveops-devices/frontend/src/components/AtmManagement/AtmList.svelte`.
@@ -3,7 +3,7 @@ module: devices.device-list
title: Device List title: Device List
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Device List** (`devices.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Device List** (`devices.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.map
title: Map title: Map
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Grounded in `AtmMap.svelte`, `frontend/src/lib/{api,stores}.ts`, and the devices/incident controllers, 2026-07-01. > **Internal · architecture.** Grounded in `AtmMap.svelte`, `frontend/src/lib/{api,stores}.ts`, and the devices/incident controllers, 2026-07-01.
@@ -3,7 +3,7 @@ module: devices.map
title: Map title: Map
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Terse agent reference. Grounded in `AtmMap.svelte`, `lib/api.ts`, `lib/stores.ts`, `AtmController`, `AtmGroupController`, `IncidentController` (2026-07-01). Read-only view — no writes, no dedicated backend. > Terse agent reference. Grounded in `AtmMap.svelte`, `lib/api.ts`, `lib/stores.ts`, `AtmController`, `AtmGroupController`, `IncidentController` (2026-07-01). Read-only view — no writes, no dedicated backend.
@@ -3,7 +3,7 @@ module: devices.map
title: Map title: Map
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Fleet Map** (`devices.bcos.dev` → **Map**). It's a read-only view — no create/edit/delete. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Fleet Map** (`devices.bcos.dev` → **Map**). It's a read-only view — no create/edit/delete. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: devices.sw-deploy
title: Software Deployment title: Software Deployment
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Written 2026-07-01 from `hiveops-devices/frontend` + `hiveops-fleet/backend`. Verify against code before relying on specifics. > **Internal · architecture.** Written 2026-07-01 from `hiveops-devices/frontend` + `hiveops-fleet/backend`. Verify against code before relying on specifics.
@@ -3,7 +3,7 @@ module: devices.sw-deploy
title: Software Deployment title: Software Deployment
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
**Owner service:** `hiveops-fleet` (port **8097**, DB **`hiveiq_fleet`**). Frontend `DeviceSoftwareTab.svelte` lives in `hiveops-devices` but calls fleet only. NOT owned by devices/incident. **Owner service:** `hiveops-fleet` (port **8097**, DB **`hiveiq_fleet`**). Frontend `DeviceSoftwareTab.svelte` lives in `hiveops-devices` but calls fleet only. NOT owned by devices/incident.
@@ -3,7 +3,7 @@ module: devices.sw-deploy
title: Software Deployment title: Software Deployment
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **SW Deploy** tab (`devices.bcos.dev` → open a device → **SW Deploy** tab). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **SW Deploy** tab (`devices.bcos.dev` → open a device → **SW Deploy** tab). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: fleet.artifacts
title: Artifact Import Guide title: Artifact Import Guide
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> How artifact import is built inside **hiveops-fleet**. Scope: the `fleet_artifacts` lifecycle — CDN import, multipart upload, and how an agent ultimately gets the bytes. Cross-link [platform.data-architecture], [platform.kafka]. > How artifact import is built inside **hiveops-fleet**. Scope: the `fleet_artifacts` lifecycle — CDN import, multipart upload, and how an agent ultimately gets the bytes. Cross-link [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: fleet.artifacts
title: Artifact Import Guide title: Artifact Import Guide
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> Act-without-guessing cheat-sheet. Owner service: **hiveops-fleet** (`com.hiveops.fleet`, port 8097, DB `hiveiq_fleet`). Never write artifact data anywhere else. > Act-without-guessing cheat-sheet. Owner service: **hiveops-fleet** (`com.hiveops.fleet`, port 8097, DB `hiveiq_fleet`). Never write artifact data anywhere else.
@@ -3,7 +3,7 @@ module: fleet.artifacts
title: Artifact Import Guide title: Artifact Import Guide
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Fleet → Artifacts** (`fleet.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Fleet → Artifacts** (`fleet.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: fleet.dashboard
title: Fleet Dashboard title: Fleet Dashboard
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How the **Fleet Stats** dashboard is built. It is a thin read-only view over hiveops-fleet's own database — no cross-service HTTP at request time. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka]. How the **Fleet Stats** dashboard is built. It is a thin read-only view over hiveops-fleet's own database — no cross-service HTTP at request time. Cross-link [platform.service-ownership], [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: fleet.dashboard
title: Fleet Dashboard title: Fleet Dashboard
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Terse agent reference for the **Fleet Stats** dashboard (`FleetDashboard.svelte`). Terse agent reference for the **Fleet Stats** dashboard (`FleetDashboard.svelte`).
@@ -3,7 +3,7 @@ module: fleet.dashboard
title: Fleet Dashboard title: Fleet Dashboard
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Fleet Stats** dashboard (`fleet.bcos.dev`). It is a read-only screen — no create/edit/delete. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Fleet Stats** dashboard (`fleet.bcos.dev`). It is a read-only screen — no create/edit/delete. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: fleet.modules
title: Modules title: Modules
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **Internal · architecture.** Written 2026-07-01 from `hiveops-fleet` source. Verify against code before relying on specifics. > **Internal · architecture.** Written 2026-07-01 from `hiveops-fleet` source. Verify against code before relying on specifics.
@@ -3,7 +3,7 @@ module: fleet.modules
title: Modules title: Modules
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
> **Internal · agent reference.** Terse. Confirmed against `hiveops-fleet` source 2026-07-01. > **Internal · agent reference.** Terse. Confirmed against `hiveops-fleet` source 2026-07-01.
@@ -3,7 +3,7 @@ module: fleet.modules
title: Modules title: Modules
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for the **Agent Modules** screen (`fleet.bcos.dev`). This screen is a read-only reference catalog — there is nothing to create, edit, or delete. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Agent Modules** screen (`fleet.bcos.dev`). This screen is a read-only reference catalog — there is nothing to create, edit, or delete. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: fleet.patch-windows
title: Patch Window Guide title: Patch Window Guide
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How HiveIQ Patch Windows are built. Everything lives inside **hiveops-fleet** (`com.hiveops.fleet`, Spring Boot 3.4, port 8097, DB `hiveiq_fleet`). Patch windows are a scheduling overlay on the existing fleet-task pipeline — no dedicated microservice. Cross-link [platform.data-architecture], [platform.kafka]. How HiveIQ Patch Windows are built. Everything lives inside **hiveops-fleet** (`com.hiveops.fleet`, Spring Boot 3.4, port 8097, DB `hiveiq_fleet`). Patch windows are a scheduling overlay on the existing fleet-task pipeline — no dedicated microservice. Cross-link [platform.data-architecture], [platform.kafka].
@@ -3,7 +3,7 @@ module: fleet.patch-windows
title: Patch Window Guide title: Patch Window Guide
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Act-without-guessing cheat-sheet. Everything confirmed in `hiveops-fleet` source. Act-without-guessing cheat-sheet. Everything confirmed in `hiveops-fleet` source.
@@ -3,7 +3,7 @@ module: fleet.patch-windows
title: Patch Window Guide title: Patch Window Guide
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Fleet → Patch Windows** (`fleet.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Fleet → Patch Windows** (`fleet.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: fleet.tasks
title: Fleet Task Workflow title: Fleet Task Workflow
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
How Fleet Task Workflow is built. Owner service: **hiveops-fleet** (`com.hiveops.fleet`, Spring Boot 3.4, port 8097, DB `hiveiq_fleet`). Frontend: `FleetManagement/FleetTasks.svelte` → `lib/api.ts` (`fleetAPI`, base `…/api/fleet`). See also [platform.data-architecture] and [platform.kafka]; service-level scope in the technical `fleet/overview` doc. How Fleet Task Workflow is built. Owner service: **hiveops-fleet** (`com.hiveops.fleet`, Spring Boot 3.4, port 8097, DB `hiveiq_fleet`). Frontend: `FleetManagement/FleetTasks.svelte` → `lib/api.ts` (`fleetAPI`, base `…/api/fleet`). See also [platform.data-architecture] and [platform.kafka]; service-level scope in the technical `fleet/overview` doc.
@@ -3,7 +3,7 @@ module: fleet.tasks
title: Fleet Task Workflow title: Fleet Task Workflow
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
Act-without-guessing cheat-sheet. Owner service: **hiveops-fleet** ONLY. Act-without-guessing cheat-sheet. Owner service: **hiveops-fleet** ONLY.
@@ -3,7 +3,7 @@ module: fleet.tasks
title: Fleet Task Workflow title: Fleet Task Workflow
tab: Testing tab: Testing
order: 35 order: 35
audience: internal audience: dev
--- ---
Frontend test checklist for **Fleet Tasks** (`fleet.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Fleet Tasks** (`fleet.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: incident.dashboard
title: Dashboard title: Dashboard
tab: Architect tab: Architect
order: 30 order: 30
audience: internal audience: dev
--- ---
> **How it's built.** The Dashboard is a thin read-only aggregation view: one Svelte component, three GET endpoints, all served by **hiveops-incident**. There is no dedicated dashboard aggregation service — most of the "analytics" (trend chart, incidents-by-type, device/agent status breakdowns) is computed **client-side** in the component from two data stores. See [platform.service-ownership]. > **How it's built.** The Dashboard is a thin read-only aggregation view: one Svelte component, three GET endpoints, all served by **hiveops-incident**. There is no dedicated dashboard aggregation service — most of the "analytics" (trend chart, incidents-by-type, device/agent status breakdowns) is computed **client-side** in the component from two data stores. See [platform.service-ownership].
@@ -3,7 +3,7 @@ module: incident.dashboard
title: Dashboard title: Dashboard
tab: Claude tab: Claude
order: 40 order: 40
audience: internal audience: dev
--- ---
## Owner ## Owner

Some files were not shown because too many files have changed in this diff Show More