phase 1: promote vb2_dma_resv RFC v2 + add ka-status + ampere as 2nd aarch64 host #7

Merged
marfrit merged 1 commits from claude-noether/kernel-agent:noether/phase1-promote-vb2-dma-resv into main 2026-05-15 15:36:56 +00:00
Collaborator

Phase 1 of "make kernel-agent operational". Three changes that together flip the agent from spec'd to live in manual-orchestrated form. Real ka-* CLI verbs come in later phases; this PR gets a first iteration through the pipeline + a first CLI proof-of-life.

Sibling PR coming in marfrit-packages to bump linux-fresnel-fourier to pkgrel=14 and publish the already-built artifacts that have been sitting in boltzmann:~/src/kernel-agent-bootstrap/ since the local iterations.

1. Promote vb2_dma_resv RFC v2 series

Markus iterated v2 locally on boltzmann reaching linux-fresnel-fourier pkgrel=14. v2 attaches the producer fence at device_run in slept-OK context (per Dufresne's v1 review on linux-media). Three patches under patches/subsystem/media/videobuf2/dma-resv-release-fence/:

  • 0004-media-videobuf2-add-opt-in-dma_resv-producer-fence-h.patch — helper
  • 0005-media-hantro-attach-dma_resv-release-fence-at-device.patch — hantro opt-in
  • 0006-media-rockchip-rga-attach-dma_resv-release-fence-at-.patch — rga opt-in

Numbered 4/5/6 because the fresnel PKGBUILD applies them after the 0001/0002/0003 PBP DTS patches; this directory's numbering follows apply-order, not the lore series ordering. Scope-dir README documents fleet eligibility, the v1 → v2 design pivot, and the per-host promote stance (eligible: fresnel + ohm; deferred: ampere + boltzmann pending fleet/ manifests).

2. fleet/fresnel.yaml — flip vb2_dma_resv from "excluded" to "includes"

The pre-v2 comment block said "defer until v2 lands or explicit v1-shape parity". v2 has landed. Three new includes: lines reference the new scope-dir.

3. README updates

  • Build hosts table: add ampere (CoolPi GenBook, RK3588 32GB) as secondary aarch64 build host. Same uarch as boltzmann; on-demand wake via His; useful when boltzmann is busy (e.g. mid firefox-fourier 4h build).
  • Bootstrap "Out of scope this round" section: mark vb2_dma_resv as resolved 2026-05-15. panfrost IOMMU_CACHE for RK3399 still deferred.
  • CLI verbs section: annotate ka-status as [bin/ka-status — implemented Phase 1].

4. First ka-* verb: bin/ka-status

bash, ~120 lines. Read-only: reads fleet/*.yaml manifests, queries Gitea for open [ka:*] issues, probes each reachable host for the installed kernel-package version. Never sudos, never writes anywhere, never SSHes anything mutating.

Picks GITEA_TOKEN from /opt/herding/etc/claude-identities/<host>.creds per reference_claude_noether_gitea.md, or env override (GITEA_TOKEN=…).

Smoke-tested from this PR's worktree:

$ bin/ka-status
kernel-agent status (repo: marfrit/kernel-agent)
open [ka:*] issues total: 1

══ fresnel ══
  manifest: arch=arm64 soc=rockchip/rk3399 board=pinebook-pro
  package:  linux-fresnel-fourier
  installed: host-down                      # fresnel is currently powered off
  open ka-issues: (none for this host)

Proves the agent's Gitea-API + manifest-parsing skeleton works end-to-end without committing to a full ka-promote/ka-build/ka-install implementation. Next-phase verbs build on the same pattern (re-use the api_get / manifest_field / fetch_ka_issues helpers).

Out of scope here (not in this PR)

  • ka-promote, ka-close, ka-install implementations
  • kbuild-aarch64 container provisioning on boltzmann
  • fleet/ampere.yaml, fleet/ohm.yaml, fleet/boltzmann.yaml (issues #4, #5, #6)
  • per-host install hooks + verify bars

Bot: claude-noether

Phase 1 of "make kernel-agent operational". Three changes that together flip the agent from spec'd to live in manual-orchestrated form. Real `ka-*` CLI verbs come in later phases; this PR gets a first iteration through the pipeline + a first CLI proof-of-life. Sibling PR coming in `marfrit-packages` to bump `linux-fresnel-fourier` to pkgrel=14 and publish the already-built artifacts that have been sitting in `boltzmann:~/src/kernel-agent-bootstrap/` since the local iterations. ## 1. Promote vb2_dma_resv RFC v2 series Markus iterated v2 locally on boltzmann reaching `linux-fresnel-fourier` pkgrel=14. v2 attaches the producer fence at `device_run` in slept-OK context (per Dufresne's v1 review on linux-media). Three patches under `patches/subsystem/media/videobuf2/dma-resv-release-fence/`: - `0004-media-videobuf2-add-opt-in-dma_resv-producer-fence-h.patch` — helper - `0005-media-hantro-attach-dma_resv-release-fence-at-device.patch` — hantro opt-in - `0006-media-rockchip-rga-attach-dma_resv-release-fence-at-.patch` — rga opt-in Numbered 4/5/6 because the fresnel PKGBUILD applies them after the 0001/0002/0003 PBP DTS patches; this directory's numbering follows apply-order, not the lore series ordering. Scope-dir README documents fleet eligibility, the v1 → v2 design pivot, and the per-host promote stance (eligible: fresnel + ohm; deferred: ampere + boltzmann pending fleet/ manifests). ## 2. fleet/fresnel.yaml — flip vb2_dma_resv from "excluded" to "includes" The pre-v2 comment block said *"defer until v2 lands or explicit v1-shape parity"*. v2 has landed. Three new `includes:` lines reference the new scope-dir. ## 3. README updates - **Build hosts table:** add ampere (CoolPi GenBook, RK3588 32GB) as secondary aarch64 build host. Same uarch as boltzmann; on-demand wake via His; useful when boltzmann is busy (e.g. mid firefox-fourier 4h build). - **Bootstrap "Out of scope this round" section:** mark vb2_dma_resv as resolved 2026-05-15. panfrost IOMMU_CACHE for RK3399 still deferred. - **CLI verbs section:** annotate `ka-status` as `[bin/ka-status — implemented Phase 1]`. ## 4. First `ka-*` verb: bin/ka-status bash, ~120 lines. Read-only: reads `fleet/*.yaml` manifests, queries Gitea for open `[ka:*]` issues, probes each reachable host for the installed kernel-package version. Never sudos, never writes anywhere, never SSHes anything mutating. Picks `GITEA_TOKEN` from `/opt/herding/etc/claude-identities/<host>.creds` per `reference_claude_noether_gitea.md`, or env override (`GITEA_TOKEN=…`). Smoke-tested from this PR's worktree: ``` $ bin/ka-status kernel-agent status (repo: marfrit/kernel-agent) open [ka:*] issues total: 1 ══ fresnel ══ manifest: arch=arm64 soc=rockchip/rk3399 board=pinebook-pro package: linux-fresnel-fourier installed: host-down # fresnel is currently powered off open ka-issues: (none for this host) ``` Proves the agent's Gitea-API + manifest-parsing skeleton works end-to-end without committing to a full `ka-promote`/`ka-build`/`ka-install` implementation. Next-phase verbs build on the same pattern (re-use the `api_get` / `manifest_field` / `fetch_ka_issues` helpers). ## Out of scope here (not in this PR) - `ka-promote`, `ka-close`, `ka-install` implementations - `kbuild-aarch64` container provisioning on boltzmann - `fleet/ampere.yaml`, `fleet/ohm.yaml`, `fleet/boltzmann.yaml` (issues #4, #5, #6) - per-host install hooks + verify bars Bot: claude-noether
claude-noether added 1 commit 2026-05-15 15:32:30 +00:00
Three changes that together flip kernel-agent from spec'd to operational
in the manual-orchestrated form. Real ka-* CLI verbs come in later phases;
this commit gets a first iteration through the pipeline and proves the
flow at the artifact level.

1. Promote vb2_dma_resv RFC v2 series into the scope-tagged tree

Markus iterated v2 locally on boltzmann (kernel-agent-bootstrap dir,
reaching linux-fresnel-fourier pkgrel=14). v2 attaches the producer
fence at device_run in slept-OK context per Dufresne's v1 review on
linux-media. The three patches land under
patches/subsystem/media/videobuf2/dma-resv-release-fence/:

  - 0004 (helper) — opt-in vb2 dma_resv producer-fence helper
  - 0005 (driver opt-in) — hantro device_run attach
  - 0006 (driver opt-in) — rockchip-rga device_run attach

Numbered 4/5/6 because the fresnel build PKGBUILD applies them after
the three 0001/0002/0003 PBP DTS patches; this directory's numbering
follows that apply-order, not the upstream lore series numbering.

README at the scope dir documents fleet eligibility, decision history,
and the v1 → v2 design pivot.

2. Update fleet/fresnel.yaml to include the v2 series

Pre-v2 manifest had a comment block 'Explicitly NOT included … vb2
dma-resv-release-fence … defer until v2 lands'. v2 has landed. Move
those three lines from 'excluded' to 'includes', annotate the decision
inline.

3. README updates

- Build hosts table: add ampere (CoolPi GenBook, RK3588 32GB) as
  secondary aarch64 host. Same uarch as boltzmann, on-demand wake via
  His. Gives the fleet a second native build target for when boltzmann
  is busy (e.g. carrying a firefox-fourier 4h build).
- 'Out of scope this round' bootstrap section: mark vb2_dma_resv as
  resolved 2026-05-15, keep panfrost IOMMU_CACHE deferred.

4. First ka-* CLI verb implemented: bin/ka-status

bash, ~120 lines. Reads fleet/*.yaml manifests, queries Gitea for
open [ka:*] issues, probes each reachable host for the installed
kernel-package version. Read-only — no sudo, no host writes. Picks
GITEA_TOKEN from /opt/herding/etc/claude-identities/<host>.creds or
env override.

Proves the agent's Gitea-API + manifest-parsing skeleton works
end-to-end without committing to a full ka-promote/build/install
implementation. Smoke-tested locally:

  $ bin/ka-status
  kernel-agent status (repo: marfrit/kernel-agent)
  open [ka:*] issues total: 1
  ══ fresnel ══
    manifest: arch=arm64 soc=rockchip/rk3399 board=pinebook-pro
    package:  linux-fresnel-fourier
    installed: host-down            # (fresnel is currently powered off)
    open ka-issues: (none for this host)

No PKGBUILD update in this PR — that lives in marfrit-packages and
ships as a sibling PR (the actual linux-fresnel-fourier-7.0-14 publish).
marfrit merged commit e53db55959 into main 2026-05-15 15:36:56 +00:00
Sign in to join this conversation.