bug: startup_ready.fresh_install is always false for headless serve/run first runs

Open
#1,297 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript
Domain
cli, observability

Research direction

Start with packages/opencode/src/altimate/telemetry/index.ts and packages/opencode/src/cli/welcome.ts to trace the install marker or machine-id signal used by first_launch. Then inspect the CLI middleware and docs/internal/first-run-telemetry.md to understand headless command coverage. Done means fresh headless serve and run starts report fresh_install true, while returning installs remain false and the KQL buckets them correctly.

Written by the indexing model from the issue text.

Description

Found during the v0.11.1 release review (Tech Lead persona). Deferred because: decoupling fresh-install detection from the TUI welcome flow is more than a quick fix.

startup_ready.fresh_install is set only when track() observes a non-upgrade first_launch event (packages/opencode/src/altimate/telemetry/index.ts), and first_launch is only tracked from packages/opencode/src/cli/welcome.ts, which is TUI-only onboarding. serve and run never go through it, so a brand-new machine's first altimate serve or altimate run always reports fresh_install: false.

Those are exactly the entry points the v0.11.0 first-run freeze hit, and the "startup time by command, fresh vs returning" KQL in docs/internal/first-run-telemetry.md will mis-bucket every fresh headless install.

Suggested fix. Derive fresh_install from the install marker / machine-id probe directly (the same signal first_launch uses), independent of which command consumed it, or emit first_launch from the CLI middleware for every command.

Dominant language
TypeScript
Stars
813
Forks
134
Avg merge
2d 5h
Merged PRs (30d)
62

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from AltimateAI/altimate-code

All issues in AltimateAI/altimate-code

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.