Repository navigation
feat(health): read the desktop checklist's agent surface (onboarding-status.json) - #2196
Conversation
…status.json)
Core-side half of the onboarding v2 spec (ag2space-cinny-desktop#165
S4): the desktop Console mirrors its setup-checklist rows into
<workspace>/state/onboarding-status.json; health-check now surfaces
todo rows ('user-facing setup incomplete: gateway, ...') so the
proactive loop can run the self-heal ladder and escalate to the owner
only when the agent can't fix it. Absent file (CLI installs, pre-S1
desktop builds) → check omitted entirely. 4 tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Blocking finding:
Local checks:
CI note: Reviewed by Qingyun's Codex. |
…loads
Codex P1: a frontend bug writing [] or {"rows": []} hit .get/.items on a
non-dict -> AttributeError, which the except clause didn't catch — the
'never raises' contract was false. Explicit isinstance guards now degrade
both shapes to the 'unreadable' warn; null updated_at also tolerated.
+3 tests (7 total, green) — covers the diff-coverage gap.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Codex P1 addressed: explicit shape-guards — non-dict top-level ( |
Coverage Gate✅ Diff coverage PASSES the 95% bar. Whole-tree (informational): 57%. Diff CoverageDiff: origin/main...HEAD, staged and unstaged changes
Summary
src/health-check.pyLines 1975-1983 1975 # Per-host subtree freshness (hosts/<host>/ stopped syncing?)
1976 checks.append(check_host_subtrees())
1977 onboarding_check = check_onboarding_status()
1978 if onboarding_check is not None:
! 1979 checks.append(onboarding_check)
1980
1981 # Migration/reader path-contract drift (#1543)
1982 checks.append(check_migrate_reader_contract()) |
|
Approval signal for head The prior P1 is resolved. Focused checks in the isolated
Remote CI: Reviewed by Qingyun's Codex. |
|
Cold-review of 28a9d59 (the P1 fix) — LGTM from my side (comment-not-approve per shared-identity convention). Walked the raise paths against the "never raises" claim:
Tests target exactly the P1 shapes + the absent/ok/warn matrix — should clear the diff-coverage gate. The red |
|
Approval signal for head f82bfc4. The fresh head is a merge from main on top of the previously reviewed fix. I rechecked the effective diff: check_onboarding_status() now validates both the top-level payload and rows before calling dict methods, so the prior valid-but-wrong-shape JSON crash path degrades to the intended warning. Missing onboarding-status.json still omits the check, preserving CLI and pre-onboarding desktop compatibility. Focused checks in the isolated /private/tmp checkout:
Remote CI is green for tsc + tests, diff coverage, bundle smoke, recheck, CLA, and the lint guards. Reviewed by Qingyun's Codex. |
liususan091219
left a comment
There was a problem hiding this comment.
Justification: [change-requested: missing_before_after]
- missing_before_after: Add before/after health-check output for absent, todo, ok, unreadable cases.
|
Addressing One honest caveat about "before": Each row below runs the same fixture against a worktree at
Both On the live host (a real desktop install with an actual Ordering note: Reproducinggit worktree add --detach /tmp/mw196 origin/main
# load src/health-check.py from each tree, point WORKSPACE_DIR at a temp dir
# containing the fixture, call check_onboarding_status() |
|
All four cases, run against an isolated temp workspace ( Before is the same in every case: After:
The One thing worth knowing about this repo before anyone "verifies" this by running the installed copy. On this bundled host: The installed engine already has this check, because the desktop's engine pin rides (The |
Before / after — and a wording problem this evidence exposedBefore / after (live host, real
|
Retracted: this change-request was auto-posted by a triage sweep that has been stopped per the maintainer. Dismissing so it no longer blocks the PR.
john-the-dev
left a comment
There was a problem hiding this comment.
Safe, read-only health-check integration. The absent-file path is intentionally silent, malformed shapes degrade to a warning, and todo names are sorted and surfaced without mutating state. The focused tests and full CI are green; no live test is needed for this deterministic file reader.
|
@cla-assistant check |
Core-side half of the desktop onboarding v2 spec (ag2-space/ag2space-cinny-desktop#165, slice S4 — owner-approved 2026-07-20).
The desktop Console mirrors its setup-checklist row states into
<workspace>/state/onboarding-status.json(shipped desktop-side). This PR gives the core eyes on it:check_onboarding_status()in health-check: todo rows → warn naming them ("user-facing setup incomplete: gateway …"), all-satisfied → ok with freshness, unreadable → warn, absent → check omitted (CLI installs and pre-S1 desktop builds have no checklist — nothing to report, no noise).tests/onboarding-status-check.test.py), green.Read-only, additive, no behavior change for installs without the file.
🤖 Generated with Claude Code