Skip to content

Roadmap: make base-bash-libs a 5/5 professional Bash framework #214

Description

@codeforester

Goal

Drive base-bash-libs from a strong reusable library collection to a world-class, broadly adoptable framework for writing professional Bash 4.2+ applications.

The starting point is already unusually strong: a deeply tested reusable standard library with careful command execution, logging, cleanup, filesystem, Git, GitHub, argument, list, and string primitives. The move to 5/5 is not “add more helpers.” It is the work required to turn those primitives into a coherent, stable, secure, distributable, documented, and independently validated application framework.

Product strategy

Base Bash should have three deliberately separated layers:

  1. Core — a small, passive, namespaced, stable, production-grade Bash 4.2+ runtime.
  2. Project Kit — the launcher, application lifecycle, declarative commands, configuration, scaffolding, conformance tests, vendoring, and bundling needed to ship professional applications.
  3. Adapters — optional integrations with Bashly, Argc, Argbash, Bats, ShellCheck, shfmt, and sustainable package channels.

The strategy is not to invent a new language inside Bash, replace mature ecosystem tools, promise every shell, build a general package manager, or grow an unbounded kitchen-sink core. The sourceable runtime must remain transparent, lightweight, inspectable, and usable without a mandatory non-Bash runtime.

Version and compatibility decision

This is a clean-break v2.0.0 release train. No stable v1.5.0 and no reset to 0.x will be published. Development may use v2.0.0-alpha.N, -beta.N, and -rc.N; those prereleases may break without compatibility shims while the framework contract is being designed.

v2.0.0 GA is now published; future additive fixes and features follow the post-GA 2.x release policy, while breaking stable changes require v3 or later.

The published v2.0.0 GA release uses a new policy-compliant tag and canonical release asset. A short-lived July 2026 tag archive and Homebrew formula were withdrawn and corrected to v1.1.0; that history remains documented. Homebrew and the first-party consumers now consume the verified GA asset or compatible release pins.

v2.1.0 is the current stable package; v2.0.0 remains the compatibility baseline for post-GA stable API checks. The coordinated first-party cutover in #240 is complete across Base, Base Demo, Homebrew, vendor, and bundle paths; issue #239 now validates independent post-GA adoption. Strict SemVer compatibility begins at v2.0.0 GA.

Current review status — 2026-09-17

A fresh cross-repository review at base-bash-libs 38042cbf23b9380c626aae6c9fe168f97096c1cc and base-bash-libs-demo 0954bb29bec2274f807d8356fcb3fac992b3356a identified 16 actionable follow-ups: 14 new issues and 2 reopened issues. All are native sub-issues of this roadmap, assigned to codeforester, with repository Project metadata and milestones.

Framework follow-up

Beacon reference-consumer follow-up

Existing gates and evidence

The completed original engineering train remains the baseline. These current review findings must be resolved before claiming the full #214 completion bar.

Success criteria

  • Release discovery, version metadata, tags, supported lines, and artifacts are unambiguous, immutable, and reproducible.
  • Sourcing is passive, namespaced, and correct under caller-selected shell options.
  • The v2 public API has a coherent machine-checked contract; pre-v2 consumers receive a one-time migration inventory and tooling, not runtime compatibility shims. Strict SemVer compatibility begins at v2.0.0 GA.
  • Execution, cleanup, timeouts, dry-run, logging, redaction, retries, parsing, filesystem behavior, configuration, and signals remain correct under failure, interruption, concurrency, and hostile inputs.
  • A developer can initialize, test, diagnose, vendor, bundle, and release a professional application through one coherent workflow in under five minutes.
  • The complete supported Bash, OS, libc/userland, strict-option, source/vendor/bundle, security, and documentation matrix is continuously enforced.
  • Production-grade reference applications and official ecosystem integrations demonstrate deployment and upgrade patterns.
  • At least three independent production consumers and ongoing contributors validate adoption with public evidence or durable downstream fixtures.

Ordered issue train

P0 — Trustworthy runtime and release baseline

