V1: IPS/SMF deployment with direct TLS, proxy mode and ACME #41
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.
Depends on
Reference
OpenIndiana/ips#41
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
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.
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.
Required v1 deployment
Still to specify
Service account/privilege design, filesystem locations, renewal failure/expired-certificate behavior, ACME library and staging tests, provider API integration, and exact deployment host/resources. Do not assume these were decided by the feature requirement.
Source: maintainer grilling, 2026-09-22. Requirements only; no implementation or validation claimed.
Progress: draft PR #43 (head
4cd8aad) adds the tagged release pipeline, IPS manifest, SMF service, sample KDL and pkg6depotd(8). The native OpenIndiana manifest-to-p5p dry run passed with placeholder binaries. Solstice PR run 8945 has passed its illumos build and 140 workspace tests. The tag-only live package install/upgrade/uninstall gate and direct TLS/ACME are still outstanding; this ticket remains open.TLS/ACME implementation is in draft PR #47 at
4031e6a, stacked on package/release PR #43. It serves direct HTTPS from files or ACME HTTP-01/DNS-01 with Cloudflare and Gandi, validates config and certificates before listening, reloads atomically, and persists challenge cleanup and backoff state. The IPS sample, SMF refresh method, README and pkg6depotd(8) are updated. Local depot suite: 67/67 passed with mock CA/providers; independent Opus review found no release blocker after official Gandi endpoint verification. Native CI, live SMF package and staging CA/provider verification remain open.RC2 tagged release run 8960 passed all 407 native release-profile tests and built the
.p5p, but the throwaway-VM package test failed at its firstpkg install. Solstice's authoritative step log identifies the exact collision: bothpackage/pkg6/depotd@1.0.0,5.11-0.3.2and the VM's existingdeveloper/pkgtree@1.1,5.11-2023.0.0.5deliverusr/bin/pkgtree. pkg5 refuses to install them together. The relevant 30-line step log is preserved inlogs/solstice/2026-09-23-rc2-job22756-package-test.log(SHA-256efbd32c2ea4bf7a6f776d595bf20fd8a6189fcb55c24805d5adbd756e3d0a17a). Forgejo's forwarded job log omitted this later step, so the failure was verified against Solstice's own job-log store.RC3 work is in progress: omit the ancillary
pkgtreebinary from the server IPS package, while retaining it in platform tarballs and leaving pkg6repo/pkg6recv in the IPS package. This ticket remains open until the same tag pipeline passes real package install, SMF, upgrade and uninstall, and TLS deployment acceptance is addressed. No production installation was attempted.RC3 preflight on
oibldofgatenow exercises the exact RC1/RC2 conflict condition without changing a live image. From sourceebcc192(the latera5d3cc5commit changes only upgrade-test logic), the native optimized build and real.p5pbuild passed. A fresh alternate Hipster image first installeddeveloper/pkgtree, then installedpackage/pkg6/depotdfrom the RC3 archive with no conflicting actions;pkg verifypassed for both. The package manifest no longer deliversusr/bin/pkgtree; Hipster'sdeveloper/pkgtreestill owns it. Evidence:logs/oibldofgate/ips-rc3-preflight/.A second alternate-image preflight upgraded the actual RC3 package from branch
0.3.3to0.3.3.1using ordinary pkg5 publication and a version selector without the stale timestamp. The edited operator KDL survived, the new default was delivered as.kdl.new, pkg5 verification passed, anddeveloper/pkgtreeremained installed. Evidence:logs/oibldofgate/ips-rc3-upgrade-preflight/. An earlier tiny-package probe proved and corrected two test-script assumptions about rewritten publication timestamps and pkg5's shortpkg list -voutput. The branch-head upgrade-test fix isa5d3cc5, and exact-head CI run 8962 is in progress.These alternate-root checks do not run SMF actions, service restart or live uninstall. Keep this ticket open until the RC3 tag pipeline proves those on its disposable VM. No production installation or cutover was attempted.
RC3 tag
v1.0.0-rc.3(commita5d3cc5, release run 8963) passed Linux and the OpenIndiana release-profile suite (407/407). The native job built the.p5p, installedpackage/pkg6/depotd@1.0.0-0.3.3into its disposable VM's live IPS image, andpkg verifypassed. This confirms the RC1/RC2/usr/bin/pkgtreepackage collision is resolved.The native job then failed in the test harness at
=== account and files: the unprivileged runner could not traverse the intentionally restricted/etc/pkg6depotddirectory to statpkg6depotd.kdl. No package or service failure was established by that result. The RC3 release was not published.Commit
2ff3e08fixes protected-path checks in the live package test while retaining assertions for the restrictive mode and unprivileged denial; it also fixes the analogous post-uninstall repository check and bumps the release to RC4. An independent Opus review found no blockers; local release-script tests passed 362/362. Immutable tagv1.0.0-rc.4is running the same release workflow in run 8965. Live SMF/upgrade/uninstall verification and a published.p5premain pending that job's result. Productionoirepo6cutover has not occurred.RC4 tag
v1.0.0-rc.4(commit2ff3e08, release run 8965) passed Linux and all 407 OpenIndiana release-profile tests. Its.p5pinstalled successfully into the disposable VM's live image;pkg verify, account/mode checks, and installed binaries passed. The test then reached its manual-page rendering check and stopped because the minimal Solstice VM did not havemaninstalled (man: command not found). This is another CI prerequisite gap, not evidence that the pkg6 IPS payload is invalid. RC4 was not published.OpenIndiana packages
/usr/bin/maninsystem/manand/usr/bin/colinsystem/extended-system-utilities(verified against the installed package database onoibldofgate). Commitef92ceeadds those two packages to the disposable release test VM before the live script, leaving the server package's runtime dependencies and payload unchanged. Independent Opus review found no blockers; local release-script tests passed 362/362 and native-link tests 40/40. Immutable tagv1.0.0-rc.5is running the shared release workflow in run 8966. Live manual-page rendering, SMF, pkg5 serving, upgrade/uninstall and published.p5premain pending its result.RC5 tag
v1.0.0-rc.5(commitef92cee, release run 8966) passed Linux and all 407 OpenIndiana release-profile tests. The disposable VM installed the manual-reader prerequisites, installed and verifiedpackage/pkg6/depotd@1.0.0-0.3.5, and passed the account/mode/binary checks. Its installedpkg6depotd(8)page rendered successfully with a visibleNAMEsection, but the harness'secho "$out" | grep -q '^NAME'assertion falsely failed: withpipefail,grep -qcloses a long pipe early andechoreceives SIGPIPE. The Solstice step log (job 22768) shows both the false failure and the actualNAMEheading. RC5 was not published.Pending RC6 fixes all three captured-output
echo | grep -qassertions in the live package script with here-strings, retaining their patterns; the corresponding release self-test was updated and passes 362/362. A long-output local reproduction demonstrated the old false failure and the corrected check. No production package payload or manpage content changed. Independent review and a new immutable RC tag are next. Live SMF, pkg5 serving, upgrade/uninstall and published.p5premain unproven by a tagged job.RC6 tag
v1.0.0-rc.6(commit6df21d2, release run 8968) passed Linux and all 407 OpenIndiana release-profile tests. Its.p5pinstalled and verified in the disposable VM; account, binary and all installed manpage checks passed. SMF started the depot, and the missing-config check correctly put the instance in maintenance. The next live check exposed a real SMF fault: for a readable malformed KDL, the daemon logged parse errors and repeated failed starts, butsvcsremainedonline*instead of entering maintenance after 90 seconds (Solstice job 22772 package-test log saved in the workspace). RC6 was not published.The packaged start method currently checks only readability before exec-ing the daemon. Pending RC7 runs
pkg6depotd --config ... config-testunder the same SMF credentials first; on rejection, the start method exitsSMF_EXIT_ERR_CONFIG(96), which should put the instance in maintenance. A local stub test now covers valid, malformed and missing config; release-script tests pass 370/370. Independent review and tagged live verification are pending. The rest of the live pkg5 serving, upgrade/uninstall and asset publication remains unproven until that tag job completes.RC7 (
55cb6a0, Solstice tag run 8970) passed the Linux job, all 407 OpenIndiana release-profile tests, live IPS installation and verification, the packaged SMF checks including malformed readable KDL, and a native local pkg5 client smoke that installed and verified a package through the new depot. The live package test then failed at its upgrade command because pkg5's default policy requested a backup boot environment and the disposable Solstice VM could not clone it (pkg: Unable to clone the current boot environment.). Evidence: native job 22776, package-test log SHA-2564e0cf8b26a1f6a2cadb29a5d5d4c75f4e262b6ae5544718bbe4ab6879df54067in the local workspace logs.The local OpenIndiana pkg5 implementation and its manpage confirm
pkg update --no-backup-besuppresses that backup while updating the live image. RC8 (3371770, tagv1.0.0-rc.8, Solstice run 8973) contains only this focused harness fix and the version bump. Local syntax, metadata/format checks, and 370 release-script checks pass; an independent local Opus review found no blocker. RC8 native install/upgrade/uninstall and asset publication are pending CI. Historical 2020 client/ISO validation remains separate and awaits the NFS source access agreed with the maintainer.RC8 (
3371770, tag run 8973) passed Linux, all 407 OpenIndiana native tests, IPS install/verify and SMF checks, the local pkg5 client smoke, and a live pkg5 upgrade. The upgrade explicitly plannedCreate boot environment: NoandCreate backup boot environment: No; it installed the newer FMRI, retained the operator-edited config, delivered.kdl.new, and kept the depot online. The job then exited silently before runningpkg uninstall: the test harness calledfind /var/pkg/lost+foundon a fresh image where that directory did not yet exist, andset -euo pipefailterminated on the resulting status 1. Native job 22782 package-test log SHA-256:45c046a47527bf9584d5b221389df82b15c7afc5a84629d13bd80c6bcb595be7in local workspace logs.RC9 (
ce82d70, tagv1.0.0-rc.9, run 8975) handles an absent lost+found as an empty baseline while keeping real find errors visible and preserving the repository-content assertion. Five new targeted script checks were added; local release-script suite: 375 passed, 0 failed. Independent Opus review found no blocker. The tagged Solstice run must still pass uninstall and publish the IPS asset before this delivery ticket is accepted. Historical 2020 client/ISO validation stays open separately under #42 pending NFS source access.RC9 (
ce82d70, tag run 8975) passed the Linux release job, all 407 native release-profile tests,.p5pbuild and live install/verify, manpage rendering, packaged SMF checks, native local pkg5 client smoke, and live upgrade with edited KDL retained. It reachedpkg uninstall, which planned no new or backup BE, but pkg5'sdisable_fmriactuator failed becausesvcadm disable -sreportedsvc:/system/svc/restarter:defaultlacks itsrestarterproperty group and the depot's restarter is unavailable. The package must retaindisable_fmri; dropping it would leave a running daemon behind on uninstall. A read-only check on oibldofgate found the master restarter's expected NONPERSISTENT group and online state. Solstice's database briefly became unreachable during the job, causing Forgejo to mark it failed before the runner continued; the runner's final uninstall failure is independently recorded. Native job 22786 package-test log SHA-256:57390cc14a2f96b10a92e465d8d4b4a7155187c57035d86ef03c8a9e511b5122in local workspace logs.RC10 (
f8c456f, tagv1.0.0-rc.10, Solstice run 8977) changes only the disposable-VM lifecycle test and version. It checks master-restarter state before install, after install, after the malformed-config exercise, after pkg5 smoke, and before uninstall, with bounded diagnostics on failure. The live uninstall remains mandatory. Local release-script checks: 384 passed, 0 failed; independent Opus review found no blocker. A fresh tagged VM run will tell whether the restarter problem recurs and when it begins. No package asset or v1 acceptance is claimed yet; historical 2020 validation remains open under #42 pending NFS sources.RC10 (
f8c456f, tag run 8977) has isolated the remaining package-test blocker to the Solstice Hipster VM before the pkg6 package is installed. Its native release job 22790 passed tag/provenance, 384 release-script checks, all 407 OpenIndiana release-profile tests, and.p5pconstruction. The new first lifecycle checkpoint then failed:svcprop -p restarter/state svc:/system/svc/restarter:defaultreported norestarterproperty group. Bounded diagnostics show the master instance with state-,svc:/system/svc/global:defaultdisabled, andsvc.startd/svc.configdprocesses running. The test exited beforepkg install. Package-test log SHA-256:314cfcf2415408ff8a7e58e4598bd8d2b4add72d67fe31cb2a8cc4bcd82b463ein local workspace logs. The stable oibldofgate VM reports the expected NONPERSISTENT group andonlinestate.This confirms RC9's
svcadm disablefailure came from an already incomplete Solstice VM SMF state, not from pkg6's install, config exercise, or upgrade. The package retainsdisable_fmriso uninstall stops a running depot. The RC9 job previously proved live install/verify, manual rendering, SMF config failure handling, native pkg5 client smoke, and live upgrade; it could not complete uninstall on that VM. No tagged IPS asset was published, and this ticket stays open. Next acceptance step, when infrastructure work is resumed: repair the disposable OpenIndiana VM image's master SMF restarter state, then rerun the same tag pipeline on a fresh immutable candidate and verify live uninstall plus published.p5passets. Historical 2020/NFS validation remains separate under #42.Native OpenIndiana fast-loop evidence for PR #46 (current head
a1d715b3db46d94c8963c3f2d046bbc26443883f):v1.0.0-rc.10tag (f8c456f2cd5a7e7d88b7c9f8785257e5a9b05fb2), an isolated checkout onoibuildbuilt the release workspace at-j2in 16m 01s and producedpkg6depotd-1.0.0-rc.10-illumos-x86_64.p5pwith the native pkg5 tools. Archive SHA-256:94d4e18c641a0ea37313d957b9e909e4dbe562e8e45e3a98e70a86de6004d6b7.cargo nextestforpkg6repoandpkg6depotd: 155 passed, 0 skipped. The release-script checks passed (385 on tagged source; 398 locally after the new script).a1d715bpassed twice onoibuild: no-op reimport, pkg5 catalog and manifest reads,pkgrecvmanifest/payload identity, and install/verify/uninstall of a dummy package in a user-owned alternate image. It leaves no scratch daemon or image. The reviewed run used the exact script now on the PR branch.a1d715bdocuments a repeatable pre-tag candidate-package command. This script is a fast shared-zone check; the tagged release workflow and disposable-VM live SMF test remain required.The live package gate is still blocked before package installation on Solstice job 22790: the fresh VM lacks the master restarter's NONPERSISTENT
restarterproperty group. No release asset was published, the RC10 tag was not moved, and live install/upgrade/uninstall acceptance remains open. The source and logs are recorded locally undernotes/ips-v1-oibuild-rc10.mdandlogs/oibuild/.RC11 IPS package is published at https://code.aopc.cloud/OpenIndiana/ips/releases/tag/v1.0.0-rc.11 . The published
.p5pispkg6depotd-1.0.0-rc.11-illumos-x86_64.p5p, SHA-256dbeba8be6e4164d62645b31b1a89b6ff4b0554a54810dfc4a8506c32a57f32d1; Forgejo's downloaded bytes match the tagged oibuild artifact. The unprivileged native pkg5 catalog/download/install/verify/uninstall smoke in scratch images passed, as did 407/407 release-profile tests on oibuild and the Solstice illumos test step.Live-image IPS install, upgrade, uninstall and SMF lifecycle validation remains unproven. RC10's disposable VM lacked the SMF restarter property group; RC11's Solstice job was marked failed after the passing test step, but its log stops there, so the RC11 failure cannot be attributed to SMF from available evidence. The public RC11 body discloses this gap. PR #46/ADR-011 temporarily builds illumos release assets on oibuild and keeps release credentials off that shared host. Keep this issue open until the disposable live-image/SMF gate passes or its disposition is explicitly accepted.
ADR-015 item 1 (2026-09-27): the disposable-VM install/upgrade/uninstall/SMF test is replaced as a v1.0 gate by evidence on oirepo6: tagged package installed and upgraded with
pkg verifyclean, packaged SMF service online, native pkg5 reads, and one verified reboot with the service back on the activated BE. Uninstall is proven once on a scratch BE on oibldofgate. The Solstice live-image job stays non-blocking until CloudNebulaProject/solstice-ci#8 is fixed. Still open here: the reboot and the scratch-BE uninstall.The RC14 tagged IPS package is installed and
pkg verifypasses on private oirepo6.svc:/application/pkg/pkg6depotd:defaultserves the existing private endpoint on port 8080. Named:legacy,:oi-sparc, and:unleashedinstances are online from separate repository roots using direct SMF properties; each has an HTTP 200/admin/health. Thelegacyinstance is bound to private 10.1.0.13:8081 for a native pkg5 read/fetch test; the other two are loopback-only until import/routing. The public reverse proxy was not changed.Package actuator syntax now addresses all instances on upgrade/removal. The automated live-image package lifecycle test remains NOT RUN because the Solstice illumos job failed before compilation; manual RC14 upgrade, package verification, and multi-instance runtime passed. See PR #56 and RC14.