Reviewing discovered resources
The Infrastructure tab of Discovery lists everything Discover infra found. It splits that into two tables: Confirmed and Candidates to review (labelled "Candidates — review" in the UI).
A banner explains the coverage honestly: "Inventory covers what the latest census matched: resources carrying a scoped tag (asserted) plus name matches (candidates to confirm). Console-created or untagged resources outside the scope may be missing." And, when available, it adds "Last run observed X, kept Y."
If no resources exist yet at all, the tab simply offers: "No infrastructure inventory yet — run 'Discover infra' (needs cloud credentials) or add a resource manually."
How do I add a resource manually?
Click "Add resource manually" (or "Add manually" in the coverage banner) to open a small form: provider (aws/gcp/azure dropdown), resourceType (free text, for example rds_instance), identifier (required), name (optional, defaults to the identifier), region (optional). Click "Add" to save it as a confirmed resource, or "Cancel".
What's in each row?
Both tables share the same columns: Type, Identifier (with the resource's name, its raw identifier if different, and an "OWNS"/"USES" ownership badge when known), Region, State, Health, and Actions.
- State shows a lifecycle badge ("active", "missing" (it used to be seen but the last scan no longer finds it), or "retired"), plus a miss counter, and a "Monitoring off" badge if health monitoring has been explicitly disabled for that resource (the whole row is dimmed in that case).
- Health shows "✓ healthy", "✗ failing" (with a failure-streak counter), "unknown", "pending" (monitoring is on but no result has arrived yet), or "—" (no health check configured). While a health check command is being generated you may see "Generating check..."; if that takes unusually long, "Taking longer than expected — refresh the page in a moment."; if generation failed outright, the failure reason is shown in orange.
Candidates to review
Candidates are grouped by resource type, and those type-groups are further grouped by a common prefix (for example an "eks" parent group containing eks_pod and eks_service subgroups). Each group is collapsible and shows its own count.
Per row: "Confirm" (accepts it as a real, asserted resource) or "Discard" (retires it, so it will not reappear unless the next scan finds it again).
Per group: "Confirm all" / "Discard all" for everything in that type or parent group.
Above the whole table:
- "Review with AI": asks ACE to look at all current candidates and attach an assessment (belongs / excluded / unsure, shown as a small badge with reasoning) to help you decide.
- "Confirm all" / "Confirm selections" (if you have checked specific rows) and "Discard all" / "Discard selections" bulk-act on everything or just your checkboxed selection. Discarding always asks you to confirm first: "Discard the selected/all N candidate(s)? They will be retired and won't reappear unless discovered again."
- A search box to filter the list, and a "Rows per page" control (shared with the Confirmed table below, so changing it in one updates both).
- If a page is fully selected but more candidates exist beyond it, a banner offers "Select all N matching candidates" so bulk actions are not silently limited to the visible page.
Confirmed
Per row, the action depends on state:
- If the resource's state is "missing" (last seen before, not seen in the latest scan): "Keep" (re-affirms it) or "Retire" (removes it from active tracking).
- Otherwise: "Remove" sends it back to Candidates for review.
- If a health check exists for the resource: "Update health check" (opens a dialog to describe what is wrong and regenerate the check) and "Enable monitoring" / "Disable monitoring" (toggles whether it is actively checked).
- If the health check generation failed: "Retry generation".
Above the table: "Remove all" / "Remove selections" and "Disable all" / "Disable selections" for monitoring. Removing asks for confirmation: "Remove the selected/all N confirmed resource(s)? They'll drop back into Candidates for review." Disabling monitoring asks: "Disable monitoring for the selected/all N resource(s)?"
A "Check health" button (top of the tab, next to the coverage banner) re-runs health checks for every monitored resource on demand.
How do I update a health check?
Clicking "Update health check" opens a dialog showing the current command (read-only), and a text box, "What's wrong with it?", with an example placeholder ("e.g. You're checking port 22 on this machine, but health should be considered up when port 80 responds."). It explains: "The LLM receives this command, your feedback, and regenerates it to satisfy what you describe." Submit with "Regenerate command", or "Cancel".
Relationships
Below the tables, if Investigate or Synthesize have produced any relationships, a "Relationships" panel lists up to 50 of them (source → relationship kind → destination, with a confidence badge) and a "Refresh" link.
How this connects to the rest of the platform
Confirmed infrastructure resources with a health check appear on the Monitoring dashboard (Operations section); confirming, removing, or toggling monitoring here changes what is watched there immediately.
Who can do this?
Requires discovery:manage (and a mutable project) for every action on this tab: adding, confirming, discarding, removing, retrying, or toggling monitoring. discovery:read is enough to view both tables and the Relationships panel read-only.