All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-07-31
First public pre-release. The CLI package version is 0.1.0 (cli/pyproject.toml).
localciCLI — analyze, list, run, status, logs, images, cache, and config commands- Configurable workflow patch pipeline for local act execution
- Docker image management and caching (ccache, Boost, CMake, APT)
- CI: ruff lint/format, mypy strict typecheck, unit tests, and act/Docker integration tests
- Runnable validation example under
examples/ - README yq disambiguation and per-OS install matrix for mikefarah/yq v4+
CONTRIBUTING.md— developer onboarding (setup, tests, lint, pre-commit, PR expectations)CHANGELOG.md— this file.github/CODEOWNERS— maintainer routing for reviewspatches.profile—generic(default) orcapy; opt-in profile for Boost.Capy/B2 workflow patches and project identity- Unsupported-platform handling — Windows and macOS matrix entries fail with an explicit Linux-only message (job name, platform,
runs-on) instead of invoking act without an image; setplatforms.windows/platforms.macostotrueto skip those jobs without failing the run
- Config typo rejection (partial) — unknown keys at the root, under orchestrator sections (
parallel,execution,images,project), and nested orchestrator models (includingparallel.resource_limit) raise a validation error at load time. Typos under unrelated sections such ascache,logging, andpatchesare still silently ignored; full-schema strict validation is planned for a later release. - Default patch pipeline — near-empty
.localci.ymlusespatches.profile: generic. Onlycontainer_mounts,image_substitution, andcodecov_skipare enabled by default; Capy/B2 steps (b2_source_cache,restore_capy_timestamps,capy_copy_preservation,b2_bootstrap_skip) are off unlessprofile: capyor explicitly enabled. projectdefaults —repo_full_nameandnative_image_prefixno longer default tocppalliance/capyandcapy-on the generic path (empty by default).profile: capyrestores the previous Boost.Capy values unless overridden.- x86 container architecture —
linux/386is requested only when no native image prefix is configured or the image tag does not start withproject.native_image_prefix(empty prefix no longer suppresses 386 for all images). PriorityJobQueue.is_donetakesself._lockwhile reading job and completion counts, same asis_empty.
derive_image_tag()prefix honoursproject.native_image_prefixinstead of hardcodingcapy-, completing the generic-profile default behaviour documented for Week 30.PriorityJobQueue: jobs inWAITING_DEPSreturn toQUEUEDwhen their dependencies finish. Same-priorityneedschains were leaving dependents stuck.PriorityJobQueue.cancel_alldrops cancelled keys from_running_keys. AREADYjob fromnext_ready()no longer counts as running after cancel.PriorityJobQueue.cancel_allemitsJOB_CANCELLEDfor each cancelled job, matchingcancel().DependencyResolver.all_dependencies_mettreatsFAILEDandCANCELLEDdependencies as unmet; dependents no longer start after a failed or cancelledneedsjob.PriorityJobQueueevent listeners run afterself._lockis released, so callbacks can safely call back into the queue.
This project is in 0.x pre-release. Until 1.0.0:
- No stability guarantee — public CLI flags, config schema (
.localci.yml), and patch-pipeline behavior may change between minor releases without a major-version bump. - Config and workflow patches — projects depending on specific patch steps or defaults should pin a
localciversion and read the changelog before upgrading. - Bug fixes and internal refactors — may land on
developwithout a deprecation period. - 1.0 intent — a stable CLI surface, documented config compatibility policy, and semver guarantees for config and command-line interfaces.