# Release notes 0.1.160

> 27 October 2026: The overall dashboard — the structure of the customer's "Mission Overview" mock-up on the platform's own counts — and two Problems page fixes from the 27 October live runs: a…

_Release notes · Updated 2026-10-28 · Describes release 0.1.164_

## 0.1.160 — 27 October 2026 {#0-1-160-27-october-2026}

The overall dashboard — the structure of the customer's "Mission Overview" mock-up on the platform's own counts — and two Problems page fixes from the 27 October live runs: a blocked route's operations stay inside the Automation cell, and a recurrence that a recorded outside change explains no longer counts against automating a fix. One new route, `GET /api/aiops/{tid}/dashboard/summary` (`incidents.view`; the spend figures need `report.view`, as Usage & billing does; MCP operation `dashboard_summary`); the incident list and summary accept `?status=unresolved` and the summary carries `resolved_by_day`; the Problems page reads the list's existing `?status=` filter; a recorded fix gains the state `recurred_after_outside_change` and its recurrence marks the field `outside_change_id`; one partial index, built in the background after start. No new setting, permission, audit action or chart value. See the [upgrade row](/help/ops-upgrade-and-verify.md).

- **The overall dashboard.** **Dashboard** (`/portal/dashboard`) is the first item in the sidebar and the home once the workspace has an enabled read connection; `/portal/` sends you there, a workspace without a read connection is still sent to the Quick start once per browser session and then sees the Dashboard with a *Connect your first data source* card on top. The page inherits the structure of the customer's mock-up and fills it with figures the platform records; every number is read in one request (cached for a minute per workspace; the page says when it was read), a number that is a link opens the list whose total it is, with the same filter, counted by the same server query, and a figure the rows cannot support says so instead of being estimated. From the top:
  - *The hub*: six pillar rings around the **Human gate**. **Incident** = unresolved incidents, opening **Operate → Incidents** filtered to *Unresolved (any but resolved)*; **Compliance** = open compliance findings in every domain, opening the findings list under **Security posture**; **Change** = change requests waiting for approval, opening **Operate → Changes** filtered to *pending approval*; **SecOps** = unresolved SecOps incidents, opening the page's SecOps section (no list holds SecOps rows alone); **FinOps** = the AI agents' spend over the last 30 days, shown to people with `report.view` and opening **Insights → Usage & billing** (others see a dash); **Improve** = open problems, opening **Operate → Problems** filtered to *open*. The centre counts every write a person must release before it runs — incidents paused for approval, in every pillar, plus change requests pending approval — and the panel beside it links each half (the paused incidents open **Needs you** filtered to incident approvals, since the Incidents list leaves compliance findings out) and **Review queue** opens **Needs you**. The hub carries no decision buttons: a decision is made next to the evidence, on the incident or the change. A pillar the platform has switched off shows a dashed ring reading *off* and has no section.
  - *Service KPIs*: **MTTR** (open to the moment the condition was verified gone, else to the resolve click — the Service delivery report's definition; service incidents only), **MTTA** (open to the first analysis an agent started on its own), **Alert noise reduced** (the share of received alerts suppressed as cascading or storm victims — not the report's grouping ratio) and **Auto-handled events** (changes that completed without a click), each over the last 30 days against the 30 before, with a 14-day sparkline; a tile with nothing to measure says so.
  - *Pillar health* (status, open rows, pending approvals, the agent's last run per pillar) beside the *Human gate queue*: the **Needs you** rows, most urgent first — title, the agent's reason, the risk tier, who must release it (one approver, or two distinct people for a high-risk change, with the quorum so far) and how long it has waited; each row opens its record.
  - *One section per enabled pillar*. **Incident & Problem**: unresolved incidents, MTTA, MTTR, auto-triage coverage, chips by status and severity that open the list with that filter, opened and resolved per day, the pipeline strip (Classify → Correlate → Triage → Recommend fix → Human approval → Validate → Rollback) counting the workspace's stages where a list carries them, and the five newest unresolved incidents. **Compliance**: the scanners' overall score from the saved report (opening **Audit & coverage → Scores**), critical findings, the auto-remediation share, active exceptions (accepted risks in force; not a link, no list has exactly that total), findings by domain, patch and backup figures from the report and the patch schedules; **Standards** lists the scanners' own standards only — the platform's SOC 2 / ISO 27001 mapping stays hidden, as decided on 24 October. **Change management**: waiting for approval (with the oldest wait), change-related incidents, auto-released pre-approved, scheduled releases (and the next one), requests by status, changes per day. **SecOps**: open detections, critical CVEs, denied-access reports. **FinOps · Optimise**: the platform holds no cloud cost data — cloud spend stays in the cloud's own cost tools — so the section shows the AI agents' own cost only: today, the last 30 days (test runs excluded) and per incident occurrence, shown to people with `report.view` and opening **Usage & billing**; hidden for others and while the workspace has spent nothing. **Continuous improvement**: runbooks in the library (and how many are certified), knowledge items, open problems, automation candidates (and how many are blocked).
  - *Guardrails — always on*: the mock-up's six principles, each stated as the platform's own rule (every write pauses at the gate; every tier is released by an approver and a high-risk change by two people; a fix runs on its own only through a certified runbook at its certified revision; every analysis names its evidence; a change carries its last-known-good state and rollback; every decision is a row in the per-workspace hash chain). None is a setting.
  - *(proposed)* — decisions the mock-up did not make, taken while building the page and open to the customer's reading of the mock-up: the hub's centre counts incident approvals plus pending change requests (risk requests, certifications, one-time windows and merge suggestions stay in **Needs you**, with a hint of how many more wait there); MTTR ends when the condition was verified gone, so the Dashboard and the Service delivery report never disagree; problems sit under Continuous improvement rather than Incident & Problem; a switched-off pillar keeps its dashed ring so the hub keeps its shape; the pipeline strip counts the workspace rather than replaying one incident; the summary is cached for 60 seconds; **Raise a concern** keeps its place in the header. Left out, and why: the activity stream and agent-fleet accuracy bars, the framework scores (CIS, ISO 27001, MAS TRM, Well-Architected), change success rate and AI risk scores, MTTD, cloud spend and savings, automation coverage, error-budget burn and engineer hours saved — none is a figure the platform records; the sci-fi faces, glows and count-up animations — the design system's tokens and motion rules apply; the per-pillar sidebar entries — the sidebar is grouped by task since 25 September, and the open counts per pillar are in the hub and in Pillar health. The workspace help's *Dashboard* chapter names, per section, what it inherits from the mock-up and what differs.
  - The former dashboard (Signals in / Noise collapsed / Agents active, the status tiles, the Unresolved incidents table, the pillar cards and Recent activity) is replaced; Ctrl+K *home* and *overview* open the new page.
- **A blocked route's operations stay inside the Problems cell.** A typed plan's route key is its operations joined with `+` into one token no line could break: on the Problems page the blocked reason of a three-operation Lambda runtime plan ran out of the **Automation** cell into **First seen**. The cell now lists one operation per line, keeps each whole and wraps the reason at words; the **Problem** column keeps its width and a long correlation key breaks inside it, so the table never widens; a route whose name holds a `+` stays one route. At a laptop width the table fits its container again; on a phone it scrolls inside its own region as before, with the date columns clear.
- **A recurrence an outside change explains no longer counts against a fix.** Two command-line runtime downgrades reopened a Lambda finding after two platform fixes, and the problem read *did not hold ×2 in 30 d — blocked from automation* while the 0.1.158 rule had already kept the runbook's certification for the same reason. The did-not-hold mark now reads the change ledger the way that rule does: a cloud write the platform's own audit harvest recorded on the fix's resources (AWS CloudTrail, Azure Activity Log), between the fix's verified clear (else its run) and the recurrence, by a principal that is not the platform's, is stamped on the mark as `outside_change_id` (the ledger is read once and passed on to the demotion rule). Such a mark stands — the condition did come back — but never counts towards the ×N block, the candidate revocation, the not-good state, the last-known-good lookup or the agent's prompt (which reads *the same alert came back after an outside change (CHG-…) on the fixed resource: the recorded fix is not blamed*); the record reads *recurred after an outside change* on the **Artifacts** card and on the incident page, each recurrence naming the change; the **Problems** list and the problem detail show *recurred after an outside change ×N* beside the automation facts (shown, never a block); the automatic step lane and the known-issue fast path read the same mark (the fast path says *an outside change undid it*); and the audit row `lkg_record.did_not_hold` names the change and reads *not counted against automating it*. A recurrence that also marks a fix nothing explains stays a miss. **Marks recorded before this release carry no such field and keep counting: existing problem rows are not rewritten.** The ledger read runs on every did-not-hold mark, inside alert intake, so the partial index `ix_changerecord_tenant_cloud_write_executed` (one workspace's harvested cloud writes by time) is registered at start and built in the background while the app serves; until it is valid that read is slower, not wrong.
- **Quality: a text-overflow sweep over every portal page.** A new Playwright spec opens every portal route the mock workspace serves (22 routes added to the matrix: the finding page, the lab twins, three chapters, the monitors settings) at 1280 and 390 pixels, light and dark, and fails when a table cell or a box that holds text is wider than itself — the way the Problems reason ran into the next column. Its first run found and this release fixes: every stat tile (seven across a laptop left each label a 50-pixel box, so *Compliant (automated)*, *Non-compliant*, *Coverage* and a value such as *21.6%* ran out of their cards on **Audit & coverage → Frameworks** and Posture's Backup card — the text now moves under the icon when the card is narrow), **Needs you** rows on a phone (an address, a one-time window's timestamps or a tool name ran out of the row — the reason keeps its width and wraps), the Estate x-ray category labels (*aws:ec2:volume* past its column — the label sits above its cards on a phone) and the lab's plan list. The sweep runs with every release.
- **Documentation.** The new chapter *Dashboard*; *Read an incident* gains *Recurred after an outside change*; the Operate, Getting started and incidents chapters follow the new home and the *Unresolved* filter. In the platform book, the post-upgrade checks for 0.1.109 to 0.1.143 move to their own page (the upgrade page reached its size ceiling); the upgrade page points there for an install older than 0.1.144.


## Next steps

- Next: [Release notes 0.1.159](/help/release-notes-0-1-159.md)
- [All What's new pages](/help/what-s-new/llms.txt)
- [Documentation home](/help/)
