Skip to content

chore: bump --version to 1.1.15 + TODO audit (retire shipped entries)#216

Merged
click0 merged 4 commits into
mainfrom
claude/analyze-test-coverage-nCOJW
Jun 10, 2026
Merged

chore: bump --version to 1.1.15 + TODO audit (retire shipped entries)#216
click0 merged 4 commits into
mainfrom
claude/analyze-test-coverage-nCOJW

Conversation

@click0

@click0 click0 commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Summary

Two housekeeping commits on the designated branch (no production code):

  1. chore(version): bump --version string to 1.1.15 (5d60cdd)
  2. docs(TODO): retire completed entries — rootless, hub scheduling, pkg-only update (0c1ab79)

Both bring project metadata in line with what has actually shipped through the 1.1.12 → 1.1.15 series.


1. Version bump (5d60cdd)

cli/args.cpp:756, 767 still printed crate 1.1.11 while CHANGELOG.md heads at [1.1.15]. The convention here is to bump the literal at release-cut time rather than per-feature PR, so the gap accumulated across the series. Bumped both --version / -V branches to crate 1.1.15.

Also refreshed the two stale "Applies to: 1.1.11" / "Reasoning about isolation on 1.1.11" sentences in docs/trust-model.{md,uk.md} — the doc body was updated throughout the series to describe the 1.1.12 → 1.1.15 gates, so the opening line now matches: 1.1.15 (rootless model + per-tenant authz series 1.1.12 → 1.1.15 …).

Code comments like // 1.1.11: send a signal … stay — those are historical landed-in markers, not the current version literal.

2. TODO audit (0c1ab79)

An audit of TODO/TODO2 against main found three entries describing already-shipped work as open or in-progress:

  • "Rootless containers (in progress on 0.9.x)" — the entire planned arc shipped months ago: verb taxonomy (0.9.0) → wire format (0.9.1) → handlers (0.9.2–0.9.7) → per-user namespacing (0.9.8) → flag flip (0.9.9) → setuid removal (1.0.0). The 80-line "What the refactor needs: … ~3-5 days / ~1 week …" planning block was actively misleading about project state. Replaced with a Done entry that also records the 1.1.12–1.1.15 authorize-before-dispatch extension and points at docs/trust-model.md.
  • "Hub scheduling" sat in the open Medium-priority section while its own text said Shipped end-to-end (0.8.40 + 0.8.43). Moved to Done.
  • "crate update --pkg-only (partial)" conflated the shipped pkg path (0.8.41) with the open base-system update. Split: shipped half → Done; the open half is now its own Medium-priority entry with the snapshot-and-rollback shape sketched (clone → verify → promote-or-rollback; warm-template-cache and restart-policy interactions noted).

Also backfilled the Done list (which stopped at 0.8.21/0.8.37) with the 1.1.10–1.1.15 arrivals: devfs/signal_jail privops verbs, the in-jail Wayland compositor, the on-hardware validation runbook, and the -lnv link fix + lite-CI link smoke.

Net effect: every remaining open entry in TODO (full base-system update, layered images, getpeereid full refactor) and TODO2 (bhyve backend A) describes genuinely-open work. TODO2 needed no changes — its statuses were accurate.

Test plan

https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK

claude added 2 commits June 10, 2026 07:08
cli/args.cpp's two --version / -V branches still printed "crate 1.1.11"
even after the 1.1.12 (compositor) / 1.1.13 (jid-name authz) / 1.1.14
(path-scoped authz) / 1.1.15 (create_jail path-prefix authz) releases
all landed in CHANGELOG.md. The convention in this codebase has been
to bump the literal at release-cut time rather than per-feature PR
(privops authz #208 tagged 1.1.12 in comments but left the literal at
1.1.11), so the gap accumulated over the series. Bump to match the
current head of CHANGELOG.

While here, refresh the two "Applies to: 1.1.11" / "Reasoning about
isolation on 1.1.11" sentences in docs/trust-model.{md,uk.md} that
pinned the doc to the pre-series snapshot — the body has been updated
throughout the series to describe the 1.1.12 -> 1.1.15 gate. The
opening sentence now reads "1.1.15 (rootless model + per-tenant authz
series 1.1.12 -> 1.1.15 ...)", consistent with the rest of the doc.

Code comments like "// 1.1.11: send a signal to all processes" stay
unchanged — those are historical landed-in markers, not the current
version literal.

https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK
…only update

