Skip to content

Releases: on-par/software-factory

0.9.26

Choose a tag to compare

@patrob patrob released this 01 Nov 17:41
76f5307

The factory never merges onto a red base. It honors hosted base CI before it starts work or merges, waits while the base's CI is pending, and pauses a repo's merges while its base is red (#3856). Stack mode now sends a planner's request to split an oversized issue to the stack splitter instead of parking the issue; missing information and contradictions still park (#3855).

All seven published @on-par packages move to 0.9.26 in lockstep.

npm install -g @on-par/factory-cli@latest

Fixed

  • Honor hosted base CI before starting work or merging, and pause merges after a factory merge leaves the base red (#3856).
  • Stack mode routes planner requests to split an oversized issue through the slice gate; missing information and contradictions still park (#3855).

0.9.25

Choose a tag to compare

@patrob patrob released this 30 Oct 13:02
a5861cc

One stack engine for run-issue and run-brief (--size-gate takes off or stack, file and slice are deprecated aliases for stack, and --run-children is removed), PR bodies whose risk receipt no longer lists changed paths or internal plan names, and Codex running with no sandbox by default (#3832, #3817, #3824).

All seven published @on-par packages move to 0.9.25 in lockstep.

npm install -g @on-par/factory-cli@latest

0.9.24

Choose a tag to compare

@patrob patrob released this 29 Oct 15:09
037ce18

PR descriptions stop listing changed files and stop naming local briefs (#3792). This release also adds stacked run-brief (#3763) and removes the ship-it/ prefix (#3771) and the simulator (#3770).

All seven published @on-par packages move to 0.9.24 in lockstep.

npm install -g @on-par/factory-cli@latest

0.9.23

Choose a tag to compare

@patrob patrob released this 28 Oct 20:55
bae2e21

--base-branch for ship/run-issue/run-brief (#3764) and multi-file run-brief (#3762).

All seven published @on-par packages move to 0.9.23 in lockstep.

npm install -g @on-par/factory-cli@latest

0.9.22

Choose a tag to compare

@patrob patrob released this 28 Oct 15:58
712e6e7

run.branchPrefix lasting default, plus evidence/park fixes (#3748–#3751).
All seven published @on-par packages move to 0.9.22 in lockstep.
Install or update with npm install -g @on-par/factory-cli@latest.

Added

  • run.branchPrefix in .factory/config.* sets a lasting default branch-name prefix for the repo (#3747). Precedence: --branch-prefix > run.branchPrefix > factory. The value is slug-normalized like the flag, and a value with no letter or digit fails config validation. FACTORY_BRANCH_PREFIX is still ignored. Legacy ship-it/ branches are still recognized. factory status --kpis shows the prefix's source.

Changed

  • A fail-to-pass evidence proof runs only the planner's named tests through the runner's own filter (vitest, jest, pytest), and SKIPs with "selector could not be used" instead of running the whole suite (#3750).

Fixed

  • Evidence commands on macOS sandbox-exec can reach loopback, so a dotnet test fail-to-pass proof no longer aborts connecting to its testhost; other outbound stays denied (#3748).
  • A fail-to-pass proof that fails identically on base and head now gets one free CHECK re-run and parks check-infra instead of builder rework, and a test host it leaks is reported once inside the evidence failure rather than as a separate side_effects failure (#3749).
  • A parked run-brief run no longer tries to comment on a nonexistent GitHub issue (which 404'd and logged a misleading warning); its park reason is reported in the event log and the CLI output (#3751).

v0.9.21

Choose a tag to compare

@patrob patrob released this 27 Oct 19:37
26a0764

Lockstep republish: recover from npm phantom-staged factory-core@0.9.20. Same product content as 0.9.20.

v0.9.20

Choose a tag to compare

@patrob patrob released this 27 Oct 19:05
b1f4615

SHIP's evidence pack PR comment is opt-in (pr.evidenceComment: true), and a run-brief PR body no longer names the brief's filesystem path. Also: atomic lane port leases (#1619) and factory status coverage of decomposed parents (#3108).

Install: npm install -g @on-par/factory-cli@latest

v0.9.17

Choose a tag to compare

@patrob patrob released this 24 Oct 06:56
54e7124

What's Changed

  • harness: Codex adapter for the provider error classifier (usage limit as usage_cap with try-again reset time) (#3227) by @patrob in #3605
  • unpark queues at the back of the lane (max order + 1), never at an old or front order; keeping the old order needs --keep-order (#3554) by @patrob in #3606
  • review rework 2/3: a queued review rework runs BUILD rework on the same PR branch with only that review's comments, then re-runs CHECK (#3564) by @patrob in #3607
  • router: failover.triggers decides which non-cap failures fall back to another model at the same provider; a usage cap ends the call; drop the unread escalateAfterTierExhausted (#3228) by @patrob in #3608
  • fix(test): drop removed escalateAfterTierExhausted from review-rework test by @patrob in #3612
  • usage --json: add plan (subscription, api or unknown) detected from Claude Code auth (#3214) by @patrob in #3614
  • review rework 3/3: cap review-rework runs per issue (configurable, default 2) and park with one comment naming the cap (#3565) by @patrob in #3613
  • A recurring sweep closes factory drafts older than 24h with no active claim and requeues their issues (#3552) by @patrob in #3615
  • evals: a readiness eval suite gates the judge's contract in stub mode and tracks false-ready / false-not-ready against a baseline in real mode (#3468) by @patrob in #3616
  • failover: Claude or Codex in models.providerOrder signed in with an API key instead of a subscription is refused, logged once as provider_refused, and never run; OpenCode Go runs only opencode-go/ models (#3335) by @patrob in #3617
  • events: rotate events.ndjson by size (#1631) by @patrob in #3618
  • check: factory check prints the readiness verdict with its questions or assumptions, and exits 1 only when the ticket is not-ready (#3469) by @patrob in #3626
  • router: automatic failover never moves onto a metered (API-key or unknown-plan) provider; no opt-in (#3234) by @patrob in #3627
  • run: a capped or failing provider fails over to the next configured provider for the stage, and releases to factory:queued only when every provider for the stage is blocked (#3226) by @patrob in #3628
  • Large-PR walkthrough artifact in the evidence pack (≥300 lines / ≥5 files) (#3623) by @patrob in #3630
  • Per-lane agent memory file fed into PLAN prompts, updated via PR (#3624) by @patrob in #3631
  • Rebase-or-refuse when a PR's base is stale: re-run checks on current main before merge (#3619) by @patrob in #3632
  • run: when every provider for a stage is down and no reset time is known (untimed breakers or only metered providers left), park with all_providers_down and emit one event instead of spinning (#3235) by @patrob in #3633
  • Base hold should wait for green CI on new main SHA, not only SHA change (#3620) by @patrob in #3634
  • status --json: providers[] (plan, breaker state) and activeAlerts[] derived from breakers, plus a provider_restored event when any breaker closes (#3236) by @patrob in #3635
  • Optional human checkpoint tier: pause after PLAN for issues labeled factory:needs-design (#3621) by @patrob in #3636
  • PLAN output: vertical-slice outline with per-phase files, automated and manual checks (#3622) by @patrob in #3637
  • /factory iterate PR comment reruns rework on the same branch (#3625) by @patrob in #3638

Full Changelog: v0.9.16...v0.9.17

v0.9.16

Choose a tag to compare

@patrob patrob released this 23 Oct 16:55
f3894c3

What's Changed

  • factory status and kpis show the count of open factory draft PRs (#3553) by @patrob in #3597
  • Baseline cache entries expire, are re-checked when GitHub CI disagrees, and can be cleared (#3540) by @patrob in #3598
  • review rework 1/3: a trusted "changes requested" review on a factory PR queues its issue for review rework, once per review id (#3563) by @patrob in #3596
  • CHECK runs declared checks when .factory/ is untracked: one-shot runs snapshot the source-checkout config (#3600) by @patrob in #3601
  • Make the PR body footer configurable via pr.footer by @patrob in #3602

Full Changelog: v0.9.15...v0.9.16

v0.9.15

Choose a tag to compare

@patrob patrob released this 23 Oct 14:12
b06348e

What's Changed

  • CHECK: a compile, tests or lint checker that finds no command reports SKIP, not PASS, and the summary never reads "All checkers passed" when nothing was built or tested (#3566) by @patrob in #3587
  • evals: weekly prompt eval authenticates with the Claude subscription token, judge moves to claude-sonnet-5-5 by @patrob in #3580
  • run: a same-file lane hold parks the issue as held (needs-a-human) instead of deferring it, so it never comes back and its dependents escalate (#3576) by @patrob in #3590
  • checkers: a shared summarizeCommandRun that returns pass/fail counts and every failing test's lines within a 4,000-character cap, with CHECK's own output unchanged (#3328) by @patrob in #3591
  • readiness: judgeReadiness returns a strict-JSON ready / ready-with-assumptions / not-ready verdict on a new readiness_judge route, cached per body hash (#3467) by @patrob in #3589
  • breaker: a rejected or revoked credential (kind auth) fails over, holds that provider's breaker open until the credentials change or factory breaker reset, and emits one provider_auth_rejected event (#3232) by @patrob in #3592
  • CHECK: repo-declared build/test/lint commands (checks) + factory init --detect-checks; verify runs 4 test workers by @patrob in #3594
  • queue preflight + land: adopt a DIRTY or still-UNKNOWN open PR with syncMain, so land merges origin/main into it (#1886's sync) with a plain push and re-runs CI (#3324) by @patrob in #3595

Full Changelog: v0.9.14...v0.9.15