Skip to content

Add controller desired state and infrastructure-owned capacity to the template #1

Description

@Nickfost

Goal

Update this public, fictional configuration template to implement the Git-authored controller desired-state contract from RandomDevelopment/ci-fleet.

Required changes

  • Bump the schema version.
  • Keep pool routing and repository authorization policy.
  • Replace ambiguous project-facing capacity with an infrastructure capacity budget.
  • Add controller declarations with fictional IDs such as example-ci-01.
  • Declare each controller's pool, enabled/drained state, minimum and maximum runners, per-runner resource limits, and pinned engine/lifecycle policy.
  • Validate that enabled controller maxima do not exceed the pool budget and controller IDs are unique.
  • State as a hard rule that application workflows submit all independent jobs and do not use max-parallel to model fleet size.
  • Keep addresses, VM IDs, credentials, private keys, tokens, secret values, and runtime-generated files out of Git.
  • Add strict-validator tests for overcommit, duplicate identities, missing pools, unsafe fields, and valid multi-host/multi-location examples.
  • Document the one-command target-host install/adopt interface without making an agent mandatory.
  • Document drain and retirement, including deletion of legacy hosts when that is the installation's declared policy.

All committed organizations, repositories, hosts, networks, and values must remain fictional.

Acceptance

  • fleet.json, JSON Schema, validator, tests, examples, README, and initializer agree on the new version.
  • A derived private repository can declare multiple controller machines without editing application workflows.
  • A host can select exactly one controller declaration by logical ID and pinned config revision.
  • ./scripts/validate.sh --strict passes for valid examples and fails closed for unsafe or inconsistent policy.

Tracks the public engine specification issue: RandomDevelopment/ci-fleet#32

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions