Reading the dashboard
The Overview page answers one question - which projects need attention - and answers it the same way for everybody: one row per project, one column per module, every number traceable to the module that produced it.
Nothing on this page is invented. A cell with nothing behind it shows a dash, never a plausible number: a placeholder that looks like a measurement is one somebody will act on.
The counter row
Section titled “The counter row”| Counter | What it counts |
|---|---|
| Projects | Live projects in the workspace, and how many groups they sit in. |
| At risk | Projects whose verdict is At risk right now. |
| Critical findings | Critical findings across ArchScan and ArchSecurity. |
| Blocking (ArchScan) | Critical plus error findings on each project’s latest run - the same definition that fails a pipeline. |
| Unbacked (Compliance) | Controls a scan evaluated but could not back with evidence. |
| Slow API endpoints | Services over the slow line, for projects mapped to a connected observability platform. |
Each counter also says how it moved since the window opened. That comparison only covers projects that were already measured when the window began: a project first scanned inside the window has no “before”, and counting its findings as an increase would make onboarding look like a regression.
The project table
Section titled “The project table”The letters under each heading name the numbers in that column, left to right.
| Column | Letters | Meaning |
|---|---|---|
| ArchPilot | F | C | Findings and comments on merge requests in the period. ArchPilot reviews changes, not repositories, so it has no score. |
| ArchScan | Score | B | C | Score, blocking findings, critical findings. |
| ArchSecurity | Score | C | E | Score, critical findings, errors. |
| Compliance | Score | T | U | Score, controls tracked, controls unbacked. Skipped controls are unanswered questions, not failures - they are in neither count. |
| Git Health | Score | How the repository is kept: branches, merge requests, review habits. |
| API | P95 | MAX | SLOW | 95th percentile, slowest call, and calls over one second - in milliseconds, from the APM the project is mapped to (Dynatrace, New Relic). |
| DB | P99 | MAX | SLOW | 99th percentile and slowest query time, and how many query groups ran over one second - from the database monitor the project is mapped to (Percona PMM). It says P99 rather than P95 because that is the percentile PMM publishes. |
| Overall | Score | SRC | The average of the scores that exist, and how many produced it. |
| Status | - | The verdict, derived from the row. |
| Trend | - | Recent ArchScan scores, oldest on the left. |
Two sides, two mappings
Section titled “Two sides, two mappings”A project’s API and its database are monitored by different tools, so they are mapped separately: the API column comes from an APM connection and the DB column from a database monitor. One mapping per side - a project cannot be claimed by two APMs, because its incidents would then be counted twice, but an APM and a database monitor are not rivals and a project normally has both.
Both readings are refreshed by the same ten-minute job and stored, so the table answers without waiting on anybody’s platform - and both carry the staleness marker below when that job stops producing.
A warning triangle means the reading has stopped being refreshed
Section titled “A warning triangle means the reading has stopped being refreshed”The DB and API columns are not read while the page renders - a page that waits on somebody else’s platform is a page that hangs when that platform does. A job reads them every ten minutes and stores one value per project.
When that stored value is more than half an hour old - three missed passes - the cell keeps its numbers and gains a small orange triangle. Hovering it says how old the reading is. The usual causes are a VPN that is down, a mapping whose entity no longer exists in the platform, and a scheduler that is not running.
The numbers are left in place on purpose: they are still the last thing anybody measured, which is information. What the marker withdraws is the claim that they describe right now.
Overall is an average of what exists
Section titled “Overall is an average of what exists”A 92 from one source is not the claim a 92 from five sources is. The number of sources is printed under the score and never hidden, and a missing source is never filled in with a zero - it is simply absent from the average.
Status is derived, never stored
Section titled “Status is derived, never stored”| Verdict | When |
|---|---|
| Critical | Any critical finding, or an overall score under 60. |
| At risk | Overall under 80, or anything blocking or unbacked. |
| Healthy | None of the above, with at least one source. |
| Unknown | No source has assessed this project. |
A critical finding outranks any average. A project can score 85 across five sources and still be one unauthenticated endpoint away from a breach, and an average that buries that is worse than no average at all.
Trend needs two scans
Section titled “Trend needs two scans”The sparkline draws the project’s recent ArchScan scores. With fewer than two scans it shows a dash instead: “not enough history to draw a line” is a different answer from “the line is flat”.
The colours
Section titled “The colours”- Scores - green from 80, amber from 60, red below.
- Response times - amber from one second, red from two, or whenever a call went over the slow line.
- Counts - tinted only when they are not zero.
What this page does not claim
Section titled “What this page does not claim”- It does not merge sources. Each module keeps its own score; the overall is an average, never a blend that hides a missing lens.
- It does not guess at names. Response times only appear for a project you have mapped to an entity in a connected platform - see integrations.
- It does not fill gaps. Where nothing measured something, the cell is a dash.