Make dev-base language images cached build-only payloads #863

Closed
opened 2026-08-04 07:38:42 +00:00 by coilyco-ops · 2 comments
Member

workflow: pull-request-and-merge

Outcome

Publish and promote only the full AOS dev-base image while retaining five independently built language payloads for parallel fan-out, full-image fan-in, and durable cross-run caching.

Current problem

The runtime contract consumes only agentic-os:<tag>, :release, and :latest, but release.yml still promotes every lang-* draft into versioned and moving aliases. Each language target also installs the complete common agent surface, so a shared or internal tool pin invalidates every language branch.

This reconciles the build graph described by #377 and #689 with the full-only consumer boundary recorded by #512 and the cache failure described by #786.

Required build and cache contract

  • Keep Node, Go, .NET, Rust, and Python as independent BuildKit payload targets.
  • Keep the language matrix parallel, with runner concurrency four.
  • Keep stable per-language registry cache refs using mode=max so caches survive runner changes and quiet periods.
  • Keep commit-scoped language draft refs as build transport artifacts for the full fan-in job.
  • Make the full image consume the exact same-commit language drafts.
  • Do not promote language drafts to versioned, release, or latest aliases.
  • Keep local PR validation on the same Bake graph without registry credentials.

Layer ownership

  • Language targets install only their language payload and direct native prerequisites.
  • The full image owns the shared agent surface, internal tools, operator CLIs, entrypoint, substrate seed, and full-only gate tools.
  • Updating AOS, Ward, specgen, agent-compose, or another shared tool must not invalidate the language payload builds.
  • Node remains an explicit payload because the full image consumes it. It is no longer a separately consumable image product.

Acceptance

  • The production workflow builds language payloads in parallel, exports and imports stable registry caches, then builds full.
  • Release promotion retags only full.
  • Local Bake builds the five payloads as cache-only dependencies and loads only full.
  • Full verification covers all language toolchains, native Rust prerequisites, AOSguard, and the common agent surface.
  • Tests prove the full-only release boundary and the parallel cross-run cache contract.
  • Dev-base, release, cache, resume, PR-validation, and feature documentation match the new contract.
  • Repository validation passes.
workflow: pull-request-and-merge ## Outcome Publish and promote only the full AOS dev-base image while retaining five independently built language payloads for parallel fan-out, full-image fan-in, and durable cross-run caching. ## Current problem The runtime contract consumes only `agentic-os:<tag>`, `:release`, and `:latest`, but release.yml still promotes every `lang-*` draft into versioned and moving aliases. Each language target also installs the complete common agent surface, so a shared or internal tool pin invalidates every language branch. This reconciles the build graph described by #377 and #689 with the full-only consumer boundary recorded by #512 and the cache failure described by #786. ## Required build and cache contract * Keep Node, Go, .NET, Rust, and Python as independent BuildKit payload targets. * Keep the language matrix parallel, with runner concurrency four. * Keep stable per-language registry cache refs using mode=max so caches survive runner changes and quiet periods. * Keep commit-scoped language draft refs as build transport artifacts for the full fan-in job. * Make the full image consume the exact same-commit language drafts. * Do not promote language drafts to versioned, release, or latest aliases. * Keep local PR validation on the same Bake graph without registry credentials. ## Layer ownership * Language targets install only their language payload and direct native prerequisites. * The full image owns the shared agent surface, internal tools, operator CLIs, entrypoint, substrate seed, and full-only gate tools. * Updating AOS, Ward, specgen, agent-compose, or another shared tool must not invalidate the language payload builds. * Node remains an explicit payload because the full image consumes it. It is no longer a separately consumable image product. ## Acceptance * The production workflow builds language payloads in parallel, exports and imports stable registry caches, then builds full. * Release promotion retags only full. * Local Bake builds the five payloads as cache-only dependencies and loads only full. * Full verification covers all language toolchains, native Rust prerequisites, AOSguard, and the common agent surface. * Tests prove the full-only release boundary and the parallel cross-run cache contract. * Dev-base, release, cache, resume, PR-validation, and feature documentation match the new contract. * Repository validation passes.
Author
Member

WARD-WORKFLOW: #866

workflow: pull-request-and-merge
director merge authorization: reviewed-and-ready
WARD-OUTCOME: done

Review summary: passed
Confidence: high

Kai reviewed the change as LGTM. A final refutation pass found no blocking correctness, cache, publication, or operational findings. The five language payloads remain independently parallel with stable cross-run registry caches, full consumes exact same-commit payload drafts, and only full is promotable.

Validation:

  • ward exec repo-test-gate passed 619 tests and the full pre-commit suite.
  • Forgejo CI run 2742 passed.
  • Forgejo dev-base PR run 2743 built and verified the full payload fan-in graph.
  • Root usage peaked at 72% during export and settled to 71%, below the 80% containment threshold.

Non-blocking follow-ups remain in #865 for dependency-planner disposition and #814 for the mcporter Node 24 engine decision.

WARD-WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/866 workflow: pull-request-and-merge director merge authorization: reviewed-and-ready WARD-OUTCOME: done Review summary: passed Confidence: high Kai reviewed the change as LGTM. A final refutation pass found no blocking correctness, cache, publication, or operational findings. The five language payloads remain independently parallel with stable cross-run registry caches, full consumes exact same-commit payload drafts, and only full is promotable. Validation: * ward exec repo-test-gate passed 619 tests and the full pre-commit suite. * Forgejo CI run 2742 passed. * Forgejo dev-base PR run 2743 built and verified the full payload fan-in graph. * Root usage peaked at 72% during export and settled to 71%, below the 80% containment threshold. Non-blocking follow-ups remain in #865 for dependency-planner disposition and #814 for the mcporter Node 24 engine decision.
Author
Member

WARD-WORKFLOW: #866

workflow: pull-request-and-merge
director merge authorization: reviewed-and-ready
WARD-OUTCOME: done
Review summary: passed

Acknowledged the PR metadata update adding the machine-readable Ward workflow marker. The reviewed diff and green validation evidence are unchanged.

WARD-WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/866 workflow: pull-request-and-merge director merge authorization: reviewed-and-ready WARD-OUTCOME: done Review summary: passed Acknowledged the PR metadata update adding the machine-readable Ward workflow marker. The reviewed diff and green validation evidence are unchanged.
Sign in to join this conversation.
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
coilyco-flight-deck/agentic-os#863
No description provided.