Show readiness reason first and record live dashboard acceptance
Demo images / Build & push demo images (push) Failing after 45s
Demo images / Build & push demo images (push) Failing after 45s
This commit is contained in:
@@ -46,9 +46,9 @@ completed. See PR review for the accepted scope and coverage limits.
|
|||||||
## Final release checklist
|
## Final release checklist
|
||||||
|
|
||||||
- [ ] Finish all new-scope implementation and specific acceptance above.
|
- [ ] Finish all new-scope implementation and specific acceptance above.
|
||||||
- [ ] Remove disposable fixtures and temporary test overrides; verify native
|
- [x] Remove disposable fixtures and temporary test overrides; verify native
|
||||||
Bitcoin/LND identity and start-state baselines remain protected.
|
Bitcoin/LND identity and start-state baselines remain protected.
|
||||||
- [ ] Commit and push completed source changes to git and ngit.
|
- [x] Commit and push completed source changes to git and ngit.
|
||||||
- [ ] Run final backend/UI/regression/release gates on the final source; inspect
|
- [ ] Run final backend/UI/regression/release gates on the final source; inspect
|
||||||
skipped tests and report actual hardware/runtime coverage.
|
skipped tests and report actual hardware/runtime coverage.
|
||||||
- [ ] Prepare compatible signed app catalog; old runtimes must not apply a
|
- [ ] Prepare compatible signed app catalog; old runtimes must not apply a
|
||||||
@@ -127,7 +127,7 @@ across reboot; it does not substitute for final new-runtime delivery checks.
|
|||||||
restored beside the real `mempool` frontend. Shared scanner canonicalization
|
restored beside the real `mempool` frontend. Shared scanner canonicalization
|
||||||
fixes live and absent-container paths without deleting installed markers.
|
fixes live and absent-container paths without deleting installed markers.
|
||||||
Frontend suppresses aliases only while a canonical tile exists.
|
Frontend suppresses aliases only while a canonical tile exists.
|
||||||
- Readiness text names the app: “Waiting for Gitea…”. It shares the status row,
|
- Readiness text names the app and condition: “Web UI not ready: Gitea”. It shares the status row,
|
||||||
with full text available through its title; card actions use bottom alignment.
|
with full text available through its title; card actions use bottom alignment.
|
||||||
- Angor uses the operator-supplied dark-mode icon with green outer corners.
|
- Angor uses the operator-supplied dark-mode icon with green outer corners.
|
||||||
Built-in imagegen prompt: fill transparent/white corners with the existing
|
Built-in imagegen prompt: fill transparent/white corners with the existing
|
||||||
@@ -155,15 +155,15 @@ rootless Quadlet service with its declared port and network.
|
|||||||
Runtime promotion and the legacy installer-directory repair now finish before
|
Runtime promotion and the legacy installer-directory repair now finish before
|
||||||
orchestrator construction. The background doctor no longer changes that tree.
|
orchestrator construction. The background doctor no longer changes that tree.
|
||||||
The final source backend suite passed 1,608 tests (four existing opt-in tests
|
The final source backend suite passed 1,608 tests (four existing opt-in tests
|
||||||
ignored). Optimized build and normal-path live restart verification remain pending.
|
ignored). Optimized build and normal-path live startup/restart verification have now passed (see final follow-up below).
|
||||||
|
|
||||||
Actual dev Angor acceptance passed managed service identity, no capabilities,
|
Actual dev Angor acceptance passed managed service identity, no capabilities,
|
||||||
UID 101:101, archy-net, public block height, CORS and both fee URL forms. During
|
UID 101:101, archy-net, public block height, CORS and both fee URL forms. During
|
||||||
Bitcoin initial sync, the real Mempool fee API returns 503; the adapter faithfully
|
Bitcoin initial sync, the real Mempool fee API returns 503; the adapter faithfully
|
||||||
returns the same status and body. Full-sync fee availability remains unverified;
|
returns the same status and body. Full-sync fee availability remains unverified;
|
||||||
ready-backend API and failure/recovery behavior passed the isolated live fixture.
|
ready-backend API and failure/recovery behavior passed the isolated live fixture.
|
||||||
The temporary `/run/archy-candidate-manifests` snapshot override must be removed
|
The temporary `/run/archy-candidate-manifests` snapshot override and snapshot
|
||||||
when deploying the startup-order fix, then normal startup/reload must be checked.
|
are now removed; normal startup/reload verification passed.
|
||||||
|
|
||||||
The latest complete UI suite passed 140 files / 1,132 tests. Release preflight
|
The latest complete UI suite passed 140 files / 1,132 tests. Release preflight
|
||||||
passed all static, manifest, catalog, type and UI gates. The requested named
|
passed all static, manifest, catalog, type and UI gates. The requested named
|
||||||
@@ -196,3 +196,32 @@ managed Angor restarts. No new release version/tag, OTA or ISO has been created.
|
|||||||
- Phoenixd has no browser UI. Headless services now omit web-readiness messages;
|
- Phoenixd has no browser UI. Headless services now omit web-readiness messages;
|
||||||
actual browser apps name their web interface rather than waiting for
|
actual browser apps name their web interface rather than waiting for
|
||||||
themselves. Focused 23 UI tests and production build passed; deployed to dev.
|
themselves. Focused 23 UI tests and production build passed; deployed to dev.
|
||||||
|
|
||||||
|
## Final live follow-up: all three reported readiness/display defects fixed
|
||||||
|
|
||||||
|
- Final optimized backend is deployed on dev. Bitcoin Core's launch address is
|
||||||
|
`http://localhost:8334` and `ui-ready` is true during initial block download.
|
||||||
|
Live verification recorded height 293,855 with `initialblockdownload=true`.
|
||||||
|
Chromium at 1440 and 390 pixels opened the embedded dashboard, read a numeric
|
||||||
|
current block height, and repeated that check after hard refresh.
|
||||||
|
- One healthy Mempool remains in server state and in desktop/mobile My Apps
|
||||||
|
after hard refresh. Its durable install markers were preserved.
|
||||||
|
- Phoenixd remains a running headless service without a web launcher or false
|
||||||
|
web-readiness message. Desktop/mobile browser checks passed. For actual web
|
||||||
|
apps, the compact copy is “Web UI not ready: [app]”; the reason comes first so
|
||||||
|
narrower cards do not truncate it into a misleading self-dependency.
|
||||||
|
- Five normal management startup and managed Angor restart cycles passed
|
||||||
|
across the two acceptance logs. The retry harness uses bounded readiness
|
||||||
|
polling; it does not accept a running container alone as API readiness.
|
||||||
|
Disk + catalog manifest count remained 62 across startup refreshes, replacing
|
||||||
|
the previous 62-to-54 failure. Temporary override and snapshot are removed.
|
||||||
|
- Final backend tests: 1,609 passed, zero failed, four existing opt-in ignored.
|
||||||
|
Final UI tests: 140 files / 1,133 passed. Production UI build passed and is live.
|
||||||
|
Bitcoin/LND container identities and start timestamps stayed unchanged.
|
||||||
|
- Evidence: `/tmp/archy-dashboard-address-deploy.log`,
|
||||||
|
`/tmp/archy-bitcoin-ibd-browser.log`, `/tmp/archy-mempool-live-browser.log`,
|
||||||
|
`/tmp/archy-service-readiness-browser.log`,
|
||||||
|
`/tmp/archy-runtime-order-remaining-cycles.log`, and
|
||||||
|
`/tmp/archy-readiness-final-ui-tests.log`.
|
||||||
|
- These are live development fixes. The new signed catalog, versioned OTA and
|
||||||
|
raw ISO still need preparation, artifact verification, signing and publication.
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ describe('appsConfig service filtering', () => {
|
|||||||
pkg.health = null
|
pkg.health = null
|
||||||
expect(isAppReadyForLaunch(pkg)).toBe(false)
|
expect(isAppReadyForLaunch(pkg)).toBe(false)
|
||||||
expect(canLaunch(pkg)).toBe(false)
|
expect(canLaunch(pkg)).toBe(false)
|
||||||
expect(launchBlockedReason(pkg.manifest.id, pkg)).toBe('Waiting for GitWorkshop’s web interface…')
|
expect(launchBlockedReason(pkg.manifest.id, pkg)).toBe('Web UI not ready: GitWorkshop')
|
||||||
pkg.health = 'healthy'
|
pkg.health = 'healthy'
|
||||||
expect(canLaunch(pkg)).toBe(true)
|
expect(canLaunch(pkg)).toBe(true)
|
||||||
})
|
})
|
||||||
@@ -214,7 +214,7 @@ describe('HTTP readiness independent of container health', () => {
|
|||||||
pkg.health = 'healthy'
|
pkg.health = 'healthy'
|
||||||
expect(canLaunch(pkg)).toBe(false)
|
expect(canLaunch(pkg)).toBe(false)
|
||||||
expect(isAppReadyForLaunch(pkg)).toBe(false)
|
expect(isAppReadyForLaunch(pkg)).toBe(false)
|
||||||
expect(launchBlockedReason(id, pkg)).toBe(`Waiting for ${resolveAppTitle(id, pkg)}’s web interface…`)
|
expect(launchBlockedReason(id, pkg)).toBe(`Web UI not ready: ${resolveAppTitle(id, pkg)}`)
|
||||||
pkg['ui-ready'] = true
|
pkg['ui-ready'] = true
|
||||||
expect(isAppReadyForLaunch(pkg)).toBe(true)
|
expect(isAppReadyForLaunch(pkg)).toBe(true)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ export function launchBlockedReason(id: string, pkg?: PackageDataEntry | null):
|
|||||||
if (pkg && isWebsitePackage(appId, pkg)) return ''
|
if (pkg && isWebsitePackage(appId, pkg)) return ''
|
||||||
if (pkg?.['ui-ready'] === false && !isServicePackage(appId, pkg)) {
|
if (pkg?.['ui-ready'] === false && !isServicePackage(appId, pkg)) {
|
||||||
if (pkg.state === PackageState.Stopped || pkg.state === PackageState.Exited) return 'App is stopped. Start it to open it.'
|
if (pkg.state === PackageState.Stopped || pkg.state === PackageState.Exited) return 'App is stopped. Start it to open it.'
|
||||||
return `Waiting for ${title}’s web interface…`
|
return `Web UI not ready: ${title}`
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
(appId === 'fedimint' || appId === 'fedimintd') &&
|
(appId === 'fedimint' || appId === 'fedimintd') &&
|
||||||
@@ -317,7 +317,7 @@ export function launchBlockedReason(id: string, pkg?: PackageDataEntry | null):
|
|||||||
return 'Guardian opens a wait page until Bitcoin finishes initial sync.'
|
return 'Guardian opens a wait page until Bitcoin finishes initial sync.'
|
||||||
}
|
}
|
||||||
if (pkg && pkg.state === PackageState.Running && !isAppReadyForLaunch(pkg)) {
|
if (pkg && pkg.state === PackageState.Running && !isAppReadyForLaunch(pkg)) {
|
||||||
return `Waiting for ${title}’s web interface…`
|
return `Web UI not ready: ${title}`
|
||||||
}
|
}
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user