dorfl 0.0.0 → 0.1.0
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 +73 -0
- package/dist/advance-ci-template.d.ts.map +1 -0
- package/dist/advance-ci-template.js +104 -0
- package/dist/advance-ci-template.js.map +1 -0
- package/dist/advance-classify.d.ts +132 -0
- package/dist/advance-classify.d.ts.map +1 -0
- package/dist/advance-classify.js +120 -0
- package/dist/advance-classify.js.map +1 -0
- package/dist/advance-drivers.d.ts +182 -0
- package/dist/advance-drivers.d.ts.map +1 -0
- package/dist/advance-drivers.js +231 -0
- package/dist/advance-drivers.js.map +1 -0
- package/dist/advance-isolated.d.ts +156 -0
- package/dist/advance-isolated.d.ts.map +1 -0
- package/dist/advance-isolated.js +256 -0
- package/dist/advance-isolated.js.map +1 -0
- package/dist/advance-lifecycle-template.d.ts +107 -0
- package/dist/advance-lifecycle-template.d.ts.map +1 -0
- package/dist/advance-lifecycle-template.js +668 -0
- package/dist/advance-lifecycle-template.js.map +1 -0
- package/dist/advance-loop-driver.d.ts +325 -0
- package/dist/advance-loop-driver.d.ts.map +1 -0
- package/dist/advance-loop-driver.js +437 -0
- package/dist/advance-loop-driver.js.map +1 -0
- package/dist/advance-treeless-publish.d.ts +108 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -0
- package/dist/advance-treeless-publish.js +71 -0
- package/dist/advance-treeless-publish.js.map +1 -0
- package/dist/advance.d.ts +340 -0
- package/dist/advance.d.ts.map +1 -0
- package/dist/advance.js +1122 -0
- package/dist/advance.js.map +1 -0
- package/dist/advancing-lock.d.ts +294 -0
- package/dist/advancing-lock.d.ts.map +1 -0
- package/dist/advancing-lock.js +594 -0
- package/dist/advancing-lock.js.map +1 -0
- package/dist/agent-launch.d.ts +79 -0
- package/dist/agent-launch.d.ts.map +1 -0
- package/dist/agent-launch.js +61 -0
- package/dist/agent-launch.js.map +1 -0
- package/dist/agent-stop.d.ts +149 -0
- package/dist/agent-stop.d.ts.map +1 -0
- package/dist/agent-stop.js +307 -0
- package/dist/agent-stop.js.map +1 -0
- package/dist/apply-decide.d.ts +127 -0
- package/dist/apply-decide.d.ts.map +1 -0
- package/dist/apply-decide.js +176 -0
- package/dist/apply-decide.js.map +1 -0
- package/dist/apply-merge-action.d.ts +206 -0
- package/dist/apply-merge-action.d.ts.map +1 -0
- package/dist/apply-merge-action.js +307 -0
- package/dist/apply-merge-action.js.map +1 -0
- package/dist/apply-persist.d.ts +174 -0
- package/dist/apply-persist.d.ts.map +1 -0
- package/dist/apply-persist.js +359 -0
- package/dist/apply-persist.js.map +1 -0
- package/dist/arbiter.d.ts +120 -0
- package/dist/arbiter.d.ts.map +1 -0
- package/dist/arbiter.js +255 -0
- package/dist/arbiter.js.map +1 -0
- package/dist/brand.d.ts +70 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +84 -0
- package/dist/brand.js.map +1 -0
- package/dist/buildable-body.d.ts +132 -0
- package/dist/buildable-body.d.ts.map +1 -0
- package/dist/buildable-body.js +131 -0
- package/dist/buildable-body.js.map +1 -0
- package/dist/categorise.d.ts +66 -0
- package/dist/categorise.d.ts.map +1 -0
- package/dist/categorise.js +106 -0
- package/dist/categorise.js.map +1 -0
- package/dist/claim-cas.d.ts +117 -0
- package/dist/claim-cas.d.ts.map +1 -0
- package/dist/claim-cas.js +312 -0
- package/dist/claim-cas.js.map +1 -0
- package/dist/cli-spinner.d.ts +112 -0
- package/dist/cli-spinner.d.ts.map +1 -0
- package/dist/cli-spinner.js +157 -0
- package/dist/cli-spinner.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3094 -0
- package/dist/cli.js.map +1 -0
- package/dist/close-job-template.d.ts +70 -0
- package/dist/close-job-template.d.ts.map +1 -0
- package/dist/close-job-template.js +180 -0
- package/dist/close-job-template.js.map +1 -0
- package/dist/close-job.d.ts +95 -0
- package/dist/close-job.d.ts.map +1 -0
- package/dist/close-job.js +226 -0
- package/dist/close-job.js.map +1 -0
- package/dist/complete.d.ts +361 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +885 -0
- package/dist/complete.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +112 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config-override.d.ts +76 -0
- package/dist/config-override.d.ts.map +1 -0
- package/dist/config-override.js +50 -0
- package/dist/config-override.js.map +1 -0
- package/dist/config.d.ts +668 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +241 -0
- package/dist/config.js.map +1 -0
- package/dist/continue-branch.d.ts +249 -0
- package/dist/continue-branch.d.ts.map +1 -0
- package/dist/continue-branch.js +389 -0
- package/dist/continue-branch.js.map +1 -0
- package/dist/cwd-section.d.ts +186 -0
- package/dist/cwd-section.d.ts.map +1 -0
- package/dist/cwd-section.js +209 -0
- package/dist/cwd-section.js.map +1 -0
- package/dist/decision-engine.d.ts +170 -0
- package/dist/decision-engine.d.ts.map +1 -0
- package/dist/decision-engine.js +136 -0
- package/dist/decision-engine.js.map +1 -0
- package/dist/detect.d.ts +17 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +118 -0
- package/dist/detect.js.map +1 -0
- package/dist/do-autopick.d.ts +85 -0
- package/dist/do-autopick.d.ts.map +1 -0
- package/dist/do-autopick.js +112 -0
- package/dist/do-autopick.js.map +1 -0
- package/dist/do-config.d.ts +312 -0
- package/dist/do-config.d.ts.map +1 -0
- package/dist/do-config.js +358 -0
- package/dist/do-config.js.map +1 -0
- package/dist/do-remote-auto.d.ts +75 -0
- package/dist/do-remote-auto.d.ts.map +1 -0
- package/dist/do-remote-auto.js +111 -0
- package/dist/do-remote-auto.js.map +1 -0
- package/dist/do.d.ts +621 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +1882 -0
- package/dist/do.js.map +1 -0
- package/dist/drop-source.d.ts +96 -0
- package/dist/drop-source.d.ts.map +1 -0
- package/dist/drop-source.js +91 -0
- package/dist/drop-source.js.map +1 -0
- package/dist/eligibility.d.ts +46 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +34 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/env-config.d.ts +51 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +272 -0
- package/dist/env-config.js.map +1 -0
- package/dist/failure-cause.d.ts +70 -0
- package/dist/failure-cause.d.ts.map +1 -0
- package/dist/failure-cause.js +126 -0
- package/dist/failure-cause.js.map +1 -0
- package/dist/format.d.ts +43 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +256 -0
- package/dist/format.js.map +1 -0
- package/dist/frontmatter.d.ts +215 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +345 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gate-readiness.d.ts +84 -0
- package/dist/gate-readiness.d.ts.map +1 -0
- package/dist/gate-readiness.js +103 -0
- package/dist/gate-readiness.js.map +1 -0
- package/dist/gc.d.ts +165 -0
- package/dist/gc.d.ts.map +1 -0
- package/dist/gc.js +313 -0
- package/dist/gc.js.map +1 -0
- package/dist/gh-failure.d.ts +42 -0
- package/dist/gh-failure.d.ts.map +1 -0
- package/dist/gh-failure.js +49 -0
- package/dist/gh-failure.js.map +1 -0
- package/dist/git.d.ts +75 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +130 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +187 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +343 -0
- package/dist/github.js.map +1 -0
- package/dist/harness.d.ts +242 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +157 -0
- package/dist/harness.js.map +1 -0
- package/dist/identity.d.ts +167 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/install-ci-branch-protection.d.ts +147 -0
- package/dist/install-ci-branch-protection.d.ts.map +1 -0
- package/dist/install-ci-branch-protection.js +166 -0
- package/dist/install-ci-branch-protection.js.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
- package/dist/install-ci-capabilities/close-job.d.ts +13 -0
- package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
- package/dist/install-ci-capabilities/close-job.js +26 -0
- package/dist/install-ci-capabilities/close-job.js.map +1 -0
- package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
- package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
- package/dist/install-ci-capabilities/example-noop.js +23 -0
- package/dist/install-ci-capabilities/example-noop.js.map +1 -0
- package/dist/install-ci-capabilities/intake.d.ts +15 -0
- package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
- package/dist/install-ci-capabilities/intake.js +28 -0
- package/dist/install-ci-capabilities/intake.js.map +1 -0
- package/dist/install-ci-capabilities/verify.d.ts +14 -0
- package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
- package/dist/install-ci-capabilities/verify.js +27 -0
- package/dist/install-ci-capabilities/verify.js.map +1 -0
- package/dist/install-ci-core.d.ts +446 -0
- package/dist/install-ci-core.d.ts.map +1 -0
- package/dist/install-ci-core.js +760 -0
- package/dist/install-ci-core.js.map +1 -0
- package/dist/install-ci-github.d.ts +167 -0
- package/dist/install-ci-github.d.ts.map +1 -0
- package/dist/install-ci-github.js +315 -0
- package/dist/install-ci-github.js.map +1 -0
- package/dist/install-ci.d.ts +105 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +363 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/intake-event.d.ts +88 -0
- package/dist/intake-event.d.ts.map +1 -0
- package/dist/intake-event.js +66 -0
- package/dist/intake-event.js.map +1 -0
- package/dist/intake-marker.d.ts +95 -0
- package/dist/intake-marker.d.ts.map +1 -0
- package/dist/intake-marker.js +127 -0
- package/dist/intake-marker.js.map +1 -0
- package/dist/intake-triage.d.ts +48 -0
- package/dist/intake-triage.d.ts.map +1 -0
- package/dist/intake-triage.js +95 -0
- package/dist/intake-triage.js.map +1 -0
- package/dist/intake-trigger-template.d.ts +185 -0
- package/dist/intake-trigger-template.d.ts.map +1 -0
- package/dist/intake-trigger-template.js +449 -0
- package/dist/intake-trigger-template.js.map +1 -0
- package/dist/intake.d.ts +569 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +1628 -0
- package/dist/intake.js.map +1 -0
- package/dist/integration-core.d.ts +539 -0
- package/dist/integration-core.d.ts.map +1 -0
- package/dist/integration-core.js +2195 -0
- package/dist/integration-core.js.map +1 -0
- package/dist/integrator.d.ts +343 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +400 -0
- package/dist/integrator.js.map +1 -0
- package/dist/isolation.d.ts +219 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +261 -0
- package/dist/isolation.js.map +1 -0
- package/dist/issue-provider.d.ts +349 -0
- package/dist/issue-provider.d.ts.map +1 -0
- package/dist/issue-provider.js +360 -0
- package/dist/issue-provider.js.map +1 -0
- package/dist/item-lock.d.ts +626 -0
- package/dist/item-lock.d.ts.map +1 -0
- package/dist/item-lock.js +1381 -0
- package/dist/item-lock.js.map +1 -0
- package/dist/item-path.d.ts +49 -0
- package/dist/item-path.d.ts.map +1 -0
- package/dist/item-path.js +66 -0
- package/dist/item-path.js.map +1 -0
- package/dist/ledger-lint.d.ts +129 -0
- package/dist/ledger-lint.d.ts.map +1 -0
- package/dist/ledger-lint.js +249 -0
- package/dist/ledger-lint.js.map +1 -0
- package/dist/ledger-read.d.ts +357 -0
- package/dist/ledger-read.d.ts.map +1 -0
- package/dist/ledger-read.js +442 -0
- package/dist/ledger-read.js.map +1 -0
- package/dist/ledger-write.d.ts +330 -0
- package/dist/ledger-write.d.ts.map +1 -0
- package/dist/ledger-write.js +411 -0
- package/dist/ledger-write.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +30 -0
- package/dist/lifecycle-gather.d.ts.map +1 -0
- package/dist/lifecycle-gather.js +205 -0
- package/dist/lifecycle-gather.js.map +1 -0
- package/dist/lifecycle-pools.d.ts +180 -0
- package/dist/lifecycle-pools.d.ts.map +1 -0
- package/dist/lifecycle-pools.js +78 -0
- package/dist/lifecycle-pools.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +166 -0
- package/dist/merge-question-surfacer.d.ts.map +1 -0
- package/dist/merge-question-surfacer.js +297 -0
- package/dist/merge-question-surfacer.js.map +1 -0
- package/dist/mint-adr.d.ts +126 -0
- package/dist/mint-adr.d.ts.map +1 -0
- package/dist/mint-adr.js +257 -0
- package/dist/mint-adr.js.map +1 -0
- package/dist/mirror-pool-scan.d.ts +125 -0
- package/dist/mirror-pool-scan.d.ts.map +1 -0
- package/dist/mirror-pool-scan.js +104 -0
- package/dist/mirror-pool-scan.js.map +1 -0
- package/dist/needs-attention.d.ts +341 -0
- package/dist/needs-attention.d.ts.map +1 -0
- package/dist/needs-attention.js +900 -0
- package/dist/needs-attention.js.map +1 -0
- package/dist/orphan-sidecar.d.ts +79 -0
- package/dist/orphan-sidecar.d.ts.map +1 -0
- package/dist/orphan-sidecar.js +71 -0
- package/dist/orphan-sidecar.js.map +1 -0
- package/dist/output.d.ts +48 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +66 -0
- package/dist/output.js.map +1 -0
- package/dist/pi-harness.d.ts +179 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +342 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/placement.d.ts +99 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +67 -0
- package/dist/placement.js.map +1 -0
- package/dist/prd-to-spec.d.ts +315 -0
- package/dist/prd-to-spec.d.ts.map +1 -0
- package/dist/prd-to-spec.js +684 -0
- package/dist/prd-to-spec.js.map +1 -0
- package/dist/prepare.d.ts +121 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +140 -0
- package/dist/prepare.js.map +1 -0
- package/dist/prompt.d.ts +360 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +499 -0
- package/dist/prompt.js.map +1 -0
- package/dist/protocol/ADR-FORMAT.md +47 -0
- package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
- package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
- package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
- package/dist/protocol/TASKING-PROTOCOL.md +122 -0
- package/dist/protocol/WORK-CONTRACT.md +276 -0
- package/dist/protocol/spec-template.md +71 -0
- package/dist/protocol/task-template.md +65 -0
- package/dist/readiness.d.ts +66 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +36 -0
- package/dist/readiness.js.map +1 -0
- package/dist/reap-branches.d.ts +102 -0
- package/dist/reap-branches.d.ts.map +1 -0
- package/dist/reap-branches.js +149 -0
- package/dist/reap-branches.js.map +1 -0
- package/dist/recover-isolated.d.ts +72 -0
- package/dist/recover-isolated.d.ts.map +1 -0
- package/dist/recover-isolated.js +188 -0
- package/dist/recover-isolated.js.map +1 -0
- package/dist/registry.d.ts +172 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +296 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-config.d.ts +201 -0
- package/dist/repo-config.d.ts.map +1 -0
- package/dist/repo-config.js +414 -0
- package/dist/repo-config.js.map +1 -0
- package/dist/repo-key.d.ts +20 -0
- package/dist/repo-key.d.ts.map +1 -0
- package/dist/repo-key.js +68 -0
- package/dist/repo-key.js.map +1 -0
- package/dist/repo-mirror.d.ts +177 -0
- package/dist/repo-mirror.d.ts.map +1 -0
- package/dist/repo-mirror.js +271 -0
- package/dist/repo-mirror.js.map +1 -0
- package/dist/retry-backoff.d.ts +90 -0
- package/dist/retry-backoff.d.ts.map +1 -0
- package/dist/retry-backoff.js +98 -0
- package/dist/retry-backoff.js.map +1 -0
- package/dist/review-gate.d.ts +173 -0
- package/dist/review-gate.d.ts.map +1 -0
- package/dist/review-gate.js +261 -0
- package/dist/review-gate.js.map +1 -0
- package/dist/review-verdict.d.ts +149 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +332 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/run.d.ts +221 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +963 -0
- package/dist/run.js.map +1 -0
- package/dist/scan.d.ts +308 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +374 -0
- package/dist/scan.js.map +1 -0
- package/dist/select-order.d.ts +75 -0
- package/dist/select-order.d.ts.map +1 -0
- package/dist/select-order.js +108 -0
- package/dist/select-order.js.map +1 -0
- package/dist/select-priority.d.ts +188 -0
- package/dist/select-priority.d.ts.map +1 -0
- package/dist/select-priority.js +80 -0
- package/dist/select-priority.js.map +1 -0
- package/dist/select.d.ts +25 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +43 -0
- package/dist/select.js.map +1 -0
- package/dist/session-path.d.ts +36 -0
- package/dist/session-path.d.ts.map +1 -0
- package/dist/session-path.js +129 -0
- package/dist/session-path.js.map +1 -0
- package/dist/sidecar-apply.d.ts +83 -0
- package/dist/sidecar-apply.d.ts.map +1 -0
- package/dist/sidecar-apply.js +111 -0
- package/dist/sidecar-apply.js.map +1 -0
- package/dist/sidecar.d.ts +245 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +481 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/slug-namespace.d.ts +204 -0
- package/dist/slug-namespace.d.ts.map +1 -0
- package/dist/slug-namespace.js +229 -0
- package/dist/slug-namespace.js.map +1 -0
- package/dist/spec-complete.d.ts +44 -0
- package/dist/spec-complete.d.ts.map +1 -0
- package/dist/spec-complete.js +69 -0
- package/dist/spec-complete.js.map +1 -0
- package/dist/start.d.ts +97 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +633 -0
- package/dist/start.js.map +1 -0
- package/dist/status.d.ts +199 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +228 -0
- package/dist/status.js.map +1 -0
- package/dist/surface-gate.d.ts +162 -0
- package/dist/surface-gate.d.ts.map +1 -0
- package/dist/surface-gate.js +206 -0
- package/dist/surface-gate.js.map +1 -0
- package/dist/surface-persist.d.ts +86 -0
- package/dist/surface-persist.d.ts.map +1 -0
- package/dist/surface-persist.js +129 -0
- package/dist/surface-persist.js.map +1 -0
- package/dist/tasker-review-loop.d.ts +249 -0
- package/dist/tasker-review-loop.d.ts.map +1 -0
- package/dist/tasker-review-loop.js +369 -0
- package/dist/tasker-review-loop.js.map +1 -0
- package/dist/tasking-eligibility.d.ts +74 -0
- package/dist/tasking-eligibility.d.ts.map +1 -0
- package/dist/tasking-eligibility.js +52 -0
- package/dist/tasking-eligibility.js.map +1 -0
- package/dist/tasking-lock.d.ts +111 -0
- package/dist/tasking-lock.d.ts.map +1 -0
- package/dist/tasking-lock.js +256 -0
- package/dist/tasking-lock.js.map +1 -0
- package/dist/tasking.d.ts +275 -0
- package/dist/tasking.d.ts.map +1 -0
- package/dist/tasking.js +952 -0
- package/dist/tasking.js.map +1 -0
- package/dist/triage-gate.d.ts +127 -0
- package/dist/triage-gate.d.ts.map +1 -0
- package/dist/triage-gate.js +139 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/triage-persist.d.ts +163 -0
- package/dist/triage-persist.d.ts.map +1 -0
- package/dist/triage-persist.js +387 -0
- package/dist/triage-persist.js.map +1 -0
- package/dist/verdict-json.d.ts +32 -0
- package/dist/verdict-json.d.ts.map +1 -0
- package/dist/verdict-json.js +74 -0
- package/dist/verdict-json.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +60 -0
- package/dist/verify-workflow-template.d.ts.map +1 -0
- package/dist/verify-workflow-template.js +126 -0
- package/dist/verify-workflow-template.js.map +1 -0
- package/dist/verify.d.ts +60 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +62 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch-session.d.ts +112 -0
- package/dist/watch-session.d.ts.map +1 -0
- package/dist/watch-session.js +347 -0
- package/dist/watch-session.js.map +1 -0
- package/dist/work-layout.d.ts +198 -0
- package/dist/work-layout.d.ts.map +1 -0
- package/dist/work-layout.js +217 -0
- package/dist/work-layout.js.map +1 -0
- package/dist/work-on.d.ts +154 -0
- package/dist/work-on.d.ts.map +1 -0
- package/dist/work-on.js +387 -0
- package/dist/work-on.js.map +1 -0
- package/dist/workspace.d.ts +224 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +325 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -2
- package/src/advance-ci-template.ts +203 -0
- package/src/advance-classify.ts +197 -0
- package/src/advance-drivers.ts +414 -0
- package/src/advance-isolated.ts +432 -0
- package/src/advance-lifecycle-template.ts +791 -0
- package/src/advance-loop-driver.ts +745 -0
- package/src/advance-treeless-publish.ts +177 -0
- package/src/advance.ts +1564 -0
- package/src/advancing-lock.ts +988 -0
- package/src/agent-launch.ts +137 -0
- package/src/agent-stop.ts +361 -0
- package/src/apply-decide.ts +242 -0
- package/src/apply-merge-action.ts +502 -0
- package/src/apply-persist.ts +518 -0
- package/src/arbiter.ts +372 -0
- package/src/brand.ts +111 -0
- package/src/buildable-body.ts +196 -0
- package/src/categorise.ts +158 -0
- package/src/claim-cas.ts +513 -0
- package/src/cli-spinner.ts +225 -0
- package/src/cli.ts +4369 -0
- package/src/close-job-template.ts +236 -0
- package/src/close-job.ts +319 -0
- package/src/complete.ts +1379 -0
- package/src/concurrency.ts +151 -0
- package/src/config-override.ts +116 -0
- package/src/config.ts +883 -0
- package/src/continue-branch.ts +542 -0
- package/src/cwd-section.ts +392 -0
- package/src/decision-engine.ts +272 -0
- package/src/detect.ts +124 -0
- package/src/do-autopick.ts +223 -0
- package/src/do-config.ts +589 -0
- package/src/do-remote-auto.ts +197 -0
- package/src/do.ts +2623 -0
- package/src/drop-source.ts +194 -0
- package/src/eligibility.ts +79 -0
- package/src/env-config.ts +305 -0
- package/src/failure-cause.ts +142 -0
- package/src/format.ts +313 -0
- package/src/frontmatter.ts +485 -0
- package/src/gate-readiness.ts +147 -0
- package/src/gc.ts +510 -0
- package/src/gh-failure.ts +53 -0
- package/src/git.ts +186 -0
- package/src/github.ts +468 -0
- package/src/harness.ts +355 -0
- package/src/identity.ts +322 -0
- package/src/index.ts +785 -0
- package/src/install-ci-branch-protection.ts +255 -0
- package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
- package/src/install-ci-capabilities/close-job.ts +32 -0
- package/src/install-ci-capabilities/example-noop.ts +24 -0
- package/src/install-ci-capabilities/intake.ts +34 -0
- package/src/install-ci-capabilities/verify.ts +33 -0
- package/src/install-ci-core.ts +1088 -0
- package/src/install-ci-github.ts +376 -0
- package/src/install-ci.ts +552 -0
- package/src/intake-event.ts +102 -0
- package/src/intake-marker.ts +195 -0
- package/src/intake-triage.ts +138 -0
- package/src/intake-trigger-template.ts +591 -0
- package/src/intake.ts +2445 -0
- package/src/integration-core.ts +3065 -0
- package/src/integrator.ts +771 -0
- package/src/isolation.ts +484 -0
- package/src/issue-provider.ts +733 -0
- package/src/item-lock.ts +1858 -0
- package/src/item-path.ts +75 -0
- package/src/ledger-lint.ts +332 -0
- package/src/ledger-read.ts +924 -0
- package/src/ledger-write.ts +865 -0
- package/src/lifecycle-gather.ts +298 -0
- package/src/lifecycle-pools.ts +250 -0
- package/src/merge-question-surfacer.ts +496 -0
- package/src/mint-adr.ts +362 -0
- package/src/mirror-pool-scan.ts +240 -0
- package/src/needs-attention.ts +1506 -0
- package/src/orphan-sidecar.ts +150 -0
- package/src/output.ts +89 -0
- package/src/pi-harness.ts +403 -0
- package/src/placement.ts +131 -0
- package/src/prd-to-spec.ts +1023 -0
- package/src/prepare.ts +230 -0
- package/src/prompt.ts +760 -0
- package/src/readiness.ts +98 -0
- package/src/reap-branches.ts +278 -0
- package/src/recover-isolated.ts +276 -0
- package/src/registry.ts +475 -0
- package/src/repo-config.ts +550 -0
- package/src/repo-key.ts +74 -0
- package/src/repo-mirror.ts +367 -0
- package/src/retry-backoff.ts +130 -0
- package/src/review-gate.ts +389 -0
- package/src/review-verdict.ts +422 -0
- package/src/run.ts +1430 -0
- package/src/scan.ts +611 -0
- package/src/select-order.ts +143 -0
- package/src/select-priority.ts +266 -0
- package/src/select.ts +62 -0
- package/src/session-path.ts +153 -0
- package/src/sidecar-apply.ts +216 -0
- package/src/sidecar.ts +700 -0
- package/src/slug-namespace.ts +367 -0
- package/src/spec-complete.ts +118 -0
- package/src/start.ts +974 -0
- package/src/status.ts +441 -0
- package/src/surface-gate.ts +337 -0
- package/src/surface-persist.ts +241 -0
- package/src/tasker-review-loop.ts +671 -0
- package/src/tasking-eligibility.ts +114 -0
- package/src/tasking-lock.ts +416 -0
- package/src/tasking.ts +1438 -0
- package/src/triage-gate.ts +248 -0
- package/src/triage-persist.ts +570 -0
- package/src/verdict-json.ts +73 -0
- package/src/verify-workflow-template.ts +159 -0
- package/src/verify.ts +123 -0
- package/src/watch-session.ts +397 -0
- package/src/work-layout.ts +262 -0
- package/src/work-on.ts +660 -0
- package/src/workspace.ts +502 -0
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `install-ci` ISSUE-INTAKE capability (prd `runner-in-ci`, task
|
|
3
|
+
* `install-ci-intake-trigger-and-review-surface`; capability D: consider incoming
|
|
4
|
+
* issues → task/prd, AND insertion point E: surface the review verdict back into
|
|
5
|
+
* the issue thread). This module GENERATES the one fixed intake workflow file and
|
|
6
|
+
* STRUCTURALLY VALIDATES it, mirroring the snapshot-assertion style of
|
|
7
|
+
* `advance-lifecycle-template.ts` / `advance-ci-template.ts` (the package depends on
|
|
8
|
+
* NO YAML lib, so the checks are presence/shape assertions over the raw text). It
|
|
9
|
+
* ALSO carries the PURE author-trust → per-outcome-flags DERIVATION
|
|
10
|
+
* ({@link deriveIntakeFlags}) — CI's merge-vs-propose POLICY, the load-bearing
|
|
11
|
+
* testable logic the workflow encodes at runtime.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE FENCE (prd Out-of-Scope): the issue→artifact TRANSFORM engine is
|
|
14
|
+
* `issue-intake`'s (`intake <N>` + its four-outcome dispatch + the per-outcome
|
|
15
|
+
* KNOBS + the lone-task review that posts to the issue thread). CI only
|
|
16
|
+
* WIRES/SCHEDULES/INVOKES it and owns the merge-vs-propose POLICY + the delivery
|
|
17
|
+
* surface. This module emits NO transform; it emits the WORKFLOW that calls it.
|
|
18
|
+
*
|
|
19
|
+
* The discipline (prd capability-D row + the merge-vs-propose POLICY + the two
|
|
20
|
+
* RESOLVED design decisions in the task):
|
|
21
|
+
*
|
|
22
|
+
* - TRIGGERS: `issues` opened, `issue_comment` created, and a label
|
|
23
|
+
* (`dorfl:intake`). It invokes `intake <N>` (EXPLICIT, four-outcome
|
|
24
|
+
* dispatch) — never a bare slug.
|
|
25
|
+
* - EVENT→`IntakeEventKind` MAPPING (Decision 2: no edit-detection): only a
|
|
26
|
+
* CREATED `issue_comment` (and an opened issue / the label) drives
|
|
27
|
+
* (re-)evaluation; an EDITED comment is NOT a trigger (the ID-based
|
|
28
|
+
* `seen=<ids>` watermark suffices). The "post a NEW comment to signal an edit"
|
|
29
|
+
* convention is documented in the workflow so a human knows to re-trigger.
|
|
30
|
+
* - AUTHOR-TRUST → per-outcome FLAGS (Decision 1, {@link deriveIntakeFlags}): an
|
|
31
|
+
* UNTRUSTED author (`author_association` not in OWNER/MEMBER/COLLABORATOR)
|
|
32
|
+
* forces `--propose-task` REGARDLESS of the `autoBuild` gate, while
|
|
33
|
+
* `--merge-spec` stays allowed (a human still tasks a spec before anything
|
|
34
|
+
* autonomous acts — the checkpoint is intact). A TRUSTED author gets the plain
|
|
35
|
+
* gate-derived mode for both. The fully-gateless "all gates on + merge
|
|
36
|
+
* everywhere" path is a LOUD, NON-DEFAULT opt-in — the default is conservative
|
|
37
|
+
* (propose / human-in-the-loop).
|
|
38
|
+
* - INSERTION POINT E (the issue-thread review surface): the review verdict over
|
|
39
|
+
* intake's generated prds/tasks is surfaced into the ISSUE THREAD via the
|
|
40
|
+
* `IssueProvider.postIssueComment` seam (issue thread, by NUMBER — NOT the PR
|
|
41
|
+
* seam `postPRComment`, which is keyed by url). This is REUSED, not new:
|
|
42
|
+
* `intake <N>` already runs the lone-task review/edit loop and posts its
|
|
43
|
+
* findings as questions through `postIssueComment`. The workflow surfaces E by
|
|
44
|
+
* INVOKING `intake`; it adds no second review mechanism.
|
|
45
|
+
* - CI runs IN-PLACE (the CI container IS the isolation): no
|
|
46
|
+
* `--isolated`/`--remote`/registry. A PER-ISSUE concurrency group serialises
|
|
47
|
+
* overlapping ticks on the SAME issue; the `processing` lock / claim CAS is the
|
|
48
|
+
* real cross-run serialiser.
|
|
49
|
+
* - The running CI job NEVER edits `.github/workflows/**` (US #9): it requests NO
|
|
50
|
+
* `workflows` permission and cannot rewrite its own triggers. It needs
|
|
51
|
+
* `contents: write` + `pull-requests: write` (emit/propose the artifact) +
|
|
52
|
+
* `issues: write` (post the clarifying/review comment back).
|
|
53
|
+
*
|
|
54
|
+
* The structural validator is the dependency-free counterpart of "the workflow
|
|
55
|
+
* parses + carries the right discipline" the task's acceptance criteria require;
|
|
56
|
+
* the test generates this artifact under `--fake` and asserts every invariant.
|
|
57
|
+
*/
|
|
58
|
+
import { brand } from './brand.js';
|
|
59
|
+
import { providerSecretsWithBlock } from './install-ci-core.js';
|
|
60
|
+
/** The capability id (the registry key + the emitted workflow file stem). */
|
|
61
|
+
export const INTAKE_TRIGGER_CAPABILITY_ID = 'intake';
|
|
62
|
+
/** The wizard-facing label for the issue-intake capability. */
|
|
63
|
+
export const INTAKE_TRIGGER_CAPABILITY_LABEL = 'Consider incoming issues → task/prd + surface the review verdict into the issue thread (the intake trigger: issues / issue_comment / label)';
|
|
64
|
+
/** The repo-relative path (under the output base) of the emitted workflow. */
|
|
65
|
+
export const INTAKE_TRIGGER_WORKFLOW_PATH = 'workflows/intake.yml';
|
|
66
|
+
/**
|
|
67
|
+
* The intake-trigger LABEL: a label whose addition (re-)triggers intake on an
|
|
68
|
+
* issue (the "label" trigger of capability D), brand-namespaced exactly like the
|
|
69
|
+
* `processing` lock so it cannot collide with a user's own labels. DISTINCT from
|
|
70
|
+
* the transient `processing` lock — this one is a human-facing "please (re-)intake
|
|
71
|
+
* this" signal, not a concurrency mutex.
|
|
72
|
+
*/
|
|
73
|
+
export const INTAKE_TRIGGER_LABEL = `${brand.base}:intake`;
|
|
74
|
+
// ─── The AUTHOR-TRUST → per-outcome-flags DERIVATION (CI's POLICY) ────────────
|
|
75
|
+
/**
|
|
76
|
+
* The trusted `author_association` values (Decision 1): a repo OWNER, an org
|
|
77
|
+
* MEMBER, or a write-COLLABORATOR is TRUSTED; everyone else
|
|
78
|
+
* (`CONTRIBUTOR`/`FIRST_TIME_CONTRIBUTOR`/`FIRST_TIMER`/`NONE`/anything unknown)
|
|
79
|
+
* is UNTRUSTED. This is the WHOLE author-trust signal — admin/write-collaborator,
|
|
80
|
+
* read straight off the event payload, no extra API call, no multi-factor matrix.
|
|
81
|
+
*/
|
|
82
|
+
export const TRUSTED_AUTHOR_ASSOCIATIONS = [
|
|
83
|
+
'OWNER',
|
|
84
|
+
'MEMBER',
|
|
85
|
+
'COLLABORATOR',
|
|
86
|
+
];
|
|
87
|
+
/**
|
|
88
|
+
* DERIVE the per-outcome merge-vs-propose flags from the gate state COMPOSED with
|
|
89
|
+
* author-trust — CI's merge-vs-propose POLICY (prd "merge-vs-propose POLICY" +
|
|
90
|
+
* "Composed with AUTHOR-TRUST"; task Decision 1). This is the load-bearing pure
|
|
91
|
+
* logic the workflow encodes at runtime (it reads `author_association` off the
|
|
92
|
+
* event payload and sets the flags accordingly):
|
|
93
|
+
*
|
|
94
|
+
* - **SPEC** — gate-derived ONLY (author-trust does NOT bite): `--merge-spec` iff
|
|
95
|
+
* `autoTask` is OFF (a human must task the spec before anything autonomous
|
|
96
|
+
* acts on it — the human checkpoint stays AHEAD even for an untrusted author),
|
|
97
|
+
* else `--propose-spec`.
|
|
98
|
+
* - **TASK** — `--propose-task` iff (`autoBuild` ON) OR (author UNTRUSTED);
|
|
99
|
+
* `--merge-task` ONLY iff (`autoBuild` OFF AND author TRUSTED). An untrusted
|
|
100
|
+
* author can never auto-merge a task from a public-front-door issue.
|
|
101
|
+
*
|
|
102
|
+
* So the only way to `--merge-task` is a TRUSTED author with `autoBuild` OFF —
|
|
103
|
+
* and the fully-gateless "merge everything" path additionally needs `autoTask`
|
|
104
|
+
* OFF; both gates off + a trusted author is the LOUD, NON-DEFAULT opt-in. The
|
|
105
|
+
* conservative case (untrusted author, or any gate on) keeps a human in the loop.
|
|
106
|
+
*/
|
|
107
|
+
export function deriveIntakeFlags(options) {
|
|
108
|
+
const { gate, authorTrusted } = options;
|
|
109
|
+
// SPEC: gate-derived only — a human-tasks-it checkpoint stays ahead regardless
|
|
110
|
+
// of author-trust, so an untrusted author may still --merge-spec.
|
|
111
|
+
const spec = gate.autoTask ? 'propose' : 'merge';
|
|
112
|
+
// TASK: propose if the agent will auto-build it (gate ON) OR the author is
|
|
113
|
+
// untrusted; merge ONLY when both are safe (gate OFF AND author trusted).
|
|
114
|
+
const task = gate.autoBuild || !authorTrusted ? 'propose' : 'merge';
|
|
115
|
+
// ORIGIN-TRUST stamp (task `untrusted-origin-forces-build-propose`): the SAME
|
|
116
|
+
// author-trust verdict, collapsed to the wire value `intake` stamps onto the
|
|
117
|
+
// emitted artifact. Derived HERE — next to the integration flags, off the SAME
|
|
118
|
+
// `authorTrusted` input — so the stamp and the task/prd modes cannot desync.
|
|
119
|
+
// It is NOT a re-resolution of trust (CI already resolved it); it is the verdict
|
|
120
|
+
// being CARRIED so it survives the prd/task merge boundary (the becomes-code
|
|
121
|
+
// checkpoint is not laundered when the file lands on main).
|
|
122
|
+
const originTrust = authorTrusted
|
|
123
|
+
? 'trusted'
|
|
124
|
+
: 'untrusted';
|
|
125
|
+
return { spec, task, originTrust };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Classify an `author_association` string into trusted/untrusted (Decision 1). A
|
|
129
|
+
* missing/empty/unknown value is UNTRUSTED (fail-safe: a public front-door defaults
|
|
130
|
+
* to the conservative, human-in-the-loop path). Case-insensitive on the wire value
|
|
131
|
+
* for robustness, though GitHub emits upper-case.
|
|
132
|
+
*/
|
|
133
|
+
export function isAuthorTrusted(authorAssociation) {
|
|
134
|
+
if (!authorAssociation) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
const upper = authorAssociation.toUpperCase();
|
|
138
|
+
return TRUSTED_AUTHOR_ASSOCIATIONS.includes(upper);
|
|
139
|
+
}
|
|
140
|
+
// ─── The workflow generator ──────────────────────────────────────────────────
|
|
141
|
+
/**
|
|
142
|
+
* Generate the intake-trigger workflow YAML. Deterministic: the same config
|
|
143
|
+
* produces byte-identical output. The workflow is a FIXED shell (ADR §6: all
|
|
144
|
+
* policy is env/config, so the artifact carries no config-derived policy beyond
|
|
145
|
+
* the env-block scaffolding) — `config` is accepted for parity with the
|
|
146
|
+
* `CapabilityEmitter` seam and future per-config wiring, but the intake-trigger
|
|
147
|
+
* shape itself is config-independent.
|
|
148
|
+
*
|
|
149
|
+
* The per-outcome FLAGS are DERIVED AT RUNTIME by a `bash` step that mirrors
|
|
150
|
+
* {@link deriveIntakeFlags}: it reads the gate env block + the event's
|
|
151
|
+
* `author_association` and sets `--merge-spec`/`--propose-spec` +
|
|
152
|
+
* `--merge-task`/`--propose-task` accordingly. The same rule that
|
|
153
|
+
* {@link deriveIntakeFlags} unit-tests is what the workflow executes — they cannot
|
|
154
|
+
* desync because the test asserts the SHELL derivation matches the function.
|
|
155
|
+
*/
|
|
156
|
+
export function generateIntakeWorkflow(config) {
|
|
157
|
+
// `intake <N>` runs the prompt→verdict decision (the agent), so it needs the
|
|
158
|
+
// provider secret(s) forwarded to `$GITHUB_ENV` by the setup action.
|
|
159
|
+
const setupWith = providerSecretsWithBlock(config);
|
|
160
|
+
return `\
|
|
161
|
+
# dorfl — the ISSUE INTAKE trigger in CI (capability D: consider incoming
|
|
162
|
+
# issues → task/prd, PLUS insertion point E: surface the review verdict into the
|
|
163
|
+
# issue thread, prd runner-in-ci). EMITTED by \`dorfl install-ci\`; the human
|
|
164
|
+
# commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade the shell.
|
|
165
|
+
#
|
|
166
|
+
# WHAT IT DOES — \`dorfl intake <N>\` reads issue #N + its comment thread,
|
|
167
|
+
# runs a prompt→verdict decision (ask / task / PRD / bounce), and dispatches it.
|
|
168
|
+
# CI owns ONLY the trigger + the merge-vs-propose POLICY + the delivery surface;
|
|
169
|
+
# the TRANSFORM is the engine's (the Out-of-Scope fence — CI re-implements none of
|
|
170
|
+
# it). The lone-task review/edit loop \`intake\` already runs ALSO surfaces its
|
|
171
|
+
# findings as questions back into THIS issue thread via the issue-comment seam (insertion
|
|
172
|
+
# point E) — REUSED, not a new review mechanism.
|
|
173
|
+
#
|
|
174
|
+
# TRIGGERS (capability D): an OPENED issue, a CREATED issue comment, and the
|
|
175
|
+
# \`${INTAKE_TRIGGER_LABEL}\` label. A CREATED comment is the (re-)evaluation
|
|
176
|
+
# trigger; an EDITED comment is deliberately NOT a trigger (the ID-based
|
|
177
|
+
# \`seen=<ids>\` watermark catches new comments; editing a prior comment never
|
|
178
|
+
# re-triggers). CONVENTION: if you edit a previous comment to answer intake's
|
|
179
|
+
# question, ALSO post a NEW comment noting the edit — the new comment is what drives
|
|
180
|
+
# re-evaluation (a fresh id the watermark catches). There is NO edit-detection /
|
|
181
|
+
# \`updated_at\` / body-hash tracking.
|
|
182
|
+
#
|
|
183
|
+
# AUTHOR-TRUST → per-outcome FLAGS (the merge-vs-propose POLICY): because ANYBODY
|
|
184
|
+
# can file an issue, the merge decision composes with WHO authored it. An UNTRUSTED
|
|
185
|
+
# author (\`author_association\` not OWNER/MEMBER/COLLABORATOR) forces
|
|
186
|
+
# \`--propose-task\` REGARDLESS of the \`autoBuild\` gate — a task from a public
|
|
187
|
+
# front-door issue can never auto-merge — while \`--merge-spec\` stays allowed (a
|
|
188
|
+
# human must still task a spec before anything autonomous acts on it, so the human
|
|
189
|
+
# checkpoint is intact). A TRUSTED author gets the plain gate-derived mode. The
|
|
190
|
+
# fully-gateless "merge everything" path (both gates off + a trusted author) is a
|
|
191
|
+
# LOUD, NON-DEFAULT opt-in; the default is conservative (propose).
|
|
192
|
+
#
|
|
193
|
+
# CI runs IN-PLACE (the CI container IS the isolation): NO --isolated/--remote/
|
|
194
|
+
# registry (laptop-only affordances). The PER-ISSUE concurrency group below
|
|
195
|
+
# serialises overlapping ticks on the SAME issue; the \`processing\` lock / claim
|
|
196
|
+
# CAS is the real cross-run serialiser.
|
|
197
|
+
#
|
|
198
|
+
# SAFETY (US #9): the running job is FORBIDDEN from editing the workflows tree
|
|
199
|
+
# under .github. It requests NO \`workflows\` permission, so it can never rewrite
|
|
200
|
+
# its own triggers.
|
|
201
|
+
|
|
202
|
+
name: intake
|
|
203
|
+
|
|
204
|
+
on:
|
|
205
|
+
issues:
|
|
206
|
+
# An OPENED issue triggers a first intake pass. NOT \`edited\` — a body edit's
|
|
207
|
+
# re-evaluation is the engine's event-model concern (issue-intake); the CI
|
|
208
|
+
# trigger relies on a CREATED comment to drive (re-)evaluation.
|
|
209
|
+
types:
|
|
210
|
+
- opened
|
|
211
|
+
- labeled
|
|
212
|
+
issue_comment:
|
|
213
|
+
# A CREATED comment is the (re-)evaluation trigger (Decision 2). An EDITED
|
|
214
|
+
# comment is NOT listed — editing a prior comment never re-triggers; post a NEW
|
|
215
|
+
# comment to signal an edit (the ID-based seen=<ids> watermark catches it).
|
|
216
|
+
types:
|
|
217
|
+
- created
|
|
218
|
+
|
|
219
|
+
# PER-ISSUE concurrency group: serialise overlapping ticks on the SAME issue (two
|
|
220
|
+
# triggers landing close together must not run intake on one issue twice at once).
|
|
221
|
+
# The \`processing\` lock / claim CAS is the real cross-run serialiser; this just
|
|
222
|
+
# avoids redundant concurrent ticks. Keyed by the issue number so DIFFERENT issues
|
|
223
|
+
# still run in parallel.
|
|
224
|
+
concurrency:
|
|
225
|
+
group: intake-\${{ github.event.issue.number }}
|
|
226
|
+
cancel-in-progress: false
|
|
227
|
+
|
|
228
|
+
# NO \`workflows\` permission: the running job can NEVER edit the workflows tree
|
|
229
|
+
# under .github (US #9). \`contents: write\` + \`pull-requests: write\` emit/propose
|
|
230
|
+
# the artifact; \`issues: write\` posts the clarifying/review comment back into the
|
|
231
|
+
# thread (insertion point E). It never rewrites its triggers.
|
|
232
|
+
permissions:
|
|
233
|
+
contents: write
|
|
234
|
+
pull-requests: write
|
|
235
|
+
issues: write
|
|
236
|
+
|
|
237
|
+
env:
|
|
238
|
+
# ── The engine GATE FAMILY, surfaced as the DORFL_* env block ─────────
|
|
239
|
+
# CI is NOT a special policy surface (ADR ci-config-policy-and-gate-family §5):
|
|
240
|
+
# it runs the SAME engine gates, resolved through flag > env > per-repo > global
|
|
241
|
+
# > default. The SAME .dorfl.json the laptop uses applies here; this env
|
|
242
|
+
# block is the optional CI-only override. Change behaviour by editing these
|
|
243
|
+
# values (or a GitHub repo variable / .dorfl.json key) — NOT by re-running
|
|
244
|
+
# install-ci (ADR §6: install-ci is one-time).
|
|
245
|
+
#
|
|
246
|
+
# \`intake\` itself is GATE-FREE (the explicit invocation is its own
|
|
247
|
+
# authorization), so these gates do NOT block it — CI READS them to DERIVE the
|
|
248
|
+
# per-outcome merge-vs-propose flags below (the merge-vs-propose POLICY). CALM
|
|
249
|
+
# DEFAULTS: both off ⇒ the next step is a HUMAN, so the gate-derived mode is the
|
|
250
|
+
# permissive merge side; author-trust then forces propose for a task from an
|
|
251
|
+
# untrusted author.
|
|
252
|
+
DORFL_AUTO_BUILD: 'false' # gate: will an agent auto-build the emitted task next?
|
|
253
|
+
DORFL_AUTO_TASK: 'false' # gate: will an agent auto-task the emitted prd next?
|
|
254
|
+
|
|
255
|
+
jobs:
|
|
256
|
+
intake:
|
|
257
|
+
# Only run for an issue/comment that actually carries an issue number (a
|
|
258
|
+
# comment on a PR also fires \`issue_comment\`; skip those — there is no issue to
|
|
259
|
+
# intake). \`pull_request\` is absent on a real issue comment.
|
|
260
|
+
if: \${{ github.event.issue.number && !github.event.issue.pull_request }}
|
|
261
|
+
runs-on: ubuntu-latest
|
|
262
|
+
steps:
|
|
263
|
+
- uses: actions/checkout@v4
|
|
264
|
+
with:
|
|
265
|
+
fetch-depth: 0
|
|
266
|
+
- uses: ./.github/actions/dorfl-setup${setupWith}
|
|
267
|
+
|
|
268
|
+
- name: derive the per-outcome merge-vs-propose flags (gate × author-trust)
|
|
269
|
+
id: policy
|
|
270
|
+
# The merge-vs-propose POLICY, executed at runtime — the SAME rule
|
|
271
|
+
# \`deriveIntakeFlags\` unit-tests (they cannot desync; the test asserts this
|
|
272
|
+
# shell matches the function):
|
|
273
|
+
# * SPEC — gate-derived ONLY: --merge-spec iff autoTask OFF (a human
|
|
274
|
+
# tasks it before anything autonomous acts — the checkpoint
|
|
275
|
+
# stays ahead even for an UNTRUSTED author), else --propose-spec.
|
|
276
|
+
# * TASK — --propose-task iff (autoBuild ON) OR (author UNTRUSTED);
|
|
277
|
+
# --merge-task ONLY iff (autoBuild OFF AND author TRUSTED).
|
|
278
|
+
# author_association comes from the COMMENT on an \`issue_comment\` event,
|
|
279
|
+
# else the ISSUE on an \`issues\` event — read straight off the payload, no
|
|
280
|
+
# extra API call.
|
|
281
|
+
env:
|
|
282
|
+
AUTHOR_ASSOCIATION: \${{ github.event.comment.author_association || github.event.issue.author_association }}
|
|
283
|
+
run: |
|
|
284
|
+
set -euo pipefail
|
|
285
|
+
|
|
286
|
+
# SPEC flag: gate-derived only (author-trust does NOT bite a spec).
|
|
287
|
+
if [ "\${DORFL_AUTO_TASK}" = "true" ]; then
|
|
288
|
+
spec_flag="--propose-spec"
|
|
289
|
+
else
|
|
290
|
+
spec_flag="--merge-spec"
|
|
291
|
+
fi
|
|
292
|
+
|
|
293
|
+
# Author-trust: TRUSTED iff OWNER/MEMBER/COLLABORATOR (admin / write-
|
|
294
|
+
# collaborator — the whole signal). Anything else (incl. empty) is
|
|
295
|
+
# UNTRUSTED → the conservative, human-in-the-loop path.
|
|
296
|
+
trusted="false"
|
|
297
|
+
case "\${AUTHOR_ASSOCIATION:-}" in
|
|
298
|
+
OWNER|MEMBER|COLLABORATOR) trusted="true" ;;
|
|
299
|
+
esac
|
|
300
|
+
|
|
301
|
+
# TASK flag: propose if the agent will auto-build it (gate ON) OR the
|
|
302
|
+
# author is untrusted; merge ONLY when both are safe.
|
|
303
|
+
if [ "\${DORFL_AUTO_BUILD}" = "true" ] || [ "\${trusted}" != "true" ]; then
|
|
304
|
+
task_flag="--propose-task"
|
|
305
|
+
else
|
|
306
|
+
task_flag="--merge-task"
|
|
307
|
+
fi
|
|
308
|
+
|
|
309
|
+
# ORIGIN-TRUST stamp (task untrusted-origin-forces-build-propose):
|
|
310
|
+
# derived from the SAME \${trusted} case above (one author-trust read,
|
|
311
|
+
# two consumers — the task/prd modes AND the stamp — so they cannot
|
|
312
|
+
# desync). \`intake\` STAMPS this onto the emitted prd/task frontmatter
|
|
313
|
+
# (origin: issue + originTrust: <value>); it does NOT re-resolve trust
|
|
314
|
+
# (that is CI's policy, passed IN). The stamp SURVIVES the merge boundary
|
|
315
|
+
# so a later auto-task/auto-build of an untrusted-origin artifact still
|
|
316
|
+
# forces a human becomes-code checkpoint (the laundering gap is closed).
|
|
317
|
+
if [ "\${trusted}" = "true" ]; then
|
|
318
|
+
origin_trust_flag="--origin-trust=trusted"
|
|
319
|
+
else
|
|
320
|
+
origin_trust_flag="--origin-trust=untrusted"
|
|
321
|
+
fi
|
|
322
|
+
|
|
323
|
+
echo "spec_flag=\${spec_flag}" >> "\$GITHUB_OUTPUT"
|
|
324
|
+
echo "task_flag=\${task_flag}" >> "\$GITHUB_OUTPUT"
|
|
325
|
+
echo "origin_trust_flag=\${origin_trust_flag}" >> "\$GITHUB_OUTPUT"
|
|
326
|
+
echo "intake policy: author_association='\${AUTHOR_ASSOCIATION:-}' trusted=\${trusted} → \${spec_flag} \${task_flag} \${origin_trust_flag}"
|
|
327
|
+
|
|
328
|
+
- name: intake the issue (four-outcome dispatch; surfaces the review verdict into the thread)
|
|
329
|
+
# In-place in this checkout (no --isolated/--remote): the CI container IS
|
|
330
|
+
# the isolation. EXPLICIT \`intake <N>\`, never a bare slug. The per-outcome
|
|
331
|
+
# flags carry the merge-vs-propose POLICY derived above. \`intake\` runs the
|
|
332
|
+
# lone-task review/edit loop and posts its findings as questions back into
|
|
333
|
+
# THIS issue thread (insertion point E) through the issue-comment seam —
|
|
334
|
+
# CI surfaces E by invoking intake; it adds no new review mechanism.
|
|
335
|
+
env:
|
|
336
|
+
GH_TOKEN: \${{ secrets.GITHUB_TOKEN }}
|
|
337
|
+
run: |
|
|
338
|
+
dorfl intake "\${{ github.event.issue.number }}" \\
|
|
339
|
+
"\${{ steps.policy.outputs.spec_flag }}" \\
|
|
340
|
+
"\${{ steps.policy.outputs.task_flag }}" \\
|
|
341
|
+
"\${{ steps.policy.outputs.origin_trust_flag }}" \\
|
|
342
|
+
--arbiter origin
|
|
343
|
+
`;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Structurally validate the intake-trigger workflow against the task's acceptance
|
|
347
|
+
* criteria. Dependency-free (no YAML lib): presence/shape assertions over the raw
|
|
348
|
+
* text, mirroring {@link validateAdvanceLifecycleWorkflow} /
|
|
349
|
+
* {@link validateCloseJobWorkflow}.
|
|
350
|
+
*/
|
|
351
|
+
export function validateIntakeWorkflow(text) {
|
|
352
|
+
const problems = [];
|
|
353
|
+
const require = (id, present, message) => {
|
|
354
|
+
if (!present) {
|
|
355
|
+
problems.push({ id, message });
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
// The OPERATIVE (non-comment) lines: the prohibitions below (no `--isolated`/
|
|
359
|
+
// `--remote`/`do`/`pull_request` trigger/`.github/workflows` self-edit/edit
|
|
360
|
+
// trigger) are about what the job DOES, not what the explanatory comments
|
|
361
|
+
// MENTION. Strip full-line `#` comments before the negative checks; the positive
|
|
362
|
+
// presence checks run over the full text (comments are harmless there).
|
|
363
|
+
const operative = text
|
|
364
|
+
.split('\n')
|
|
365
|
+
.filter((line) => !/^\s*#/.test(line))
|
|
366
|
+
.join('\n');
|
|
367
|
+
// --- INVOKES `intake <N>` (explicit, four-outcome dispatch), never bare ------
|
|
368
|
+
require('invokes-intake', /dorfl intake\b/.test(operative), 'must invoke `dorfl intake <N>` (the four-outcome dispatch engine CI ' +
|
|
369
|
+
'schedules).');
|
|
370
|
+
// The issue number rides the explicit positional — never a bare slug, and the
|
|
371
|
+
// number comes from the event payload (the issue under intake).
|
|
372
|
+
require('intake-explicit-issue-number', /dorfl intake "?\$\{\{\s*github\.event\.issue\.number/.test(operative), 'the intake invocation must pass the explicit issue NUMBER ' +
|
|
373
|
+
'(`github.event.issue.number`), never a bare slug.');
|
|
374
|
+
// CI owns ONLY the trigger/policy/delivery — it must NOT invoke a build/task
|
|
375
|
+
// verb (that is the build/task tick), nor re-implement the transform.
|
|
376
|
+
require('no-build-verbs', !/dorfl (?:do|advance)\b/.test(operative), 'the intake workflow must invoke ONLY `intake` (+ derive the policy), not a ' +
|
|
377
|
+
'build/task verb — CI owns the trigger + merge policy, not the transform.');
|
|
378
|
+
// --- TRIGGERS: issues opened + issue_comment created + the label ------------
|
|
379
|
+
require('trigger-issues-opened', /\bissues:\s*[\s\S]*?types:\s*[\s\S]*?-\s*opened\b/.test(text), 'must trigger on an OPENED issue (`on.issues.types: [opened]`).');
|
|
380
|
+
require('trigger-issue-comment-created', /\bissue_comment:\s*[\s\S]*?types:\s*[\s\S]*?-\s*created\b/.test(text), 'must trigger on a CREATED issue comment ' +
|
|
381
|
+
'(`on.issue_comment.types: [created]`) — the (re-)evaluation trigger.');
|
|
382
|
+
require('trigger-label', /\bissues:\s*[\s\S]*?types:\s*[\s\S]*?-\s*labeled\b/.test(text), 'must trigger on a label (`on.issues.types: [labeled]`).');
|
|
383
|
+
// --- Decision 2: a CREATED comment triggers; an EDITED comment does NOT ------
|
|
384
|
+
// The `issue_comment` trigger must NOT list `edited` (no edit-detection); and
|
|
385
|
+
// there must be no `updated_at`/body-hash edit-tracking wiring.
|
|
386
|
+
require('no-comment-edited-trigger', !/issue_comment:\s*[\s\S]*?types:\s*[\s\S]*?-\s*edited\b/.test(text), 'the `issue_comment` trigger must NOT include `edited` (Decision 2: no ' +
|
|
387
|
+
'edit-detection; a CREATED comment is the (re-)evaluation trigger).');
|
|
388
|
+
require('no-edit-tracking', !/updated_at|body-hash|bodyHash/.test(operative), 'must NOT implement `updated_at` / body-hash edit-tracking (Decision 2).');
|
|
389
|
+
// The "post a NEW comment to signal an edit" CONVENTION must be documented in
|
|
390
|
+
// the workflow so a human knows how to re-trigger after editing a comment.
|
|
391
|
+
require('documents-new-comment-convention', /post a NEW comment/i.test(text), 'must DOCUMENT the "post a new comment to signal an edit" convention ' +
|
|
392
|
+
'(Decision 2) so a human knows how to drive re-evaluation.');
|
|
393
|
+
// --- AUTHOR-TRUST → per-outcome flags (Decision 1) --------------------------
|
|
394
|
+
// The workflow must READ author_association off the event payload (no extra API).
|
|
395
|
+
require('reads-author-association', /author_association/.test(text), 'must read `author_association` off the event payload to compose author-' +
|
|
396
|
+
'trust into the merge-vs-propose policy (Decision 1; no extra API call).');
|
|
397
|
+
// Trust = OWNER/MEMBER/COLLABORATOR (the whole signal).
|
|
398
|
+
require('trust-owner-member-collaborator', /OWNER\|MEMBER\|COLLABORATOR|OWNER[\s\S]{0,40}MEMBER[\s\S]{0,40}COLLABORATOR/.test(text), 'author-trust must be OWNER/MEMBER/COLLABORATOR (admin / write-collaborator ' +
|
|
399
|
+
'— the whole signal; Decision 1).');
|
|
400
|
+
// An untrusted author forces --propose-task; the derivation must emit both
|
|
401
|
+
// task modes (so the untrusted path can reach propose and the trusted-safe
|
|
402
|
+
// path can reach merge).
|
|
403
|
+
require('derives-propose-task', /--propose-task\b/.test(operative), 'the policy derivation must be able to emit `--propose-task` (the ' +
|
|
404
|
+
'untrusted-author / autoBuild-on fallback).');
|
|
405
|
+
require('derives-merge-task', /--merge-task\b/.test(operative), 'the policy derivation must be able to emit `--merge-task` (the ' +
|
|
406
|
+
'trusted-author + autoBuild-off path).');
|
|
407
|
+
// --merge-spec stays allowed even for an untrusted author (spec checkpoint ahead).
|
|
408
|
+
require('derives-merge-spec', /--merge-spec\b/.test(operative), 'the policy derivation must be able to emit `--merge-spec` (a spec stays ' +
|
|
409
|
+
'mergeable even for an untrusted author — the human-tasks-it checkpoint).');
|
|
410
|
+
require('derives-propose-spec', /--propose-spec\b/.test(operative), 'the policy derivation must be able to emit `--propose-spec` (autoTask on).');
|
|
411
|
+
// ORIGIN-TRUST stamp (task untrusted-origin-forces-build-propose): the shell
|
|
412
|
+
// must derive `--origin-trust <trusted|untrusted>` from the SAME author-trust
|
|
413
|
+
// case it uses for the task/PRD modes, and pass it to `intake` so the emitted
|
|
414
|
+
// artifact is stamped (the stamp + the modes cannot desync).
|
|
415
|
+
require('derives-origin-trust-untrusted', /--origin-trust=untrusted\b/.test(operative), 'the policy derivation must emit `--origin-trust=untrusted` for a non-trusted ' +
|
|
416
|
+
'author (so the emitted artifact is stamped untrusted; task ' +
|
|
417
|
+
'untrusted-origin-forces-build-propose).');
|
|
418
|
+
require('derives-origin-trust-trusted', /--origin-trust=trusted\b/.test(operative), 'the policy derivation must emit `--origin-trust=trusted` for a trusted author.');
|
|
419
|
+
require('passes-origin-trust-to-intake', /steps\.policy\.outputs\.origin_trust_flag/.test(operative), 'the intake invocation must pass the derived `--origin-trust` flag (the ' +
|
|
420
|
+
'stamp must reach `dorfl intake`).');
|
|
421
|
+
// The derivation must compose the gate env block (it READS the gates to derive).
|
|
422
|
+
require('reads-auto-build-gate', /DORFL_AUTO_BUILD\b/.test(text), 'the policy derivation must read the `DORFL_AUTO_BUILD` gate.');
|
|
423
|
+
require('reads-auto-task-gate', /DORFL_AUTO_TASK\b/.test(text), 'the policy derivation must read the `DORFL_AUTO_TASK` gate.');
|
|
424
|
+
// --- Insertion point E: the issue-thread review surface ---------------------
|
|
425
|
+
// E is REUSED via `intake` (which runs the lone-task review and posts to the
|
|
426
|
+
// thread). The workflow must request `issues: write` so that comment can land.
|
|
427
|
+
require('issues-write-permission', /\bissues:\s*write\b/.test(operative), 'must request `issues: write` so the review verdict / clarifying question ' +
|
|
428
|
+
'can be posted back into the issue thread (insertion point E).');
|
|
429
|
+
// It must NOT route the review verdict through the PR-comment seam — E posts to
|
|
430
|
+
// the ISSUE (postIssueComment by number), NOT the PR (postPRComment by url).
|
|
431
|
+
require('no-pr-comment-seam', !/postPRComment\b/.test(operative), 'insertion point E posts to the ISSUE thread (postIssueComment by number), ' +
|
|
432
|
+
'NOT the PR seam `postPRComment` (by url) — do not use the PR seam.');
|
|
433
|
+
// --- CI runs IN-PLACE: no isolation machinery ------------------------------
|
|
434
|
+
require('no-isolated-flag', !/--isolated\b/.test(operative), 'CI runs IN-PLACE (the container IS the isolation): no `--isolated` flag.');
|
|
435
|
+
require('no-remote-flag', !/--remote(?![-\w])/.test(operative), 'CI runs IN-PLACE: no `--remote` flag (laptop-only affordance).');
|
|
436
|
+
// --- A PER-ISSUE concurrency group ------------------------------------------
|
|
437
|
+
require('concurrency-group', /\bconcurrency:\s*[\s\S]*?group:/.test(text), 'must carry a CI `concurrency.group` so overlapping ticks never collide.');
|
|
438
|
+
require('per-issue-concurrency', /concurrency:\s*[\s\S]*?group:[^\n]*github\.event\.issue\.number/.test(text), 'the concurrency group must be PER-ISSUE (keyed by the issue number) so ' +
|
|
439
|
+
'different issues still run in parallel.');
|
|
440
|
+
// --- US #9: NO `workflows` permission; cannot self-edit triggers ------------
|
|
441
|
+
require('no-workflows-permission', !/\bworkflows:\s*write\b/.test(text), 'the running job must request NO `workflows` permission (US #9: it can ' +
|
|
442
|
+
'never edit `.github/workflows/**` / rewrite its own triggers).');
|
|
443
|
+
require('never-edits-dot-github-workflows', !/\.github\/workflows\//.test(operative), 'no emitted job step may touch `.github/workflows/**` (US #9).');
|
|
444
|
+
// --- Wires the SHARED composite setup action -------------------------------
|
|
445
|
+
require('uses-shared-setup-action', /uses:\s*\.\/\.github\/actions\/dorfl-setup\b/.test(text), 'the job must wire the shared composite setup action ' +
|
|
446
|
+
'(`./.github/actions/dorfl-setup`, emitted by the core task).');
|
|
447
|
+
return { ok: problems.length === 0, problems };
|
|
448
|
+
}
|
|
449
|
+
//# sourceMappingURL=intake-trigger-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intake-trigger-template.js","sourceRoot":"","sources":["../src/intake-trigger-template.ts"],"names":[],"mappings":"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"}
|