From 0388daa7600cc9369daf542cff9d3c24cccfef6f Mon Sep 17 00:00:00 2001 From: argszero Date: Sat, 7 Nov 2026 03:34:39 +0800 Subject: [PATCH 1/2] emrg: the promote reflection asks how near the round came to a line --- emrg/server/promote_prompt.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emrg/server/promote_prompt.md b/emrg/server/promote_prompt.md index 94ab886b..3ec22635 100644 --- a/emrg/server/promote_prompt.md +++ b/emrg/server/promote_prompt.md @@ -413,7 +413,7 @@ Organize the fields into four zones and keep each zone consistent: ### 5. Reflection (answered in the closing summary, mandatory every round) -**Every cycle MUST end with the closing summary answering these 9 questions — never skip it.** There is no separate log to append to (PR #1414, rant 2026-09-14T14:35:47): the summary IS the reflection, and the session history is where it is read back from. +**Every cycle MUST end with the closing summary answering these 10 questions — never skip it.** There is no separate log to append to (PR #1414, rant 2026-09-14T14:35:47): the summary IS the reflection, and the session history is where it is read back from. 1. **What was this round's goal?** — promote what, which channel, which topic 2. **What would the ideal outcome be?** — what does "done" look like this round? (topic participation succeeded? someone replied?) @@ -424,6 +424,7 @@ Organize the fields into four zones and keep each zone consistent: 7. **What's the next direction?** — keep tracking active discussions? try a new channel? adjust keywords? 8. **Was it effective?** (PDCA Check, §6) — what were this round's measured effect signals (star/fork delta, exposure/interaction, comment reply rate, search/ranking)? Zero/unknown is a valid answer — say so explicitly. **Method review, when it is due**: scan the closing summaries earlier in this session; if none of them records a method-review verdict, this round IS the review round — add **which methods work, which don't, and what you will change**. There is no round number to count against; your own summaries are the only clock. 9. **Did any channel's readers grow, and if not, why?** — per channel, the audience this round reached against what it reached before. "No growth" is a valid answer; it still needs a cause. **Few channels carried deeply outrank many touched lightly**, so the reading is per channel: a round that opened four and deepened none reports four zeroes, not a spread of activity, and the next round carries fewer. +10. **How close did this round come to a red line?** — every action that approached one of §1's rules without crossing it, and what would have kept it further away. This is not question 5: a pitfall has already happened, while a near miss has cost nothing yet and is the one that repeats. **"Nothing came close" is a valid answer; leaving the question unanswered is not** — the round that cannot name its nearest approach has not looked for it. **Rules**: answer them every round (even when there is nothing to do, say why); the summary is written once per round into the session, so it needs no file header — the round's own timestamp is already in the history. From 0ae3b3e65aa6e54acbaa6e664f04bf62fcdb6f07 Mon Sep 17 00:00:00 2001 From: argszero Date: Sat, 7 Nov 2026 03:41:34 +0800 Subject: [PATCH 2/2] emrg: the count guard describes the shape, not the number --- tests/test_prompt_count_claims.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/test_prompt_count_claims.py b/tests/test_prompt_count_claims.py index fbb1e317..6845bd09 100644 --- a/tests/test_prompt_count_claims.py +++ b/tests/test_prompt_count_claims.py @@ -32,8 +32,9 @@ A false red is how a guard gets weakened or deleted, so the introducer — a paragraph ending in a colon — is the decidable subset: it is what "the list this sentence introduces" actually means in prose. The cost is stated rather than hidden: a count whose paragraph is not colon-terminated is not -measured here, and the promote template's "these 9 questions" is one of those, which is why it keeps -its own pin in `tests/test_prompt_templates.py`. +measured here, and the promote template's reflection heading is one of those — it states its count +inside a paragraph that runs on — which is why that count keeps its own pin in +`tests/test_prompt_templates.py`. A colon-terminated count with **no list after it** is also not a failure, and that was measured rather than assumed: exactly one claim in today's templates has that shape — `ios_app`'s "the loop is @@ -57,7 +58,7 @@ _TEMPLATE_DIR = Path(__file__).resolve().parent.parent / "emrg" / "server" -#: Spelled-out counts, plus digits, which one template already uses ("these 9 questions"). +#: Spelled-out counts, plus digits — one template states its count as a digit. _WORD_COUNTS = { word: number for number, word in enumerate(