Merge pull request 'fix(guide): dev tier BCOS_ADMIN-only; keep Testing for MSP (#18)' (#19) from fix/18-dev-tier-bcos-only into develop
CD - Develop (guide → bcos.dev) / build-and-deploy (push) Failing after 35m10s

This commit was merged in pull request #19.
This commit is contained in:
2026-07-14 22:50:58 -04:00
68 changed files with 87 additions and 85 deletions
@@ -101,13 +101,15 @@ public class MarkdownGuideService {
/** Audience ladder: customer < internal < dev < bcos. /** Audience ladder: customer < internal < dev < bcos.
* First the environment cap (served tiers), then the caller's role. * First the environment cap (served tiers), then the caller's role.
* customer→all · internal/dev→MSP or BCOS admin · bcos→BCOS admin only. */ * customer→all · internal→MSP or BCOS admin · dev/bcos→BCOS admin only.
* NB: 'dev' is developer/architecture content and is BCOS-only — it must NOT be
* gated at MSP (issue #18). Only 'internal' is shared with MSP admins. */
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 (!served().contains(a)) return false; // environment cap (prod = customer,internal) if (!served().contains(a)) return false; // environment cap (prod = customer,internal)
return switch (a) { return switch (a) {
case "bcos" -> includeBcos; case "bcos", "dev" -> includeBcos; // BCOS_ADMIN only
case "internal", "dev" -> includeInternal; case "internal" -> includeInternal; // MSP_ADMIN or BCOS_ADMIN
default -> true; // customer default -> true; // customer
}; };
} }
@@ -3,7 +3,7 @@ module: analytics.adoons
title: Adoons Insights title: Adoons Insights
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
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: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Dashboard** (the **Overview** landing screen in the Incident app). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Dashboard** (the **Overview** landing screen in the Incident app). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: incident.incident-management
title: Incident Management title: Incident Management
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Incident Management** (`incident.bcos.dev` → **Incident Mgmt Incident List**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Incident Management** (`incident.bcos.dev` → **Incident Mgmt Incident List**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: incident.incident-tracker
title: Incident Tracker title: Incident Tracker
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Incident Tracker** board (`incident.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Incident Tracker** board (`incident.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: incident.journal-events
title: Journal Events title: Journal Events
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Event Journal** screen (the incident app on **bcos.dev**). This is a read-only, per-ATM event viewer — 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 **Event Journal** screen (the incident app on **bcos.dev**). This is a read-only, per-ATM event viewer — 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: incident.processing-rules
title: Processing Rules title: Processing Rules
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Processing Rules** (the incident app, `incident.bcos.dev`). Open the **Processing Rules** menu in the left sidebar and click through in the UI. Mark each row Pass or Fail. Frontend test checklist for **Processing Rules** (the incident app, `incident.bcos.dev`). Open the **Processing Rules** menu in the left sidebar and click through in the UI. Mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: msp.contact-groups
title: Contact Groups title: Contact Groups
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Contact Groups** (MSP app → **Contact Groups**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Contact Groups** (MSP app → **Contact Groups**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: msp.institution-keys
title: Institution Keys title: Institution Keys
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Institution Keys** in the MSP app (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Institution Keys** in the MSP app (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: msp.institutions
title: Institutions title: Institutions
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the MSP **Institutions** screen (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the MSP **Institutions** screen (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: msp.module-allocations
title: Module Allocations title: Module Allocations
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Module Allocations** in the MSP admin SPA (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Module Allocations** in the MSP admin SPA (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: msp.users
title: Users title: Users
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Users** screen (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Users** screen (`msp.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -28,14 +28,14 @@ model. `MarkdownGuideService.visible()` resolves it against the caller's role:
|---|---|---| |---|---|---|
| `customer` | everyone signed in | (default) | | `customer` | everyone signed in | (default) |
| `internal` | MSP_ADMIN + BCOS_ADMIN | `isInternal()` | | `internal` | MSP_ADMIN + BCOS_ADMIN | `isInternal()` |
| `dev` | MSP_ADMIN + BCOS_ADMIN | `isInternal()` | | `dev` | **BCOS_ADMIN only** | `isBcos()` |
| `bcos` | **BCOS_ADMIN only** | `isBcos()` | | `bcos` | **BCOS_ADMIN only** | `isBcos()` |
**Anonymous callers get nothing:** `/nav` returns `401` with no token. **Anonymous callers get nothing:** `/nav` returns `401` with no token.
⚠️ **`dev` is a footgun.** It is named for developers but it gates at **MSP_ADMIN**, identically to ⚠️ **`dev` and `bcos` are both BCOS-only.** `dev` is developer/architecture content and must never
`internal`. There is no role between MSP and BCOS. Anything you tag `audience: dev` is visible to be MSP-visible (issue #18). Only `internal` is shared with MSP admins. If a doc must stay in-house,
customers' MSP admins. If a doc must stay in-house, tag it **`bcos`**, never `dev`. tag it `dev` or `bcos`; never `internal` or `customer`.
## Role visibility matrix ## Role visibility matrix
@@ -45,23 +45,23 @@ customers' MSP admins. If a doc must stay in-house, tag it **`bcos`**, never `de
| `customer` | The Data | 1 | 1 | 1 | | `customer` | The Data | 1 | 1 | 1 |
| `internal` | Internal | | 66 | 66 | | `internal` | Internal | | 66 | 66 |
| `internal` | Technical | | 1 | 1 | | `internal` | Technical | | 1 | 1 |
| `dev` | Internal | | 15 | 15 | | `internal` | Testing | | 66 | 66 |
| `dev` | Overview | | 35 | 35 | | `dev` | Internal | | | 15 |
| `dev` | Testing | | 66 | 66 | | `dev` | Overview | | | 35 |
| `bcos` | **Architect** | | | **81** | | `bcos` | **Architect** | | | **81** |
| `bcos` | **Claude** | | | **81** | | `bcos` | **Claude** | | | **81** |
| `bcos` | Overview | | | **8** | | `bcos` | Overview | | | **9** |
| | **modules visible** | **66** | **116** | **124** | | | **modules visible** | **66** | **66** | **125** |
| | **apps visible** | **13** | **17** | **19** | | | **apps visible** | **13** | **13** | **19** |
### What each role gets ### What each role gets
- **CUSTOMER** — the `Customer` tab only. No Internal, Testing, Architect or Claude, and none of - **CUSTOMER** — the `Customer` tab only. 66 modules, no internal apps.
the `agent`, `platform`, `technical`, `devops`, `processes`, `milestone` apps. - **MSP_ADMIN** — Customer, `internal`-tier `Internal`, and `Testing`. **No** Architect, Claude, or
- **MSP_ADMIN** — the above plus `Internal`, `Testing` and `Overview`, and the `agent`, `platform`, any `dev` architecture (`technical.*` / `platform.*` Overviews, agent-module internals). Same 66
`technical` and `devops` apps (50 extra modules). **Not** Architect, **not** Claude. modules as CUSTOMER, with the extra operational + test tabs on them.
- **BCOS_ADMIN** — everything, including the two internal tabs (`Architect`, `Claude`) and the 8 - **BCOS_ADMIN** — everything: `dev` (Architect, Claude, dev Overview/Internal) and the `bcos` tier
BCOS-only modules: `processes.*` (5), `devops.dev`, `devops.prod`, `milestone.2026-07`. (`processes.*`, `devops.dev`, `devops.prod`, `milestone.2026-07`, this page).
## Architect + Claude are BCOS-only (fixed 2026-07-14) ## Architect + Claude are BCOS-only (fixed 2026-07-14)
@@ -3,7 +3,7 @@ module: profile.appearance
title: Appearance title: Appearance
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Appearance** panel in Profile (`profile.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Appearance** panel in Profile (`profile.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: profile.display
title: Display title: Display
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Profile → Display** (`profile.bcos.dev`). These are personal, per-user preferences — click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Profile → Display** (`profile.bcos.dev`). These are personal, per-user preferences — click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: profile.inbox
title: Inbox title: Inbox
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the Profile **Inbox** (on `bcos.dev`, open **Profile → Inbox**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the Profile **Inbox** (on `bcos.dev`, open **Profile → Inbox**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: profile.notifications
title: Notifications title: Notifications
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Notifications** settings screen (`profile.bcos.dev` → **Profile → Notifications**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Notifications** settings screen (`profile.bcos.dev` → **Profile → Notifications**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: profile.profile
title: Profile title: Profile
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Profile** tab (`profile.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Profile** tab (`profile.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: profile.security
title: Security title: Security
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Security** screen in the **Profile** app. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Security** screen in the **Profile** app. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: recon.atm-cycle-history
title: ATM Cycle History title: ATM Cycle History
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **ATM Cycle History** in the Reconciliation app (`recon.bcos.dev`). Open Reconciliation inside the HiveIQ Browser (**Cash Reconciliation** in the sidebar), click through in the UI, and mark each row Pass or Fail. Frontend test checklist for **ATM Cycle History** in the Reconciliation app (`recon.bcos.dev`). Open Reconciliation inside the HiveIQ Browser (**Cash Reconciliation** in the sidebar), click through in the UI, and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: recon.cash-forecast
title: Cash Forecast title: Cash Forecast
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Cash Forecast** (`recon.bcos.dev` → **Cash Forecast**). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Cash Forecast** (`recon.bcos.dev` → **Cash Forecast**). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: recon.cash-reconciliation
title: Cash Reconciliation title: Cash Reconciliation
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Cash Reconciliation** — the fleet grid "ATM Cash Positions" (`recon.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Cash Reconciliation** — the fleet grid "ATM Cash Positions" (`recon.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: recon.device-cycle-mgmt
title: Device Cycle Management title: Device Cycle Management
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Device Cycle Mgmt** in Cash Reconciliation (`recon.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Device Cycle Mgmt** in Cash Reconciliation (`recon.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: recon.recon-rules
title: Recon Rules title: Recon Rules
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Recon Rules** (`recon.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Recon Rules** (`recon.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: reports.builder
title: Report Builder title: Report Builder
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Report Builder** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Report Builder** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: reports.queries
title: Saved Queries title: Saved Queries
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Saved Queries** (`report.bcos.dev`). Saved Queries live on the **Templates** tab — each report row has a **Queries** button. Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Saved Queries** (`report.bcos.dev`). Saved Queries live on the **Templates** tab — each report row has a **Queries** button. Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: reports.runs
title: Run History title: Run History
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Run History** (`report.bcos.dev` → **Run History** tab). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Run History** (`report.bcos.dev` → **Run History** tab). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: reports.schedule
title: Scheduling & Distribution title: Scheduling & Distribution
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Reports — scheduling & distribution** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Reports — scheduling & distribution** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: reports.templates
title: Report Templates title: Report Templates
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Report Templates** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Report Templates** (`report.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: transactions.browser
title: Transactions Browser title: Transactions Browser
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Transactions Browser** (`transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Transactions Browser** (`transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: transactions.customer-journey
title: Customer Journey title: Customer Journey
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Customer Journey** (`transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Customer Journey** (`transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: transactions.journal-parsing
title: Journal Parsing Rules title: Journal Parsing Rules
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Journal Parsing** in the Transactions SPA (`transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail. The screen lives under **Settings → Journal → Parsing → ATM**. Frontend test checklist for **Journal Parsing** in the Transactions SPA (`transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail. The screen lives under **Settings → Journal → Parsing → ATM**.
@@ -3,7 +3,7 @@ module: transactions.processing-rules
title: Journal Processing Rules title: Journal Processing Rules
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Journal Processing Rules** (Transactions app Settings, `transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Journal Processing Rules** (Transactions app Settings, `transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: transactions.reparse
title: Journal Reparse title: Journal Reparse
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Journal Reparse** (Transactions SPA → **Settings → Journal Reparse**, `transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Journal Reparse** (Transactions SPA → **Settings → Journal Reparse**, `transactions.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: vault.cit-visits
title: CIT Visits title: CIT Visits
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **CIT Visits** (`vault.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **CIT Visits** (`vault.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: vault.dashboard
title: Dashboard title: Dashboard
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for the **Vault Dashboard** (`vault.bcos.dev`). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for the **Vault Dashboard** (`vault.bcos.dev`). Click through in the UI and mark each row Pass or Fail.
@@ -3,7 +3,7 @@ module: vault.import
title: Import title: Import
tab: Testing tab: Testing
order: 35 order: 35
audience: dev audience: internal
--- ---
Frontend test checklist for **Import CIT Data** in Vault (`vault.bcos.dev` → **Import** in the sidebar). Click through in the UI and mark each row Pass or Fail. Frontend test checklist for **Import CIT Data** in Vault (`vault.bcos.dev` → **Import** in the sidebar). Click through in the UI and mark each row Pass or Fail.