Repository navigation
Description
Problem
Recurrent QA preflight failures leave operators unable to distinguish catalog/profile resolution, actor admission, and model availability. Existing reports cover overlapping parts of this class; an installation update is not a justified remedy when the effective installation is already consistent.
Desired outcome
Coordinate and resolve the existing QA preflight reliability reports as one root-cause cluster, with deterministic public-interface evidence and actionable diagnostics rather than repeated live-model attempts.
Scope and non-goals
Existing children: #329 (admission stages and doctor), #374 (stage inputs and resolved route diagnostics), #324 (relative catalog/profile resolution). Reuse existing mechanisms and ownership safeguards. Lifecycle conflict diagnostics #373 and provider transport behavior #345 are adjacent but separate; do not claim them resolved by this epic. No new model calls or user configuration takeover are required for preflight reproductions.
Acceptance criteria
- Reproduce and disposition each child on current main with named tests; close nothing solely from a green CI run.
- Setup and run resolve the same supplied catalog/profile context, including the relative-path scenario in Bug: qa run silently ignores the route profile when the catalog path is not canonical-absolute #324.
- Admission refusals identify the failed stage and useful bounded context without secrets; doctor does not confuse admission readiness with model readiness.
- Refusal guidance describes the effective route rather than falsely asserting the placeholder route.
- Ship focused reviewed fixes with regression evidence, docs/help updates, and no unauthorized runtime writes or model launches on rejected requests.
- Link delivered PRs and exact acceptance evidence for each child before closing this umbrella.
Evidence
Canonical reports: #329, #374, #324. Maintainer explicitly requested an umbrella epic and end-to-end resolution using maintainer triage/review/delivery guidance. Read-only inspection of an affected deployment found matching alpha20 binary/ledger/catalog, all 18 Pi asset hashes matching, and a correct update preview returning all 19 operations unchanged; this does not establish the unknown context of the original rejection.
Activity
feat(qaroute): list admitted profile ids for refusals (#403)
fix(qapi): refuse an unusable default profile source (#404)
fix(cli): validate the qa setup catalog root (#405)
feat(installobserve): type admission refusal stages (#406)
feat(cli): name preflight refusal stages and selected profiles (#407)
fix(cli): escape routed pair diagnostics (#408)
feat(cli): report doctor probe route and scope (#410)
barbatdev commentedon Oct 31, 2026
The verified preflight fixes are delivered on
mainate19f02179f3484bfd9378677d791653dbfbbfd0e. Eight focused PRs merged in order, all below 400 changed lines: #402 parser (188), #403 admitted profile ids (134), #404 default-source refusal (122), #405 setup root agreement (162), #406 typed admission (155), #407 refusal/profile diagnostics (310), #408 route escaping (70), #410 doctor scope (219). Every merge required passing current CI, a pinned head SHA, and complete source-tree identity with its verified slice; the final tree matches the tested candidate exactly.Acceptance evidence is recorded on #324, #374 and #329. Full Go tests, vet, race and all 15 repository policy tests passed on the canonical clean snapshot; independent final verification passed 19 named tests plus four package suites/vet with no severe blockers. Expected fail-closed refusals retain ownership and symlink protections; no real provider calls or runtime repair were needed for these preflight tests.
#324 and #374 are resolved. #329 is partially resolved and stays open: stage reporting does not establish whether the cause is transient or persistent. This umbrella also stays open pending that explicit acceptance disposition. Provider transport #345 and lifecycle #373 remain outside scope. Current-main delivery is not proof that an installed alpha20 deployment has received these fixes.
barbatdev commentedon Oct 31, 2026
Maintainer disposition: retain the shipped stage diagnostics and define a concrete reproduction before promising transient/persistent causal classification. #329 now carries the bounded protocol: synthetic disposable state and fake backend only, fixed-input identities, at most three timed attempts, exact exit/stdout/stderr plus launch/no-write evidence, and explicit stable-refusal/changed-input/changed-outcome/not-reproduced interpretations.
The existing public CLI shadow-refusal control and seven-category admission table passed three test repetitions on the delivered source tree. These repetitions use fresh fixtures and are not a reproduction of the original minute-scale incident; the timed same-fixture experiment remains unexecuted. No production host, credentials, provider calls, automatic retries, or repair changes are involved.
#324/#374 remain resolved. #329 remains the canonical residual investigation; this umbrella stays open for that evidence or an explicit not-reproduced disposition. No new generic issue or speculative runtime fix is needed.
barbatdev commentedon Oct 31, 2026
The #329 bounded protocol has been executed: three timed identical attempts (0/30/120 s) on a disposable synthetic fixture with the fake backend produced an identical stable refusal (
actor_shadow_unverified, exit 70, no launch, inputs unchanged), and the isolated control (removing the shadow) flipped admission to success. Details and exact output are on #329.Interpretation is bounded: the delivered tree's admission is deterministic under fixed observed inputs over the tested window. The original incident was not reproduced and its cause remains unknown; the shadow trigger is established only for the control scenario. #329 and this umbrella stay open for a real paired-attempt reproduction or an explicit not-reproduced disposition. No product change, no runtime repair, no provider calls.