feature-factory 0.8.5 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/WORKFLOW.md +21 -9
  2. package/package.json +1 -1
package/WORKFLOW.md CHANGED
@@ -295,8 +295,12 @@ fresh run; an existing run follows these rules solely because its manifest alrea
295
295
  every acceptance criterion maps to a slice, and same-wave slices are file-disjoint.
296
296
  - **Gate 3 (pre-PR)**: approve only on a GO or GO-WITH-NITS validator verdict with `review_ready`
297
297
  observed evidence for the integrated branch. A NO-GO is a NO-GO.
298
- - **Never auto-merge.** The draft PR is the last externally publishing side effect an autonomous run
299
- may perform. After it is recorded, the mandatory local completed handoff in Step 7 still follows and
298
+ - **Never auto-merge.** Recording the pull request is the last externally publishing side effect an
299
+ autonomous run may perform. Whether that PR is a draft is the repository's `pr_draft` choice and is
300
+ independent of the run mode: autonomous does not imply draft, and `pr_draft: false` is a supported
301
+ configuration that publishes ready-for-review in every mode. The constraint here is about stopping
302
+ after publication, not about draft-ness.
303
+ After it is recorded, the mandatory local completed handoff in Step 7 still follows and
300
304
  is required in every mode: terminalize, fetch the permitted local refs, archive and verify the control
301
305
  plane, and remove only the guarded sandbox. Autonomous mode never merges an external PR or performs
302
306
  unrelated work after PR recording.
@@ -562,7 +566,7 @@ After derivation, `O` is the physically resolved operator checkout. During boots
562
566
  execution, do not switch, reset, clean, stash, create a branch or worktree, write Git configuration, or
563
567
  initialize factory state directly in `O`. The only operator-checkout operations before the completed
564
568
  handoff are reads and the Step 6 forge command. The explicit Step 7 exclusion applies only after the
565
- draft PR is recorded: its guarded local-ref fetch, archive, verification, and deterministic sandbox
569
+ pull request is recorded: its guarded local-ref fetch, archive, verification, and deterministic sandbox
566
570
  removal remain the sole completed-handoff exception to bootstrap/refusal state preservation.
567
571
 
568
572
  ### Resume or collision
@@ -1816,10 +1820,10 @@ command; never move it earlier or present stale evidence.
1816
1820
  The compatibility transition name is `factory gate <run-id> pre_pr pending`; the runnable form is the
1817
1821
  repository-qualified command above.
1818
1822
 
1819
- The draft publication signature is `gh pr create --draft --base "<pr_base>" --head "<branch>" --title "<title>" --body-file "<body-file>"`.
1820
- The ready-for-review publication signature is `gh pr create --base "<pr_base>" --head "<branch>" --title "<title>" --body-file "<body-file>"`.
1823
+ The `PR_DRAFT=true` draft publication signature is `gh pr create --draft --base "<pr_base>" --head "<branch>" --title "<title>" --body-file "<body-file>"`.
1824
+ The `PR_DRAFT=false` ready-for-review publication signature is `gh pr create --base "<pr_base>" --head "<branch>" --title "<title>" --body-file "<body-file>"`.
1821
1825
 
1822
- ## Step 6 — Draft PR
1826
+ ## Step 6 — Draft PR (ready-for-review when `pr_draft` is false)
1823
1827
 
1824
1828
  Immediately before any publication effect, read the delivery intent from the selected run repository,
1825
1829
  then, for a sandbox-selected run, repeat the operator exact-ref-absent and sandbox
@@ -1951,12 +1955,13 @@ whatever mapping the repository documents, and update the tracker only through *
1951
1955
 
1952
1956
  ## Step 7 — Summary and completed sandbox handoff
1953
1957
 
1954
- After draft PR recording, `interactive`, `headless`, and `autonomous` modes all enter this same mandatory
1958
+ After the pull request is recorded -- draft or ready for review, as `pr_draft`
1959
+ selected -- `interactive`, `headless`, and `autonomous` modes all enter this same mandatory
1955
1960
  local completed handoff. In autonomous mode this is the sole narrow exception to the external-side-effect
1956
1961
  stop: perform only the terminalize, local-ref fetch, archive, verification, and guarded sandbox-removal
1957
1962
  sequence below, with no external PR merge or unrelated work after PR recording.
1958
1963
 
1959
- After `factory pr` records the draft PR, stop the heartbeat loop and wait for any heartbeat call already
1964
+ After `factory pr` records the pull request, stop the heartbeat loop and wait for any heartbeat call already
1960
1965
  in flight to return. Before terminalization or any filesystem or Git side effect, require that the loop
1961
1966
  is no longer active and no dispatched agent call remains in flight, directly read and validate exactly
1962
1967
  `RUN_MANIFEST`, and require no step with status `running` and no slice with status `running` or `review`.
@@ -1975,6 +1980,12 @@ Terminalize before any housekeeping, through the repository selected in Step 0:
1975
1980
  factory terminal "$R" completed --reason "draft-pr-recorded" --repo "$RUN_REPO"
1976
1981
  ```
1977
1982
 
1983
+ `draft-pr-recorded` is a fixed protocol token meaning this run's pull request was created and recorded.
1984
+ It does not assert the PR is a draft: a `pr_draft: false` run records a ready-for-review PR and
1985
+ terminalizes with this same reason. Never vary it by mode or by `pr_draft`; downstream consumers match
1986
+ it exactly.
1987
+
1988
+
1978
1989
  Do not replay or retry any handoff phase. A later invocation that finds a completed sandbox reports its
1979
1990
  path for manual recovery and leaves it intact. For the same reason, do not invent durable phase state or
1980
1991
  infer that an interrupted effect is safe to repeat.
@@ -2118,7 +2129,8 @@ Never re-do a side effect the manifest shows already done — ticket creation, p
2118
2129
  Qualified status reports the run's `max_retries`, so the budget a run is actually bounded by is
2119
2130
  observable rather than assumed: a forwarded `--max-retries` that never reached the manifest is visible
2120
2131
  as a different number instead of silently running at the default.
2121
- - **Draft PR only.** Never merge, force-push, or close tickets. Humans merge.
2132
+ - **Publish a PR and stop.** Never merge, force-push, or close tickets. Humans merge. Draft or
2133
+ ready-for-review is `pr_draft`'s decision, not this rule's.
2122
2134
  - **Scope discipline and no fabrication.** Flag out-of-scope work at the next gate. Never invent paths,
2123
2135
  keys, versions, or test passes — if the evidence is thin, say so and ask.
2124
2136
  - **A repository may lock its own scope, and a lock is not a defect.** A check whose assertion *is* a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feature-factory",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "description": "Durable, observed control plane for /feature runs. Host-agnostic: no opencode dependency.",
5
5
  "type": "module",
6
6
  "license": "MIT",