diff --git a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md
index 435c79cabc..9d8cf25939 100644
--- a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md
+++ b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md
@@ -162,7 +162,11 @@ management, and fleet control surfaces.
When the first host reports successfully, the install workflow must treat
that as a completion handoff with direct navigation into `/dashboard` and
`/settings/infrastructure/operations` instead of leaving operators on a
- generic lookup result.
+ generic lookup result. When the workspace starts from zero active connected
+ infrastructure and install commands are available, the same lifecycle path
+ must auto-watch the canonical `/api/state` projection for the first
+ reporting host rather than requiring a brand-new operator to know and type
+ a hostname or agent ID just to see the first success handoff.
9. Keep `frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx`
ordered around the actual first-run operator sequence: credentials that must
be saved now should be visible before the operator leaves the screen, and
diff --git a/docs/release-control/v6/internal/subsystems/api-contracts.md b/docs/release-control/v6/internal/subsystems/api-contracts.md
index a5836dcd43..2e81599203 100644
--- a/docs/release-control/v6/internal/subsystems/api-contracts.md
+++ b/docs/release-control/v6/internal/subsystems/api-contracts.md
@@ -209,6 +209,13 @@ Own canonical runtime payload shapes between backend and frontend.
flow must expose direct navigation into `/dashboard` and
`/settings/infrastructure/operations` rather than leaving the operator on a
transport-only status readout.
+19. Keep the shared first-host detection contract explicit on `/api/state` as
+ used by
+ `frontend-modern/src/components/Settings/useInfrastructureInstallState.tsx`:
+ the canonical `connectedInfrastructure` projection must stay suitable for
+ detecting the first active reporting system during install so brand-new
+ operators can receive the first success handoff without typing a hostname
+ or agent ID.
## Current State
diff --git a/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx b/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx
index ab9e53cfc2..5e12a84313 100644
--- a/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx
+++ b/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx
@@ -520,8 +520,9 @@ export const InfrastructureInstallerSection: Component = () => {
- Enter the hostname (or agent ID) from the machine you just installed. Pulse returns
- the latest status instantly.
+ {state.autoLookupActive()
+ ? 'Pulse is watching for the first reporting host automatically. Enter a hostname or agent ID only if you want to check a specific machine right now.'
+ : 'Enter the hostname (or agent ID) from the machine you just installed. Pulse returns the latest status instantly.'}
{
}`}
>
{isConnected()
- ? `${agent().displayName || agent().hostname} is reporting live telemetry to Pulse. Open the dashboard to verify your first overview, or continue in Reporting & control to inspect this host and add more infrastructure.`
+ ? state.lookupWasAutoDetected()
+ ? `${agent().displayName || agent().hostname} started reporting and Pulse detected it automatically. Open the dashboard to verify your first overview, or continue in Reporting & control to inspect this host and add more infrastructure.`
+ : `${agent().displayName || agent().hostname} is reporting live telemetry to Pulse. Open the dashboard to verify your first overview, or continue in Reporting & control to inspect this host and add more infrastructure.`
: `${agent().displayName || agent().hostname} has been found, but Pulse is not receiving a live check-in yet. Keep the installer running on that machine and check again.`}