dorfl 0.1.1 → 0.2.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 +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 +8 -8
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +20 -8
- 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.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +85 -13
- 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 +24 -1
- package/dist/advance-treeless-publish.d.ts.map +1 -1
- package/dist/advance-treeless-publish.js +41 -0
- package/dist/advance-treeless-publish.js.map +1 -1
- package/dist/advance.d.ts +69 -17
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +409 -102
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +31 -3
- package/dist/advancing-lock.d.ts.map +1 -1
- package/dist/advancing-lock.js +55 -5
- package/dist/advancing-lock.js.map +1 -1
- package/dist/agent-launch.d.ts +12 -0
- package/dist/agent-launch.d.ts.map +1 -1
- package/dist/agent-launch.js +22 -12
- package/dist/agent-launch.js.map +1 -1
- package/dist/agent-stop.d.ts +40 -2
- package/dist/agent-stop.d.ts.map +1 -1
- package/dist/agent-stop.js +30 -2
- package/dist/agent-stop.js.map +1 -1
- package/dist/apply-decide.d.ts +19 -5
- package/dist/apply-decide.d.ts.map +1 -1
- package/dist/apply-decide.js +38 -9
- package/dist/apply-decide.js.map +1 -1
- package/dist/apply-merge-action.d.ts +20 -8
- package/dist/apply-merge-action.d.ts.map +1 -1
- package/dist/apply-merge-action.js +44 -9
- package/dist/apply-merge-action.js.map +1 -1
- package/dist/apply-persist.d.ts +62 -31
- package/dist/apply-persist.d.ts.map +1 -1
- package/dist/apply-persist.js +173 -44
- package/dist/apply-persist.js.map +1 -1
- package/dist/apply-stuck-action.d.ts +151 -0
- package/dist/apply-stuck-action.d.ts.map +1 -0
- package/dist/apply-stuck-action.js +125 -0
- package/dist/apply-stuck-action.js.map +1 -0
- package/dist/brand.d.ts +12 -1
- package/dist/brand.d.ts.map +1 -1
- package/dist/brand.js +2 -1
- package/dist/brand.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-spinner.d.ts +1 -1
- package/dist/cli-spinner.js +1 -1
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +385 -128
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.d.ts +3 -3
- package/dist/close-job-template.js +9 -9
- 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 +9 -6
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +99 -45
- 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 +86 -40
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +61 -9
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts +1 -1
- package/dist/continue-branch.d.ts.map +1 -1
- package/dist/continue-branch.js +23 -1
- package/dist/continue-branch.js.map +1 -1
- package/dist/cwd-section.js +1 -1
- package/dist/cwd-section.js.map +1 -1
- package/dist/decision-engine.d.ts +39 -11
- package/dist/decision-engine.d.ts.map +1 -1
- package/dist/decision-engine.js +10 -6
- package/dist/decision-engine.js.map +1 -1
- package/dist/do-autopick.d.ts +6 -6
- package/dist/do-autopick.d.ts.map +1 -1
- package/dist/do-autopick.js +16 -6
- package/dist/do-autopick.js.map +1 -1
- package/dist/do-config.d.ts +4 -4
- 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 +74 -81
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +439 -50
- package/dist/do.js.map +1 -1
- package/dist/drop-source.d.ts +2 -2
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +19 -11
- package/dist/env-config.js.map +1 -1
- package/dist/failure-cause.d.ts +3 -2
- package/dist/failure-cause.d.ts.map +1 -1
- package/dist/failure-cause.js +28 -1
- package/dist/failure-cause.js.map +1 -1
- package/dist/format.d.ts +6 -6
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +13 -30
- package/dist/format.js.map +1 -1
- package/dist/frontmatter.d.ts +28 -15
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +38 -24
- package/dist/frontmatter.js.map +1 -1
- package/dist/gc.d.ts +65 -6
- package/dist/gc.d.ts.map +1 -1
- package/dist/gc.js +126 -9
- package/dist/gc.js.map +1 -1
- package/dist/github.d.ts +14 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +73 -0
- package/dist/github.js.map +1 -1
- package/dist/harness.d.ts +25 -0
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/install-ci-branch-protection.d.ts +133 -39
- package/dist/install-ci-branch-protection.d.ts.map +1 -1
- package/dist/install-ci-branch-protection.js +191 -49
- package/dist/install-ci-branch-protection.js.map +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 +24 -4
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +12 -5
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +33 -1
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +74 -1
- package/dist/install-ci-github.js.map +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/install-skills.d.ts +123 -0
- package/dist/install-skills.d.ts.map +1 -0
- package/dist/install-skills.js +100 -0
- package/dist/install-skills.js.map +1 -0
- 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 +17 -17
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts +65 -52
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +92 -76
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +27 -24
- package/dist/integration-core.d.ts.map +1 -1
- package/dist/integration-core.js +191 -77
- package/dist/integration-core.js.map +1 -1
- package/dist/integrator.d.ts +1 -1
- package/dist/integrator.d.ts.map +1 -1
- package/dist/integrator.js +19 -3
- package/dist/integrator.js.map +1 -1
- package/dist/isolation.d.ts +4 -4
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +9 -0
- package/dist/isolation.js.map +1 -1
- package/dist/issue-provider.d.ts +4 -4
- package/dist/issue-provider.js +1 -1
- package/dist/item-lock.d.ts +216 -149
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +345 -270
- package/dist/item-lock.js.map +1 -1
- 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 +33 -28
- package/dist/ledger-write.d.ts.map +1 -1
- package/dist/ledger-write.js +100 -122
- package/dist/ledger-write.js.map +1 -1
- package/dist/lifecycle-gather.d.ts +18 -1
- package/dist/lifecycle-gather.d.ts.map +1 -1
- package/dist/lifecycle-gather.js +23 -17
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/lifecycle-pools.d.ts +44 -7
- package/dist/lifecycle-pools.d.ts.map +1 -1
- package/dist/lifecycle-pools.js +27 -7
- package/dist/lifecycle-pools.js.map +1 -1
- package/dist/merge-question-surfacer.d.ts +18 -4
- package/dist/merge-question-surfacer.d.ts.map +1 -1
- package/dist/merge-question-surfacer.js +20 -5
- package/dist/merge-question-surfacer.js.map +1 -1
- package/dist/migrate-stuck-locks.d.ts +129 -0
- package/dist/migrate-stuck-locks.d.ts.map +1 -0
- package/dist/migrate-stuck-locks.js +355 -0
- package/dist/migrate-stuck-locks.js.map +1 -0
- 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 +304 -27
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +542 -67
- package/dist/needs-attention.js.map +1 -1
- package/dist/orphan-sidecar.d.ts +10 -6
- package/dist/orphan-sidecar.d.ts.map +1 -1
- package/dist/orphan-sidecar.js +35 -2
- package/dist/orphan-sidecar.js.map +1 -1
- package/dist/pi-harness.d.ts +16 -0
- package/dist/pi-harness.d.ts.map +1 -1
- package/dist/pi-harness.js +82 -2
- package/dist/pi-harness.js.map +1 -1
- package/dist/placement.d.ts +8 -8
- package/dist/placement.js +3 -3
- package/dist/prd-to-spec.d.ts.map +1 -1
- package/dist/prd-to-spec.js +9 -5
- package/dist/prd-to-spec.js.map +1 -1
- package/dist/prompt.d.ts +16 -19
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +17 -19
- package/dist/prompt.js.map +1 -1
- package/dist/protocol/CLAIM-PROTOCOL.md +17 -10
- package/dist/protocol/REVIEW-PROTOCOL.md +4 -1
- package/dist/protocol/SURFACE-PROTOCOL.md +16 -2
- package/dist/protocol/TASKING-PROTOCOL.md +3 -1
- package/dist/protocol/WORK-CONTRACT.md +22 -18
- package/dist/protocol/task-template.md +1 -1
- package/dist/readiness.d.ts +1 -1
- package/dist/reap-branches.d.ts +12 -9
- package/dist/reap-branches.d.ts.map +1 -1
- package/dist/reap-branches.js +25 -7
- package/dist/reap-branches.js.map +1 -1
- package/dist/recover-isolated.d.ts +12 -0
- package/dist/recover-isolated.d.ts.map +1 -1
- package/dist/recover-isolated.js +6 -1
- package/dist/recover-isolated.js.map +1 -1
- package/dist/repo-config.d.ts +23 -2
- package/dist/repo-config.d.ts.map +1 -1
- package/dist/repo-config.js +64 -18
- package/dist/repo-config.js.map +1 -1
- package/dist/repo-mirror.d.ts.map +1 -1
- package/dist/repo-mirror.js +18 -2
- package/dist/repo-mirror.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 +2 -2
- package/dist/review-verdict.js.map +1 -1
- package/dist/run.d.ts +2 -2
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +58 -23
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +26 -17
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +29 -15
- package/dist/scan.js.map +1 -1
- package/dist/select-order.d.ts +1 -1
- package/dist/select-priority.d.ts +14 -14
- 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-apply.js +1 -1
- package/dist/sidecar-apply.js.map +1 -1
- package/dist/sidecar.d.ts +47 -12
- package/dist/sidecar.d.ts.map +1 -1
- package/dist/sidecar.js +84 -4
- package/dist/sidecar.js.map +1 -1
- package/dist/skills/answer-questions/SKILL.md +89 -0
- package/dist/skills/capture-signal/SKILL.md +52 -0
- package/dist/skills/convert-from-prd-to-spec/SKILL.md +90 -0
- package/dist/skills/drive-tasks/SKILL.md +218 -0
- package/dist/skills/from-idea/SKILL.md +83 -0
- package/dist/skills/merge-prs/SKILL.md +70 -0
- package/dist/skills/orchestrate/SKILL.md +101 -0
- package/dist/skills/promote/SKILL.md +35 -0
- package/dist/skills/review/SKILL.md +16 -0
- package/dist/skills/setup/SKILL.md +258 -0
- package/dist/skills/setup/protocol/ADR-FORMAT.md +47 -0
- package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +224 -0
- package/dist/skills/setup/protocol/REVIEW-PROTOCOL.md +122 -0
- package/dist/skills/setup/protocol/SURFACE-PROTOCOL.md +135 -0
- package/dist/skills/setup/protocol/TASKING-PROTOCOL.md +124 -0
- package/dist/skills/setup/protocol/WORK-CONTRACT.md +280 -0
- package/dist/skills/setup/protocol/spec-template.md +71 -0
- package/dist/skills/setup/protocol/task-template.md +65 -0
- package/dist/skills/surface-questions/SKILL.md +16 -0
- package/dist/skills/to-spec/SKILL.md +34 -0
- package/dist/skills/to-task/SKILL.md +19 -0
- package/dist/skills/triage-observations/SKILL.md +78 -0
- package/dist/skills/work/SKILL.md +51 -0
- package/dist/slug-namespace.d.ts +6 -6
- package/dist/slug-namespace.js +8 -8
- package/dist/slug-namespace.js.map +1 -1
- package/dist/spec-complete.d.ts.map +1 -1
- package/dist/spec-complete.js +4 -5
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +54 -60
- 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-gate.js +10 -3
- package/dist/surface-gate.js.map +1 -1
- package/dist/surface-persist.d.ts +2 -2
- package/dist/surface-persist.d.ts.map +1 -1
- package/dist/surface-persist.js +1 -1
- package/dist/surface-persist.js.map +1 -1
- package/dist/tasker-review-loop.d.ts +11 -10
- 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 +10 -10
- package/dist/tasking-lock.d.ts.map +1 -1
- package/dist/tasking-lock.js +69 -49
- package/dist/tasking-lock.js.map +1 -1
- package/dist/tasking.d.ts +73 -39
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +309 -95
- package/dist/tasking.js.map +1 -1
- package/dist/triage-gate.d.ts +1 -1
- package/dist/triage-persist.d.ts +15 -11
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +48 -18
- package/dist/triage-persist.js.map +1 -1
- package/dist/vendor/incur/agents.d.ts +58 -0
- package/dist/vendor/incur/agents.d.ts.map +1 -0
- package/dist/vendor/incur/agents.js +343 -0
- package/dist/vendor/incur/agents.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +1 -1
- package/dist/verify-workflow-template.js +3 -3
- package/dist/watch-session.d.ts +11 -3
- package/dist/watch-session.d.ts.map +1 -1
- package/dist/watch-session.js +94 -7
- package/dist/watch-session.js.map +1 -1
- package/dist/work-layout.d.ts +15 -9
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +14 -9
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +2 -2
- package/package.json +2 -2
- package/src/advance-ci-template.ts +4 -4
- package/src/advance-classify.ts +5 -5
- package/src/advance-drivers.ts +26 -13
- package/src/advance-isolated.ts +3 -3
- package/src/advance-lifecycle-template.ts +98 -13
- package/src/advance-loop-driver.ts +3 -3
- package/src/advance-treeless-publish.ts +46 -1
- package/src/advance.ts +495 -115
- package/src/advancing-lock.ts +102 -7
- package/src/agent-launch.ts +37 -12
- package/src/agent-stop.ts +60 -2
- package/src/apply-decide.ts +38 -9
- package/src/apply-merge-action.ts +49 -11
- package/src/apply-persist.ts +236 -62
- package/src/apply-stuck-action.ts +260 -0
- package/src/brand.ts +14 -2
- package/src/buildable-body.ts +14 -14
- package/src/claim-cas.ts +4 -4
- package/src/cli-spinner.ts +1 -1
- package/src/cli.ts +472 -141
- package/src/close-job-template.ts +9 -9
- package/src/close-job.ts +26 -26
- package/src/complete.ts +121 -63
- package/src/concurrency.ts +1 -1
- package/src/config.ts +143 -49
- package/src/continue-branch.ts +23 -1
- package/src/cwd-section.ts +1 -1
- package/src/decision-engine.ts +57 -19
- package/src/do-autopick.ts +21 -10
- package/src/do-config.ts +7 -7
- package/src/do-remote-auto.ts +2 -2
- package/src/do.ts +558 -85
- package/src/drop-source.ts +2 -2
- package/src/env-config.ts +19 -11
- package/src/failure-cause.ts +30 -1
- package/src/format.ts +13 -33
- package/src/frontmatter.ts +55 -35
- package/src/gc.ts +172 -9
- package/src/github.ts +78 -0
- package/src/harness.ts +25 -0
- package/src/index.ts +10 -0
- package/src/install-ci-branch-protection.ts +283 -58
- 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 +34 -7
- package/src/install-ci-github.ts +87 -1
- package/src/install-ci.ts +4 -4
- package/src/install-skills.ts +166 -0
- 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 +18 -18
- package/src/intake.ts +138 -103
- package/src/integration-core.ts +234 -100
- package/src/integrator.ts +22 -9
- package/src/isolation.ts +13 -4
- package/src/issue-provider.ts +4 -4
- package/src/item-lock.ts +505 -361
- 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 +137 -152
- package/src/lifecycle-gather.ts +45 -22
- package/src/lifecycle-pools.ts +71 -13
- package/src/merge-question-surfacer.ts +32 -8
- package/src/migrate-stuck-locks.ts +451 -0
- package/src/mint-adr.ts +4 -4
- package/src/mirror-pool-scan.ts +5 -5
- package/src/needs-attention.ts +877 -104
- package/src/orphan-sidecar.ts +49 -8
- package/src/pi-harness.ts +82 -2
- package/src/placement.ts +8 -8
- package/src/prd-to-spec.ts +13 -5
- package/src/prompt.ts +20 -25
- package/src/readiness.ts +1 -1
- package/src/reap-branches.ts +38 -14
- package/src/recover-isolated.ts +18 -1
- package/src/repo-config.ts +66 -17
- package/src/repo-mirror.ts +23 -1
- package/src/review-gate.ts +12 -11
- package/src/review-verdict.ts +3 -3
- package/src/run.ts +69 -23
- package/src/scan.ts +36 -22
- package/src/select-order.ts +1 -1
- package/src/select-priority.ts +15 -15
- package/src/sidecar-apply.ts +1 -1
- package/src/sidecar.ts +141 -14
- package/src/slug-namespace.ts +10 -10
- package/src/spec-complete.ts +4 -5
- package/src/start.ts +57 -63
- package/src/status.ts +7 -7
- package/src/surface-gate.ts +12 -5
- package/src/surface-persist.ts +3 -3
- package/src/tasker-review-loop.ts +18 -17
- package/src/tasking-eligibility.ts +21 -21
- package/src/tasking-lock.ts +75 -60
- package/src/tasking.ts +381 -135
- package/src/triage-gate.ts +1 -1
- package/src/triage-persist.ts +71 -27
- package/src/vendor/incur/LICENSE +21 -0
- package/src/vendor/incur/README.md +19 -0
- package/src/vendor/incur/agents.ts +392 -0
- package/src/verify-workflow-template.ts +3 -3
- package/src/watch-session.ts +102 -7
- package/src/work-layout.ts +14 -9
- package/src/workspace.ts +2 -2
package/dist/sidecar.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The **question/answer SIDECAR contract** (
|
|
2
|
+
* The **question/answer SIDECAR contract** (spec `advance-loop`, task
|
|
3
3
|
* `advance-sidecar-contract`) — the one genuinely-new piece of the `advance`
|
|
4
4
|
* family. A strict, tooling-OWNED per-item file `work/questions/<type>-<slug>.md`
|
|
5
5
|
* carrying per-entry answered-state, so the tooling fully owns the Q&A artifact
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
* The item-types a sidecar can key onto (the slug-namespace + obs).
|
|
69
69
|
*
|
|
70
70
|
* HARD CUTOVER (spec `prd-to-spec-vocabulary-cutover-and-migration-command`,
|
|
71
|
-
* contract step): the legacy
|
|
71
|
+
* contract step): the legacy ''prd'' type member is GONE — the parent-spec type
|
|
72
72
|
* is `'spec'` only. A `spec:<slug>` identity keys onto the `spec-<slug>`
|
|
73
73
|
* lock/sidecar entry. The on-disk `prd-<slug>.md` sidecar FILE (dorfl's
|
|
74
74
|
* not-yet-converted data) is still probed by {@link sidecarPathCandidates} as a
|
|
@@ -83,13 +83,19 @@ export type SidecarType = 'spec' | 'task' | 'observation';
|
|
|
83
83
|
* sniffing the shape of another field. Absent ⇒ the existing binary content
|
|
84
84
|
* entry (every pre-`kind` sidecar parses + renders byte-identically).
|
|
85
85
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
86
|
+
* A TYPED FIELD is the PERMANENT home for the kind axis (not an interim step
|
|
87
|
+
* toward kind subfolders). Encoding kind in the PATH — either a filename prefix
|
|
88
|
+
* (`merge-<type>-<slug>.md`) or a subfolder (`work/questions/merge/…`) — was
|
|
89
|
+
* deliberately REJECTED: kind is a MUTABLE axis (one item can carry a `spec`
|
|
90
|
+
* question pre-build, then a `merge` question at land time), but `sidecarPathFor`
|
|
91
|
+
* is a pure function of item IDENTITY alone and does not know the kind, so a
|
|
92
|
+
* path that encodes kind would make identity-only lookups SILENTLY miss a
|
|
93
|
+
* sidecar filed under a different kind. So kind lives INSIDE the file (this
|
|
94
|
+
* field), the path stays identity-keyed, and per-kind queues are RENDERED by the
|
|
95
|
+
* tool (`status`/`scan`) rather than by the directory tree. See the observation
|
|
96
|
+
* `questions-folder-rename-and-kind-axis-prefix-vs-subfolder-2026-06-21` (its
|
|
97
|
+
* round-2 conclusion + the recorded answers) and `SURFACE-PROTOCOL.md`. The
|
|
98
|
+
* field is read in exactly ONE place (the apply dispatch).
|
|
93
99
|
*
|
|
94
100
|
* A mistyped/unknown `kind=` token parses to `undefined` (silent-on-malformed,
|
|
95
101
|
* mirroring the retired `disposition` precedent), never a throw, never a
|
|
@@ -183,14 +189,14 @@ export declare function sidecarPathFor(identity: string): string;
|
|
|
183
189
|
* canonical {@link sidecarPathFor} path FIRST, then any legacy-data fallback that
|
|
184
190
|
* may still be on disk before the migration command converts it.
|
|
185
191
|
*
|
|
186
|
-
* MIGRATE step (
|
|
192
|
+
* MIGRATE step (spec `prd-to-spec-vocabulary-cutover-and-migration-command`): the
|
|
187
193
|
* producer side now emits `spec:<slug>`, so {@link sidecarPathFor} resolves
|
|
188
194
|
* `work/questions/spec-<slug>.md`. But the ON-DISK sidecar is still the legacy
|
|
189
195
|
* `work/questions/prd-<slug>.md` until `dorfl prd-to-spec` renames the DATA. So a
|
|
190
196
|
* `spec`-typed identity ALSO probes the legacy `prd-<slug>.md` as a fallback, and
|
|
191
197
|
* a reader takes the FIRST candidate that exists. This is a FILE-PATH DATA alias
|
|
192
198
|
* the migration command removes (it converts `prd-<slug>.md → spec-<slug>.md` on
|
|
193
|
-
* disk); it is NOT the `SlugNamespace`/`SidecarType`
|
|
199
|
+
* disk); it is NOT the `SlugNamespace`/`SidecarType` ''prd'' type member. Every
|
|
194
200
|
* non-`spec` type has a single candidate (its canonical path), unchanged.
|
|
195
201
|
*/
|
|
196
202
|
export declare function sidecarPathCandidates(identity: string): string[];
|
|
@@ -214,7 +220,36 @@ export declare function parseSidecar(text: string): SidecarModel;
|
|
|
214
220
|
* `parseSidecar(serialiseSidecar(m))` recovers an equal MODEL; re-serialising
|
|
215
221
|
* canonicalises the text.
|
|
216
222
|
*/
|
|
217
|
-
export declare function serialiseSidecar(model: SidecarModel): string;
|
|
223
|
+
export declare function serialiseSidecar(model: SidecarModel, options?: SerialiseSidecarOptions): string;
|
|
224
|
+
/**
|
|
225
|
+
* Options for {@link serialiseSidecar}. The optional `repoRoot` opts the
|
|
226
|
+
* caller into emitting the human-visible Markdown link line at the top of
|
|
227
|
+
* the sidecar (pointing at the item's current `work/<folder>/<slug>.md`).
|
|
228
|
+
* Callers that don't have a repo root (e.g. pure format tests) simply omit
|
|
229
|
+
* it and the serialiser emits no link — the parse is unaffected either way.
|
|
230
|
+
*
|
|
231
|
+
* DECISION (sidecar-visible-item-link): `repoRoot` is OPTIONAL and defaults
|
|
232
|
+
* to NO link, rather than being a required argument threaded through every
|
|
233
|
+
* caller. Only the two WRITING call sites (`applyAtomic` in
|
|
234
|
+
* `sidecar-apply.ts`, `persistSurfacedQuestions` in `surface-persist.ts`)
|
|
235
|
+
* pass `cwd`; any other current/future caller of `serialiseSidecar` silently
|
|
236
|
+
* emits no link line. This keeps the many pure-format / round-trip tests
|
|
237
|
+
* trivial (they need no on-disk repo) and keeps the link a write-only
|
|
238
|
+
* cosmetic concern of the persist paths. TRADE-OFF: a new writing caller must
|
|
239
|
+
* remember to pass `repoRoot` to get the link; ALTERNATIVE considered — make
|
|
240
|
+
* it required — rejected because it would force every format-only caller and
|
|
241
|
+
* test to fabricate a repo root purely to reach the same no-link output.
|
|
242
|
+
*/
|
|
243
|
+
export interface SerialiseSidecarOptions {
|
|
244
|
+
/**
|
|
245
|
+
* Absolute or relative path to the repository root, so the serialiser can
|
|
246
|
+
* scan `work/<lifecycle-folder>/<slug>.md` for the item and render a
|
|
247
|
+
* clickable relative link line. When omitted (or when the item cannot be
|
|
248
|
+
* located), the link line is omitted — a harmless fallback, never a
|
|
249
|
+
* broken link.
|
|
250
|
+
*/
|
|
251
|
+
repoRoot?: string;
|
|
252
|
+
}
|
|
218
253
|
/** A new question to append (no id — the appender mints the next monotonic id). */
|
|
219
254
|
export interface NewQuestion {
|
|
220
255
|
question: string;
|
package/dist/sidecar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"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"}
|
package/dist/sidecar.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
1
3
|
import { parseSlugArg } from './slug-namespace.js';
|
|
2
4
|
import { workItemRel } from './work-layout.js';
|
|
3
5
|
const SIDECAR_KINDS = new Set([
|
|
@@ -56,7 +58,7 @@ function typeForNamespace(explicit, rawPrefix) {
|
|
|
56
58
|
if (explicit === 'task') {
|
|
57
59
|
return 'task';
|
|
58
60
|
}
|
|
59
|
-
// `parseSlugArg` only knows `task:`/`
|
|
61
|
+
// `parseSlugArg` only knows `task:`/`spec:`; the sidecar adds the
|
|
60
62
|
// `observation:` namespace (`obs:` is the CLI alias the verb resolves; the
|
|
61
63
|
// sidecar stores the canonical `observation`). A bare slug (no prefix)
|
|
62
64
|
// defaults to the task namespace, matching the resolver's "bare = task".
|
|
@@ -104,14 +106,14 @@ export function sidecarPathFor(identity) {
|
|
|
104
106
|
* canonical {@link sidecarPathFor} path FIRST, then any legacy-data fallback that
|
|
105
107
|
* may still be on disk before the migration command converts it.
|
|
106
108
|
*
|
|
107
|
-
* MIGRATE step (
|
|
109
|
+
* MIGRATE step (spec `prd-to-spec-vocabulary-cutover-and-migration-command`): the
|
|
108
110
|
* producer side now emits `spec:<slug>`, so {@link sidecarPathFor} resolves
|
|
109
111
|
* `work/questions/spec-<slug>.md`. But the ON-DISK sidecar is still the legacy
|
|
110
112
|
* `work/questions/prd-<slug>.md` until `dorfl prd-to-spec` renames the DATA. So a
|
|
111
113
|
* `spec`-typed identity ALSO probes the legacy `prd-<slug>.md` as a fallback, and
|
|
112
114
|
* a reader takes the FIRST candidate that exists. This is a FILE-PATH DATA alias
|
|
113
115
|
* the migration command removes (it converts `prd-<slug>.md → spec-<slug>.md` on
|
|
114
|
-
* disk); it is NOT the `SlugNamespace`/`SidecarType`
|
|
116
|
+
* disk); it is NOT the `SlugNamespace`/`SidecarType` ''prd'' type member. Every
|
|
115
117
|
* non-`spec` type has a single candidate (its canonical path), unchanged.
|
|
116
118
|
*/
|
|
117
119
|
export function sidecarPathCandidates(identity) {
|
|
@@ -125,6 +127,70 @@ export function sidecarPathCandidates(identity) {
|
|
|
125
127
|
// --- Format constants -----------------------------------------------------
|
|
126
128
|
/** The fixed answer marker the human types prose under. */
|
|
127
129
|
const ANSWER_MARKER = '**Your answer** (write below this line):';
|
|
130
|
+
/**
|
|
131
|
+
* The lifecycle folders a given item type may currently reside in — the
|
|
132
|
+
* search set the {@link serialiseSidecar} human-visible link line scans to
|
|
133
|
+
* locate the item at write-time. Deliberately INCLUSIVE of the terminal
|
|
134
|
+
* folders (`done`, `cancelled`, `prds-dropped`) so a sidecar still-being-
|
|
135
|
+
* serialised for a finished item still emits a clickable link. Kept LOCAL to
|
|
136
|
+
* this module (rather than reused from `advance.ts`) because this set is the
|
|
137
|
+
* "where might the item CURRENTLY be on disk?" question, which is broader
|
|
138
|
+
* than advance's rung-classifier reach.
|
|
139
|
+
*
|
|
140
|
+
* DECISION (sidecar-visible-item-link): the task set is the four DURABLE
|
|
141
|
+
* folders `tasks-ready` / `done` / `cancelled` / `tasks-backlog` and
|
|
142
|
+
* deliberately EXCLUDES `in-progress` / `needs-attention`. Those two are NOT
|
|
143
|
+
* durable folders — they are retired transient lock-ref state (ADR
|
|
144
|
+
* `needs-attention-folder-cutover-followup-nits`, see the `TASK_LIFECYCLE_FOLDERS`
|
|
145
|
+
* JSDoc in `work-layout.ts`): a stuck task's BODY rests in `tasks/ready/`
|
|
146
|
+
* while the lock carries `state: stuck`, so no task body ever lives under
|
|
147
|
+
* `work/in-progress/` or `work/needs-attention/` for this scan to find. An
|
|
148
|
+
* earlier WIP of this task listed both; narrowing to the durable set matches
|
|
149
|
+
* the current on-disk reality and avoids scanning phantom folders.
|
|
150
|
+
* ALTERNATIVE considered: reuse `TASK_LIFECYCLE_FOLDERS` directly — rejected
|
|
151
|
+
* because it still carries the legacy `in-progress` entry and omits the
|
|
152
|
+
* `cancelled` / `tasks-backlog` folders a sidecar link may need to reach.
|
|
153
|
+
*/
|
|
154
|
+
const LINK_LIFECYCLE_FOLDERS = {
|
|
155
|
+
task: ['tasks-ready', 'done', 'cancelled', 'tasks-backlog'],
|
|
156
|
+
spec: ['specs-ready', 'specs-tasked', 'specs-proposed', 'specs-dropped'],
|
|
157
|
+
observation: ['observations'],
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Look up the item's CURRENT on-disk repo-relative path by scanning the
|
|
161
|
+
* lifecycle folders its type may reside in, in a documented precedence order.
|
|
162
|
+
* Returns `undefined` when the item is not found in ANY folder — the
|
|
163
|
+
* serialiser's "harmless fallback" (omit the link) branch.
|
|
164
|
+
*
|
|
165
|
+
* PURE lookup: no throws, no side effects. Every call is a fresh scan — the
|
|
166
|
+
* link SELF-HEALS on the next `serialise` after a `git mv` between folders
|
|
167
|
+
* (identity-keyed sidecar; NO lock-step move).
|
|
168
|
+
*/
|
|
169
|
+
function findItemRelPath(repoRoot, type, slug) {
|
|
170
|
+
for (const folder of LINK_LIFECYCLE_FOLDERS[type]) {
|
|
171
|
+
const rel = workItemRel(folder, `${slug}.md`);
|
|
172
|
+
if (existsSync(join(repoRoot, rel))) {
|
|
173
|
+
return rel;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Render the human-visible Markdown link line, from the sidecar's fixed path
|
|
180
|
+
* (`work/questions/<type>-<slug>.md`) to the item's current `work/<folder>/
|
|
181
|
+
* <slug>.md`. Since both live under `work/`, the sidecar-relative link is
|
|
182
|
+
* `../<folder-name>/<slug>.md` — the `..` climbs out of `questions/` and the
|
|
183
|
+
* `<folder-name>` (which may contain a `/`, e.g. `tasks/ready`) drops back in.
|
|
184
|
+
*/
|
|
185
|
+
function renderItemLinkLine(item, itemRel) {
|
|
186
|
+
// itemRel is `work/<folder-name>/<slug>.md`; strip the leading `work/` and
|
|
187
|
+
// prefix with `../` so the link is relative to `work/questions/<file>.md`.
|
|
188
|
+
const prefix = 'work/';
|
|
189
|
+
const target = itemRel.startsWith(prefix)
|
|
190
|
+
? `../${itemRel.slice(prefix.length)}`
|
|
191
|
+
: itemRel;
|
|
192
|
+
return `Item: [\`${item}\`](${target})`;
|
|
193
|
+
}
|
|
128
194
|
// --- Parse ----------------------------------------------------------------
|
|
129
195
|
/** Pull the next monotonic id given the highest existing id number. */
|
|
130
196
|
function nextId(entries) {
|
|
@@ -386,7 +452,7 @@ function blockquote(value) {
|
|
|
386
452
|
* `parseSidecar(serialiseSidecar(m))` recovers an equal MODEL; re-serialising
|
|
387
453
|
* canonicalises the text.
|
|
388
454
|
*/
|
|
389
|
-
export function serialiseSidecar(model) {
|
|
455
|
+
export function serialiseSidecar(model, options = {}) {
|
|
390
456
|
const out = [];
|
|
391
457
|
const identityParts = [
|
|
392
458
|
`item=${model.item}`,
|
|
@@ -395,6 +461,20 @@ export function serialiseSidecar(model) {
|
|
|
395
461
|
`allAnswered=${allAnswered(model)}`,
|
|
396
462
|
];
|
|
397
463
|
out.push(`<!-- dorfl-sidecar: ${identityParts.join(' ')} -->`);
|
|
464
|
+
// Human-visible Markdown link line — placed AFTER the identity comment and
|
|
465
|
+
// BEFORE the first `## ` heading, i.e. in the parser's ignored preamble
|
|
466
|
+
// region. Regenerated on every serialise from the item's CURRENT on-disk
|
|
467
|
+
// location; NEVER round-tripped through the parsed model (the link line is
|
|
468
|
+
// write-only cosmetic output, per the source observation). If the item is
|
|
469
|
+
// not resolvable on disk, we simply OMIT the line (harmless fallback) — a
|
|
470
|
+
// broken link would be more confusing than no link.
|
|
471
|
+
if (options.repoRoot !== undefined) {
|
|
472
|
+
const itemRel = findItemRelPath(options.repoRoot, model.type, model.slug);
|
|
473
|
+
if (itemRel !== undefined) {
|
|
474
|
+
out.push('');
|
|
475
|
+
out.push(renderItemLinkLine(model.item, itemRel));
|
|
476
|
+
}
|
|
477
|
+
}
|
|
398
478
|
model.entries.forEach((entry) => {
|
|
399
479
|
out.push('');
|
|
400
480
|
const heading = entry.id.replace(/^q/, 'Q');
|
package/dist/sidecar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAC,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AA6GjE,MAAM,aAAa,GAA6B,IAAI,GAAG,CAAc;IACpE,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;CACN,CAAC,CAAC;AA2CH,yEAAyE;AACzE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAmB;IAClD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,KAAmB;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,iBAAiB,GAAgC;IACtD,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;CAC1B,CAAC;AAEF,8DAA8D;AAC9D,SAAS,gBAAgB,CACxB,QAAmC,EACnC,SAAiB;IAEjB,+EAA+E;IAC/E,0EAA0E;IAC1E,sBAAsB;IACtB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,kEAAkE;IAClE,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO,aAAa,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACtD,2EAA2E;IAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACvC,OAAO,EAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE,EAAC,CAAC;QACjE,CAAC;IACF,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO;QACN,IAAI;QACJ,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE;KACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACrD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC;IACjE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,CAAC,SAAS,CAAC,CAAC;AACpB,CAAC;AAED,6EAA6E;AAE7E,2DAA2D;AAC3D,MAAM,aAAa,GAAG,0CAA0C,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,sBAAsB,GAAkD;IAC7E,IAAI,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC;IAC3D,IAAI,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,CAAC;IACxE,WAAW,EAAE,CAAC,cAAc,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAS,eAAe,CACvB,QAAgB,EAChB,IAAiB,EACjB,IAAY;IAEZ,KAAK,MAAM,MAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,CAAC;QACZ,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAAe;IACxD,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACtC,CAAC,CAAC,OAAO,CAAC;IACX,OAAO,YAAY,IAAI,OAAO,MAAM,GAAG,CAAC;AACzC,CAAC;AAED,6EAA6E;AAE7E,uEAAuE;AACvE,SAAS,MAAM,CAAC,OAAuB;IACtC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACb,GAAG,GAAG,CAAC,CAAC;YACT,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;AACtB,CAAC;AAED,mDAAmD;AACnD,SAAS,aAAa,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,yEAAyE;AACzE,SAAS,cAAc,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AAOD,2CAA2C;AAC3C,SAAS,oBAAoB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAClB,SAAS;QACV,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,SAAS;QACV,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAmB,EAAC,IAAI,EAAC,CAAC;IACnC,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAQD,sEAAsE;AACtE,SAAS,iBAAiB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAClB,SAAS;QACV,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,SAAS;QACV,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACtB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC9B,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAC3B,uEAAuE;YACvE,oEAAoE;YACpE,IAAI,aAAa,CAAC,GAAG,CAAC,KAAoB,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,GAAG,KAAoB,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,kFAAkF;AAClF,SAAS,iBAAiB,CAAC,KAAe;IACzC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,UAA8B,CAAC;IACnC,IAAI,gBAAqC,CAAC;IAC1C,IAAI,IAA6B,CAAC;IAClC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC5B,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM;QACP,CAAC;QACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,WAAW,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAClC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACxC,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC;YACzC,CAAC;YACD,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YACzB,CAAC;YACD,YAAY,GAAG,KAAK,CAAC;YACrB,SAAS;QACV,CAAC;QACD,uEAAuE;QACvE,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,eAAe,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,YAAY,GAAG,IAAI,CAAC;YACpB,SAAS;QACV,CAAC;QACD,IAAI,YAAY,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,YAAY,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,wCAAwC;QACxC,MAAM,YAAY,GAAG,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,YAAY,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9C,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,SAAS;QACV,CAAC;QACD,wEAAwE;QACxE,6EAA6E;QAC7E,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,aAAa,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACtC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC5B,SAAS;QACV,CAAC;IACF,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,iBAAiB,CAC1B,gDAAgD,CAChD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,sEAAsE;IACtE,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7C,IAAI,aAAkC,CAAC;IACvC,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACnD,aAAa,GAAG,IAAI,CAAC;IACtB,CAAC;SAAM,IAAI,gBAAgB,KAAK,KAAK,IAAI,eAAe,EAAE,CAAC;QAC1D,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,GAAiB;QAC3B,EAAE;QACF,QAAQ;QACR,OAAO;QACP,MAAM;KACN,CAAC;IACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;IAC5B,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9C,4EAA4E;IAC5E,IAAI,QAAoC,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxB,SAAS;QACV,CAAC;QACD,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM;QACP,CAAC;QACD,MAAM,IAAI,iBAAiB,CAC1B,wEAAwE,CACxE,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,iBAAiB,CAAC,8CAA8C,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvD,4EAA4E;IAC5E,4EAA4E;IAC5E,oCAAoC;IACpC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,YAAkC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,YAAY,GAAG,EAAE,CAAC;YAClB,SAAS;QACV,CAAC;QACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO;KACP,CAAC;AACH,CAAC;AAED,6EAA6E;AAE7E,+EAA+E;AAC/E,SAAS,UAAU,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,4EAA4E;AAC5E,SAAS,UAAU,CAAC,KAAa;IAChC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC/B,KAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG;QACrB,QAAQ,KAAK,CAAC,IAAI,EAAE;QACpB,QAAQ,KAAK,CAAC,IAAI,EAAE;QACpB,QAAQ,KAAK,CAAC,IAAI,EAAE;QACpB,eAAe,WAAW,CAAC,KAAK,CAAC,EAAE;KACnC,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,uBAAuB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/D,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,oDAAoD;IACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,kEAAkE;QAClE,6DAA6D;QAC7D,6DAA6D;QAC7D,MAAM,MAAM,GAAa,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,KAAK,IAAI,eAAe,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;IACF,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAgDD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC9B,KAAmB,EACnB,YAA2B;IAE3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAiB;YAC3B,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;YACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;YACxB,MAAM,EAAE,EAAE;SACV,CAAC;QACF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACzB,QAAgB,EAChB,YAA2B;IAE3B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,IAAI,GAAiB;QAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,EAAE;KACX,CAAC;IACF,OAAO,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: answer-questions
|
|
3
|
+
disable-model-invocation: true
|
|
4
|
+
description: 'Human-facing: go over the open question sidecars in work/questions/, RESOLVE the factual ones into draft answers FOR THE HUMAN TO RATIFY, and DEFER the genuine-judgement ones with full context + a suggested default. Proposes; never finalises. The human is the clock.'
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# answer-questions
|
|
8
|
+
|
|
9
|
+
**The read-side mirror of `surface-questions`.** `surface-questions` FORMULATES the open questions for an item and writes nothing. `answer-questions` walks the questions that already exist (`work/questions/*.md` sidecars) and, for each, does the cheap legwork to **propose a draft answer the human ratifies** — OR, when the answer is genuine judgement, **defers it to the human with enough context to answer in one pass**. It is the operator's "let's clear the question backlog together" skill.
|
|
10
|
+
|
|
11
|
+
It is a **user-invoked operator skill** (`disable-model-invocation: true`), human-facing like `review` / `promote` — NOT an autonomous engine rung. This invocation boundary is load-bearing: the autonomous `advance` engine applies ONLY human-authored answers and NEVER invents one (the humility law, shared with `surface-questions`). So this skill exists only where a human IS present, and even then it **proposes; it never finalises**. A drafted answer is a candidate the human reads and ratifies (or edits, or rejects) — it is not an answer until the human owns it. Reach for it by name; it never fires on its own.
|
|
12
|
+
|
|
13
|
+
> **Protocol-native.** Assumes the `work/` contract (rules in the repo's `work/protocol/`, copied by `setup`). Every bare "WORK-CONTRACT" / "sidecar" mention is `work/protocol/WORK-CONTRACT.md` / the documented question-sidecar format in the repo under work.
|
|
14
|
+
|
|
15
|
+
## The one law (it keeps the tool honest)
|
|
16
|
+
|
|
17
|
+
**Propose, never finalise — the human is the clock.** You may RESOLVE a question only when the answer is **factual / discoverable** (settled in the code, an ADR, the contract, a `tasks/done/` record, or external truth) — and even then you present it as a DRAFT for the human to ratify, never as a committed answer. The moment a question turns on **preference, product/design/security judgement, or an unresolved fork**, you do NOT answer it — you DEFER it with context and an optional suggested default (the humility aid, never a decision). When in doubt between "factual" and "judgement", treat it as judgement and defer. A confident wrong answer to a judgement question produces drifted work that costs far more than asking.
|
|
18
|
+
|
|
19
|
+
## When to use vs. not
|
|
20
|
+
|
|
21
|
+
- **Use** when there is a populated `work/questions/` and a human present who wants to clear it: to go question-by-question, knock out the ones whose answers are just legwork (drafted for ratification), and hand the human a tight batch of the ones that genuinely need them. Compose it from `orchestrate`'s apply step, or invoke it directly to drain the question backlog.
|
|
22
|
+
- **Don't** use it to FORMULATE questions (that is `surface-questions`), to PERSIST / commit an answer or advance the item (that is the `advance` verb's apply rung, or the human writing the answer into the sidecar), or to invent an answer to a judgement question (the law forbids it). It READS sidecars and DRAFTS; it does not own the write.
|
|
23
|
+
|
|
24
|
+
## How to use
|
|
25
|
+
|
|
26
|
+
For each open sidecar in `work/questions/` (each `<type>-<slug>.md` with an unanswered entry), per question:
|
|
27
|
+
|
|
28
|
+
1. **Read the question + its context** from the sidecar (the bold question, the blockquote context, any suggested default). A sidecar entry is BINARY (no-answer | answered) — there is no disposition token to read; the human answers in plain language. Open the item it asks about (`<type>:<slug>`) only if the inline context is not enough.
|
|
29
|
+
2. **Classify factual vs judgement** — do the cheap legwork to decide:
|
|
30
|
+
- **FACTUAL / resolvable** — the answer is settled somewhere checkable: a landed `tasks/done/` record, an ADR in `docs/adr/`, a `work/protocol/` rule, the current code, or external/world fact. Investigate it against current reality (the same honesty `surface-questions`/triage demand) so the draft is grounded, not guessed.
|
|
31
|
+
- **JUDGEMENT** — the answer turns on preference, a design/product/security call, a `humanOnly` concern, or an open fork the evidence does not settle.
|
|
32
|
+
3. **Act on the classification:**
|
|
33
|
+
- **FACTUAL → PROPOSE a draft answer.** State the answer in PLAIN LANGUAGE, and cite the EVIDENCE (the `file:line` / ADR / done-record / contract clause that settles it) so the human can ratify in seconds rather than re-investigate. For an observation's "what becomes of this signal?" question, the draft is a plain-language recommendation (e.g. "turn this into a task", "this is a duplicate of `<x>` — delete it") with the evidence for it; the apply rung's decision agent reads that answer and acts, and an outright throw-away can also go via the direct-delete path. Mark it clearly as a DRAFT awaiting ratification.
|
|
34
|
+
- **JUDGEMENT → DEFER.** Surface the question with: inline context (so the human need not open the item), the consequence of each plausible answer, and an **optional suggested default** where you honestly have a view (the humility aid — never a decision). Do NOT draft a committed answer.
|
|
35
|
+
4. **Batch the output** (below). In phase 1 you WRITE nothing to the sidecar. You write a `**Your answer**` slot ONLY in the optional phase 2, and ONLY for the handles the human explicitly ratified (see "Phase 2" below).
|
|
36
|
+
|
|
37
|
+
## Your output
|
|
38
|
+
|
|
39
|
+
Emit, across the open sidecars, a single batch the human can act on in one pass — ordered by leverage (the answer that unblocks the most downstream work first), each tagged PROPOSE or DEFER. Give every entry a **batch-stable handle** (`P1`, `P2`, … for PROPOSE; `D1`, `D2`, … for DEFER), numbered across the WHOLE batch independent of which sidecar it came from, so the human can approve / reject / amend by number in one line (e.g. "approve P1-P6, D3; amend D9 (...); reject D14") instead of re-quoting `<type>:<slug> (qN)`. Keep the `item:`/`(qN)` line too — the handle is for acting, the item id is for locating where the answer persists:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
question backlog: <N sidecars, M open questions>
|
|
43
|
+
|
|
44
|
+
PROPOSE (factual — ratify or correct):
|
|
45
|
+
- P1 item: <type>:<slug> (qN)
|
|
46
|
+
question: <verbatim>
|
|
47
|
+
draft: <the proposed answer>
|
|
48
|
+
evidence: <file:line / ADR / tasks/done record / contract clause that settles it>
|
|
49
|
+
|
|
50
|
+
DEFER (judgement — needs you):
|
|
51
|
+
- D1 item: <type>:<slug> (qN)
|
|
52
|
+
question: <verbatim>
|
|
53
|
+
context: <inline context to answer without opening the item>
|
|
54
|
+
consequence:<what each plausible answer implies>
|
|
55
|
+
default: <optional suggested default — humility aid, omit if none>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
(A sidecar entry is binary — no-answer | answered — so a PROPOSE or DEFER is just plain-language answer text; there is no disposition token to fill.)
|
|
59
|
+
|
|
60
|
+
The verbatim `question:` (and, for DEFER, the `context:`) is MANDATORY on every entry — it is the whole point of the batch: the human must be able to DECIDE from the batch alone, without opening each file. A compact TABLE keyed on the same `P#`/`D#` handles is fine for a large batch ONLY IF every row still carries the verbatim question + (for DEFER) context + item id + draft/default + (for PROPOSE) evidence. If that does not fit a table row, use the block form — do NOT drop the question to make it fit. A batch that elides the question forces a manual file lookup to decide and has failed at its job. Where several entries collapse to ONE decision (e.g. a recurring pattern across many sidecars), give the cluster a single handle and list the items it covers, so the human spends one ratification, not N.
|
|
61
|
+
|
|
62
|
+
If a sidecar's open questions are ALL judgement, it appears only under DEFER; if all factual, only under PROPOSE. An empty backlog (nothing open) is a valid, honest result — say so; never manufacture a question or an answer to look busy.
|
|
63
|
+
|
|
64
|
+
### Phase 2 (OPTIONAL, human-initiated): ratify-by-handle, then the skill writes the accepted answers
|
|
65
|
+
|
|
66
|
+
The batch above is phase 1 and writes NOTHING. If — and only if — the human replies naming the handles they accept (e.g. "write P1-P6, D4, D9" or "accept P3, amend D9 to <text>"), you MAY enter phase 2 and write THOSE answers into their `**Your answer** (write below this line):` slots. This is NOT a violation of "propose, never finalise": a handle the human explicitly named is HUMAN-AUTHORED — the human ratified it by naming it — so transcribing it into the slot is a faithful recording, not an invention. The ironclad rules for phase 2:
|
|
67
|
+
|
|
68
|
+
- **Write ONLY handles the human explicitly named.** Never write an un-named entry, never "helpfully" fill the rest, never write a DEFER's suggested `default:` unless the human named that handle. An entry the human left out stays blank.
|
|
69
|
+
- **Amendments are the human's text, verbatim.** If the human says "accept D9 but change X", write their amended text, not your original draft.
|
|
70
|
+
- **For an observation's triage entry, write the plain-language answer the human ratified** (e.g. "make this a task" / "delete it"). Match the sidecar's documented `**Your answer**` format exactly — there is no disposition token, the human's prose IS the answer.
|
|
71
|
+
- **Still NEVER** set `answered:`/`allAnswered`, never `git mv`, never commit, never touch the per-entry/identity machine comments. You write ONLY the prose under the `**Your answer**` marker; the apply rung (or the human) owns everything else (see below).
|
|
72
|
+
- **If the human's reply is ambiguous about a handle, do not write it — ask.** A wrong transcription into the trusted slot is the exact forgery the law forbids; when unsure, leave it blank and surface the ambiguity.
|
|
73
|
+
|
|
74
|
+
> **Why phase 1 goes to the human and never auto-writes the slot.** The only writable human slot per entry (`**Your answer** (write below this line):`) is the one the `advance` apply rung trusts as the human's ratified answer; writing an UNRATIFIED draft there forges the human's signature and an unattended `advance` would apply the guess (the humility law forbids exactly this). So phase 1 emits to the human and writes nothing; phase 2 writes ONLY what the human ratified by handle. There is no sanctioned "draft, ignored-until-ratified" CARRIER in the sidecar (a draft cannot rest in the file across sessions without risking that mistake), so a parked, browsable in-file draft is out of scope for this skill.
|
|
75
|
+
|
|
76
|
+
## How the answer gets PERSISTED (NOT your job — for orientation)
|
|
77
|
+
|
|
78
|
+
You draft; the HUMAN owns the write. Once the human ratifies a PROPOSE (or answers a DEFER), the answer is recorded by:
|
|
79
|
+
|
|
80
|
+
- **The `advance` verb's apply rung** — it applies the HUMAN's answered sidecar atomically (item body + sidecar in one commit): a decision agent reads the answer + source and resolves / re-pauses / acts on the item (mint / delete-source / ask-follow-up). It applies only human-authored answers; a ratified draft is human-authored the moment the human accepts it. (A human with no runner hand-writes the answer into the sidecar per the documented format.)
|
|
81
|
+
- **Hand-writing the answer** into `work/questions/<type>-<slug>.md` under the entry's `**Your answer** (write below this line):` marker (the documented human-readable sidecar format). The ratified draft text drops straight in — it is a transcription, because you already shaped it as the answer.
|
|
82
|
+
|
|
83
|
+
Your ONLY write is the optional phase-2 transcription: dropping the HUMAN-RATIFIED answer text under the `**Your answer**` marker for the handles the human explicitly named. Beyond that you never set `answered:`/`allAnswered`, never touch machine comments, never `git mv`, never commit. You propose and defer; the human ratifies (and may name handles for you to transcribe); the apply rung (or the human's own edit) does the rest — reads the answered slot, sets `answered:`/`allAnswered`, runs the decision agent over the answer + source to act on it (mint / delete-source / ask-follow-up), and commits.
|
|
84
|
+
|
|
85
|
+
## Boundaries (the scope fence)
|
|
86
|
+
|
|
87
|
+
- **`surface-questions` and `answer-questions` are duals.** Surface FORMULATES open questions for one item and writes nothing; answer READS the formulated questions and drafts/defers (phase 1, write-nothing) and, ONLY on explicit human ratification, transcribes the named answers into their slots (phase 2). Neither FORMULATES nor APPLIES: do not let answer re-formulate (that is surface) or set `answered:` / act on the answer / commit (that is apply). Phase-2 transcription writes the answer PROSE only; it is not "persisting" in the apply sense.
|
|
88
|
+
- **Propose, never finalise.** Restated because it is the whole point: you resolve only factual questions, and only into DRAFTS the human ratifies; genuine judgement is DEFERRED with context, never auto-answered. You write a slot ONLY for a handle the human explicitly named (that text is then human-authored); you NEVER write an un-named entry or your own suggested default into a slot. The human is the clock.
|
|
89
|
+
- **Compose, don't reimplement.** Use `review` / the item bodies / the ADRs / the contract as the single sources of truth your draft cites; do not re-derive their judgement. You gather evidence and shape it into a ratifiable answer.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: capture-signal
|
|
3
|
+
description: "Record a noticed signal into the right work/ bucket (observations / findings / ideas / ADR / needs-attention) before it evaporates. Fire the MOMENT you notice something off the current task's path: drift (docs vs code), a recurring failure, surprising external behaviour, an out-of-scope opportunity, or a decision worth recording. The trigger is NOTICING, not being asked."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# capture-signal
|
|
7
|
+
|
|
8
|
+
Turn a noticed signal into a durable file in the `work/` contract, in the **right bucket**, immediately — so it is not lost to the conversation. Capturing beats losing: do not agonise over the perfect bucket; pick the best fit and write it.
|
|
9
|
+
|
|
10
|
+
The bucket _definitions_ are authoritative in [WORK-CONTRACT.md](work/protocol/WORK-CONTRACT.md) (the repo-local protocol copy setup writes; read it if unsure) — this skill is the **routing reflex + the discipline**, not a restatement of the contract.
|
|
11
|
+
|
|
12
|
+
## When this fires (the trigger is NOTICING)
|
|
13
|
+
|
|
14
|
+
The hard part is not _how_ to write the note — it is _remembering to_ at the moment a signal appears. Fire this skill when, mid-task, you notice any of:
|
|
15
|
+
|
|
16
|
+
- a **discrepancy / drift** (a doc contradicts the code; a task/spec assumes something no longer true; a dependency landed differently than assumed);
|
|
17
|
+
- a **recurring tool/process failure** (the same error twice — yours or the system's; a wasted-round-trip pattern);
|
|
18
|
+
- **surprising external/domain behaviour** you had to learn (an API's real behaviour, a protocol quirk) — verified ground truth;
|
|
19
|
+
- an **out-of-scope idea/opportunity** ("we could also…") that would derail the current task;
|
|
20
|
+
- a **decision** you/the user just made and reasoned through;
|
|
21
|
+
- the user nudging: "shouldn't that be captured / an observation?".
|
|
22
|
+
|
|
23
|
+
If you catch yourself _narrating_ a signal in prose ("interesting — X keeps happening") instead of _recording_ it, that is the trigger. Record it.
|
|
24
|
+
|
|
25
|
+
## Route to the right bucket
|
|
26
|
+
|
|
27
|
+
| The signal is… | Bucket | Mutability |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| spotted, **unverified** ("I noticed maybe-X") — INCLUDING agent/harness **conduct** signals | `work/notes/observations/<slug>.md` | append-only |
|
|
30
|
+
| **verified external/domain** ground truth (a real API/protocol behaviour) | `work/notes/findings/<slug>.md` | accumulates |
|
|
31
|
+
| a **proposed** enhancement, pre-spec ("we might build X") | `work/notes/ideas/<slug>.md` | editable |
|
|
32
|
+
| a **decision WE made** + its why | `docs/adr/<slug>.md` | durable |
|
|
33
|
+
| a **claimed item that got stuck** (gate red, conflict, ambiguity) | needs-attention (the runner marks its per-item lock `state: stuck`) | lock-ref state |
|
|
34
|
+
|
|
35
|
+
Tie-breakers:
|
|
36
|
+
|
|
37
|
+
- **observation vs finding:** internal "spotted, unverified" → observation; only _verified external/domain_ truth → finding. An internal investigation is an observation (it may spawn a fix task / an ADR), NOT a finding. **A finding MUST carry a `source:` (provenance)** — what the source is AND how current (a captured trace, a _dated_ external spec, or the code you read). A would-be finding with no source is really an `observation`. Describing OUR OWN code is never a finding (→ `CONTEXT.md`/`docs/`); a finding records the _external_ world we integrate with.
|
|
38
|
+
- **observation vs ADR:** "I spotted X" → observation; "we DECIDED X because Y" → ADR.
|
|
39
|
+
- **agent/harness conduct signals** (e.g. "the agent kept misusing a tool"): these are not repo-domain signals, but **capture > lose** — put them in `observations/` and **flag in the note that it is a conduct signal, not a domain signal** so a future reader does not hunt for a code bug. (Include refs: the offending tool calls, `file:line`, or commit.)
|
|
40
|
+
|
|
41
|
+
## Discipline (from WORK-CONTRACT.md — honour, don't relitigate)
|
|
42
|
+
|
|
43
|
+
- **Content-derived slug**, never a counter (`agent-skipped-edit-skill`, not `note-3`).
|
|
44
|
+
- **Frontmatter:** `title`, `type` (`observation`/`finding`/`idea`), `status` (`spotted`/`incubating`), and a `spotted:`/`created:` date. **For a `finding`, also `source:` (REQUIRED provenance: what the source is + how current; no separate confidence field)** — see WORK-CONTRACT.md findings box.
|
|
45
|
+
- **`observations/` are APPEND-ONLY** — add an `## Update` block; don't rewrite what was first seen.
|
|
46
|
+
- **Capture buckets do NOT flow** (they are not work items / status≠folder); they leave only by deletion once no longer useful. A note may _spawn_ work (a task, an ADR) created separately — the note is not `git mv`'d into it.
|
|
47
|
+
- **Make it actionable:** state what was seen, where (refs/`file:line`/commit), and why it matters — enough that a future reader (or you) can act without the conversation.
|
|
48
|
+
- **Do NOT auto-commit** when firing standalone in an interactive session — write the file, report the path, leave it for the maintainer (per the repo's git etiquette). (EXCEPTION: when a conductor/autonomous caller — e.g. `drive-tasks` / `orchestrate` — captures the note as part of a run that commits its own observations, it commits this note too and reports it; the no-auto-commit default is for the standalone interactive reflex.)
|
|
49
|
+
|
|
50
|
+
## Anti-pattern this skill exists to prevent
|
|
51
|
+
|
|
52
|
+
Knowing what observations _are_ (a glossary entry in CONTEXT.md) does NOT make you _record_ one at the right moment — that is a reflex, not a fact. If you find you described a signal but never wrote it down, you hit the anti-pattern. Write the file.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: convert-from-prd-to-spec
|
|
3
|
+
disable-model-invocation: true
|
|
4
|
+
description: 'Migrate a repo off the retired `prd` vocabulary end-to-end: drive `dorfl prd-to-spec` for the deterministic half, then sweep the prose the command skips, gated by the bi-word leak scan.'
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# convert-from-prd-to-spec
|
|
8
|
+
|
|
9
|
+
Drive the WHOLE `prd → spec` vocabulary cutover end-to-end for a repo that is ALREADY on the `work/` contract, so a maintainer invokes ONE thing and the agent does both halves: the deterministic, gated DATA conversion (which the `dorfl prd-to-spec` command owns) AND the judgement-heavy PROSE sweep the command deliberately skips. This is an OPERATOR skill (protocol-native, runner-agnostic, human-invoked) — it lives ONLY under `skills/`; it has NO `work/protocol/` mirror and NO `dist/protocol/` vendor, exactly like the sibling operator skills `to-spec` and `to-task`.
|
|
10
|
+
|
|
11
|
+
It is authored for the ONE cutover that exists (`prd → spec`), not pre-generalised to an arbitrary `<from> → <to>`. The DATA engine's `VocabularyMigration` parameterisation is the reuse mechanism if a future cutover ever appears; this skill is not pre-generalised (decision 3 below).
|
|
12
|
+
|
|
13
|
+
## The two-half orchestration (run these IN ORDER)
|
|
14
|
+
|
|
15
|
+
### Half 1 — deterministic: CALL `dorfl prd-to-spec` (do NOT re-implement it)
|
|
16
|
+
|
|
17
|
+
Run the purpose-named migration command; it owns everything deterministic and gated. Do NOT re-implement its layers in the skill — the skill CALLS the command and reads its report.
|
|
18
|
+
|
|
19
|
+
1. **Preview first:** run `dorfl prd-to-spec --dry-run`. It reports exactly what each layer WOULD do, touching nothing. Read the report; proceed only if it looks right.
|
|
20
|
+
2. **Apply:** run `dorfl prd-to-spec`. In ONE command it: checks quiescence (refuses loudly on a dirty tree / a held per-item lock / an in-progress work-branch, NAMING the offender); re-syncs the repo's `work/protocol/*` contract from the package-canonical source (never the target's old copy) and bumps `work/protocol/VERSION`; converts the DATA — the `work/**` folders (via `git mv`), the item frontmatter + inert path/token refs across ALL items INCLUDING terminal history (`work/tasks/done/`, `work/specs/tasked/`), the `.dorfl.json` config keys, and the inert git refs (lock refs + work-branches); and then runs its OWN forward+reverse leak scan over the converted tree as the command's acceptance gate.
|
|
21
|
+
3. **Gate on green:** only proceed to Half 2 when the command reports a clean/green result (no quiescence refusal, no leaks). If it refused, resolve the named offender (commit/stash, release the lock, land/prune the branch) and re-run. The command is idempotent: a second run on an already-migrated repo is a no-op.
|
|
22
|
+
|
|
23
|
+
### Half 2 — judgement: sweep the prose the command SKIPS
|
|
24
|
+
|
|
25
|
+
The command's DATA migration is scoped to `work/**` + config + refs + the `work/protocol/*` re-sync. It deliberately does NOT touch the artifact WORD in the LIVING PROSE trees, because sweeping those correctly needs judgement a blind keep-case find/replace cannot safely apply (it would over-rewrite slugs, symbols, and English). Sweep those trees BY HAND with the reusable pattern below:
|
|
26
|
+
|
|
27
|
+
- `CONTEXT.md`, `README.md`, `AGENTS.md`
|
|
28
|
+
- `docs/**` (including the ADRs)
|
|
29
|
+
- source comments + string literals
|
|
30
|
+
|
|
31
|
+
For each surviving artifact-word occurrence, propose a keep-case rewrite to the new spelling and DEFER the ambiguous ones (word vs slug vs English vs immutable provenance) to the human. Apply the identity allow-list and the provenance-vs-living split (below) so you never rewrite a file identity or falsify history.
|
|
32
|
+
|
|
33
|
+
**Preview-only pass (mirrors the command's `--dry-run`).** Offer a write-nothing mode first: WALK the prose trees, PROPOSE every rewrite as a diff, and write NOTHING, so the human can review the judgement calls before they land. Only after the human accepts do you apply them. This is the skill's `--dry-run` equivalent.
|
|
34
|
+
|
|
35
|
+
Note (out of scope): a stale `.github/workflows/*.yml` is regenerated by `dorfl install-ci`, NOT hand-edited. If you notice one still carries the retired word, NOTE it for a regen; do not edit it here.
|
|
36
|
+
|
|
37
|
+
### Half 3 — acceptance: the widened BI-WORD leak scan is the PROOF
|
|
38
|
+
|
|
39
|
+
The repo is DONE only when the bi-word leak scan is green over BOTH halves' output — the converted `work/**`+config+refs tree AND the swept prose trees. A green scan is the exhaustive-by-construction proof the cutover is complete; the only survivors it permits are marker spans, backtick spans, enumerated slug identities, genuine English, and immutable provenance.
|
|
40
|
+
|
|
41
|
+
## Runner-agnostic fallback (when `dorfl` is ABSENT)
|
|
42
|
+
|
|
43
|
+
The command is the FAST PATH, not a hard dependency (adopt/convert is a runner-agnostic protocol — ADR §9; the `dorfl prd-to-spec` command is ONE implementation). If `dorfl` is not installed, complete the cutover BY HAND by following the SAME layers the command exposes as documented, independent pieces (see `packages/dorfl/src/prd-to-spec.ts`), in the same order:
|
|
44
|
+
|
|
45
|
+
1. `checkQuiescence` — refuse over a dirty tree / a held lock / an in-progress work-branch.
|
|
46
|
+
2. `resyncProtocol` — copy the canonical `work/protocol/*` contract and bump `VERSION`.
|
|
47
|
+
3. `migrateFolders` — `git mv` the `work/**` lifecycle folders to the new spelling.
|
|
48
|
+
4. `migrateItemContent` — rewrite the frontmatter field key + inert path/token refs across every item (including terminal history).
|
|
49
|
+
5. `migrateConfig` — rename the `.dorfl.json` config keys, preserving their values.
|
|
50
|
+
6. `migrateRefs` — rename the inert lock refs + work-branches.
|
|
51
|
+
7. `scanForLeaks` — run the forward+reverse gate over the converted tree.
|
|
52
|
+
|
|
53
|
+
Then do Half 2 (the prose sweep) and Half 3 (the bi-word leak scan) exactly as above. The result is identical to the command path; the command just does layers 1-7 for you.
|
|
54
|
+
|
|
55
|
+
## The reusable pattern toolkit (this skill's authoritative discipline)
|
|
56
|
+
|
|
57
|
+
The hand-sweep of the dorfl self-cutover proved out a small, transferable toolkit. TEACH it and REUSE it; do NOT fork the detector logic. The two existing scans already ENCODE this discipline and are its REFERENCE IMPLEMENTATION — point at them, read them, do not re-derive them:
|
|
58
|
+
|
|
59
|
+
- `packages/dorfl/test/prd-src-prose-leak-scan.test.ts` — the source comment/JSDoc + runtime-string scan over `packages/dorfl/src`.
|
|
60
|
+
- `packages/dorfl/test/prd-word-cutover-leak-scan.test.ts` — the tree-wide WORD/prose scan over `CONTEXT.md`/`README.md`/`AGENTS.md`/`skills/**`/`docs/**`/`work/**`.
|
|
61
|
+
|
|
62
|
+
Both encode the marker-strip, the bi-word lens, the English allow-list, the per-tree provenance-vs-living scoping, and the enumerated identity allow-list. The five load-bearing items:
|
|
63
|
+
|
|
64
|
+
1. **The `''…''` provenance marker (double-single-quote).** When a live doc or comment must name a RETIRED token ONLY as provenance ("the old `''prd''` outcome is gone"), wrap it in the double-single-quote marker. It is uniquely greppable (`grep "''prd''"` finds exactly those provenance mentions, distinct from the ~40 ordinary backtick spans) and the scan STRIPS a `''…''` span exactly like a backtick span, so it is not read as the live noun.
|
|
65
|
+
|
|
66
|
+
2. **The BI-WORD scan.** This cutover has a REVERT in its history (the `spec → brief → spec` thrash), so the scan must FAIL on the retired word (`prd`) OR the reverted-away word (`brief`). A forward-only scan silently passes a stray `brief` (it once did). Any future cutover with a thrash needs this two-word lens.
|
|
67
|
+
|
|
68
|
+
3. **The coined-vs-real-word English asymmetry.** `prd` is a COINED acronym with ZERO English collisions, so its lens carries no English allow-list. `brief` is REAL English (`debrief`, `briefly`, "a brief note"), so its lens DOES carry an English allow-list plus a following-noun heuristic (bare "a brief" is the retired noun and must flag; "a brief note" is the English adjective and is exempt). Record which class each word is; apply the real-word allow-list only to the real word.
|
|
69
|
+
|
|
70
|
+
4. **The provenance-vs-living per-tree split.** The retired word is IMMUTABLE PROVENANCE in some positions and a LIVE LEAK in others; encode the split as concrete per-tree scoping, NOT a blanket exemption. GATE the current-guidance surface: `CONTEXT.md`/`README.md`/`AGENTS.md`, `skills/**`, and the live-reference ADR text. EXEMPT the provenance trees: terminal-history bodies (`work/tasks/done/`, `work/specs/tasked/`, append-only notes), dated incident narration in ACTIVE task bodies, and ADR text that RECORDS what was retired or names the migration's pre-cutover INPUT. Rewriting a provenance mention falsifies history.
|
|
71
|
+
|
|
72
|
+
5. **The concrete IDENTITY allow-list.** NEVER rewrite a `prd`-containing hyphenated slug, filename, `slug:`/`spec:`/`blockedBy:`/`covers:`/`taskedAfter:` value, camelCase symbol, or historical API name — each is a FILE IDENTITY or proper noun whose rename would break a cross-reference or desync history. Enumerate the survivors concretely and keep the list non-vacuous (every entry names a real identity present in the tree); do not use a blanket wildcard.
|
|
73
|
+
|
|
74
|
+
## Domain vocabulary
|
|
75
|
+
|
|
76
|
+
- A **spec** is a north-star launch doc in `work/specs/`; a **task** is a buildable item in `work/tasks/`.
|
|
77
|
+
- The **`work/` contract** is the on-disk protocol every set-up repo carries.
|
|
78
|
+
- **`dorfl prd-to-spec`** is the purpose-named migration COMMAND (ADR §7e) whose DATA migration is scoped to `work/**`+config+refs and which ALSO re-syncs `work/protocol/*`.
|
|
79
|
+
- The **leak scan** is the acceptance GATE — a green bi-word scan is the proof the cutover is complete.
|
|
80
|
+
- Adopt/convert work is a SKILL, execute work is a COMMAND (ADR §8). That is why this prose sweep is a skill, not a new command layer.
|
|
81
|
+
|
|
82
|
+
## The three maintainer decisions
|
|
83
|
+
|
|
84
|
+
1. **A NEW standalone skill named `convert-from-prd-to-spec`** — NOT folded into the `migrate` skill. `migrate` maps a FOREIGN format onto the contract; this is a same-format keep-case vocabulary sweep of a repo ALREADY on the contract, so it stands alone.
|
|
85
|
+
2. **This skill OWNS the doc-sweep coverage; `dorfl prd-to-spec` is NOT extended with a report-line fallback.** Invoking this skill IS the complete path (deterministic command + prose sweep), so the bare command need not print a manual grep. A user who runs only the bare command still gets a correctly-converted `work/`+config+refs+protocol; the residual prose is this skill's job.
|
|
86
|
+
3. **This skill is `prd`-SPECIFIC** — authored for the `prd → spec` cutover (today's only cutover), NOT generalised to an arbitrary `<from> → <to>` from day one. The DATA engine's `VocabularyMigration` parameterisation remains the reuse mechanism for a future cutover; this skill is not pre-generalised.
|
|
87
|
+
|
|
88
|
+
## Git
|
|
89
|
+
|
|
90
|
+
Do NOT stage/commit/push from this skill. The `git mv` folder moves + the ref renames are the command's job (Half 1); the prose edits are ordinary working-tree changes the maintainer reviews and commits. Report what was converted and what was swept; leave the commit to the human.
|