Critical paths: #217 → #218. Issue #215 independently blocks a trustworthy next release. Issues #216 and #221 establish caller and lifecycle guarantees needed by the stable runtime.

P1 — Passive, stable runtime and API

Critical path: #216 → #222 → #223 → #224/#225 → #226 → #227.

P2 — Project kit and deterministic distribution

Critical paths: #228/#229 → #230 → #231, and #223/#225 → #232. Release trust, unified imports, and generated modules converge in #233.

P3 — Ecosystem trust and broad adoption

Post-GA follow-up train

Critical path: #475–#481, #446, and #455 are complete. Resolve the current review follow-ups above; #239 remains the external-evidence gate, and #460 is a separate strategy decision.

Scope coverage

Review area Tracking issues
Release lineage, SemVer, provenance, and API governance #215, #225, #226, #235
Strict callers, passive sourcing, namespace safety, and API coherence #216, #222, #223, #224
Secrets, retries, timeouts, dry-run, Git state, cleanup, and signals #217, #218, #219, #220, #221, #229
Launcher, CLI application model, scaffolding, and consumer validation #227, #228, #229, #230, #231
Maintainable authoring, imports, vendoring, bundling, and release artifacts #225, #226, #232, #233
Bash/OS compatibility, adversarial tests, branch gates, and security policy #234, #235
Quickstart, reference applications, ecosystem integration, first-party cutover, governance, and adoption #236, #237, #238, #240, #239

Prior work this extends

This train does not reopen the repository's completed hardening work:

Train rules

  • Release-blocking correctness and security land before dependent API expansion.
  • Respect each child's explicit dependency list; genuinely independent work may proceed in parallel.
  • Prefer one focused pull request per child. If a child requires a coordinated PR train, keep the child open as its dashboard and link every PR.
  • Continue the repository's issue-backed branch convention and apply exactly one standard category label to each tracking issue.
  • Breaking changes are allowed throughout v2 development and require migration inventory or tooling, documentation, manifest metadata, and contract tests, but no compatibility layer or legacy alias. After v2.0.0 GA, breaking stable public changes require the next major version.
  • New public APIs require documented inputs, outputs, statuses, side effects, stability, version history, and Bash 4.2 evidence.
  • Generated source and release artifacts must be deterministic, auditable, and verified in CI.
  • Optional integrations remain optional; Core stays compact and free of mandatory non-Bash runtime dependencies.
  • Reference applications use supported public APIs only; internal API needs remain blockers.
  • Core, Project Kit, documentation, Homebrew, Base, Base Demo, and every other first-party consumer move as one coordinated v2 train; no first-party component may depend on legacy aliases.
  • Update this checklist with the merged PR beside each completed item so this issue remains the single live dashboard.

Completion bar

This umbrella closes only after all child issues are complete and the evidence supports a genuine 5/5 claim: the enforced compatibility and security matrix is green; released artifacts are reproducible and verifiable; the five-minute path works from a clean environment; reference applications survive failure and upgrades; all first-party dependents and Homebrew pass against the exact v2 release candidate and are cut over to the v2 GA artifact or pin; and three independent production consumers plus contributors beyond the original author have exercised the supported framework.
"

