> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nofire.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Production readiness

> See what is fragile before it breaks. A readiness scorecard per service, built from the live stack.

The catalog scores every service on whether it is ready to be relied on: who owns it, whether it has metrics, alerts, an SLO, and recovery documentation. It is built from what is actually running, so nobody maintains it by hand and there is no YAML to write.

Open it at [my.nofire.ai/dashboard/services](https://my.nofire.ai/dashboard/services).

## Prerequisites

* At least one connection that reports services. [NOFire AI Edge](/edge/installation) gives the richest catalog, because it reads the cluster directly.
* A cloud connection, such as [AWS](/providers/aws), if you want resource coverage as well as services.

## Scorecard

Services are grouped, and each group carries a readiness percentage, an owner, and the number of open gaps.

A gap is a specific missing thing, not a score. The gaps NOFire AI reports are:

| Gap              | What it means                               |
| ---------------- | ------------------------------------------- |
| No owner         | No team is recorded against the service     |
| No SLO           | The service has no service level objective  |
| No metrics       | NOFire AI found no metrics for the service  |
| No recovery docs | There is no runbook attached to the service |

Every line says whether it was **observed** or **inferred**. Observed means NOFire AI read it from your stack, for example a Kubernetes namespace. Inferred means NOFire AI derived it, for example a group of services that share a name prefix. Treat an inferred group as a suggestion to confirm, not a fact.

<Note>
  The catalog reports when it last ran. If a service changed after that pass, the scorecard shows the state at the last pass, not the state right now.
</Note>

## Coverage

Coverage answers a question a catalog usually cannot: whether a clean row means there is no problem, or means there is no data.

Resources that NOFire AI can see but cannot attribute show up as gaps rather than as blanks. An untagged resource is listed under **Untagged** with what is known about it, instead of being left out of the catalog entirely.

This is where unmonitored databases and unowned storage surface. A bucket with public access not blocked, sitting in no project, is visible as soon as you connect the account.

## Knowledge

The third tab holds what your team knows, attached to the service it belongs to: runbooks, incident summaries, service docs, dashboard guidance, and investigation patterns.

Entries are written when an investigation closes and are approved by a person before they are kept. Nobody has to write a runbook from scratch for the catalog to become useful.

See [Knowledge](/knowledge/organizational-knowledge) for how entries are written, reviewed, and approved.

## Test it

1. Open [my.nofire.ai/dashboard/services](https://my.nofire.ai/dashboard/services).
2. Make sure that your services appear, and that at least one group shows a readiness percentage.
3. Open a service with an open gap. The gap names what is missing, for example no SLO or no recovery docs.

If no services appear, no connection is reporting them yet. Install [NOFire AI Edge](/edge/installation) or connect a cloud provider.

## Troubleshooting

<AccordionGroup>
  <Accordion title="A service shows no owner, but we do have one">
    Ownership comes from what your stack records. Set it where NOFire AI reads it, such as a Kubernetes label, and it appears on the next pass.
  </Accordion>

  <Accordion title="A group is marked inferred">
    NOFire AI grouped those services by a shared name prefix because it found no namespace or tag to group them by. Add the tag your team uses, and the group becomes observed.
  </Accordion>

  <Accordion title="Resources are listed as untagged">
    The resource carries no project tag, so NOFire AI cannot attribute it to a service. Tag it in the cloud provider. Untagged is a finding, not an error.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols="2">
  <Card title="Service health" icon="chart-bar" href="/skills/service-health">
    Ask how one service is doing right now, with live metrics.
  </Card>

  <Card title="Knowledge" icon="brain" href="/knowledge/organizational-knowledge">
    Add runbooks and past incidents, and review what NOFire AI drafts.
  </Card>
</CardGroup>
