Repository navigation
Performance dashboard: Nightly CI metrics for FlyBot smoothness #357
Copy link
Copy link
Open
Labels
area:automationScheduled tasks and automationScheduled tasks and automationenhancementNew feature or requestNew feature or requestneeds-humanThe agent loop stopped; a person must decide (reason in the last comment)The agent loop stopped; a person must decide (reason in the last comment)
Description
Why
#356 asks volunteers to measure smoothness once. That is not enough: we need a daily performance board fed by Nightly CI, so regressions show up every morning instead of after a bad release. Ties to #351 (daily tags) and the metrics chosen from #356.
Goal
A FlyBot-specific performance dashboard, updated every night from CI, showing trend lines for a fixed set of scenarios on a known machine profile.
Scope
Nightly CI suite
- Runs on a schedule (proposed: Asia/Shanghai night) on a fixed runner label/image so numbers are comparable day to day.
- Scenarios (start from Performance baseline: measure current smoothness (help wanted) #356; refine after the first baseline):
- Cold start to first message sendable.
- First-message latency (mock or fast model, so FlyBot overhead is separated from model time).
- Long-session scroll / open time (500+ messages fixture).
- Background-tab recover (cf. Timeline panel stays on Loading… in a background tab (hidden page never does the first fetch) #259).
- Concurrency: N Bots (tree fixture), wall time and peak RSS.
- Timeline on vs off overhead.
- Optional team scenarios once Deployment step 1: official image and one isolated instance per person #352 exists: approval latency across two instances, board load with 200+ cards.
- Artifacts: JSON metrics + a short summary; fail the job only when a metric regresses past a threshold (warn first for a few days).
Dashboard
- One page (GitHub Pages, or a simple HTML report attached to the workflow run and linked from README) showing:
- Last night's numbers vs 7-day median.
- Trend charts per metric.
- Pass / warn / fail for each scenario.
- Links from the daily release note (Release cadence: at least one tag per day, small and stable #351) and from Performance baseline: measure current smoothness (help wanted) #356 once the baseline table is filled.
Acceptance
- Nightly job runs without manual steps and publishes artifacts every night.
- Dashboard shows at least the 5 personal-mode metrics above for the last 7 days.
- A deliberate slowdown in a fixture causes a warn or fail within one night.
- No secrets or personal content in artifacts.
- Docs explain how to add a new scenario and how thresholds are set.
Open questions
- Host the board on GitHub Pages, in the repo as committed history, or both?
- Absolute thresholds vs relative (e.g. 20% worse than 7-day median)?
- Mock model only, or also a cheap real model for end-to-end latency?
- Who owns reviewing the board each morning?
Process
CI and dashboard work go through cloud OpenCode, review via Codex; bots do not hand-write code. Use results from #356 to pick the first thresholds.
Metadata
Metadata
Assignees
Labels
area:automationScheduled tasks and automationScheduled tasks and automationenhancementNew feature or requestNew feature or requestneeds-humanThe agent loop stopped; a person must decide (reason in the last comment)The agent loop stopped; a person must decide (reason in the last comment)
Activity
Birfy commentedon Oct 19, 2026
Triage on main
7b9e90b, 2026-10-19 ~12:10 Asia/Shanghai: needs-human, not agent-ready. Depends on #356 (baseline) and needs a go-ahead for Nightly CI cost and where the dashboard lives.Timeline: token spend per Bot, from the activity feed (ThinkFlowLab#537)
Timeline: per-Bot turn outcomes and recent failures (ThinkFlowLab#357/T…
Timeline: which tools each Bot used, and how often they failed (Think…
Timeline: which tools each Bot used, and how often they failed (Think…
Timeline: a team-health endpoint (ThinkFlowLab#357)
HugoXK commentedon Oct 21, 2026
Design for the owner to pick. #356 measures once; #357 wants the numbers every night. It depends on #358's matrix for what to run, so the scenarios come from there.
(a) Nightly appends metrics to a JSON artifact + a static table (recommended). A
nightly-perfjob on the fixed runner label (already noted in #356) runs themockscenario rows from #358, records per-scenario ms/tokens from the existingllm-tap/usage data, writesdocs/…/perf.json(or a workflow artifact), and a small generated table shows the trend. No external service.(b) Publish to a hosted dashboard. As (a), pushing to an external metrics service. Needs an account/key and adds a dependency; not needed for "a regression shows up every morning".
(c) A committed CSV per run. Simplest, but noisy in git history and awkward to read.
Recommendation: (a). Keep it in-repo and comparable day to day; the fixed runner label is the only requirement, which #356 already asks for. If the owner wants (b), the same recorded numbers can be pushed later.
Note: the
packagejob already exists and the mergedcore/dev/eval/can emit machine-readable results, so the scenario runner is the only new piece this needs from #358.Timeline: stuck requests, tool use and team health (combined) (ThinkF…
Turn the timeline window into a run report a person can paste
Timeline: per-Bot turn outcomes and recent failures (ThinkFlowLab#531)