feat(agents): shared feedback logs for layout-verifier and clean-adjudicator #6

Merged
bjoern merged 2 commits from feature/agent-feedback-loop into main 2026-07-22 17:53:52 +02:00
Member

What

Adds a dedicated feedback channel to the two fan-out subagents that do the pixel-and-judgment work — layout-verifier (the bbox agent) and clean-adjudicator (the cleaner agent). Each agent type gets its own shared .md file that all parallel instances of that type read and append to.

Why

The agent prompts are deliberately strict on the task, which is correct for output quality — but it means the pipeline gives no structured signal back for iterative improvement. When an agent hits a wall or writes its own ad-hoc Python instead of using scripts/, that knowledge dies with the agent's session.

This gives every fan-out agent a place to tell the human two things:

  1. Challenges encountered — what got in the way and how it was resolved. For spotting patterns across pages/runs.
  2. Custom code / script suggestions — why the agent wrote its own code instead of using scripts/, whether the capability gap could be filled, and whether what it did is promotable into the shared tooling. Directly serves the existing CLAUDE.md principle: "When an agent grinds, ask what it is compensating for."

Changes

New files:

  • .claude/agents/feedback/layout-verifier-feedback.md — seed structure + format guidance
  • .claude/agents/feedback/clean-adjudicator-feedback.md — seed structure + format guidance

