v1 server release line: RC13 source, acceptance criteria (ADR-015) and glossary #54

Open
toasterson wants to merge 43 commits from v1-main-merge into main
Owner

Brings the Release 1 server line onto main. This is the RC13 source (f6691a0, published as v1.0.0-rc.13, installed on oirepo6) plus the acceptance write-down from wayfinder ticket #25.

Supersedes the nine v1 pull requests #43, #44, #45, #46, #47, #48, #49, #50 and #51: feat/historical-import is a strict superset of v1-integration-20260923 (no file is removed between them), so this one PR replaces the stack.

What is added on top of RC13:

  • ADR-015 v1.0 release acceptance criteria (target-depot live gate with one reboot, historical import as a capability gate, Hipster 2020.04 / 2023.10 / current client matrix, unified pkg6repo import family before the tag, status/0 as a v1.0 gate, tag from main).
  • ADR-005, ADR-006 and ADR-008 move from Proposed to Accepted.
  • CONTEXT.md glossary for the repository-server context.

Merge criteria: both Solstice CI jobs green on this head. v1.0.0 is tagged from main after the remaining ADR-015 gates (items 2 to 5) pass in a further release candidate.

🤖 Generated with Claude Code

Brings the Release 1 server line onto `main`. This is the RC13 source (`f6691a0`, published as `v1.0.0-rc.13`, installed on oirepo6) plus the acceptance write-down from wayfinder ticket #25. Supersedes the nine v1 pull requests #43, #44, #45, #46, #47, #48, #49, #50 and #51: `feat/historical-import` is a strict superset of `v1-integration-20260923` (no file is removed between them), so this one PR replaces the stack. What is added on top of RC13: - ADR-015 v1.0 release acceptance criteria (target-depot live gate with one reboot, historical import as a capability gate, Hipster 2020.04 / 2023.10 / current client matrix, unified `pkg6repo import` family before the tag, `status/0` as a v1.0 gate, tag from `main`). - ADR-005, ADR-006 and ADR-008 move from Proposed to Accepted. - `CONTEXT.md` glossary for the repository-server context. Merge criteria: both Solstice CI jobs green on this head. `v1.0.0` is tagged from `main` after the remaining ADR-015 gates (items 2 to 5) pass in a further release candidate. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Build tagged release candidates and package the illumos depot
All checks were successful
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 7m15s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 19m2s
4cd8aad678
Export depot telemetry over bounded OTLP HTTP
Some checks failed
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 6m0s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Failing after 31m40s
9dd36eb69f
Import pkg5 archives through atomic repository generations
Some checks failed
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 8m59s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Failing after 32m33s
ffbb578475
Conflict: pkg6repo/src/e2e_tests.rs. The release branch rewrote the e2e
tests as a self-contained integration target; this line had already
removed `pkg6repo obsolete-package` (ADR-004). Take the rewritten file
and drop its test_e2e_obsoleted_packages, which drove the removed
command; tests.rs still asserts the command stays gone.

Release gate: lower the pkg6repo::e2e_tests minimum to the remaining 5
tests and require the atomic importer suites (libips atomic_pkg5_import,
pkg6repo import_pkg5_cli, pkg6depotd atomic_import_http_tests) and the
read-only HTTP suite, with script self-tests for the importer suites.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No textual conflicts; Cargo.lock merged cleanly and passes
`cargo metadata --locked`.

Semantic reconciliation: the telemetry route classifier kept an `index`
operation label, but this line no longer routes /{publisher}/index/0
(ADR-004 read-only surface). Drop HttpOperation::Index so the label set
matches the routes; the route template now classifies as unmatched.

Release gate: require pkg6depotd::telemetry_otlp (10 tests) and raise
config_fail_closed to 11 and packaged_config to 2 for the telemetry
config tests; self-tests cover the telemetry suite as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renumber the atomic pkg5 import ADR to 007
Some checks failed
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 14m6s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Has been cancelled
13ba9d7708
The release pipeline (ADR-005) and OTLP export (ADR-006) decisions were
written in parallel with the atomic importer, which also took 005. Give
the importer ADR-007 and update its references (plan, CLAUDE.md,
obsoleted packages doc). Note the importer and telemetry suites in the
release process description of the test inventory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ci: Bound the report-only clippy log
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 11m39s
CI / illumos (OpenIndiana) build + nextest (pull_request) Has been cancelled
50fa6ec237
The Linux job streamed every clippy warning with its source snippet into
the job log. Run clippy through .forgejo/scripts/clippy-report.sh
instead: diagnostics are captured as JSON and the step prints a
heartbeat, per-lint counts, one line per unique warning (capped at 300),
every error diagnostic in full and cargo's stderr tail on failure. The
step keeps clippy's exit status. A fake-cargo self-test runs first.

The release workflow does not run clippy and is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Serve depot HTTPS with ACME HTTP and DNS challenges
Some checks failed
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 26m20s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Failing after 32m22s
4031e6ae7a
Merge v1-tls-20260923 into the v1 integration line
All checks were successful
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 20m53s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 23m45s
7729974490
Direct HTTPS with certificate files or ACME (http-01, dns-01 via
Cloudflare/Gandi) now coexists with OTLP telemetry and graceful shutdown.

- lib.rs: load_config validates telemetry and TLS, both fail closed.
  serve() installs the SIGHUP handler first, then serves plain HTTP or
  TLS; both paths use SIGTERM/SIGINT drain before the telemetry flush.
- http/server.rs: one generic serve_until drains any axum Listener;
  run_tls_until wraps it with TlsListener. The auto-merge had dropped
  the drain body from run_until.
- pkg6depotd.8: config-test exits non-zero on invalid TELEMETRY or TLS
  settings and makes no ACME request.