Activity

  1. added this to the 5/5 Framework milestone on Aug 2, 2026
  2. self-assigned this
    on Aug 2, 2026
  3. codeforester commented on Aug 2, 2026

    @codeforester
    CollaboratorAuthor

    Versioning decision — 2026-08-02

    The #214 initiative targets a clean-break v2.0.0 release.

    Why

    • There is no current remote v2.0.0 tag and no v2.0.0 GitHub Release. The earlier local tag that influenced the first review was stale.
    • A short-lived July 2026 tag archive and Homebrew formula did exist, then were withdrawn and corrected to v1.1.0. That history remains documented rather than hidden.
    • v2.0.0 is the natural breaking successor to v1.4.0. Resetting to 0.x would move version ordering backward, while publishing the framework break as v1.5.0 would be unsafe because current Base accepts any 1.* release at or above 1.3.0 as compatible.

    Compatibility boundary

    • v2.0.0-alpha.N, -beta.N, and -rc.N may change without runtime compatibility shims while the framework is being designed.
    • Migration inventories, checks, and mechanical rewrites are required; legacy functions, globals, flags, and source-time behavior do not need to remain available.
    • Strict SemVer compatibility and deprecation policy begin with v2.0.0 GA. Later breaking stable public changes require v3 or later.

    Release identity and coordinated cutover

    Issue #215 owns the withdrawn-tag history and canonical v2 release identity. The final Homebrew formula will consume a verified v2.0.0 GA release asset rather than the old automatic tag-archive URL, avoiding stale archive/checksum ambiguity.

    Issue #240 owns the first-party cutover across Base, Base Demo, Homebrew, and any other discovered consumers. The stable Homebrew base-bash-libs formula must not move to v2 while the stable Base formula still installs incompatible Base 1.x code. Both formulas and bottles move as a compatible pair while retaining version_scheme 1.

  4. codeforester commented on Aug 5, 2026

    @codeforester
    CollaboratorAuthor

    Completed #226 via PR #255 (merge 389576fd02f0fbd25b8562cbcefa28a4f75aefcd). The canonical package-relative base_std_import contract now backs direct, launcher, installed, vendored, copied, and bundled layouts with idempotent dependency/cycle/version/path safety; provenance metadata and immutable pin verification are documented and tested. Hosted macOS, Ubuntu, Bash 4.2, and branch-policy checks passed.

  5. codeforester commented on Aug 5, 2026

    @codeforester
    CollaboratorAuthor

    #215 progress update: PR #256 merged as f2368e12f6a8ad95f19bd182f032b62e0d234872.

    The v2 release line now has fail-closed local/remote candidate-tag preflight, automated monotonic SemVer and embedded release-metadata validation, duplicate/unknown-key checks, changelog invariants, and dependency-free Bash 4.2 smoke coverage. The withdrawn local v2.0.0 ref was removed after confirming the remote ref is absent.

    #215 remains open only for canonical verified RC/GA artifact publication and the coordinated first-party/Homebrew cutover owned by #233/#240.

  6. codeforester commented on Aug 6, 2026

    @codeforester
    CollaboratorAuthor

    Milestone update after the merged PR train:

    The umbrella stays open until those real release and adoption conditions exist.

  7. moved this from Backlog to In Progress in base-bash-libson Aug 14, 2026
  8. codeforester commented on Aug 14, 2026

    @codeforester
    CollaboratorAuthor

    Dashboard synchronization update (2026-08-14):

    The v2.0.0 tag, canonical GA asset, Homebrew cutover, and independent adoption/maintainer evidence remain intentionally open.

  9. codeforester commented on Aug 15, 2026

    @codeforester
    CollaboratorAuthor

    Release gate update

  10. modified the milestones: v2.0.0, v2.1.0 on Aug 20, 2026
  11. 32 remaining items

  12. codeforester commented on Oct 6, 2026

    @codeforester
    CollaboratorAuthor

    CI governance follow-up: issue #540 is now implemented in PR #551. The PR adds fail-closed Product validation and Quality contract aggregate contexts, static contract coverage, and policy documentation. #214 remains open as the 5/5 umbrella until the current follow-ups and independent-adoption gate #239 are complete. After #551 merges, the remaining administrative step is to add both exact contexts (Actions integration 15368) to the effective default-branch ruleset and read back existing protections; no live policy was changed by the PR.

  13. codeforester commented on Oct 6, 2026

    @codeforester
    CollaboratorAuthor

    Current live backlog after the latest sweep: #540 is in PR #551 (CI aggregate gates), #532 remains implementation-ready (integer normalization/overflow hardening), #239 remains the independent production-consumer and maintainer gate, and #460 remains a separately deferred strategy decision. Keep #214 open as the umbrella until these remaining roadmap gates are resolved or explicitly deferred.

  14. modified the milestones: v2.2.0, Future on Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or product improvement

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions