Define what 'v1.0 server release' must include and its acceptance criteria #25
Labels
No labels
Compat/Breaking
Crazy Idea
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
needs-info
needs-triage
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
#26 Decide the publish transaction model: one FMRI per transaction vs many packages per transaction
OpenIndiana/ips
#27 Decide the RBAC model: token-claim roles vs stored per-publisher roles, and admin bootstrap
OpenIndiana/ips
#29 Decide telemetry scope for v1: which OTLP signals, exporter, and whether it gates the release
OpenIndiana/ips
#30 Decide the documentation format, location and minimum content for the server release
OpenIndiana/ips
#31 Define the SQLite catalog load-testing plan: datasets, operations, pass criteria, where it runs
OpenIndiana/ips
#41 V1: IPS/SMF deployment with direct TLS, proxy mode and ACME
OpenIndiana/ips
#42 V1: validate OpenIndiana Hipster clients from 2020 onward
OpenIndiana/ips
Reference
OpenIndiana/ips#25
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #24
Preserved snapshot support promise — 2026-09-22
Maintainer decision: selected historical ISO snapshots must support maintaining the historical system, not merely booting/installing and upgrading to current Hipster. Users must be able to install additional packages and repair installed packages while retaining that snapshot's original version constraints. Selected snapshots remain protected indefinitely under the agreed retention policy.
Consequences for design and acceptance:
This settles the product-level snapshot promise. Reconstruction, snapshot catalog design and validation remain engineering work, not completed functionality.
Configurable retirement and KDL policy — 2026-09-22
Latest maintainer direction:
Engineering defaults/constraints to carry into the design (defaults selected here under that delegation, not independently quoted maintainer decisions): retirement is opt-in/disabled by default; disabling pauses policy-driven retirement without purging content or automatically restoring hidden versions. Continue serving hidden exact-FMRI content. Keep access tracking separately durable. Manual purge remains an explicit operator action with retention, snapshot and dependency checks; enabling retirement must never enable automatic purge. Document configuration effects and validate durations/rules before any mutation.
Still require evidence rather than assumptions: actual local pkg5 behavior, snapshot dependency closure, safe catalog replacement, and historical-client compatibility. No implementation or runtime validation is claimed by this decision update.
V1 administration boundary — 2026-09-22
Maintainer decision: the public HTTP interface is read-only in v1. Imports, retirement/purge and repository administration are available through local commands only. Remote publication and OIDC/RBAC remain deferred.
Apply this boundary to actual registered routes and any web UI: do not expose repository-mutating or administrative operations publicly in v1. Read-only package serving/search remain available. ACME HTTP-01 challenge serving remains supported and is not a repository administration endpoint. Document the local operator/CI script workflow and validate that public HTTP cannot mutate repository state. This records required behavior, not a claim that current routes already enforce it.
Load testing scope correction — 2026-09-22
The maintainer rejected the proposed mandatory 24-hour pre-cutover soak. Sustained-load testing/observation can take place after cutover and is not a v1 release gate. The workload is predominantly file downloads at low concurrency; search is the main query-computation concern highlighted by the maintainer. Do not infer that ingestion/catalog maintenance requires no server computation.
Keep pre-release correctness and targeted functional checks for real OpenIndiana pkg5 clients, search, atomic batch imports, and continuous reads across stable-path catalog rename. OTel failure isolation remains a required behavior. Do not add a mandatory soak duration, synthetic concurrency target, or numeric performance threshold without a new decision. Current oirepo remains the qualitative operational baseline. This supersedes earlier proposed soak/load release gates; it does not authorize production cutover or claim tests have run.
Deployment and load clarification — 2026-09-22
Maintainer-provided target:
oirepo6, a zone on the same existing host asoirepo, behind the same reverse proxy. Neither zone has explicit resource limits. This describes the intended deployment; no live host/resource inspection has yet been performed.The intended eventual role is the main repository host. V1 qualification still uses the separate depot; this does not authorize production cutover. It must serve the existing client population comfortably, with performance comparable to the current service. Traffic is predominantly a few requests at a time, accumulating substantial volume over time, rather than large simultaneous bursts.
For #31/#5, use the current service as the comparative baseline and representative low-concurrency sustained traffic as the workload. Actual request-rate/concurrency distribution and resource consumption still need measurement; no numerical latency/RSS/duration budget has been agreed. Include service behavior during imports/catalog maintenance. Absence of zone caps is not an allocation of the shared host's resources; establish a safe test budget before load generation.
Maintainer decisions — 2026-09-22
Still open: exact ISO matrix, performance/concurrency/RSS budgets (#31), deployment resources, detailed retirement edge cases, ADR capture and build-ticket slicing. Keep this decision ticket open until the remaining release acceptance criteria are settled.
Implementation/verification tickets: #38, #39, #40, #41, #42.
These decisions supersede conflicting earlier scope below. This update records maintainer decisions, not implementation or test completion.
Earlier brief and context
Question
What must be true before we tag pkg6depotd v1.0? Settle the release scope so every other decision on this map has a boundary.
Grill on:
pkg(1)from OpenIndiana hipster and OmniOS?pkg6itself? Which pkg5 depot API versions (/versions/0advertised set) are the compatibility contract?ips:writemay publish" enough for the first release? Is OpenTelemetry release-blocking?/to-ticketscan later slice the build.Record the outcome as an ADR (
docs/ai/decisions/004-...) and update the milestone description.Links
Release-candidate packaging status (2026-09-23):
v1.0.0-rc.2is an immutable annotated tag (tag object9e6dd39869307159a7877118d05bf40ee657478c, peeled commitca42462105cb5b5c9c42145bd3ccf73502256d5e). The same semver tag workflow is used for alpha, beta, RC and stable releases. Exact-head PR CI run 8959 passed on Linux and OpenIndiana: each platform ran 407/407 tests successfully, with one documented opt-in network skip. The tag release pipeline is now running: https://code.aopc.cloud/OpenIndiana/ips/actions/runs/20.Before tagging, a native OpenIndiana scratch build produced
pkg6depotd-1.0.0-rc.2-illumos-x86_64.p5p, and current OpenIndiana pkg5 client smoke passed catalog refresh/list/info,pkgrecvmanifests/payloads, scratch-image install/verify/uninstall and exact reimport no-op. Evidence and checksum are recorded in #42 andlogs/oibldofgate/ips-rc2-smoke/. RC1's native package job had exposed a missing requiredupdatesfield incatalog.attrs; RC2 fixes it and verifies the full package FMRI through the completed.p5p.This is a release candidate, not v1 acceptance yet. The tag pipeline's disposable-VM package install/SMF/upgrade/uninstall result is pending. Historical Hipster ~2020 and protected snapshot maintenance acceptance in #42 remains open, as do the separate repository access and old-client guest prerequisites. No production
oirepo6cutover has been attempted.Update to the RC2 status above: tag run 8960 did not produce a deployable OpenIndiana release asset. Linux succeeded; OpenIndiana passed 407/407 release-profile tests and built the
.p5p, then the live package test failed atpkg installbecause this package and the VM's existingdeveloper/pkgtreeboth deliverusr/bin/pkgtree. Authoritative Solstice step-log evidence and the focused RC3 correction are recorded in #41.v1.0.0-rc.2is immutable and will not be moved; the next candidate will be a new tag after exact-head CI. The prerelease remains incomplete/draft and this ticket stays open.Correction to my earlier RC1 attribution: I recovered the missing authoritative Solstice step log for RC1 job 22752. The first
pkg installfailed on exactly the same/usr/bin/pkgtreecollision as RC2, before the depot or pkg5 catalog was tested. The RC1 step log is preserved atlogs/solstice/2026-09-23-rc1-job22752-package-test.log(SHA-256ad36f0454f1b81db4f75455a2a1ebfa1377744c9f57f069ff0e37bc3a715a845). RC1 scratch testing separately exposed the missing pkg5-requiredupdatesfield; RC2 fixed and validated that independent bug. It did not cause the tagged RC1 install failure. PR #46 now reflects this distinction. RC3 removes the conflicting ancillary file action from the server IPS package.Release acceptance update (2026-09-23): the shared tag pipeline is in use for immutable
v1.0.0-rc.1throughv1.0.0-rc.6and is the same workflow for alpha, beta, RC and stable tags. RC1/RC2 failed live package installation because their IPS package conflicted with Hipster's existingdeveloper/pkgtree; RC3 removed/usr/bin/pkgtreefrom the server IPS package and proved live install pluspkg verify. RC3, RC4 and RC5 then exposed successive test-harness gaps on the disposable VM: stat of the intentionally protected config as an unprivileged user, absentman/colreaders, andecho | grep -qSIGPIPE underpipefailon a valid long manpage. Each was corrected in a new immutable tag, without moving older tags or weakening the package permissions. RC5 passed Linux, all 407 OpenIndiana release-profile tests, live install/verify and binary/account checks, and visibly rendered an installed page withNAME; the false assertion stopped before SMF/pkg5/upgrade/uninstall. Solstice logs for RC3–RC5 are retained with checksums in the illumos workspace.RC6 tag
v1.0.0-rc.6at6df21d2is running release workflow 8968. The release artifact is not yet accepted as deployable: tagged live SMF, pkg5 client serving, upgrade, uninstall and published.p5pare still pending. Historical Hipster 2020 and protected-snapshot maintenance acceptance remains open in #42, as does production cutover. Historical sources will later be copied from NFS and imported locally into one final repository; source path/host access is deferred, and Solstice CI is the testing venue.Release acceptance update: RC7 tag run 8970 passed Linux, 407 native release-profile tests, IPS installation/verification, packaged SMF config failure handling, and native pkg5 client smoke. Its live upgrade test hit a disposable-VM backup-BE clone failure in pkg5, before uninstall/asset upload. RC8 (
3371770, tag run 8973) uses pkg5's documented--no-backup-beonly in that live upgrade test; the installed package and normal operator BE policy are unchanged. Local release-script checks: 370 passed. Awaiting RC8 native upgrade/uninstall and release asset publication; no release acceptance is claimed yet. Historical 2020 client/ISO coverage remains open under #42 pending NFS source access.Release acceptance update: RC8 tag run 8973 passed Linux and 407 native tests, live package install/SMF, local pkg5 client smoke, and live upgrade with operator config preserved. It failed before uninstall because the throwaway VM lacked
/var/pkg/lost+foundand the harness exited underpipefailwhile collecting the salvage baseline. RC9 (ce82d70, tag run 8975) fixes that harness case and adds targeted checks (375 local release-script checks passed); native uninstall and asset publication remain pending. No release acceptance is claimed yet. Historical 2020 client/ISO coverage under #42 remains open until the agreed NFS sources are available.Release acceptance update: RC9 tag run 8975 passed Linux, all 407 native tests, live IPS install/verify, packaged SMF checks, native pkg5 client smoke, and live upgrade. Its uninstall reached pkg5's required
disable_fmriaction and failed because the disposable VM reported its master SMF restarter property group missing. The package'sdisable_fmriis retained so a normal uninstall cannot leave the daemon running. RC10 (f8c456f, tag run 8977) adds stage-specific SMF restarter checks and bounded diagnostics to the same full release pipeline; local release-script checks: 384 passed. Awaiting RC10's tagged native uninstall and asset publication before calling the package deployable. Historical 2020 client/ISO validation under #42 remains pending NFS access.Release acceptance remains open. RC10 tag run 8977 passed Linux, 384 release-script checks, 407 native OpenIndiana tests, and
.p5pconstruction, then failed its first live-image preflight beforepkg install: the fresh Solstice VM lacked the mastersvc:/system/svc/restarter:defaultrestarterproperty group. RC9 had already passed live install/verify, SMF checks, native pkg5 client smoke, and upgrade, but its uninstall actuator failed on the same missing master-restarter state. Keepingdisable_fmriis necessary for safe uninstall. The native package test and release asset upload remain blocked by the disposable VM image, whose repair is deferred with the other infrastructure work. The code and diagnostics are on PR #46 atf8c456f; no deployable tagged IPS release or v1 acceptance is claimed. Historical Hipster 2020 client/ISO validation under #42 also remains pending NFS source access.V1 acceptance update from PR #46 (
a1d715b): the tagged RC10 source built a native OpenIndiana.p5ponoibuild, 155 focused Rust tests passed, and the new pre-tag pkg5 smoke passed twice with the native client against a scratch depot (catalog, manifest, payload, and alternate-image install/verify/uninstall). The new script and release-process instructions are committed on the PR branch; the RC10 tag remains immutable.This does not close the deployable-package criterion. The Solstice live-image/SMF gate still stops before installation because the disposable VM's master restarter state is missing (job 22790). Live package install, service start, upgrade, and uninstall still need a passing disposable-VM run before release assets are published.
RC11 is published as a prerelease with Linux and illumos assets: https://code.aopc.cloud/OpenIndiana/ips/releases/tag/v1.0.0-rc.11 . Linux Solstice release job passed; illumos Solstice built and passed its 407/407 release-profile tests but was marked failed after the last visible test step, and the final log does not show the failing step. The exact tagged source was built on oibuild, passed the full 407-test release-profile inventory/run and native pkg5 smoke, and its IPS package and tarball were published with checksums/provenance. All five published illumos assets were downloaded and byte-checked against the oibuild artifacts.
The public release body explicitly states the remaining gap: live-image IPS install/upgrade/uninstall and SMF lifecycle validation did not run in the oibuild fallback. This remains an acceptance gate for stable v1 unless the owner explicitly accepts the gap. PR #46 at
dfbb618adds ADR-011 and the temporary Linux-only tag pipeline with manual illumos assets; branch CI run 8985 passed both Linux and illumos jobs at that exact head (407/407 tests on each platform). Keep this issue open for the live-image gate and final release review.import archiveandimport source#55Resolution
Grilled 2026-09-27; every point agreed by the maintainer and recorded as ADR-015 v1.0 Release Acceptance Criteria (
docs/ai/decisions/015-v1-release-acceptance-criteria.mdon PR #54).oirepo6, not a disposable VM: tagged package installed and upgraded,pkg verifyclean, packaged SMF service online, native pkg5 reads, and one verified reboot. Uninstall proven once on a scratch BE on oibldofgate. The Solstice live-image job stays non-blocking until solstice-ci#8 is fixed.legacyV3 sample. Fulllegacyimport and proxy cutover are the first v1.0.x operations (#53).pkg6repo importfamily before the tag:import archive(atomic) andimport source plan|run|publish|status(staged). Ticket #55.status/0forpkgrepo infois a v1.0 gate (#52).maincarries the release: PR #54 supersedes #43 to #51; ADR-005/006/008 flip to Accepted there;v1.0.0is tagged frommain.Everything already decided on 2026-09-22 (read-only public HTTP, local import only, retirement, telemetry mandatory, TLS both modes plus ACME, IPS/SMF, mdBook plus man pages, no soak or numeric budgets) is restated in one place in ADR-015. Glossary for the new terms is
CONTEXT.mdon the same PR.RC13 is not v1.0: items 2 to 5 need at least one more candidate.