Skip to content

Epic: extract shared code into ExtraToast repos + version-pinned deploys #605

Description

@jorisjonkers-dev-agents

Program to extract code shared between personal-stack and website into standalone ExtraToast repos, distributed as published artifacts, to stop re-inventing CI/testing/setup and get proper alignment. Source: council run `.council/runs/20260608-072944-*`.

Scope decisions (operator-approved)

  • personal-stack is migrated first; website follows later.
  • Distribution: Maven (`dev.extratoast.*`) + npm (`@extratoast`) on GitHub Packages; reusable actions via pinned `uses:`; images on `ghcr.io/extratoast`.
  • Ownership: all shared repos under `ExtraToast`; personal-stack is canonical source.

Cross-cutting requirements

  • One CI pipeline per repo ending in a single `Pipeline Complete` job (the only required status check; enforced by the common ruleset). Every gating job feeds the aggregator via `needs:`.
  • Common branch ruleset on every repo (squash-only, linear history, `Pipeline Complete` required) — see `ExtraToast/repo-template`.
  • Versioning (corrected): personal-stack stays continuously deployed (Flux reconciles main, Keel auto-rolls in-house :latest); it is NOT version-pinned/tag-deployed. SemVer versioning + Renovate pinning apply to the sub-packages the platform consumes: extracted shared libs/tooling, reusable workflows (ExtraToast/github-workflows), and the future API/frontend pair repos (each independently versioned). A Renovate bump → merge → Keel auto-roll.
  • Dependency pinning: central Gradle `libs.versions.toml` + pinned npm manifest as the single source of truth for shared-dep versions; Renovate opens exact-version bump PRs gated by `Pipeline Complete`.
  • Tracking: every PR references its tracking issue and milestone.

Repositories

gradle-conventions · github-workflows · kotlin-spring-commons · vue-web-commons · openapi-client-gradle · api-contract-checks · agent-kit · stalwart-provisioner · platform-blueprints · deploy-config-schema · authz-model · repo-template

Tracking

Children are listed below and grouped by milestone M0–M6. M0 unblocks the rest.

Children

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions