dorfl 0.1.0 → 0.1.2
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.
- package/dist/advance-ci-template.d.ts +3 -3
- package/dist/advance-ci-template.js +1 -1
- package/dist/advance-ci-template.js.map +1 -1
- package/dist/advance-classify.d.ts +5 -5
- package/dist/advance-classify.d.ts.map +1 -1
- package/dist/advance-classify.js +4 -4
- package/dist/advance-drivers.d.ts +7 -7
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +5 -5
- package/dist/advance-drivers.js.map +1 -1
- package/dist/advance-isolated.d.ts +3 -3
- package/dist/advance-isolated.d.ts.map +1 -1
- package/dist/advance-isolated.js +1 -1
- package/dist/advance-lifecycle-template.d.ts +2 -2
- package/dist/advance-lifecycle-template.js +9 -9
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/advance-loop-driver.d.ts +3 -3
- package/dist/advance-loop-driver.d.ts.map +1 -1
- package/dist/advance-loop-driver.js +1 -1
- package/dist/advance-treeless-publish.d.ts +1 -1
- package/dist/advance.d.ts +11 -11
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +21 -21
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +1 -1
- package/dist/advancing-lock.js +5 -5
- package/dist/apply-decide.d.ts +2 -2
- package/dist/apply-decide.js +2 -2
- package/dist/apply-merge-action.d.ts +4 -4
- package/dist/apply-merge-action.js +2 -2
- package/dist/apply-persist.d.ts +5 -5
- package/dist/apply-persist.d.ts.map +1 -1
- package/dist/apply-persist.js +7 -7
- package/dist/apply-persist.js.map +1 -1
- package/dist/buildable-body.d.ts +14 -14
- package/dist/buildable-body.js +9 -9
- package/dist/claim-cas.d.ts +3 -3
- package/dist/claim-cas.js +1 -1
- package/dist/claim-cas.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +83 -77
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.d.ts +3 -3
- package/dist/close-job-template.js +8 -8
- package/dist/close-job.d.ts +8 -8
- package/dist/close-job.js +25 -25
- package/dist/close-job.js.map +1 -1
- package/dist/complete.d.ts +3 -3
- package/dist/complete.js +8 -8
- package/dist/complete.js.map +1 -1
- package/dist/concurrency.d.ts +1 -1
- package/dist/concurrency.js +1 -1
- package/dist/config.d.ts +32 -32
- package/dist/config.js +5 -5
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts +1 -1
- package/dist/continue-branch.js +1 -1
- package/dist/cwd-section.js +1 -1
- package/dist/cwd-section.js.map +1 -1
- package/dist/decision-engine.d.ts +2 -2
- package/dist/do-autopick.d.ts +6 -6
- package/dist/do-autopick.d.ts.map +1 -1
- package/dist/do-autopick.js +5 -5
- package/dist/do-autopick.js.map +1 -1
- package/dist/do-config.d.ts +3 -3
- package/dist/do-config.js +3 -3
- package/dist/do-config.js.map +1 -1
- package/dist/do-remote-auto.d.ts +2 -2
- package/dist/do-remote-auto.js +1 -1
- package/dist/do.d.ts +25 -25
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +22 -22
- package/dist/do.js.map +1 -1
- package/dist/drop-source.d.ts +2 -2
- package/dist/env-config.js +8 -8
- package/dist/env-config.js.map +1 -1
- package/dist/format.js +3 -3
- package/dist/format.js.map +1 -1
- package/dist/frontmatter.d.ts +33 -39
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +18 -31
- package/dist/frontmatter.js.map +1 -1
- package/dist/install-ci-branch-protection.d.ts +1 -1
- package/dist/install-ci-branch-protection.js +1 -1
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +1 -1
- package/dist/install-ci-capabilities/advance-lifecycle.js +1 -1
- package/dist/install-ci-capabilities/close-job.d.ts +1 -1
- package/dist/install-ci-capabilities/close-job.js +1 -1
- package/dist/install-ci-capabilities/example-noop.d.ts +1 -1
- package/dist/install-ci-capabilities/example-noop.js +1 -1
- package/dist/install-ci-capabilities/intake.d.ts +2 -2
- package/dist/install-ci-capabilities/intake.js +2 -2
- package/dist/install-ci-capabilities/verify.d.ts +1 -1
- package/dist/install-ci-capabilities/verify.js +1 -1
- package/dist/install-ci-core.d.ts +3 -3
- package/dist/install-ci-core.js +2 -2
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +1 -1
- package/dist/install-ci-github.js +1 -1
- package/dist/install-ci.d.ts +1 -1
- package/dist/install-ci.js +4 -4
- package/dist/install-ci.js.map +1 -1
- package/dist/intake-event.d.ts +6 -6
- package/dist/intake-event.js +6 -6
- package/dist/intake-marker.d.ts +3 -3
- package/dist/intake-marker.d.ts.map +1 -1
- package/dist/intake-triage.d.ts +1 -1
- package/dist/intake-triage.js +2 -2
- package/dist/intake-trigger-template.d.ts +8 -8
- package/dist/intake-trigger-template.d.ts.map +1 -1
- package/dist/intake-trigger-template.js +16 -16
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts +50 -50
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +70 -70
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +17 -17
- package/dist/integration-core.js +17 -17
- package/dist/integration-core.js.map +1 -1
- package/dist/isolation.d.ts +3 -3
- package/dist/issue-provider.d.ts +4 -4
- package/dist/issue-provider.js +1 -1
- package/dist/item-lock.d.ts +21 -21
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +16 -16
- package/dist/item-path.d.ts +2 -2
- package/dist/item-path.js +2 -2
- package/dist/ledger-lint.d.ts +9 -9
- package/dist/ledger-lint.js +9 -9
- package/dist/ledger-read.d.ts +57 -57
- package/dist/ledger-read.d.ts.map +1 -1
- package/dist/ledger-read.js +24 -24
- package/dist/ledger-read.js.map +1 -1
- package/dist/ledger-write.d.ts +2 -2
- package/dist/ledger-write.js +1 -1
- package/dist/lifecycle-gather.d.ts +1 -1
- package/dist/lifecycle-gather.js +16 -16
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/lifecycle-pools.d.ts +4 -4
- package/dist/lifecycle-pools.js +1 -1
- package/dist/merge-question-surfacer.d.ts +3 -3
- package/dist/merge-question-surfacer.js +2 -2
- package/dist/merge-question-surfacer.js.map +1 -1
- package/dist/mint-adr.js +4 -4
- package/dist/mirror-pool-scan.d.ts +2 -2
- package/dist/mirror-pool-scan.js +3 -3
- package/dist/mirror-pool-scan.js.map +1 -1
- package/dist/needs-attention.d.ts +13 -13
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +11 -11
- package/dist/needs-attention.js.map +1 -1
- package/dist/orphan-sidecar.d.ts +2 -2
- package/dist/placement.d.ts +6 -6
- package/dist/placement.js +2 -2
- package/dist/prd-to-spec.d.ts +15 -1
- package/dist/prd-to-spec.d.ts.map +1 -1
- package/dist/prd-to-spec.js +36 -14
- package/dist/prd-to-spec.js.map +1 -1
- package/dist/prompt.d.ts +24 -24
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +29 -31
- package/dist/prompt.js.map +1 -1
- package/dist/protocol/CLAIM-PROTOCOL.md +4 -4
- package/dist/protocol/REVIEW-PROTOCOL.md +1 -1
- package/dist/protocol/TASKING-PROTOCOL.md +12 -12
- package/dist/protocol/WORK-CONTRACT.md +39 -39
- package/dist/protocol/spec-template.md +1 -1
- package/dist/protocol/task-template.md +3 -3
- package/dist/readiness.d.ts +1 -1
- package/dist/recover-isolated.js +1 -1
- package/dist/repo-config.js +12 -12
- package/dist/repo-config.js.map +1 -1
- package/dist/review-gate.d.ts +3 -3
- package/dist/review-gate.d.ts.map +1 -1
- package/dist/review-gate.js +11 -10
- package/dist/review-gate.js.map +1 -1
- package/dist/review-verdict.d.ts +2 -2
- package/dist/review-verdict.d.ts.map +1 -1
- package/dist/review-verdict.js +1 -1
- package/dist/run.d.ts +1 -1
- package/dist/run.js +5 -5
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +10 -10
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +8 -8
- package/dist/scan.js.map +1 -1
- package/dist/select-order.d.ts +1 -1
- package/dist/select-priority.d.ts +12 -12
- package/dist/select-priority.d.ts.map +1 -1
- package/dist/select-priority.js +5 -5
- package/dist/select-priority.js.map +1 -1
- package/dist/sidecar.d.ts +2 -2
- package/dist/sidecar.js +2 -2
- package/dist/sidecar.js.map +1 -1
- package/dist/slug-namespace.d.ts +1 -1
- package/dist/slug-namespace.js +3 -3
- package/dist/slug-namespace.js.map +1 -1
- package/dist/spec-complete.js +2 -2
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts +1 -1
- package/dist/start.js +3 -3
- package/dist/start.js.map +1 -1
- package/dist/status.d.ts +3 -3
- package/dist/status.js +4 -4
- package/dist/status.js.map +1 -1
- package/dist/surface-gate.d.ts +2 -2
- package/dist/surface-gate.d.ts.map +1 -1
- package/dist/surface-persist.d.ts +2 -2
- package/dist/surface-persist.d.ts.map +1 -1
- package/dist/tasker-review-loop.d.ts +8 -8
- package/dist/tasker-review-loop.d.ts.map +1 -1
- package/dist/tasker-review-loop.js +8 -8
- package/dist/tasker-review-loop.js.map +1 -1
- package/dist/tasking-eligibility.d.ts +21 -21
- package/dist/tasking-eligibility.d.ts.map +1 -1
- package/dist/tasking-eligibility.js +10 -10
- package/dist/tasking-lock.d.ts +8 -8
- package/dist/tasking-lock.d.ts.map +1 -1
- package/dist/tasking-lock.js +20 -21
- package/dist/tasking-lock.js.map +1 -1
- package/dist/tasking.d.ts +33 -33
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +89 -88
- package/dist/tasking.js.map +1 -1
- package/dist/triage-gate.d.ts +1 -1
- package/dist/triage-persist.d.ts +5 -5
- package/dist/triage-persist.js +15 -15
- package/dist/triage-persist.js.map +1 -1
- package/dist/verify-workflow-template.d.ts +1 -1
- package/dist/verify-workflow-template.js +2 -2
- package/dist/work-layout.d.ts +9 -7
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +9 -7
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +1 -1
- package/package.json +1 -1
- package/src/advance-ci-template.ts +4 -4
- package/src/advance-classify.ts +5 -5
- package/src/advance-drivers.ts +10 -10
- package/src/advance-isolated.ts +3 -3
- package/src/advance-lifecycle-template.ts +9 -9
- package/src/advance-loop-driver.ts +3 -3
- package/src/advance-treeless-publish.ts +1 -1
- package/src/advance.ts +30 -30
- package/src/advancing-lock.ts +6 -6
- package/src/apply-decide.ts +2 -2
- package/src/apply-merge-action.ts +5 -5
- package/src/apply-persist.ts +8 -8
- package/src/buildable-body.ts +14 -14
- package/src/claim-cas.ts +4 -4
- package/src/cli.ts +94 -84
- package/src/close-job-template.ts +8 -8
- package/src/close-job.ts +26 -26
- package/src/complete.ts +11 -11
- package/src/concurrency.ts +1 -1
- package/src/config.ts +37 -37
- package/src/continue-branch.ts +1 -1
- package/src/cwd-section.ts +1 -1
- package/src/decision-engine.ts +3 -3
- package/src/do-autopick.ts +9 -9
- package/src/do-config.ts +6 -6
- package/src/do-remote-auto.ts +2 -2
- package/src/do.ts +49 -49
- package/src/drop-source.ts +2 -2
- package/src/env-config.ts +8 -8
- package/src/format.ts +3 -3
- package/src/frontmatter.ts +42 -60
- package/src/install-ci-branch-protection.ts +1 -1
- package/src/install-ci-capabilities/advance-lifecycle.ts +1 -1
- package/src/install-ci-capabilities/close-job.ts +1 -1
- package/src/install-ci-capabilities/example-noop.ts +1 -1
- package/src/install-ci-capabilities/intake.ts +2 -2
- package/src/install-ci-capabilities/verify.ts +1 -1
- package/src/install-ci-core.ts +4 -4
- package/src/install-ci-github.ts +1 -1
- package/src/install-ci.ts +4 -4
- package/src/intake-event.ts +6 -6
- package/src/intake-marker.ts +3 -3
- package/src/intake-triage.ts +2 -2
- package/src/intake-trigger-template.ts +17 -17
- package/src/intake.ts +97 -97
- package/src/integration-core.ts +35 -35
- package/src/isolation.ts +3 -3
- package/src/issue-provider.ts +4 -4
- package/src/item-lock.ts +21 -21
- package/src/item-path.ts +2 -2
- package/src/ledger-lint.ts +9 -9
- package/src/ledger-read.ts +81 -81
- package/src/ledger-write.ts +3 -3
- package/src/lifecycle-gather.ts +16 -16
- package/src/lifecycle-pools.ts +4 -4
- package/src/merge-question-surfacer.ts +4 -4
- package/src/mint-adr.ts +4 -4
- package/src/mirror-pool-scan.ts +5 -5
- package/src/needs-attention.ts +22 -22
- package/src/orphan-sidecar.ts +2 -2
- package/src/placement.ts +6 -6
- package/src/prd-to-spec.ts +51 -15
- package/src/prompt.ts +33 -35
- package/src/readiness.ts +1 -1
- package/src/recover-isolated.ts +1 -1
- package/src/repo-config.ts +12 -12
- package/src/review-gate.ts +12 -11
- package/src/review-verdict.ts +2 -2
- package/src/run.ts +6 -6
- package/src/scan.ts +15 -15
- package/src/select-order.ts +1 -1
- package/src/select-priority.ts +13 -13
- package/src/sidecar.ts +3 -3
- package/src/slug-namespace.ts +3 -3
- package/src/spec-complete.ts +2 -2
- package/src/start.ts +4 -4
- package/src/status.ts +7 -7
- package/src/surface-gate.ts +2 -2
- package/src/surface-persist.ts +2 -2
- package/src/tasker-review-loop.ts +15 -15
- package/src/tasking-eligibility.ts +21 -21
- package/src/tasking-lock.ts +27 -28
- package/src/tasking.ts +124 -123
- package/src/triage-gate.ts +1 -1
- package/src/triage-persist.ts +16 -16
- package/src/verify-workflow-template.ts +2 -2
- package/src/work-layout.ts +9 -7
- package/src/workspace.ts +1 -1
package/dist/triage-gate.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Harness } from './harness.js';
|
|
2
2
|
/**
|
|
3
|
-
* The **TRIAGE auto-disposition GATE** (
|
|
3
|
+
* The **TRIAGE auto-disposition GATE** (spec `advance-loop`, task
|
|
4
4
|
* `advance-rung-triage`, US #17) — the CONSERVATIVE, `observationTriage: 'auto'`-
|
|
5
5
|
* gated exception to the question-gated default. On `classify=triage-observation`
|
|
6
6
|
* AND `observationTriage` resolved to `'auto'`, the engine asks this gate whether
|
package/dist/triage-persist.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ export interface PromoteObservationOptions {
|
|
|
78
78
|
* triage-local {@link createItemThroughCas} writer (one local commit through the
|
|
79
79
|
* CAS) — NOT intake's branch+integrate band — so the CAS-loser-backs-off
|
|
80
80
|
* guarantee and the same-commit note deletion are uniform across the two routes.
|
|
81
|
-
* MIGRATE step (
|
|
81
|
+
* MIGRATE step (spec `prd-to-spec-vocabulary-cutover-and-migration-command`): the
|
|
82
82
|
* produced VALUE is `'spec'` (the verdict outcome renamed from `'prd'`).
|
|
83
83
|
*/
|
|
84
84
|
artifact?: 'task' | 'spec';
|
|
@@ -131,22 +131,22 @@ export interface PromoteObservationResult {
|
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
133
133
|
* Promote an ANSWERED observation to a NEW, SELF-CONTAINED artifact (US #1/#3/#8
|
|
134
|
-
* for the task route; US #4/#9 for the
|
|
134
|
+
* for the task route; US #4/#9 for the SPEC route): CAS-create the new item keyed
|
|
135
135
|
* on the NEW item's identity (its target path), with the observation note + its
|
|
136
136
|
* answered sidecar `git rm`-ed IN THE SAME atomic commit. Promote is ONE commit
|
|
137
137
|
* (create + delete).
|
|
138
138
|
*
|
|
139
139
|
* The artifact TYPE (`options.artifact`) selects the target + body shape: `'task'`
|
|
140
140
|
* (default) mints `work/tasks/ready/<slug>.md`; `'prd'` mints
|
|
141
|
-
* `work/
|
|
141
|
+
* `work/specs/proposed/<slug>.md` (SPEC staging — a human later promotes it to
|
|
142
142
|
* `ready/`). BOTH routes use the SAME triage-local {@link createItemThroughCas}
|
|
143
143
|
* writer (NOT intake's `switchToWorkBranch`/`performIntegration` branch+integrate
|
|
144
144
|
* band, which is intake's standalone front door): one create/integrate surface for
|
|
145
|
-
* triage, the CAS-loser-backs-off guarantee uniform across task and
|
|
145
|
+
* triage, the CAS-loser-backs-off guarantee uniform across task and SPEC promotion.
|
|
146
146
|
*
|
|
147
147
|
* The minted body is built FROM the observation (see {@link buildPromotedBody}):
|
|
148
148
|
* its mechanism + fix prose is carried into the artifact's lead section (`## What
|
|
149
|
-
* to build` for a task, `## Problem Statement` for a
|
|
149
|
+
* to build` for a task, `## Problem Statement` for a SPEC), and its
|
|
150
150
|
* `## Open questions` scoping is transcribed into the new item's own
|
|
151
151
|
* `## Open questions` block with `needsAnswers` set when questions remain (cleared
|
|
152
152
|
* when none do) — so an agent can build from the artifact ALONE and no decision
|
package/dist/triage-persist.js
CHANGED
|
@@ -6,7 +6,7 @@ import { createItemThroughCas, } from './advancing-lock.js';
|
|
|
6
6
|
import { resolveSidecarIdentity, sidecarPathFor } from './sidecar.js';
|
|
7
7
|
import { renderTaskBody, renderSpecBody } from './buildable-body.js';
|
|
8
8
|
/**
|
|
9
|
-
* The engine-owned TRIAGE PERSIST (
|
|
9
|
+
* The engine-owned TRIAGE PERSIST (spec `advance-loop`, task `advance-rung-triage`,
|
|
10
10
|
* US #16/17/24/30) — the half of the observation-triage rung the ENGINE owns (the
|
|
11
11
|
* triage gate JUDGES, the engine ACTS). It is the SIBLING of `surface-persist.ts`
|
|
12
12
|
* (the surface rung's persist) and `apply-persist.ts` (the apply rung's persist),
|
|
@@ -138,22 +138,22 @@ export function autoDispositionObservation(options) {
|
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
140
140
|
* Promote an ANSWERED observation to a NEW, SELF-CONTAINED artifact (US #1/#3/#8
|
|
141
|
-
* for the task route; US #4/#9 for the
|
|
141
|
+
* for the task route; US #4/#9 for the SPEC route): CAS-create the new item keyed
|
|
142
142
|
* on the NEW item's identity (its target path), with the observation note + its
|
|
143
143
|
* answered sidecar `git rm`-ed IN THE SAME atomic commit. Promote is ONE commit
|
|
144
144
|
* (create + delete).
|
|
145
145
|
*
|
|
146
146
|
* The artifact TYPE (`options.artifact`) selects the target + body shape: `'task'`
|
|
147
147
|
* (default) mints `work/tasks/ready/<slug>.md`; `'prd'` mints
|
|
148
|
-
* `work/
|
|
148
|
+
* `work/specs/proposed/<slug>.md` (SPEC staging — a human later promotes it to
|
|
149
149
|
* `ready/`). BOTH routes use the SAME triage-local {@link createItemThroughCas}
|
|
150
150
|
* writer (NOT intake's `switchToWorkBranch`/`performIntegration` branch+integrate
|
|
151
151
|
* band, which is intake's standalone front door): one create/integrate surface for
|
|
152
|
-
* triage, the CAS-loser-backs-off guarantee uniform across task and
|
|
152
|
+
* triage, the CAS-loser-backs-off guarantee uniform across task and SPEC promotion.
|
|
153
153
|
*
|
|
154
154
|
* The minted body is built FROM the observation (see {@link buildPromotedBody}):
|
|
155
155
|
* its mechanism + fix prose is carried into the artifact's lead section (`## What
|
|
156
|
-
* to build` for a task, `## Problem Statement` for a
|
|
156
|
+
* to build` for a task, `## Problem Statement` for a SPEC), and its
|
|
157
157
|
* `## Open questions` scoping is transcribed into the new item's own
|
|
158
158
|
* `## Open questions` block with `needsAnswers` set when questions remain (cleared
|
|
159
159
|
* when none do) — so an agent can build from the artifact ALONE and no decision
|
|
@@ -233,10 +233,10 @@ export async function promoteObservation(options) {
|
|
|
233
233
|
*
|
|
234
234
|
* The artifact TYPE selects the frontmatter + lead heading: a `task` gets
|
|
235
235
|
* `## What to build` + `blockedBy: []` + a `## Prompt` (the buildable-task shape);
|
|
236
|
-
* a `prd` gets `## Problem Statement` (the
|
|
237
|
-
* a
|
|
236
|
+
* a `prd` gets `## Problem Statement` (the SPEC document shape, with no `blockedBy` —
|
|
237
|
+
* a SPEC is not a blockable task — and no `## Prompt`, since a SPEC is not
|
|
238
238
|
* dispatched by `do`/`run`). BOTH carry the SAME transcribed mechanism prose +
|
|
239
|
-
* open-question block, so a
|
|
239
|
+
* open-question block, so a SPEC minted into `proposed/` is just as self-contained
|
|
240
240
|
* as a task.
|
|
241
241
|
*
|
|
242
242
|
* The `## Prompt` (task only) is the STRUCTURAL dispatchability the validator
|
|
@@ -244,9 +244,9 @@ export async function promoteObservation(options) {
|
|
|
244
244
|
* dispatched build throws "has no '## Prompt' section". The body BELOW the
|
|
245
245
|
* frontmatter (lead section + mechanism prose + optional `## Open questions` +
|
|
246
246
|
* the task-only `## Prompt`) is rendered by the SHARED owner of the
|
|
247
|
-
* buildable-task/
|
|
247
|
+
* buildable-task/SPEC schema, {@link renderTaskBody} / {@link renderSpecBody}
|
|
248
248
|
* (`buildable-body.ts`), so the producer and the consumer cannot drift apart
|
|
249
|
-
* (
|
|
249
|
+
* (spec `centralize-buildable-task-renderer-shared-by-intake-and-promotion`,
|
|
250
250
|
* US #3/#5/#6). This function owns only the FRONTMATTER writer; the section
|
|
251
251
|
* skeleton lives in the one renderer. The empty-mechanism `## Prompt` seed is
|
|
252
252
|
* passed EXPLICITLY (`Build the task '<slug>', described above.`) so promotion's
|
|
@@ -269,8 +269,8 @@ export async function promoteObservation(options) {
|
|
|
269
269
|
* fails with `has no '## Prompt' section` (the `extractPromptSection`/`resolveTask`
|
|
270
270
|
* guard in `prompt.ts`). This is the robust backstop that closes that hole
|
|
271
271
|
* regardless of agent compliance: for a TASK, if the body has no `## Prompt`
|
|
272
|
-
* heading, append a seeded one (blockquoted, matching the renderer's shape). A
|
|
273
|
-
* is left UNTOUCHED — a
|
|
272
|
+
* heading, append a seeded one (blockquoted, matching the renderer's shape). A SPEC
|
|
273
|
+
* is left UNTOUCHED — a SPEC is a north-star doc, not dispatched by `do`/`run`, and carries no
|
|
274
274
|
* `## Prompt` by design.
|
|
275
275
|
*/
|
|
276
276
|
function ensureTaskDispatchable(artifact, slug, body) {
|
|
@@ -298,7 +298,7 @@ function buildPromotedBody(artifact, slug, observation) {
|
|
|
298
298
|
`title: ${slug}`,
|
|
299
299
|
`slug: ${slug}`,
|
|
300
300
|
`needsAnswers: ${hasQuestions ? 'true' : 'false'}`,
|
|
301
|
-
// A
|
|
301
|
+
// A SPEC is a north-star doc, not a blockable task — only the task shape carries
|
|
302
302
|
// `blockedBy`.
|
|
303
303
|
...(artifact === 'spec' ? [] : ['blockedBy: []']),
|
|
304
304
|
'---',
|
|
@@ -314,8 +314,8 @@ function buildPromotedBody(artifact, slug, observation) {
|
|
|
314
314
|
// no leading blank. Do NOT move the separator into the renderer.
|
|
315
315
|
const fenceToBody = frontmatter.join('\n') + '\n\n';
|
|
316
316
|
// The body BELOW the frontmatter is rendered by the SHARED schema owner so the
|
|
317
|
-
// section skeleton has one home, not two (
|
|
318
|
-
// `centralize-buildable-task-renderer-shared-by-intake-and-promotion`). A
|
|
317
|
+
// section skeleton has one home, not two (spec
|
|
318
|
+
// `centralize-buildable-task-renderer-shared-by-intake-and-promotion`). A SPEC
|
|
319
319
|
// goes through `renderSpecBody` (no `## Prompt`); a task through
|
|
320
320
|
// `renderTaskBody` (always a `## Prompt`).
|
|
321
321
|
if (artifact === 'spec') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage-persist.js","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,GAAG,EAAiB,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,oBAAoB,GAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,sBAAsB,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,SAAS,OAAO,CACf,IAAc,EACd,GAAW,EACX,GAAkC;IAElC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,OAAO,CACf,IAAc,EACd,GAAW,EACX,GAAkC;IAElC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,kBAAkB,CAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAC/E,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAkC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,iFAAiF;AACjF,SAAS,QAAQ,CAChB,GAAW,EACX,QAAgB,EAChB,GAAkC;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,kBAAkB,CAC3B,qCAAqC,QAAQ,yCAAyC,CACtF,CAAC;IACH,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAClC,CAAC;CACD;AA4CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CACzC,OAA+B;IAE/B,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7C,kFAAkF;IAClF,iFAAiF;IACjF,mFAAmF;IACnF,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,YAAY,GACjB,IAAI,KAAK,WAAW;QACnB,CAAC,CAAC,yBAAyB,QAAQ,qDAAqD;QACxF,CAAC,CAAC,6BAA6B,QAAQ,+DAA+D,CAAC;IACzG,MAAM,OAAO,GAAG,mBAAmB,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG,CAAC;IAC/D,MAAM,WAAW,GAChB,2BAA2B,YAAY,gCAAgC;QACvE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,OAAO,GACZ,gBAAgB,IAAI,MAAM,IAAI,OAAO,QAAQ,0BAA0B;QACvE,8FAA8F,CAAC;IAChG,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC;AACxD,CAAC;AAyED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,OAAkC;IAElC,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExC,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC5C,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO;YACN,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,WAAW,IAAI,qCAAqC,QAAQ,EAAE;SACvE,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,mFAAmF;IACnF,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,WAAW,GAAG,WAAW,CAC9B,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EACtD,GAAG,OAAO,KAAK,CACf,CAAC;IACF,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,sBAAsB,CACrC,QAAQ,EACR,OAAO,EACP,OAAO,CAAC,WAAW;QAClB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CACnE,CAAC;IAEF,gFAAgF;IAChF,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,2EAA2E;IAC3E,8CAA8C;IAC9C,MAAM,OAAO,GAA+B,MAAM,oBAAoB,CAAC;QACtE,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QACpC,GAAG;QACH,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,EAAE;QACF,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG;QACH,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YACnC,CAAC,CAAC,EAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAC;YAClC,CAAC,CAAC,EAAE,CAAC;KACN,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GACZ,WAAW,IAAI,kBAAkB,WAAW,IAAI,OAAO,CAAC,OAAO,OAAO;YACtE,eAAe,OAAO,CAAC,OAAO,2CAA2C;YACzE,qBAAqB,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;YAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO;SACP,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GACZ,YAAY,IAAI,cAAc,WAAW,+BAA+B;QACxE,+CAA+C,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;;;;;;;;;;;;;GAaG;AACH,SAAS,sBAAsB,CAC9B,QAAyB,EACzB,IAAY,EACZ,IAAY;IAEZ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,iFAAiF;IACjF,oDAAoD;IACpD,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,+DAA+D;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,mBAAmB,IAAI,qBAAqB,CAAC;IAC1D,MAAM,WAAW,GAAG,kBAAkB,IAAI,IAAI,CAAC;IAC/C,OAAO,GAAG,OAAO,OAAO,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CACzB,QAAyB,EACzB,IAAY,EACZ,WAAmB;IAEnB,MAAM,EAAC,SAAS,EAAE,aAAa,EAAC,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACjD,MAAM,WAAW,GAAa;QAC7B,KAAK;QACL,UAAU,IAAI,EAAE;QAChB,SAAS,IAAI,EAAE;QACf,iBAAiB,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;QAClD,
|
|
1
|
+
{"version":3,"file":"triage-persist.js","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `install-ci` VERIFY-WORKFLOW capability (
|
|
2
|
+
* The `install-ci` VERIFY-WORKFLOW capability (spec
|
|
3
3
|
* `land-time-reverify-and-parallel-merge-ceiling`, task
|
|
4
4
|
* `install-ci-tier1-branch-protection`; Story 11 — the Tier-1 GitHub ceiling).
|
|
5
5
|
* Emits a small `verify.yml` workflow whose ONLY job is `verify` and runs on
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `install-ci` VERIFY-WORKFLOW capability (
|
|
2
|
+
* The `install-ci` VERIFY-WORKFLOW capability (spec
|
|
3
3
|
* `land-time-reverify-and-parallel-merge-ceiling`, task
|
|
4
4
|
* `install-ci-tier1-branch-protection`; Story 11 — the Tier-1 GitHub ceiling).
|
|
5
5
|
* Emits a small `verify.yml` workflow whose ONLY job is `verify` and runs on
|
|
@@ -41,7 +41,7 @@ export const VERIFY_WORKFLOW_PATH = 'workflows/verify.yml';
|
|
|
41
41
|
*/
|
|
42
42
|
export function generateVerifyWorkflow(_config) {
|
|
43
43
|
return `\
|
|
44
|
-
# dorfl — the VERIFY workflow (Tier-1 GitHub ceiling;
|
|
44
|
+
# dorfl — the VERIFY workflow (Tier-1 GitHub ceiling; spec
|
|
45
45
|
# land-time-reverify-and-parallel-merge-ceiling, task
|
|
46
46
|
# install-ci-tier1-branch-protection). EMITTED by \`dorfl install-ci\`; the
|
|
47
47
|
# human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade.
|
package/dist/work-layout.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* folder-name union/array, the item-scan predicate, and the prefix-task helpers
|
|
4
4
|
* used across `src/`.
|
|
5
5
|
*
|
|
6
|
-
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename`
|
|
6
|
+
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
|
|
7
7
|
* checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
|
|
8
8
|
* `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
|
|
9
9
|
* used to be scattered across ~70 files now routes through here. The NAMES are
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
|
|
15
15
|
* Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
|
|
16
16
|
* `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
|
|
17
|
-
* re-touches a single call site (a KEY rename, e.g. the
|
|
17
|
+
* re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
|
|
18
18
|
* is a mechanical relabel of the key literal at each site — behaviour-preserving).
|
|
19
19
|
*
|
|
20
20
|
* Domain note (crown-jewel invariant): a `work/` tree is a set of governance
|
|
@@ -61,17 +61,19 @@ export declare const WORK_ROOT: "work";
|
|
|
61
61
|
* and `needs-attention` (both are really lock-ref state, NOT durable folders;
|
|
62
62
|
* routed here only so no reader hand-writes the literal).
|
|
63
63
|
*
|
|
64
|
-
* NOTE on the
|
|
64
|
+
* NOTE on the spec→spec vocabulary cutover
|
|
65
65
|
* (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
|
|
66
66
|
* `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
|
|
67
67
|
* below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
|
|
68
68
|
* `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
|
|
69
|
-
* lockstep with the on-disk `git mv work/
|
|
69
|
+
* lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
|
|
70
70
|
* key-only relabel, this batch moves the folders too, so the KEY and VALUE change
|
|
71
71
|
* together and the self-renaming-folder guard stays green. The KEY rename is a
|
|
72
72
|
* mechanical relabel of the key literal at each call site (behaviour-preserving);
|
|
73
|
-
* the frontmatter `prd:` field
|
|
74
|
-
*
|
|
73
|
+
* the legacy frontmatter `prd:` field survives ONLY as un-migrated on-disk DATA the
|
|
74
|
+
* `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
|
|
75
|
+
* longer READ by `parseFrontmatter` — `spec:` is the only read key); the
|
|
76
|
+
* `--specs-land-in` flag/`specsLandIn` config + the
|
|
75
77
|
* `Spec*` symbols were completed by the later batches + the contract task. The
|
|
76
78
|
* folder-as-status invariant is unchanged.
|
|
77
79
|
*/
|
|
@@ -153,7 +155,7 @@ export declare function isWorkItemFile(name: string): boolean;
|
|
|
153
155
|
* order: `in-progress` over `tasks-ready`, with `done` appended only behind the
|
|
154
156
|
* stranded-continue gate. Order is load-bearing — kept exactly as the original
|
|
155
157
|
* union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
|
|
156
|
-
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag,
|
|
158
|
+
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
|
|
157
159
|
* `do-allow-backlog-drive-staged-tasks-without-promotion` — see
|
|
158
160
|
* {@link TaskResolutionFolder}.)
|
|
159
161
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iDAIS,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,GACxC,eAAe,CAAC;AAEnB;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oEAKU,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,+CAIW,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,0CAGoB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/work-layout.js
CHANGED
|
@@ -4,7 +4,7 @@ import { join } from 'node:path';
|
|
|
4
4
|
* folder-name union/array, the item-scan predicate, and the prefix-task helpers
|
|
5
5
|
* used across `src/`.
|
|
6
6
|
*
|
|
7
|
-
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename`
|
|
7
|
+
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
|
|
8
8
|
* checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
|
|
9
9
|
* `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
|
|
10
10
|
* used to be scattered across ~70 files now routes through here. The NAMES are
|
|
@@ -15,7 +15,7 @@ import { join } from 'node:path';
|
|
|
15
15
|
* {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
|
|
16
16
|
* Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
|
|
17
17
|
* `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
|
|
18
|
-
* re-touches a single call site (a KEY rename, e.g. the
|
|
18
|
+
* re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
|
|
19
19
|
* is a mechanical relabel of the key literal at each site — behaviour-preserving).
|
|
20
20
|
*
|
|
21
21
|
* Domain note (crown-jewel invariant): a `work/` tree is a set of governance
|
|
@@ -62,17 +62,19 @@ export const WORK_ROOT = 'work';
|
|
|
62
62
|
* and `needs-attention` (both are really lock-ref state, NOT durable folders;
|
|
63
63
|
* routed here only so no reader hand-writes the literal).
|
|
64
64
|
*
|
|
65
|
-
* NOTE on the
|
|
65
|
+
* NOTE on the spec→spec vocabulary cutover
|
|
66
66
|
* (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
|
|
67
67
|
* `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
|
|
68
68
|
* below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
|
|
69
69
|
* `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
|
|
70
|
-
* lockstep with the on-disk `git mv work/
|
|
70
|
+
* lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
|
|
71
71
|
* key-only relabel, this batch moves the folders too, so the KEY and VALUE change
|
|
72
72
|
* together and the self-renaming-folder guard stays green. The KEY rename is a
|
|
73
73
|
* mechanical relabel of the key literal at each call site (behaviour-preserving);
|
|
74
|
-
* the frontmatter `prd:` field
|
|
75
|
-
*
|
|
74
|
+
* the legacy frontmatter `prd:` field survives ONLY as un-migrated on-disk DATA the
|
|
75
|
+
* `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
|
|
76
|
+
* longer READ by `parseFrontmatter` — `spec:` is the only read key); the
|
|
77
|
+
* `--specs-land-in` flag/`specsLandIn` config + the
|
|
76
78
|
* `Spec*` symbols were completed by the later batches + the contract task. The
|
|
77
79
|
* folder-as-status invariant is unchanged.
|
|
78
80
|
*/
|
|
@@ -170,7 +172,7 @@ export function isWorkItemFile(name) {
|
|
|
170
172
|
* order: `in-progress` over `tasks-ready`, with `done` appended only behind the
|
|
171
173
|
* stranded-continue gate. Order is load-bearing — kept exactly as the original
|
|
172
174
|
* union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
|
|
173
|
-
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag,
|
|
175
|
+
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
|
|
174
176
|
* `do-allow-backlog-drive-staged-tasks-without-promotion` — see
|
|
175
177
|
* {@link TaskResolutionFolder}.)
|
|
176
178
|
*/
|
package/dist/work-layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAe,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -114,7 +114,7 @@ export interface CreateJobOptions {
|
|
|
114
114
|
slug: string;
|
|
115
115
|
/**
|
|
116
116
|
* The item TYPE — `'task'` (build) or `'prd'` (tasking) — namespacing the
|
|
117
|
-
* work branch via {@link workBranchRef} so a same-slug task and
|
|
117
|
+
* work branch via {@link workBranchRef} so a same-slug task and spec never
|
|
118
118
|
* collide. Defaults to `'task'`.
|
|
119
119
|
*/
|
|
120
120
|
type?: SlugNamespace;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ import {dirname, resolve} from 'node:path';
|
|
|
3
3
|
import {fileURLToPath} from 'node:url';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* The CI-integration deliverable for the `advance` loop (
|
|
6
|
+
* The CI-integration deliverable for the `advance` loop (spec `advance-loop`,
|
|
7
7
|
* task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
|
|
8
8
|
* DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
|
|
9
9
|
* Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
|
|
@@ -11,8 +11,8 @@ import {fileURLToPath} from 'node:url';
|
|
|
11
11
|
* `advance` driver; it is NOT entangled with the tick.
|
|
12
12
|
*
|
|
13
13
|
* The unified, per-capability `install-ci` CLI (auth/secrets wizard + GitHub
|
|
14
|
-
* adapter) is owned by the separate `runner-in-ci`
|
|
15
|
-
* (`work/
|
|
14
|
+
* adapter) is owned by the separate `runner-in-ci` spec
|
|
15
|
+
* (`work/specs/tasked/runner-in-ci.md`); when built it EMITS this template as its
|
|
16
16
|
* advance-loop capability. This module's job is unchanged either way: locate +
|
|
17
17
|
* STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
|
|
18
18
|
* safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
|
|
@@ -136,7 +136,7 @@ export function validateAdvanceCiTemplate(
|
|
|
136
136
|
// The `enumerate` `jq` must UNION taskable prds into the matrix
|
|
137
137
|
// (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
|
|
138
138
|
// task-only `jq` would render `DORFL_AUTO_TASK` dead on the hourly
|
|
139
|
-
// cron — a ready ungated
|
|
139
|
+
// cron — a ready ungated SPEC would never become a matrix leg. The `jq` must
|
|
140
140
|
// read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
|
|
141
141
|
// and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
|
|
142
142
|
require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
|
package/src/advance-classify.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The pure `advance` TICK classifier (
|
|
2
|
+
* The pure `advance` TICK classifier (spec `advance-loop`, task
|
|
3
3
|
* `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
|
|
4
4
|
* one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
|
|
5
5
|
* `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* needsAnswers: true?
|
|
17
17
|
* ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
|
|
18
|
-
* │
|
|
18
|
+
* │ spec / triage an untriaged observation). Analysis MAY advance, OR
|
|
19
19
|
* │ SURFACE questions.
|
|
20
20
|
* └─ YES → sidecar exists?
|
|
21
21
|
* ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
*
|
|
40
40
|
* "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
|
|
41
41
|
* ANALYSE branch resolves to the per-TYPE rung the executor will run (the cells
|
|
42
|
-
* of the
|
|
42
|
+
* of the spec's "Per-item-type transitions" table): `build-task` (task),
|
|
43
43
|
* `task-spec` (spec), `triage-observation` (observation) when there are no open
|
|
44
44
|
* questions; `surface` (first-pass question generation) when `needsAnswers` but
|
|
45
45
|
* no sidecar yet; `apply` when all entries are answered.
|
|
@@ -56,7 +56,7 @@ import {allAnswered} from './sidecar.js';
|
|
|
56
56
|
* never a third state store.
|
|
57
57
|
*/
|
|
58
58
|
export interface TickItem {
|
|
59
|
-
/** The item type — the state machine is per-TYPE (task /
|
|
59
|
+
/** The item type — the state machine is per-TYPE (task / spec / observation). */
|
|
60
60
|
type: SidecarType;
|
|
61
61
|
/** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
|
|
62
62
|
needsAnswers: boolean | undefined;
|
|
@@ -128,7 +128,7 @@ const ANALYSE_RUNG_FOR_TYPE: Record<SidecarType, TickRungKind> = {
|
|
|
128
128
|
* Classify ONE tick PURELY from the item's two signals + its type — read-only,
|
|
129
129
|
* no model, no lock, no file mutation. Returns the classified rung the executor
|
|
130
130
|
* will later run (or `no-op` / `invariant-violation`). The decision tree is the
|
|
131
|
-
*
|
|
131
|
+
* spec's per-item state machine, with invariant 1 asserted at the boundary:
|
|
132
132
|
*
|
|
133
133
|
* - `needsAnswers` NOT true:
|
|
134
134
|
* - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
|
package/src/advance-drivers.ts
CHANGED
|
@@ -23,7 +23,7 @@ import type {Config} from './config.js';
|
|
|
23
23
|
import type {ConfigOverrideMap} from './config-override.js';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* The **`advance` one-shot DRIVER** (
|
|
26
|
+
* The **`advance` one-shot DRIVER** (spec `advance-loop`, task
|
|
27
27
|
* `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
|
|
28
28
|
* WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
|
|
29
29
|
* item(s) or the bare eligible-SET form. It is the in-place counterpart of
|
|
@@ -49,7 +49,7 @@ import type {ConfigOverrideMap} from './config-override.js';
|
|
|
49
49
|
*
|
|
50
50
|
* **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
|
|
51
51
|
* exactly as it does for `do`: the eligible-pool scan only SURFACES a build item
|
|
52
|
-
* when `autoBuild` is on and a task-a-
|
|
52
|
+
* when `autoBuild` is on and a task-a-spec item when `autoTask` is on (the gate
|
|
53
53
|
* is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
|
|
54
54
|
* typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
|
|
55
55
|
* `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
|
|
@@ -61,7 +61,7 @@ import type {ConfigOverrideMap} from './config-override.js';
|
|
|
61
61
|
*
|
|
62
62
|
* **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
|
|
63
63
|
* or chaining machinery — it threads the SAME `AdvanceContext` the tick already
|
|
64
|
-
* consumes (which orchestrates `do`/`do
|
|
64
|
+
* consumes (which orchestrates `do`/`do spec:` through the isolation-strategy seam
|
|
65
65
|
* and rebase-before-integrate); a chain conflict routes to needs-attention as
|
|
66
66
|
* today, inside the orchestrated `do`.
|
|
67
67
|
*/
|
|
@@ -83,7 +83,7 @@ type SharedAdvanceContext = AdvanceContext;
|
|
|
83
83
|
export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
|
|
84
84
|
/**
|
|
85
85
|
* The resolved repo config — provides `autoBuild` (the build gate for the
|
|
86
|
-
* task pool), `autoTask` (the task-a-
|
|
86
|
+
* task pool), `autoTask` (the task-a-spec gate for the spec pool), and
|
|
87
87
|
* `selectionOrder` (the configurable cross-pool order). The per-action gate
|
|
88
88
|
* family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
|
|
89
89
|
* selection point).
|
|
@@ -105,7 +105,7 @@ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
|
|
|
105
105
|
count?: number;
|
|
106
106
|
/** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
|
|
107
107
|
run?: AdvanceTickRunner;
|
|
108
|
-
/** Override the read seam (
|
|
108
|
+
/** Override the read seam (spec pool); defaults to the active {@link ledgerRead}. */
|
|
109
109
|
read?: LedgerReadStrategy;
|
|
110
110
|
/**
|
|
111
111
|
* The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
|
|
@@ -180,7 +180,7 @@ export async function performAdvanceAuto(
|
|
|
180
180
|
);
|
|
181
181
|
|
|
182
182
|
// Pool 2 — TASKABLE prds filtered by `autoslice-gate`'s predicate (gated on
|
|
183
|
-
// `autoTask`). With `autoTask` off NO
|
|
183
|
+
// `autoTask`). With `autoTask` off NO spec is selected — the task rung is
|
|
184
184
|
// never reached by the bare/`-n` selection.
|
|
185
185
|
const pool = read.resolveSpecPool({repoPath: cwd});
|
|
186
186
|
const specCandidates: SpecCandidate[] = pool.specs.map((spec) => ({
|
|
@@ -237,8 +237,8 @@ export async function performAdvanceAuto(
|
|
|
237
237
|
/**
|
|
238
238
|
* Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
|
|
239
239
|
* GIVEN order (no pool/priority — the operator chose them). Each arg is run
|
|
240
|
-
* through the existing advance tick, which itself resolves bare/`task:`/`
|
|
241
|
-
* `obs:` (so a named
|
|
240
|
+
* through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
|
|
241
|
+
* `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
|
|
242
242
|
* collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
|
|
243
243
|
* surface/apply rung runs regardless of the per-action gates.
|
|
244
244
|
*/
|
|
@@ -260,7 +260,7 @@ export async function performAdvanceArgs(
|
|
|
260
260
|
/**
|
|
261
261
|
* Run a list of selected items through the existing advance tick, SEQUENTIALLY
|
|
262
262
|
* (US #25 — `-n` is always sequential), threading the shared context to each. For
|
|
263
|
-
* the pool path the arg encodes the namespace (`
|
|
263
|
+
* the pool path the arg encodes the namespace (`spec:<slug>` for a selected spec,
|
|
264
264
|
* bare slug for a task); for the explicit-arg path the caller's raw arg is passed
|
|
265
265
|
* verbatim. Each tick is INDEPENDENTLY `advancing`-lock-guarded inside
|
|
266
266
|
* {@link performAdvance} — sequential here means one item at a time, never a
|
|
@@ -363,7 +363,7 @@ export async function runAdvanceTickWithTreelessPublish(
|
|
|
363
363
|
* the tick surfaces/applies);
|
|
364
364
|
* - `task` → bare `<slug>` (an eligible task's build rung, OR a `needsAnswers`
|
|
365
365
|
* task the tick surfaces/applies).
|
|
366
|
-
* The tick re-classifies each arg, so a `needsAnswers`-blocked task/
|
|
366
|
+
* The tick re-classifies each arg, so a `needsAnswers`-blocked task/spec reaches
|
|
367
367
|
* surface/apply and an untriaged observation reaches triage — the classifier +
|
|
368
368
|
* rung bodies are unchanged; only this selection->arg mapping is new.
|
|
369
369
|
*/
|
package/src/advance-isolated.ts
CHANGED
|
@@ -21,7 +21,7 @@ import type {Config} from './config.js';
|
|
|
21
21
|
import type {AdvanceTickRunner, AdvanceMultiResult} from './advance-drivers.js';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* The **ISOLATED advance-tick RUNNER** + its sequential drivers (
|
|
24
|
+
* The **ISOLATED advance-tick RUNNER** + its sequential drivers (spec
|
|
25
25
|
* `advance-loop`, task `advance-isolated-one-shot`, US #25/26) — the "isolated
|
|
26
26
|
* one-shot" cell `advance` was missing. It gives `advance` the SAME isolation
|
|
27
27
|
* ergonomic `do --isolated` has: run the advance TICK ({@link performAdvance}) in
|
|
@@ -83,7 +83,7 @@ export interface IsolatedAdvanceContext extends Omit<AdvanceContext, 'cwd'> {
|
|
|
83
83
|
|
|
84
84
|
/** Options for {@link performAdvanceIsolated} — the per-item isolated tick. */
|
|
85
85
|
export interface PerformAdvanceIsolatedOptions extends IsolatedAdvanceContext {
|
|
86
|
-
/** The raw advance arg: bare (= task), `
|
|
86
|
+
/** The raw advance arg: bare (= task), `spec:<slug>`, or `obs:<slug>`. */
|
|
87
87
|
arg: string;
|
|
88
88
|
/** The read seam (slug resolution / pool); defaults to {@link ledgerRead}. */
|
|
89
89
|
read?: LedgerReadStrategy;
|
|
@@ -373,7 +373,7 @@ export async function performAdvanceIsolatedAuto(
|
|
|
373
373
|
* Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
|
|
374
374
|
* in the GIVEN order (no pool/priority — the operator chose them), each through the
|
|
375
375
|
* ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
|
|
376
|
-
* are explicit); the per-item tick resolves each bare/`
|
|
376
|
+
* are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
|
|
377
377
|
*/
|
|
378
378
|
export async function performAdvanceIsolatedArgs(
|
|
379
379
|
args: string[],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `install-ci` ADVANCE-LIFECYCLE capability (
|
|
2
|
+
* The `install-ci` ADVANCE-LIFECYCLE capability (spec `runner-in-ci`, task
|
|
3
3
|
* `install-ci-advance-lifecycle-workflow`; capability C: auto-triage observations
|
|
4
4
|
* + surface declared blockers + apply committed answers). This module GENERATES
|
|
5
5
|
* the advance-lifecycle workflow by ABSORBING and PARAMETERISING the existing seed
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
* each leg carries `--propose` so it can NEVER merge to `main`); `merge` ⇒ ALSO
|
|
44
44
|
* a MATRIX (one leg per item; build/gate/review fan out, the LAND tail is
|
|
45
45
|
* serialised by the engine's `mergeRetries` CAS-retry loop — the git-alone
|
|
46
|
-
* floor — NOT by the workflow shape;
|
|
46
|
+
* floor — NOT by the workflow shape; SPEC
|
|
47
47
|
* `land-time-reverify-and-parallel-merge-ceiling`). This is integration-mode
|
|
48
48
|
* behaviour, IDENTICAL to the build tick (integration mode is
|
|
49
49
|
* verb-independent).
|
|
@@ -101,7 +101,7 @@ export function generateAdvanceLifecycleWorkflow(
|
|
|
101
101
|
const setupWith = providerSecretsWithBlock(config);
|
|
102
102
|
return `\
|
|
103
103
|
# dorfl — the ADVANCE LIFECYCLE loop in CI (capability C: auto-triage
|
|
104
|
-
# observations + surface declared blockers + apply committed answers,
|
|
104
|
+
# observations + surface declared blockers + apply committed answers, spec
|
|
105
105
|
# runner-in-ci). EMITTED by \`dorfl install-ci\` by PARAMETERISING the seed
|
|
106
106
|
# \`docs/ci/advance-loop.yml.template\` (the advance-loop capability's output) — the
|
|
107
107
|
# human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade the
|
|
@@ -127,7 +127,7 @@ export function generateAdvanceLifecycleWorkflow(
|
|
|
127
127
|
# * merge ⇒ ALSO a MATRIX (one leg per item; build/gate/review fan out, the
|
|
128
128
|
# LAND tail — rebase + CAS push to \`main\` — is serialised by the
|
|
129
129
|
# engine's \`mergeRetries\` CAS-retry loop, NOT by the workflow shape.
|
|
130
|
-
#
|
|
130
|
+
# SPEC \`land-time-reverify-and-parallel-merge-ceiling\`: a
|
|
131
131
|
# non-fast-forward push triggers re-rebase + re-gate + retry, never
|
|
132
132
|
# a \`--force\`. The cross-job serialiser is the CAS-retry FLOOR;
|
|
133
133
|
# there is NO host-specific \`concurrency:\` group on the merge job).
|
|
@@ -389,7 +389,7 @@ jobs:
|
|
|
389
389
|
run: dorfl advance "\${{ matrix.item }}" --propose --watch --arbiter origin
|
|
390
390
|
|
|
391
391
|
# ── MERGE: a MATRIX of independent jobs (parallel build/gate/review, serialised land) ──
|
|
392
|
-
#
|
|
392
|
+
# SPEC \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
|
|
393
393
|
# gets its own leg; build/gate/review run concurrently across siblings; the LAND
|
|
394
394
|
# TAIL is serialised by the engine's \`mergeRetries\` CAS-retry loop — the
|
|
395
395
|
# git-alone floor — NOT by the workflow shape. A non-fast-forward push triggers
|
|
@@ -573,7 +573,7 @@ export function validateAdvanceLifecycleWorkflow(
|
|
|
573
573
|
'dispatch mode).');
|
|
574
574
|
|
|
575
575
|
// --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
|
|
576
|
-
//
|
|
576
|
+
// SPEC `land-time-reverify-and-parallel-merge-ceiling` stories 4 + 6: build/
|
|
577
577
|
// gate/review fan out; the LAND tail is serialised by the engine's
|
|
578
578
|
// `mergeRetries` CAS-retry loop (the git-alone floor), NOT the workflow.
|
|
579
579
|
require('merge-matrix', /advance-merge:[\s\S]*?strategy:\s*[\s\S]*?matrix:/.test(
|
|
@@ -690,7 +690,7 @@ export function validateAdvanceLifecycleWorkflow(
|
|
|
690
690
|
text,
|
|
691
691
|
), 'the `sweepMergedBranches` dispatch input (capability F, opt-out) must be ' +
|
|
692
692
|
'preserved.');
|
|
693
|
-
// The ORPHAN-SIDECAR reap (
|
|
693
|
+
// The ORPHAN-SIDECAR reap (spec
|
|
694
694
|
// `agentic-question-resolution-retire-disposition-vocabulary`, US #10) rides
|
|
695
695
|
// the SAME scheduled `dorfl gc --remote-branches` invocation, so it provably
|
|
696
696
|
// FIRES on the cron tick (not behind an un-passed flag). The reap step that
|
|
@@ -745,7 +745,7 @@ export function validateAdvanceLifecycleWorkflow(
|
|
|
745
745
|
// --- The propose `enumerate` matrix must UNION taskable prds --------------
|
|
746
746
|
// (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
|
|
747
747
|
// task-only `jq` would render `DORFL_AUTO_TASK: 'true'` dead on the
|
|
748
|
-
// hourly cron — a ready ungated
|
|
748
|
+
// hourly cron — a ready ungated SPEC would never become a matrix leg. The `jq`
|
|
749
749
|
// must enumerate `spec:<slug>` ids from `scan --json`'s taskable-SPEC pool
|
|
750
750
|
// (`repos[].specs[]` + `cwd.repo.specs[]`) alongside the eligible-task legs.
|
|
751
751
|
require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
|
|
@@ -760,7 +760,7 @@ export function validateAdvanceLifecycleWorkflow(
|
|
|
760
760
|
// --- The propose `enumerate` matrix must UNION the LIFECYCLE pools ----------
|
|
761
761
|
// (`ci-propose-matrix-enumerates-lifecycle-items`): a build/task-only `jq`
|
|
762
762
|
// runs the answer-loop ONLY in merge mode — a `needsAnswers` item is
|
|
763
|
-
// `eligible:false` and untriaged observations are not in the task/
|
|
763
|
+
// `eligible:false` and untriaged observations are not in the task/spec pools at
|
|
764
764
|
// all, so NO lifecycle rung (triage/surface/apply) ever gets a propose leg. The
|
|
765
765
|
// `jq` must enumerate the three lifecycle sub-pools from `scan --json`
|
|
766
766
|
// (`repos[].lifecycle.*` + `cwd.repo.lifecycle.*`): `triage[]` → `obs:<slug>`,
|