# Nexus auto-update readiness v1 — Build 87 → 88 smoke

**Dato:** 2026-06-05  
**Branch:** `integration/platform-sprint-before-phase1`  
**Build:** 88 (`0.1.0-identity3`)  
**Opdateret:** Build **89** (`0.1.0-installer1`) publiceret — se `nexus-installer-hardening-v1/SUMMARY.md` og `publish-receipt-build-89.json`

## Build 89 note (2026-06-05)

| Felt | Værdi |
|------|-------|
| Version | `0.1.0-installer1` |
| Build | 89 |
| SHA256 | `1f77949637c09d62adfbbf936992d59d3e9f210812ea94cff52d4658553c4279` |
| sizeBytes | 15350585 |
| CDN | `https://nexus.ninjakernen.info/downloads/latest.json` → build 89 |
| Hardening | Rollback, ClearStuck, Stale recovery, PS5 apply-script fix |
| Tests | 28/28 PASS |

---

## Resultat

| Område | Status | Noter |
|--------|--------|-------|
| Manifest schema (`artifact`, `minimumSupportedBuild`, `notes`) | **PASS** | Bagudkompatibel med `packageUrl`/`sha256`/`releaseNotes` |
| UpdateService flow (check → download → SHA → install) | **PASS** | Adskilt download/install; brugerbekræftelse i POC |
| Update UI (Check/Download/Install/Cancel) | **PASS** | `UpdateInfoWindow` + Settings/About build 88 |
| Logging `%LocalAppData%\NinjaNexus\logs\update.log` | **PASS** | Manifest, build compare, download, SHA, install |
| Unit tests (28/28) | **PASS** | Manifest, SHA, lock preflight, stale job, queue timeout, applying stale |
| Lokal build 88 artifact | **PASS** | SHA256 `233ab047ac03…` |
| CDN `latest.json` build 88 | **PASS** | Verificeret efter `publish-coolify.ps1` force deploy |
| CDN ZIP SHA256 match | **PASS** | `sha256Match: true` i publish-report |
| Build 87 download stadig tilgængelig | **PASS** | `/downloads/releases/0.1.0-identity2/` urørt |
| Install lock fix (process stop + fil preflight + timeout) | **PASS** | Se `install-lock-fix-20260605-2310.md`; 26/26 unit tests |
| Fuld install fra build 87 → 88 på laptop | **PENDING** | Retest-steps dokumenteret — kræver manuel POC-kørsel |
| Code signing (`signature` felt) | **PENDING** | Kun SHA256 i POC — se `SECURITY-SHA256-vs-SIGNING.md` |

## CDN-verifikation (2026-06-05)

```
GET https://nexus.ninjakernen.info/downloads/latest.json
  build: 88
  version: 0.1.0-identity3
  artifact.url: …/releases/0.1.0-identity3/nexus-shell-poc.zip
  sha256: 233ab047ac03775d0ba9932d733516fee25148af220022c74d1f8b029a286dff
```

Build 87 manifest og ZIP forbliver på:
`https://nexus.ninjakernen.info/downloads/releases/0.1.0-identity2/`

## Simuleret build 87 klient

PowerShell (svarer til `UpdateService.CheckForUpdatesAsync` logik):

```powershell
$localBuild = 87
$remote = Invoke-RestMethod https://nexus.ninjakernen.info/downloads/latest.json
$updateAvailable = $remote.build -gt $localBuild
# Forventet: True (88 > 87)
```

## Ændrede komponenter

- `NexusUpdateManifest` — canonical `artifact` + legacy felter
- `UpdateService` — flow states, logging, `minimumSupportedBuild`
- `UpdateInfoViewModel` / `UpdateInfoWindow` — Download/Install/Cancel
- `scripts/nexus-laptop-poc/build-package.ps1` — nyt manifest-format
- `scripts/nexus-laptop-poc/publish-coolify.ps1` — auto UUID + force deploy
- `tools/publish-nexus-update.ps1` — samlet publish-flow
- `NexusShell.Tests/NexusUpdateServiceTests.cs` — 7 nye tests

## Kendte begrænsninger

- `/health` returnerede kortvarigt 404 under deploy (gateway genstart) — `/downloads/latest.json` OK bagefter.
- `publish-coolify.ps1` kræver ~120s deploy-wait for pålidelig remote verify.
- Auto-install ved startup stadig styret af `Update:AutoInstall` + safe-poc guard.
- In-place copy (ikke fuld junction-swap) — `versions\{build}` staging minimerer risiko; atomisk swap er fremtidigt arbejde.
