@pmelab/gtd 17.2.0 → 17.3.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/.claude-plugin/plugin.json +1 -1
- package/README.md +2 -1
- package/dist/gtd.bundle.mjs +17 -8
- package/package.json +1 -1
- package/src/workflows/prose.ts +10 -3
- package/src/workflows/text.test.ts +19 -0
- package/src/workflows/text.ts +4 -2
package/package.json
CHANGED
package/src/workflows/prose.ts
CHANGED
|
@@ -180,13 +180,20 @@ export const questionBarReturn = `- This lap continues the same goal as the firs
|
|
|
180
180
|
checkboxes
|
|
181
181
|
- \`## Answered Questions\` is always the last \`##\` section — a moved
|
|
182
182
|
question lands there, never wherever \`## Open Questions\` used to sit
|
|
183
|
-
- Never re-raise a deleted question
|
|
184
|
-
|
|
183
|
+
- Never re-raise a deleted question. A settled \`## Answered Questions\`
|
|
184
|
+
entry stays settled, except one carrying a human footnote on its
|
|
185
|
+
\`### \` heading: that is the only entry that may change. Fold the note
|
|
186
|
+
in, then either rewrite the recorded answer in place (still under
|
|
187
|
+
\`## Answered Questions\`) or, when the note leaves the point genuinely
|
|
188
|
+
open, move it back to \`## Open Questions\` as a fresh fork with
|
|
189
|
+
options and the \`_your answer_\` slot. A note that only asks a
|
|
190
|
+
question follows the footnote rule: one \`- A:\` reply, answer unchanged
|
|
185
191
|
- An answer may earn a follow-up: if it opens a genuinely new fork above
|
|
186
192
|
the bar — one the answer itself created — raise it as a fresh \`##
|
|
187
193
|
Open Questions\` entry on this same lap. Never restate a question
|
|
188
194
|
already asked, and never treat this as licence to re-open a question
|
|
189
|
-
already settled under \`## Answered Questions\`
|
|
195
|
+
already settled under \`## Answered Questions\` that carries no
|
|
196
|
+
footnote on its heading
|
|
190
197
|
- Recognise a silent lap from \`## Open Questions\` still present with
|
|
191
198
|
nothing ticked and nothing else changed — the human's way of saying
|
|
192
199
|
the gap is already closed. That lap ends the questions, whatever the
|
|
@@ -103,6 +103,25 @@ describe("the shared open-question instruction", () => {
|
|
|
103
103
|
})
|
|
104
104
|
})
|
|
105
105
|
|
|
106
|
+
describe("answered-entry footnote exception", () => {
|
|
107
|
+
const exception = "carrying a human footnote on its"
|
|
108
|
+
it("is in the design return lap and loop-back, keeping the deleted-question rule", () => {
|
|
109
|
+
const prompt = renderText(() => designTriagePrompt("base"))
|
|
110
|
+
expect(prompt).toContain("Never re-raise a deleted question")
|
|
111
|
+
expect(prompt).toContain(`entry stays settled, except one ${exception}`)
|
|
112
|
+
expect(prompt).toContain(`stays settled, except\n one ${exception}`)
|
|
113
|
+
expect(prompt).not.toContain("never re-open a settled")
|
|
114
|
+
expect(prompt).not.toContain("never re-open one")
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
it("is in the architecture return lap and keeps the first-lap settled line", () => {
|
|
118
|
+
const prompt = renderText(() => architectureAuthorPrompt())
|
|
119
|
+
expect(prompt).toContain(`entry stays settled, except one ${exception}`)
|
|
120
|
+
expect(prompt).not.toContain("never re-open a settled")
|
|
121
|
+
expect(prompt).toMatch(/treat every decision[\s\S]*as settled — never re-open it/)
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
|
|
106
125
|
describe("architectureAuthorPrompt", () => {
|
|
107
126
|
it("qualifies the PERMISSIVE default with a settled-requirements exception", () => {
|
|
108
127
|
const prompt = renderText(() => architectureAuthorPrompt())
|
package/src/workflows/text.ts
CHANGED
|
@@ -191,8 +191,10 @@ ${questionBarReturn}
|
|
|
191
191
|
\`git show ${base}\`. (On the first lap that hash
|
|
192
192
|
is the process's own diff base, \`${start()}\` — this
|
|
193
193
|
branch doesn't apply)
|
|
194
|
-
- Every decision under \`## Answered Questions\` stays settled
|
|
195
|
-
|
|
194
|
+
- Every decision under \`## Answered Questions\` stays settled, except
|
|
195
|
+
one carrying a human footnote on its \`### \` heading — the human's
|
|
196
|
+
review-round edit is where such notes arrive; fold the note in and
|
|
197
|
+
rewrite the answer or move it back to \`## Open Questions\`. A genuinely open PRODUCT point may still
|
|
196
198
|
raise a fresh \`## Open Questions\` entry: the product gate sits
|
|
197
199
|
on this path exactly as on the first lap
|
|
198
200
|
- Before grouping anything, run \`${env.testCommand}\`
|