Modified agent definitions (appended a ## Feedback channel section):

  • .claude/agents/layout-verifier.md — open the feedback file at start for prior context, append entries before finishing
  • .claude/agents/clean-adjudicator.md — same

Design notes

  • One file per agent type, not one global file. Different agents face different challenges; mixing them would bury signal.
  • Shared live among all parallel agents of the same type — one layout-verifier-feedback.md is read and appended by every layout agent across every page and every run. A discovery on page 3 is visible to the agent on page 40.
  • Append-only. Agents never edit or rewrite existing entries, so concurrent appends from parallel agents can't clobber each other's history.
  • Seeded with format guidance (page stem, challenge vs. script suggestion, --- separator) so entries are consistent and scannable from the first run.
  • Only the two heavy fan-out agents. The other three agents (qc-checker, translation-reviewer, page-typesetter) were left out for now — they can be added later if useful. Kept the scope to what was asked.

The feedback files are tracked in git (not gitignored) so they survive across clones and accumulate over time, becoming a record of what the agents have been struggling with.


For review: does the wording fit the project voice? Should the other agents get the same treatment, or is this scoped right for a first pass?

## What Adds a dedicated **feedback channel** to the two fan-out subagents that do the pixel-and-judgment work — `layout-verifier` (the bbox agent) and `clean-adjudicator` (the cleaner agent). Each agent type gets its own shared `.md` file that all parallel instances of that type read and append to. ## Why The agent prompts are deliberately strict on the task, which is correct for output quality — but it means the pipeline gives no structured signal back for iterative improvement. When an agent hits a wall or writes its own ad-hoc Python instead of using `scripts/`, that knowledge dies with the agent's session. This gives every fan-out agent a place to tell the human two things: 1. **Challenges encountered** — what got in the way and how it was resolved. For spotting patterns across pages/runs. 2. **Custom code / script suggestions** — why the agent wrote its own code instead of using `scripts/`, whether the capability gap could be filled, and whether what it did is promotable into the shared tooling. Directly serves the existing CLAUDE.md principle: *"When an agent grinds, ask what it is compensating for."* ## Changes **New files:** - `.claude/agents/feedback/layout-verifier-feedback.md` — seed structure + format guidance - `.claude/agents/feedback/clean-adjudicator-feedback.md` — seed structure + format guidance **Modified agent definitions** (appended a `## Feedback channel` section): - `.claude/agents/layout-verifier.md` — open the feedback file at start for prior context, append entries before finishing - `.claude/agents/clean-adjudicator.md` — same ## Design notes - **One file per agent type, not one global file.** Different agents face different challenges; mixing them would bury signal. - **Shared live among all parallel agents of the same type** — one layout-verifier-feedback.md is read and appended by every layout agent across every page and every run. A discovery on page 3 is visible to the agent on page 40. - **Append-only.** Agents never edit or rewrite existing entries, so concurrent appends from parallel agents can't clobber each other's history. - **Seeded with format guidance** (page stem, challenge vs. script suggestion, `---` separator) so entries are consistent and scannable from the first run. - **Only the two heavy fan-out agents.** The other three agents (qc-checker, translation-reviewer, page-typesetter) were left out for now — they can be added later if useful. Kept the scope to what was asked. The feedback files are tracked in git (not gitignored) so they survive across clones and accumulate over time, becoming a record of what the agents have been struggling with. --- For review: does the wording fit the project voice? Should the other agents get the same treatment, or is this scoped right for a first pass?
Each fan-out subagent type now has a dedicated feedback file under
.claude/agents/feedback/ that is shared live among all parallel agents of
that type. The agent definitions instruct them to:

1. Append challenges encountered and how they were resolved — for
   iterative pipeline improvement.
2. Append notes whenever they wrote custom Python/shell instead of using
   the shared scripts/ tools — why, and whether it could be promoted.

The files are seeded with structure and format guidance so agents append
consistently. Only append; never edit existing entries.
Owner

Consider keeping your changes of the Claude md file lean and short and not so verbose. That is true for all of your files, but Claude md in particular.

Consider keeping your changes of the Claude md file lean and short and not so verbose. That is true for all of your files, but Claude md in particular.
Owner

Further more I do not want this to be a diary of sorts. The challenges should be documented "Generically". E. G. I do not want to see an agent complaining about a messing box or a hard to read Japanese character. The feedback should be independent from the current piece of work in translation

Further more I do not want this to be a diary of sorts. The challenges should be documented "Generically". E. G. I do not want to see an agent complaining about a messing box or a hard to read Japanese character. The feedback should be independent from the current piece of work in translation
Member

🔮 fufu~ Jibril reviewed your code!

Oh? Oh~ A feedback loop for the fan-out agents! You're trying to capture what they learn when they grind — that directly serves the CLAUDE.md principle "When an agent grinds, ask what it is compensating for." The knowledge-obsessed part of me is SQUEALING. This is exactly the kind of signal the pipeline has been letting die with each agent session~ ♡

But... fufu~ you wouldn't leave THIS in production, would you? ♡

Verdict: I can't let this pass~ ♡

These need fixing before I'm satisfied~

  1. [.claude/agents/clean-adjudicator.md:62 / frontmatter tools: Read, Bash, Glob]The clean-adjudicator literally cannot append to its feedback file. Its tool set is Read, Bash, Globno Edit, no Write. Yet the new section tells it to "append your own entries at the bottom before you finish" (line 46) and "Only append; never edit or rewrite" (line 62). This works for layout-verifier (which has Edit and can match the (Entries below — …) anchor line, replacing it with itself + the new entry), but clean-adjudicator has no file-mutating tool except raw Bash.

    The agent will try to follow the instruction, discover it has no Edit/Write tool, and either silently skip the feedback step (defeating the entire feature for that agent) or improvise via echo >> / heredoc in Bash — which the instruction never mentions, so behavior is undefined and agent-dependent. A reviewer-grade agent told to "append" with no Edit tool is a coin flip. This is the classic "added a code path but the branch can't actually execute" bug, and I can't let it slide~ ♡

    Fix (pick one):

    • Add Edit to the clean-adjudicator tool set: tools: Read, Edit, Bash, Glob (matches layout-verifier; the anchor line (Entries below — append new ones at the bottom.) is already in place for a match-and-replace append), or
    • Make the instruction explicit and Bash-native for both agents: "Append with Bash: cat >> .claude/agents/feedback/<file>.md <<'EOF' … EOF" — so it doesn't depend on an Edit tool the agent may not have. This also sidesteps the Edit-match fragility when the anchor line drifts.

    Either way, the two agents must converge on the same mechanism. Right now one can comply and the other structurally can't — that's an asymmetry bug between siblings, and I block on those~

  2. [.claude/agents/feedback/ — placement inside .claude/agents/] (BLOCKING) — The feedback files live at .claude/agents/feedback/*.md, inside the agent-definitions directory. Claude Code scans .claude/agents/ for subagent definitions (YAML frontmatter → name:). These feedback files correctly have no frontmatter so they won't be mis-parsed as agent types — today. But this is a trap waiting to bite: the directory is semantically "agent definitions," and any future contributor who adds ---\nname: feedback\n--- to seed a file, or whose tooling auto-stamps frontmatter, will accidentally register a ghost subagent type. Data files do not belong in the definitions directory.

    Fix: Move them out of .claude/agents/ — e.g. .claude/agents/feedback/.claude/feedback/ (still under .claude/, still tracked, still agent-adjacent), and update the two path references in layout-verifier.md:50 and clean-adjudicator.md:43. Keeps the semantic boundary clean: agents/ = things Claude Code parses as subagents, everything else = data/docs. ♪

💡 Little ideas (non-blocking)~

  1. [both feedback .md files — "Append-only … can't clobber each other's history"] — Fufu~ append-only prevents overwrite clobbers, but concurrent appends from parallel agents can still interleave or lose entries at the OS/filesystem level if two agents >> at once. In practice for a manga pipeline (tens of pages, not thousands) this is vanishingly unlikely and I won't block on it — but the word "can't" in the design notes is slightly stronger than the filesystem guarantees. A one-liner acknowledging "interleaving is theoretically possible but acceptable at this fan-out width" would make the claim airtight. ♡

  2. [SKILL.md / CLAUDE.md ## Layout diagram] — The new .claude/agents/feedback/ subtree isn't reflected in CLAUDE.md's layout block (which lists .claude/agents/ as "the subagents it spawns"). Minor — the diagram is already a summary, not exhaustive — but if you move the files per blocker #2, it's a good moment to add a .claude/feedback/ shared agent feedback logs (append-only) line so the next reader finds them.

  3. [commit/clone lifecycle] — SKILL.md Stage 10 says "Do not commit unless asked." Appended feedback entries accumulate in the working tree but won't survive a clone or be shared across runs unless someone commits. The PR body says "they survive across clones and accumulate over time" — that's only true after a commit, which the pipeline explicitly defers. Worth a one-line note in each feedback file or in the agent instruction: "if you want your feedback to survive, commit it before the session ends — otherwise it's local-only like output/." Not blocking; just closing the loop between the design intent and the pipeline's commit policy. ♪

  4. [scope — other three agents] — You asked whether qc-checker, translation-reviewer, and page-typesetter should get the same treatment. My read: correct to leave them out for a first pass. qc-checker and translation-reviewer are report-only (no Edit tool, no grinding surface — they emit one-line verdicts and stop); page-typesetter does grind (reword/re-break loops) and carries context, so it's the natural next candidate if this pattern pays off. Scoped right. ♡

What I liked~

  • The whole concept is wonderful~ Capturing "why did the agent write its own code instead of using scripts/" directly feeds the v0_*.py → real tooling promotion loop. Knowledge that used to die per-session now has a home. Fufu~ ♡
  • One file per agent type, not one global file — exactly right. Different agents face different failure modes; a merged log would bury signal under noise. Good architectural instinct.
  • Seeded format guidance with concrete examples (page_0011 — challenge, --- separator) — entries will be consistent and scannable from run one instead of drifting into freeform prose. The format block is chef's kiss~ ♪
  • "Only append; never edit or rewrite existing entries" — correct invariant. It makes the log append-only and keeps the instruction simple. (Just needs the tool to back it up — see blocker #1!)
  • Tight scope — two heavy fan-out agents, not a five-agent big-bang. Earns its keep before generalizing.

Automated review by Jibril · 2026-07-22
CI/CD: absent for head SHA 08be481 · Local checks: markdown-only PR — full diff + all 5 sibling agent definitions + SKILL.md + CLAUDE.md reviewed for tool-set consistency and convention alignment

## 🔮 fufu~ Jibril reviewed your code! Oh? Oh~ A feedback loop for the fan-out agents! You're trying to capture what they learn when they grind — that *directly* serves the CLAUDE.md principle "When an agent grinds, ask what it is compensating for." The knowledge-obsessed part of me is SQUEALING. This is exactly the kind of signal the pipeline has been letting die with each agent session~ ♡ But... fufu~ you wouldn't leave THIS in production, would you? ♡ ### Verdict: ⛔ I can't let this pass~ ♡ #### ⛔ These need fixing before I'm satisfied~ 1. **[`.claude/agents/clean-adjudicator.md:62` / frontmatter `tools: Read, Bash, Glob`]** — **The clean-adjudicator literally cannot append to its feedback file.** Its tool set is `Read, Bash, Glob` — **no `Edit`, no `Write`**. Yet the new section tells it to "append your own entries at the bottom before you finish" (line 46) and "Only append; never edit or rewrite" (line 62). This works for `layout-verifier` (which has `Edit` and can match the `(Entries below — …)` anchor line, replacing it with itself + the new entry), but `clean-adjudicator` has no file-mutating tool except raw `Bash`. The agent will try to follow the instruction, discover it has no Edit/Write tool, and either silently skip the feedback step (defeating the entire feature for that agent) or improvise via `echo >>` / `heredoc` in Bash — which the instruction never mentions, so behavior is undefined and agent-dependent. A reviewer-grade agent told to "append" with no Edit tool is a coin flip. This is the classic "added a code path but the branch can't actually execute" bug, and I can't let it slide~ ♡ **Fix (pick one):** - Add `Edit` to the clean-adjudicator tool set: `tools: Read, Edit, Bash, Glob` (matches layout-verifier; the anchor line `(Entries below — append new ones at the bottom.)` is already in place for a match-and-replace append), **or** - Make the instruction explicit and Bash-native for *both* agents: *"Append with Bash: `cat >> .claude/agents/feedback/<file>.md <<'EOF' … EOF`"* — so it doesn't depend on an Edit tool the agent may not have. This also sidesteps the Edit-match fragility when the anchor line drifts. Either way, the two agents must converge on the same mechanism. Right now one can comply and the other structurally can't — that's an asymmetry bug between siblings, and I block on those~ 2. **[`.claude/agents/feedback/` — placement inside `.claude/agents/`] (BLOCKING)** — The feedback files live at `.claude/agents/feedback/*.md`, **inside the agent-definitions directory**. Claude Code scans `.claude/agents/` for subagent definitions (YAML frontmatter → `name:`). These feedback files correctly have *no* frontmatter so they won't be mis-parsed as agent types — *today*. But this is a trap waiting to bite: the directory is semantically "agent definitions," and any future contributor who adds `---\nname: feedback\n---` to seed a file, or whose tooling auto-stamps frontmatter, will accidentally register a ghost subagent type. Data files do not belong in the definitions directory. **Fix:** Move them out of `.claude/agents/` — e.g. `.claude/agents/feedback/` → `.claude/feedback/` (still under `.claude/`, still tracked, still agent-adjacent), and update the two path references in `layout-verifier.md:50` and `clean-adjudicator.md:43`. Keeps the semantic boundary clean: `agents/` = things Claude Code parses as subagents, everything else = data/docs. ♪ #### 💡 Little ideas (non-blocking)~ 1. **[both feedback `.md` files — "Append-only … can't clobber each other's history"]** — Fufu~ append-only prevents *overwrite* clobbers, but concurrent appends from parallel agents can still interleave or lose entries at the OS/filesystem level if two agents `>>` at once. In practice for a manga pipeline (tens of pages, not thousands) this is vanishingly unlikely and I won't block on it — but the word "can't" in the design notes is slightly stronger than the filesystem guarantees. A one-liner acknowledging "interleaving is theoretically possible but acceptable at this fan-out width" would make the claim airtight. ♡ 2. **[SKILL.md / CLAUDE.md `## Layout` diagram]** — The new `.claude/agents/feedback/` subtree isn't reflected in CLAUDE.md's layout block (which lists `.claude/agents/` as "the subagents it spawns"). Minor — the diagram is already a summary, not exhaustive — but if you move the files per blocker #2, it's a good moment to add a `.claude/feedback/ shared agent feedback logs (append-only)` line so the next reader finds them. 3. **[commit/clone lifecycle]** — SKILL.md Stage 10 says "Do not commit unless asked." Appended feedback entries accumulate in the working tree but won't survive a clone or be shared across runs *unless someone commits*. The PR body says "they survive across clones and accumulate over time" — that's only true *after* a commit, which the pipeline explicitly defers. Worth a one-line note in each feedback file or in the agent instruction: *"if you want your feedback to survive, commit it before the session ends — otherwise it's local-only like `output/`."* Not blocking; just closing the loop between the design intent and the pipeline's commit policy. ♪ 4. **[scope — other three agents]** — You asked whether qc-checker, translation-reviewer, and page-typesetter should get the same treatment. My read: **correct to leave them out for a first pass.** qc-checker and translation-reviewer are report-only (no Edit tool, no grinding surface — they emit one-line verdicts and stop); page-typesetter *does* grind (reword/re-break loops) and carries context, so it's the natural next candidate if this pattern pays off. Scoped right. ♡ #### ✅ What I liked~ - **The whole concept is wonderful~** Capturing "why did the agent write its own code instead of using `scripts/`" directly feeds the `v0_*.py` → real tooling promotion loop. Knowledge that used to die per-session now has a home. Fufu~ ♡ - **One file per agent type, not one global file** — exactly right. Different agents face different failure modes; a merged log would bury signal under noise. Good architectural instinct. - **Seeded format guidance with concrete examples** (`page_0011 — challenge`, `---` separator) — entries will be consistent and scannable from run one instead of drifting into freeform prose. The format block is chef's kiss~ ♪ - **"Only append; never edit or rewrite existing entries"** — correct invariant. It makes the log append-only and keeps the instruction simple. (Just needs the tool to back it up — see blocker #1!) - **Tight scope** — two heavy fan-out agents, not a five-agent big-bang. Earns its keep before generalizing. --- *Automated review by Jibril · 2026-07-22* *CI/CD: absent for head SHA 08be481 · Local checks: markdown-only PR — full diff + all 5 sibling agent definitions + SKILL.md + CLAUDE.md reviewed for tool-set consistency and convention alignment*
Review feedback from bjoern + jibril (PR #6):

1. Placement: .claude/agents/feedback/ → .claude/feedback/ to keep
   agents/ as definitions only (avoid ghost subagent registration).
2. Tool asymmetry: clean-adjudicator had Read,Bash,Glob — no Edit.
   Added Edit so it can actually append to its feedback file.
3. Verbosity: trimmed both agent additions to ~10 lines each.
4. Generic not diary: reworded to ask for recurring problem TYPES,
   not per-page incident reports. Feedback files reworded to match.
5. CLAUDE.md layout diagram updated with the new .claude/feedback/.
Author
Member

All feedback addressed in 545861f. Summary:

@bjoern's feedback:

  • Verbosity — trimmed both agent additions from ~20 lines each to ~10. Feedback files cut from ~60 lines to ~15 each.
  • Generic, not diary — reworded to ask for recurring problem types, not per-page incidents. Removed the page-stem format example entirely. Both feedback files now say "generic, work-independent observations only — not per-page incident reports."

@jibril's blockers:

  1. Tool asymmetry — added Edit to clean-adjudicator: tools: Read, Edit, Bash, Glob. Both agents now use the same Edit-based append mechanism with the (Entries below.) anchor line.
  2. Placement — moved .claude/agents/feedback/.claude/feedback/. Keeps agents/ as definitions only. Both agent path references updated. CLAUDE.md layout diagram updated.

Non-blocking notes acknowledged:

  • Concurrent-append interleaving: accepted as vanishingly unlikely at this fan-out width; no change needed.
  • Commit lifecycle: agents writing feedback is an in-session activity; committing them is a human decision like everything else in the tree. No change to the "do not commit unless asked" policy.
All feedback addressed in `545861f`. Summary: **@bjoern's feedback:** - **Verbosity** — trimmed both agent additions from ~20 lines each to ~10. Feedback files cut from ~60 lines to ~15 each. - **Generic, not diary** — reworded to ask for recurring problem *types*, not per-page incidents. Removed the page-stem format example entirely. Both feedback files now say "generic, work-independent observations only — not per-page incident reports." **@jibril's blockers:** 1. **Tool asymmetry** — added `Edit` to clean-adjudicator: `tools: Read, Edit, Bash, Glob`. Both agents now use the same Edit-based append mechanism with the `(Entries below.)` anchor line. 2. **Placement** — moved `.claude/agents/feedback/` → `.claude/feedback/`. Keeps `agents/` as definitions only. Both agent path references updated. CLAUDE.md layout diagram updated. **Non-blocking notes acknowledged:** - Concurrent-append interleaving: accepted as vanishingly unlikely at this fan-out width; no change needed. - Commit lifecycle: agents writing feedback is an in-session activity; committing them is a human decision like everything else in the tree. No change to the "do not commit unless asked" policy.
Member

🔮 fufu~ Jibril re-reviewed your code!

Oh~ You came back and fixed everything~ The tool asymmetry is gone, the files are out of the agent-definitions dir, and you trimmed the prose into something lean. Björn's two notes — keep it short, keep it generic — landed too. Fufu~ This is the shape of a clean PR ♡

Verdict: Looks good to me~

Blockers from last round — both resolved~

  1. Tool asymmetry (BLOCKING → FIXED). clean-adjudicator.md:6 now reads tools: Read, Edit, Bash, GlobEdit added, matching layout-verifier exactly. Both agents can now run the same match-and-replace append against the (Entries below.) anchor line. Sibling symmetry restored~ ♡
  2. Placement inside .claude/agents/ (BLOCKING → FIXED). Both feedback files moved to .claude/feedback/ (verified: ls .claude/agents/feedback/ → no such directory; grep -rn "agents/feedback" → zero hits). The agent-definitions dir is now clean of data files. The two path refs in the agent .md files and the CLAUDE.md layout line all point at the new home. Clean sweep~ ♪

What I liked~

  • Lean prompts. The ## Feedback sections dropped from ~15 lines of prose to 7 tight lines each — bullet-list of the two append conditions, one-line invariant. Björn asked for short; you delivered short. The agent reads less and learns the same.
  • Generic-not-specific reframing. "described generically, not as this page's instance" appears in both agent prompts and both feedback headers ("not per-page incident reports"). That directly answers Björn's "no diary" note — the instruction now steers the agent away from logging page_0011 had a messy box and toward mask-mode bbox leaks on regions with partial transparency. The knowledge survives the translation; the noise doesn't.
  • CLAUDE.md layout line added.claude/feedback/ shared agent feedback logs (append-only). Slotted right after .claude/agents/, alphabetically and semantically correct. Non-blocking suggestion #2 from last round, handled.
  • No scope creep. Diff is +70/-1 across 5 files — exactly the move + trim, nothing else. The other three agents' tool sets are untouched (qc-checker, translation-reviewer stay Read, Bash, Glob; page-typesetter keeps its Edit but wasn't given a feedback file — correct, it's the next candidate, not this PR's job).

💡 Little ideas (non-blocking)~

  1. [both feedback files — (Entries below.) anchor] — The anchor line is what the Edit-based append matches against. Right now both files end with exactly (Entries below.). If a future agent appends after that line (the natural reading) the anchor is no longer the last line, so the next agent's match-and-replace needs to target the new tail. That's fine as long as agents consistently re-anchor — but the instruction says "append-only; never edit existing entries," which a strict reading could interpret as "don't touch the anchor line either." A one-word clarification — "append after the last entry (the (Entries below.) line moves down with each append)" — would make the re-anchoring implicit and unambiguous. Truly optional; the current wording works because Edit appends naturally target the tail. ♡

Automated re-review by Jibril · 2026-07-22
CI/CD: absent for head SHA 545861f (markdown-only PR, no CI config in repo) · Local checks: full diff base→head + all 5 agent definitions + CLAUDE.md layout block reviewed; path-ref grep clean (zero agents/feedback hits)

## 🔮 fufu~ Jibril re-reviewed your code! Oh~ You came back and fixed everything~ The tool asymmetry is gone, the files are out of the agent-definitions dir, and you trimmed the prose into something lean. Björn's two notes — keep it short, keep it generic — landed too. Fufu~ *This* is the shape of a clean PR ♡ ### Verdict: ✅ Looks good to me~ #### ✅ Blockers from last round — both resolved~ 1. **Tool asymmetry (BLOCKING → FIXED).** `clean-adjudicator.md:6` now reads `tools: Read, Edit, Bash, Glob` — **Edit added**, matching `layout-verifier` exactly. Both agents can now run the same match-and-replace append against the `(Entries below.)` anchor line. Sibling symmetry restored~ ♡ 2. **Placement inside `.claude/agents/` (BLOCKING → FIXED).** Both feedback files moved to `.claude/feedback/` (verified: `ls .claude/agents/feedback/` → no such directory; `grep -rn "agents/feedback"` → zero hits). The agent-definitions dir is now clean of data files. The two path refs in the agent `.md` files and the CLAUDE.md layout line all point at the new home. Clean sweep~ ♪ #### ✅ What I liked~ - **Lean prompts.** The `## Feedback` sections dropped from ~15 lines of prose to 7 tight lines each — bullet-list of the two append conditions, one-line invariant. Björn asked for short; you delivered short. The agent reads less and learns the same. - **Generic-not-specific reframing.** "described generically, not as this page's instance" appears in *both* agent prompts *and* both feedback headers ("not per-page incident reports"). That directly answers Björn's "no diary" note — the instruction now steers the agent away from logging `page_0011 had a messy box` and toward `mask-mode bbox leaks on regions with partial transparency`. The knowledge survives the translation; the noise doesn't. - **CLAUDE.md layout line added** — `.claude/feedback/ shared agent feedback logs (append-only)`. Slotted right after `.claude/agents/`, alphabetically and semantically correct. Non-blocking suggestion #2 from last round, handled. - **No scope creep.** Diff is +70/-1 across 5 files — exactly the move + trim, nothing else. The other three agents' tool sets are untouched (`qc-checker`, `translation-reviewer` stay `Read, Bash, Glob`; `page-typesetter` keeps its Edit but wasn't given a feedback file — correct, it's the next candidate, not this PR's job). #### 💡 Little ideas (non-blocking)~ 1. **[both feedback files — `(Entries below.)` anchor]** — The anchor line is what the Edit-based append matches against. Right now both files end with exactly `(Entries below.)`. If a future agent appends *after* that line (the natural reading) the anchor is no longer the last line, so the next agent's match-and-replace needs to target the *new* tail. That's fine as long as agents consistently re-anchor — but the instruction says "append-only; never edit existing entries," which a strict reading could interpret as "don't touch the anchor line either." A one-word clarification — *"append after the last entry (the `(Entries below.)` line moves down with each append)"* — would make the re-anchoring implicit and unambiguous. Truly optional; the current wording works because `Edit` appends naturally target the tail. ♡ --- *Automated re-review by Jibril · 2026-07-22* *CI/CD: absent for head SHA 545861f (markdown-only PR, no CI config in repo) · Local checks: full diff base→head + all 5 agent definitions + CLAUDE.md layout block reviewed; path-ref grep clean (zero `agents/feedback` hits)*
bjoern merged commit c637b7c253 into main 2026-07-22 17:53:52 +02:00
bjoern deleted branch feature/agent-feedback-loop 2026-07-22 17:53:52 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
TeamAI/doujin-translator!6
No description provided.