Surface Ubuntu Pro and Landscape recommendations

The operational-readiness tool surfaces day-2 estate recommendations alongside the code-level findings, scoped to operators running the charm on a supported Ubuntu production estate.

What you get

When the agent runs the operational_readiness tool on a charm, the resulting OPERATIONAL_READINESS.md report carries a dedicated Estate Operations section listing day-2 recommendations for two Canonical products:

Each recommendation carries the evidence that triggered it — a machine substrate, a peer relation, a TLS or identity-platform relation, declared storage — so the operator can audit the recommendation rather than treat it as a black box.

When recommendations appear

The detector is deliberately conservative. The Estate Operations section disappears entirely from the report when no opportunities apply. Specifically:

Shape of the report

The Estate Operations section sits below the pillar breakdown and the Advisory block. Each opportunity carries three things:

Structured consumers (the improvement-mode summary, future audit templates) read the same data via OperationalReadinessTool output: result.data["findings"]["estate_opportunities"] is a list of dictionaries with product, facet, level, rationale, and evidence fields.

Required vs recommended

The single load-bearing rule: estate recommendations are recommended for a supported production estate, never required for the charm to work. The charm itself must pack and run on a stock Ubuntu image with no subscription.

The report's preamble states the rule explicitly, and the bundled estate-operations skill governs how the agent phrases the recommendation in the user-facing summary, runbook edits, and README sections. The skill explicitly rejects sales-script phrasing — every recommendation is grounded in observed evidence, and the recommendation disappears when the evidence does not support it.

The bundled skill

A bundled estate-operations skill ships with Cantrip and is loaded on demand. When the agent sees a non-empty estate_opportunities list in the readiness output (or when the user explicitly asks about Ubuntu Pro, Landscape, ESM, Livepatch, FIPS, or USG), it loads the skill and uses the skill's wording patterns:

See src/cantrip/skills/estate-operations/SKILL.md in the repository for the full skill body, the facet table, and the worded examples.