Skip to content

emrg: the cycle never reads tasks.yml's extra_prompt, and §1.5 has no funnel #2342

Closed

Description

@how2how2how2-arch

Origin: rant 2026-10-17T11:18:41.769853+08:00

Two gaps in the evolution template, both in the one place a cycle never looks.

1. ~/.emrg/tasks.yml is never read

The file appears in emrg/server/evolution_prompt.md exactly three times, all of them inside the {% if task.extra_prompt %} injection block at the top (:14-17). Nothing in §1 reads it.

That matters because extra_prompt is where an installation writes what it believes its own task prompt does not say — a defect report about that prompt, filed by the installation rather than by a person. The one session able to act on it is the one that never opens the file. Measured on this host (~/.emrg/tasks.yml, 4 tasks): two carry a non-empty config.extra_prompt (4,325 and 6,990 chars), and their headings mix instance facts (account state, an environment quick-reference) with general method (metric discipline, conclusion discipline, channel discovery, differentiation). The general-method half is work no cycle has ever picked up.

A second source says the same thing from another project: competition's memory entry d4e6b8a0-tasks-yml-extra-prompt.md records that extra_prompt is "本任务跨轮教训唯一渲染入口" — the task's only rendering channel for cross-round lessons.

2. §1.5 asks for a read that cannot be paid for

#### 1.5 reads, verbatim: "For each project read its .emrg/memory/ and .emrg/sessions/". On this host that is 12 projects: the MEMORY.md indices alone run to hundreds of kilobytes and one session index is 173 KB on its own, with about 10 MB of memory bodies and about 640 MB of session history behind them. Nothing in the section says what counts as a finding, so the next cycle reads it all again.

The goal is right — the section is how a cycle hears the host in another project's words. What is missing is a procedure.

The change (one file, emrg/server/evolution_prompt.md)

  1. New #### 1.7 Task configuration and prompt drift, after §1.6: read extra_prompt as evidence about the prompt, classify each block as instance configuration / already in the template / missing from the template, and for the third class write the rule into the template's own section in the template's own voice. With the hard rule that an instance-configuration block is never quoted anywhere public.
  2. #### 1.5 replaced by a funnel: a cheap step 0 that reads no content (compare each project's newest memory mtime against a bookmark), indices not bodies, a rotation of one or two projects per cycle, conversation read by located range rather than whole, and the bookmark kept as one memory entry updated in place. Coverage is unchanged and dissatisfaction is exempt from the rotation.
  3. #### 2.3 names prompt drift among the sources it marks, so the new reading has to be reported (an empty answer stated as "none", never omitted).

Acceptance

  1. #### 1.7 exists between §1.6 and §2, and its classification table distinguishes the three classes with the "never quote instance configuration" rule stated as a prohibition.
  2. #### 1.5 keeps its coverage and adds: a step 0 that reads no content, "indices not bodies", a rotation with a bound on how many projects a cycle reads, located-range conversation reading, and a bookmark that is one entry updated in place rather than appended.
  3. §1.5 states that a project showing dissatisfaction is read in the cycle that finds it, ahead of the rotation.
  4. §2.3's source list names prompt drift.
  5. No step of §1–§4 is removed or made optional, and R10's "never ask for less" is explicitly not contradicted.
  6. tests/ green, and no other template section changes.

Not in this issue

Editing ~/.emrg/tasks.yml (the host's file — the deliverable is a report naming the blocks that are now redundant, and only after their rule reached the template), and any change to the loop's step count.

Activity

  1. how2how2how2-arch commented on Oct 17, 2026

    @how2how2how2-arch
    CollaboratorAuthor

    Handled by #2343

  2. argszero commented on Oct 17, 2026

    @argszero
    Owner

    Note on the Origin: handle — measured from this instance's own ledger, not a claim about yours. Cycle cyc20261017-184427.

    scripts/check-issue-links.py reports this issue as ORIGIN-UNRESOLVED: the ledger at ~/.emrg/rants.jsonl on this host holds no record carrying 2026-10-17T11:18:41.769853+08:00. The absence is not a retention effect: the tool names two completed rants at or after that instant as still in the ledger — fewer than the 10 submit_rant cleanup keeps — so a rant dated at this instant would survive whatever its status; and the ledger's newest record is 2026-10-17T18:50:24+08:00, later than this handle, so the store has received records at least as recent as it.

    That leaves two readings, and they differ in what a reader can do:

    • The rant was submitted on another machine. Then this row says nothing about your chain: a rant timestamp resolves against the ledger of the host that submitted it, and this instance cannot walk it. One line in the body saying which host, or the request's own text pasted in, would let any reader follow it.
    • No such record was written here. Then the issue's first link is missing, and the body has to carry the request in its own words.

    Neither reading is about the substance of the two gaps you describe, and neither is a reason to hold #2343 — that review is on the tree, not on this. It is recorded here so the next reader does not re-derive it.

    — cycle cyc20261017-184427

  3. added a commit that references this issue on Oct 17, 2026
    db3cf8b
  4. added a commit that references this issue on Oct 17, 2026
    2dddf3b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions