Skip to content

Tell strangers the first-run order and name --ios-version on missing runtimes - #14

Merged
VladimirBrejcha merged 3 commits into
mainfrom
docs/first-run-onboarding-honesty
Aug 19, 2026
Merged

Tell strangers the first-run order and name --ios-version on missing runtimes#14
VladimirBrejcha merged 3 commits into
mainfrom
docs/first-run-onboarding-honesty

Conversation

@VladimirBrejcha

Copy link
Copy Markdown
Contributor

Why

Public first-run copy mixed install options with hello world, did not name the app setup surface, and acquired a lease even when capacity was unavailable. The missing-CLI screen led with SIMBROKER_CLI_PATH. host init --bootstrap-config failed with runtime-not-found without naming --ios-version.

Changed

  • README Use it order: Homebrew CLI → Homebrew cask → Set Up This Mac / Complete first-time setup (or host init --bootstrap-config then service start) → hello world only after a host config exists. Homebrew does not create simulators.
  • Hello world keeps capacity check --purpose agent-ui-session and stops on unavailable / repair_needed with doctor / simulators repair.
  • App Finish Local Broker Installation leads with brew install fiveonecode/simulator-broker/simbroker and Refresh.
  • runtime-not-found names --ios-version and xcrun simctl list runtimes. Default starter iOS stays 18.

Verification

npm run agent:verify -- --profile spec-only --paths README.md,docs/getting-started.md,docs/status.md,docs/test/front-door.test.mjs,CHANGELOG.md,spec/build-and-test.md,app/Sources/SharedViews.swift,app/Sources/BrokerOnboardingCommands.swift,app/Tests/BrokerOnboardingCommandsTests.swift,broker-core/index.mjs,broker-core/test/broker-core.test.mjs,broker-core/test/support/simctl-fixture.mjs,client/test/simbroker.test.mjs,client/command-dispatch.mjs --session-dir task-sessions/first-run-onboarding-20260819
npm run agent:verify -- --profile implementation --paths README.md,docs/getting-started.md,docs/status.md,docs/test/front-door.test.mjs,CHANGELOG.md,spec/build-and-test.md,app/Sources/SharedViews.swift,app/Sources/BrokerOnboardingCommands.swift,app/Tests/BrokerOnboardingCommandsTests.swift,broker-core/index.mjs,broker-core/test/broker-core.test.mjs,broker-core/test/support/simctl-fixture.mjs,client/test/simbroker.test.mjs,client/command-dispatch.mjs --session-dir task-sessions/first-run-onboarding-20260819
node --test docs/test/front-door.test.mjs
npm run test:app:focus -- SimulatorBrokerAppTests/BrokerOnboardingCommandsTests

spec-only passed. implementation passed. agent:complete passed.

Session

task-sessions/first-run-onboarding-20260819

…runtimes.

Why:
Public Use it mixed install options with hello world and did not say the
app is the preferred host setup. Hello world acquired a lease without
stopping on unavailable or repair_needed capacity. The app missing-CLI
screen led with SIMBROKER_CLI_PATH. host init --bootstrap-config failed
with runtime-not-found without naming --ios-version.

Changed:
README and getting-started now order Homebrew CLI, cask, then Set Up
This Mac / Complete first-time setup (or host init --bootstrap-config
and service start) before hello world. Capacity check gates lease
acquire. Missing-CLI copy leads with the brew formula and Refresh.
runtime-not-found errors name --ios-version and xcrun simctl list
runtimes. Default starter iOS stays 18.

