verctl 0.0.1

Stack-agnostic version PRs from Changesets-format fragments
Documentation
# yaml-language-server: $schema=https://github.com/victor-software-house/qctl/releases/download/v0.0.1/tasks.schema.json
schema_version: 1
prefix: VER
active: VER-004

queue:
  - id: VER-004
    title: Open or update the Version PR
    scope: verctl
    outcome: >-
      One prepare-release PR consumes fragments, commits version files
      and CHANGELOG, and deletes the consumed .changeset files.
    blocked_by: []
    acceptance:
      - Uses GITHUB_TOKEN only. No PAT.
      - Opens a new PR or force-updates the existing version-packages branch.
      - CHANGELOG sections are minijinja output from VER-002.
      - Consumed fragment files are deleted in the same commit.
      - examples/workflows/version-pr.yml and actions/version-pr stay the consumer API.
      - Local prepare still works without GitHub when --no-pr is set.
    notes: >-
      Implemented on ver-004-version-pr (not on main). git2 + octocrab +
      GITHUB_TOKEN. ctl-core for help/views/formatdoc. --preview writes
      nothing. Leftover: open the PR, merge, then one live prepare --pr
      so 0.0.0 -> 0.0.1 exists. Do not archive until that lands.

  - id: VER-005
    title: "Publish native verctl so mise github: can install it"
    scope: release
    outcome: >-
      crates.io plus GitHub Release assets for darwin-arm64 and linux-x64.
    blocked_by: [VER-004]
    acceptance:
      - cargo publish --locked succeeds for this crate.
      - gh release vX.Y.Z includes both native tarballs.
      - mise x github:victor-software-house/verctl@vX.Y.Z -- verctl --version matches the tag.
      - tasks/ver/ver and examples/mise.toml pin that tag.
    notes: Same cut as qctl 0.0.1. linux-x64 may wait for a Linux runner.

  - id: VER-009
    title: Keep verctl on ctl-core after the chassis hardens
    scope: verctl
    outcome: >-
      verctl stays on ctl-core prelude/View/formatdoc. No local help
      or color copy comes back.
    blocked_by: [VER-004]
    acceptance:
      - No forkctl-style help.rs or ColorMode lives in verctl.
      - Pin is a ctl-core version or git rev, not an unpublished path.
    notes: >-
      Partial adoption is on feat/004-version-pr. Wait for ctl-core
      CTC-004 (harden) before calling migration done. qctl cannot
      name a foreign prefix in blocked_by.

horizon:
  - id: VER-008
    title: Generic regex version writer
    scope: verctl
    kind: evaluation
    outcome: Packages that are not Cargo or package.json can still bump via a declared pattern.
    open: Need a real third manifest (not a hypothetical) before adding a regex writer.

  - id: VER-006
    title: Conventional Commits synthesize the same fragments
    scope: verctl
    kind: deferred
    outcome: An opt-in mode writes .changeset/*.md from commit types.
    open: Fragment consume and Version PR must exist first. Default stays off.

  - id: VER-007
    title: OIDC publish backends for cargo and bun
    scope: verctl
    kind: deferred
    outcome: A publish verb runs after the Version PR merges.
    open: Trusted Publishing and bun publish paths are a later slice. actions/publish is only the hook.

archive:
  - id: VER-003
    title: Write Cargo.toml and package.json versions
    scope: verctl
    completed: 2026-08-16
    disposition: completed
    outcome: >-
      prepare --no-pr applies the max bump per declared package to
      Cargo.toml and package.json.
    evidence:
      - verctl prepare --no-pr
      - cargo/npm are stock Path drivers (format + keys + after)
      - custom drivers via format+keys or read/write shell
      - tests/bump.rs (including declared keys and shell driver)

  - id: VER-002
    title: Render changelogs with minijinja
    scope: verctl
    completed: 2026-08-16
    disposition: completed
    outcome: Defaults are Jinja2 templates rendered by minijinja 2.x.
    evidence:
      - templates/changelog.jinja and dependency-changelog.jinja
      - tests/changelog.rs

  - id: VER-001
    title: Parse Changesets YAML fragments (quoted and unquoted)
    scope: verctl
    completed: 2026-08-16
    disposition: completed
    outcome: YAML fragments via gray_matter. status and check fail closed.
    evidence:
      - src/fragment.rs
      - tests/fragment.rs and tests/status.rs