- Config literals in HEAD-side tests gain tls: None.
- packaged_config: TLS examples are parsed with OTLP export enabled.
- TLS ADR renumbered to ADR-008 (release 005, OTel 006, atomic 007).
- Release inventory gates tls_config=7, tls_acme=19, tls_depot_e2e=3,
  packaged_config=3 and the pkg6depotd library suite=35.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cli: reject unsupported depot and client operations
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m10s
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 5m22s
2795a7c579
cli: make repository and receive commands fail explicitly
All checks were successful
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 6m6s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 7m44s
f0ec530ead
feat: policy retirement snapshots and explicit import exclusions
Some checks failed
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 8m19s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Failing after 30m26s
cd22b951cb
Merge reviewed retirement and snapshot policy
Some checks failed
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 8m8s
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 12m34s
e2d7cc52bf
# Conflicts:
#	pkg6depotd/src/http/server.rs
#	pkg6depotd/src/lib.rs
#	pkg6repo/src/main.rs
test: verify pkg5 clients against installed depot package
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 10m52s
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 12m45s
0c17c6ce5b
test: verify pkg5 clients and manual pages in release package
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m33s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 10m55s
release / Release (Linux x86_64) (push) Successful in 11m14s
release / Release (illumos x86_64, IPS package) (push) Failing after 30m48s
48f8b64aea
fix: preserve pkg5 catalog and release FMRI compatibility
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m29s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 10m55s
release / Release (Linux x86_64) (push) Successful in 9m14s
release / Release (illumos x86_64, IPS package) (push) Failing after 21m38s
ca42462105
fix: avoid Hipster pkgtree collision in IPS package
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m36s
CI / illumos (OpenIndiana) build + nextest (pull_request) Has been cancelled
ebcc192148
test: match pkg5 upgrade publication and listing semantics
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m40s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 15m9s
release / Release (Linux x86_64) (push) Successful in 9m24s
release / Release (illumos x86_64, IPS package) (push) Failing after 22m17s
a5d3cc5e1e
test: inspect protected IPS config with root in live package test
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 7m13s
release / Release (Linux x86_64) (push) Successful in 9m38s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 11m28s
release / Release (illumos x86_64, IPS package) (push) Failing after 31m29s
2ff3e08cdc
ci: install manual reader in disposable IPS package test VM
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 6m45s
release / Release (Linux x86_64) (push) Successful in 9m39s
release / Release (illumos x86_64, IPS package) (push) Failing after 24m18s
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 31m12s
ef92cee2fb
test: avoid pipefail false failures on long package output
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 6m17s
release / Release (Linux x86_64) (push) Successful in 9m44s
release / Release (illumos x86_64, IPS package) (push) Failing after 25m16s
CI / illumos (OpenIndiana) build + nextest (pull_request) Has been cancelled
6df21d2ca0
fix: reject invalid SMF config before marking depot online
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 6m27s
release / Release (Linux x86_64) (push) Successful in 10m37s
release / Release (illumos x86_64, IPS package) (push) Failing after 28m38s
CI / illumos (OpenIndiana) build + nextest (pull_request) Has been cancelled
55cb6a068b
test: run live pkg5 upgrade without backup BE in Solstice
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m52s
release / Release (Linux x86_64) (push) Successful in 9m39s
release / Release (illumos x86_64, IPS package) (push) Failing after 32m31s
CI / illumos (OpenIndiana) build + nextest (pull_request) Failing after 32m41s
3371770f38
test: handle absent pkg5 lost+found in live uninstall check
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 6m13s
release / Release (Linux x86_64) (push) Successful in 9m44s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 18m34s
release / Release (illumos x86_64, IPS package) (push) Failing after 30m29s
ce82d704dc
test: diagnose SMF restarter during live IPS lifecycle
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 7m39s
release / Release (Linux x86_64) (push) Successful in 9m55s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 11m45s
release / Release (illumos x86_64, IPS package) (push) Failing after 33m2s
f8c456f2cd
test: add unprivileged pkg5 release smoke for OpenIndiana
All checks were successful
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 5m28s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 9m53s
a1d715b3db
chore: prepare v1.0.0-rc.11
Some checks failed
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 7m22s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 13m6s
release / Release (Linux x86_64) (push) Successful in 11m42s
release / Release (illumos x86_64, IPS package) (push) Failing after 27m0s
480dbaef64
ci: publish illumos release assets from oibuild temporarily
All checks were successful
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 6m18s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 10m55s
dfbb618a7a
feat: import flat pkg5 sources with atomic import limits
All checks were successful
release / Release (Linux x86_64) (push) Successful in 9m43s
690be9016d
feat: stage large historical pkg5 repositories for atomic publication
All checks were successful
release / Release (Linux x86_64) (push) Successful in 10m44s
f6691a0349
docs: record v1.0 acceptance criteria (ADR-015) and the server glossary
All checks were successful
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 11m22s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 19m17s
6cafcddafd
ADR-015 fixes the six open acceptance points from wayfinder ticket #25:
the oirepo6 target-native evidence plus one reboot replaces the suspended
disposable-VM gate, historical import is a capability gate rather than a
completion gate, the client matrix is Hipster 2020.04 / 2023.10 / current,
the import commands become one `pkg6repo import` family before the tag,
status/0 is a v1.0 gate, and v1.0.0 is tagged from main.

ADR-005, ADR-006 and ADR-008 move from Proposed to Accepted: their
designs are implemented and running on oirepo6 as RC13.

CONTEXT.md is the glossary for the repository-server context introduced
by the v1 work (generation, archive vs source import, retirement vs
obsoletion vs purge, protected snapshot, keep exception).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
All checks were successful
CI / Linux (fmt / clippy / nextest / e2e / docs) (pull_request) Successful in 11m22s
CI / illumos (OpenIndiana) build + nextest (pull_request) Successful in 19m17s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin v1-main-merge:v1-main-merge
git switch v1-main-merge

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff v1-main-merge
git switch v1-main-merge
git rebase main
git switch main
git merge --ff-only v1-main-merge
git switch v1-main-merge
git rebase main
git switch main
git merge --no-ff v1-main-merge
git switch main
git merge --squash v1-main-merge
git switch main
git merge --ff-only v1-main-merge
git switch main
git merge v1-main-merge
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OpenIndiana/ips!54
No description provided.