Verification:
npm run agent:verify -- --profile spec-only --paths README.md,docs/getting-started.md,docs/status.md,docs/test/front-door.test.mjs,CHANGELOG.md,spec/build-and-test.md,app/Sources/SharedViews.swift,app/Sources/BrokerOnboardingCommands.swift,app/Tests/BrokerOnboardingCommandsTests.swift,broker-core/index.mjs,broker-core/test/broker-core.test.mjs,broker-core/test/support/simctl-fixture.mjs,client/test/simbroker.test.mjs,client/command-dispatch.mjs --session-dir task-sessions/first-run-onboarding-20260819
npm run agent:verify -- --profile implementation --paths README.md,docs/getting-started.md,docs/status.md,docs/test/front-door.test.mjs,CHANGELOG.md,spec/build-and-test.md,app/Sources/SharedViews.swift,app/Sources/BrokerOnboardingCommands.swift,app/Tests/BrokerOnboardingCommandsTests.swift,broker-core/index.mjs,broker-core/test/broker-core.test.mjs,broker-core/test/support/simctl-fixture.mjs,client/test/simbroker.test.mjs,client/command-dispatch.mjs --session-dir task-sessions/first-run-onboarding-20260819
node --test docs/test/front-door.test.mjs
npm run test:app:focus -- SimulatorBrokerAppTests/BrokerOnboardingCommandsTests

Affected:
README.md
docs/getting-started.md
docs/status.md
docs/test/front-door.test.mjs
CHANGELOG.md
spec/build-and-test.md
app/Sources/BrokerOnboardingCommands.swift
app/Sources/SharedViews.swift
app/Tests/BrokerOnboardingCommandsTests.swift
broker-core/index.mjs
broker-core/test/broker-core.test.mjs
broker-core/test/support/simctl-fixture.mjs
client/command-dispatch.mjs
client/test/simbroker.test.mjs

Refs:
spec/build-and-test.md
docs/getting-started.md

Session:
task-sessions/first-run-onboarding-20260819
…command.

Why:
The playbook told readers to stop on top-level unavailable or
repair_needed. Those strings live on purposes[].status. It also sent
unavailable capacity to doctor and a bare simulators repair, which
cannot create missing aliases and fails without --alias.

Changed:
Hello world, getting-started, status, changelog, and front-door tests
now read purposes[].status. unavailable previews with capacity
reconcile. repair_needed uses doctor then simulators repair --alias.

Verification:
npm run agent:verify -- --profile spec-only --paths README.md,docs/getting-started.md,docs/status.md,docs/test/front-door.test.mjs,CHANGELOG.md,spec/build-and-test.md --session-dir task-sessions/first-run-capacity-gate-20260819
node --test docs/test/front-door.test.mjs

Affected:
README.md
docs/getting-started.md
docs/status.md
docs/test/front-door.test.mjs
CHANGELOG.md
spec/build-and-test.md

Refs:
#14
spec/build-and-test.md

Session:
task-sessions/first-run-capacity-gate-20260819
Why:
Finish Local Broker Installation told strangers to brew install then
Refresh, but the app only looked at SIMBROKER_CLI_PATH, install.json,
and the clone-install default bin. Homebrew writes prefix bin/simbroker
and does not write install.json, so Refresh stayed on the missing-CLI
screen.

Changed:
CLI search now checks Homebrew prefix bin after explicit overrides and
install.json, then falls back to the clone-install default bin. Unit
tests pin that order.

Verification:
npm run agent:verify -- --profile spec-only --paths app/Sources/BrokerSnapshotLoader.swift,app/Tests/BrokerRuntimePathsTests.swift,CHANGELOG.md,spec/build-and-test.md --session-dir task-sessions/homebrew-cli-discovery-20260819
npm run agent:verify -- --profile implementation --paths app/Sources/BrokerSnapshotLoader.swift,app/Tests/BrokerRuntimePathsTests.swift,CHANGELOG.md,spec/build-and-test.md --session-dir task-sessions/homebrew-cli-discovery-20260819
npm run test:app:focus -- SimulatorBrokerAppTests/BrokerRuntimePathsTests

Affected:
app/Sources/BrokerSnapshotLoader.swift
app/Tests/BrokerRuntimePathsTests.swift
CHANGELOG.md
spec/build-and-test.md

Refs:
#14
spec/build-and-test.md

Session:
task-sessions/homebrew-cli-discovery-20260819
@VladimirBrejcha
VladimirBrejcha merged commit f5bf390 into main Aug 19, 2026
0 of 2 checks passed
@VladimirBrejcha
VladimirBrejcha deleted the docs/first-run-onboarding-honesty branch August 19, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant