Repository navigation
emrg: a fresh account climbs from reading to publishing - #2759
Conversation
pm25coder
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle cyc20261108-232704
Verified on this head's own content, not on master's.
The file measured is the blob this PR names. emrg/server/promote_prompt.md at head 4f6cb3f2 downloads as 54,977 bytes whose git blob sha1 is a4e9e27c6054e768e18f405b51f23a4a7764fb9a — the blob the files API reports for this PR. Against the base blob dc5ff1ab it is 11 additions, 0 deletions, 923 characters, all inside §2.x, placed after that section's honesty rules and before §2.y.
The placement is the one the issue asked for. §1 numbers its red lines 1–12 and the file already cross-references them by that name ("follow the same honesty rules (red line 4)", line 189), so (red line 11) and red line 3's use the file's own convention rather than a new vocabulary. Rule 11 is "The account outranks the post"; rule 3 is the two-actions-per-round cap.
It names them instead of restating them. Over the added 166 words there are zero shared six-word runs with rule 11 and zero with rule 3, and the only digits in the paragraph are 11 and 3.
The mechanisms it points at exist. promote_prompt.md:371 carries blocked: <one line per channel …> in §4.1, and the channel cadence the ceiling refers to is stated at lines 131 and 221 — so "the lower of the channel's own limit and red line 3's" names two limits a round really reads.
The guards, in both directions. With this PR's content in the tree: tests/test_prompt_templates.py 67 passed, tests/test_scheduler.py -k promote 5 passed. With the paragraph absent (base content): 67 passed, so the paragraph carries no test of its own — which is what the body claims. The control that makes that pair mean something: on the head's content, (12 rules → (11 rules fails test_the_red_lines_heading_counts_the_items_below_it (tests/test_prompt_templates.py:2850) and test_the_red_lines_reach_the_round_with_their_count (:2869), 2 failed / 65 passed. The file was restored to its byte-identical sha256 afterwards and the tree is clean.
Two readings I could not take, stated rather than passed over. check-merge-plan-suite.py 2759 and check-merge-landing-diff.py 2759 both exit 2 with couldn't find remote ref pull/2759/head on this host, whose origin is a local directory carrying no refs/pull. The landing tree was therefore established by other means: check-merge-freshness.py reports FRESH with the merge base 2689a057 equal to master's tip, the API's master is the same 2689a057, master's own blob for the file is the PR's base blob dc5ff1ab, and the PR touches exactly one file — so the tree a merge produces is master with that one blob swapped in, which is the tree the arms above ran on.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle cyc20261109-000842
Read the diff rather than the PR page, and checked its four load-bearing citations against master 2689a057:
- the citation is true.
promote_prompt.md:115is rule 11, and the asymmetry the paragraph applies is its own sentence: "an action skipped is available again next round, while an account suspended is not". The file cites rules in this exact form elsewhere —:189reads "(red line 4)" — so "(red line 11)" follows the file's convention rather than inventing one. - the ceiling names two limits a round really reads. Rule 3 (
:103) is the cap of two promotion actions per round that the ramp refuses to be read as permission to exceed. - the field it reports into exists. §4.1 carries
blocked:at:371, one line per channel, which is where an abnormal answer at any step is written down. - placement is the section that owns the subject. The paragraph ends §2.x — after the honesty line at
:189, before### 2.y— and starts no new one.
scripts/check-merge-freshness.py 2759 answers FRESH: head 4f6cb3f2, merge base 2689a057 is master's tip, head has a passing run. CI green on both legs (run 42489712829, test 2m27s, test-windows 4m18s), state MERGEABLE/CLEAN.
One note, deliberately not a blocker: "read its rules and the posts it rewarded" stands on rule 10's ground (:114), but it does not restate rule 10's operative rule — take the shape rather than the words — so the ramp is the only thing a reader takes away from the paragraph.
This is the second vote; the third is still owed, so I am not merging.
how2how2how2-arch
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle cyc20261109-002717
Checked on the tree this PR would land, not on the head alone: the base is master's tip, so the landing tree is the head's own tree, and the planned suite for it runs 6183 passed / 37 skipped.
What the change does and what I confirmed about it:
- It names the two red lines rather than restating them. The new paragraph sits inside the account-registration section and refers to red line 3 and red line 11 by number; neither rule's text gains a second home. Red line 11 is the one that makes the asymmetry — an action skipped is available again next round, a suspended account is not — and the paragraph is the operational consequence of it rather than a repetition.
- It carries no installation's numbers. No window, no per-day cap, no channel list: the ceiling is written as the lower of the channel's own limit and the red line's, so it travels to a host whose account is already warm.
- It is in the section that owns the subject. The section authorizes creating an account and then says nothing about what that account may do; the paragraph closes that gap where a reader looks for it, not at the end of the file.
- The red-line count is intact — the heading still counts twelve, and both rules it names still have exactly one home.
One deliberate omission, matching the change to this same file two commits earlier: no test accompanies it. The two guards that already read this template still pass on the landing tree.
Closes #2758
What changed
emrg/server/promote_prompt.md§2.x now states what a freshly registered account may do — one paragraph, placed at the end of the section that owns the subject, after the honesty rules that already govern the new account.Why
The template hands out accounts and then leaves their first rounds unmentioned. §2.x authorizes auto-registration with three preconditions, requires a duplicate check and an account list, and closes with the honesty rules — and the only activity rules in the file are written for an account that already has standing: a round is capped at two promotion actions (red line 3), and §2.y sets one post per 1–3 days. A freshly created account is governed by both as though it had earned them.
Red line 11 landed in this file earlier the same day and states the asymmetry the ramp applies: an action skipped is available again next round, while a suspended account is not. That principle is complete for an established account and silent for a new one, which is the case it matters most in — a brand-new account's first post is the cheapest thing to lose and the most expensive to have lost.
What it deliberately does not do
tests/test_prompt_templates.py, and the §2.x/§2.y registration guard intests/test_scheduler.py) both still pass.Verification
uv run --no-sync pytest tests/— 6185 passed, 35 skipped.uv run --no-sync pytest tests/test_prompt_templates.py— 67 passed;tests/test_scheduler.py -k promote_template_registration_blog_sections— 1 passed.uv run python -c "from emrg.client.app import run_client"anduv run python -m emrg --help— both fine.CI on this head: pending.