A TODO audit against main (1.1.15) found three entries describing
already-shipped work as open or in-progress:

- "Rootless containers (in progress on 0.9.x)" — the entire planned
  arc shipped: verb taxonomy (0.9.0) -> wire format (0.9.1) ->
  handlers (0.9.2-0.9.7) -> per-user namespacing (0.9.8) -> flag
  flip (0.9.9) -> setuid removal (1.0.0). The 80-line planning block
  ("What the refactor needs: ... ~3-5 days / ~1 week ...") described
  work that has existed in tree for months and was actively
  misleading about project state. Replaced with a Done entry that
  also records the 1.1.12-1.1.15 authorize-before-dispatch extension
  (dataset/loginclass, jid/name registry, path-scoped verbs,
  create_jail path-prefix) and points at docs/trust-model.md.

- "Hub scheduling" sat in the open Medium-priority section while its
  own text said *Shipped end-to-end* (0.8.40 + 0.8.43). Moved to Done.

- "crate update --pkg-only (partial)" conflated the shipped pkg path
  (0.8.41) with the open base-system update. Split: the shipped half
  goes to Done; the open half becomes its own Medium-priority entry
  with the snapshot-and-rollback shape sketched (clone, verify,
  promote-or-rollback; interactions with warm-template cache and
  restart policy noted).

Also backfilled the Done list, which stopped at 0.8.21/0.8.37, with
the 1.1.10-1.1.15 arrivals: devfs/signal_jail privops verbs, the
in-jail Wayland compositor (gui.mode: compositor), the on-hardware
validation runbook, and the -lnv link fix + lite-CI link smoke.

Net effect: every remaining open entry in TODO (full base-system
update, layered images, getpeereid full refactor) and TODO2 (bhyve
backend A) describes genuinely-open work. TODO2 needed no changes —
its statuses were accurate.

https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK
@click0 click0 changed the title chore(version): bump --version string to 1.1.15 chore: bump --version to 1.1.15 + TODO audit (retire shipped entries) Jun 10, 2026
claude added 2 commits June 10, 2026 07:40
The user's "full FreeBSD tests are failing" report decoded to two
separate facts:

1. The pasted link failure (undefined symbol: FreeBSD_nvlist_*) is
   the already-fixed -lnv miss. The pasted link line has no -lnv
   while libcrate.a already contains jid_owner_registry.o — that
   combination only exists in commits between #211 and #214, i.e.
   the weekly cron run's pinned commit (9bdcf87) or a re-run of it
   (re-runs always reuse the original commit). Current main
   (34ff761) links with -lnv; the lite workflow's new link-smoke
   step proved it green on FreeBSD 14.2.

2. WHY did only the weekly cron ever exercise the full build?
   Because freebsd-build.yml's push/pull_request triggers point at
   `master`, but the repository's default branch is `main`. Those
   triggers have been dead the whole time: no merge to main ever
   ran the full workflow, leaving exactly one full run per week
   (the cron), which additionally kept dying on the SSH-to-VM
   phase before reaching the build. Meanwhile freebsd-build-lite's
   `branches-ignore: [master]` meant lite DID run on main pushes —
   the only reason merges had any FreeBSD coverage at all.

Fix both sides:
  - freebsd-build.yml: push/pull_request branches [master] -> [main].
    Merges to main now gate on the full build + kyua + ci-verify.
  - freebsd-build-lite.yml: branches-ignore [master] -> [main].
    Feature branches keep the fast lite loop; main hands off to full
    (no more duplicate lite run on main pushes).

The weekly cron + workflow_dispatch triggers are unchanged. The
SSH-to-VM flakiness seen in the cron runs is a separate
cross-platform-actions infra issue and is NOT addressed here — but
with push-to-main now triggering full, each merge gets a fresh
attempt instead of waiting a week.

https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK
With the dead push trigger fixed (previous commit), every merge to
main now runs the full FreeBSD build — the cron is no longer the only
coverage, just a bit-rot safety net for quiet periods with no commits.
Weekly scheduled runs of two heavy FreeBSD VMs (14.2 + 15.0, ~25 min
each) are wasteful in that role; monthly (1st of the month, 04:00 UTC)
is enough to catch pkg/OS-update regressions between merges.

https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK
@click0 click0 merged commit 0f72d24 into main Jun 10, 2026
0 of 2 checks passed
@click0 click0 deleted the claude/analyze-test-coverage-nCOJW branch June 10, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants