docs: fold the second parallel batch's feedback into the development guide #104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/batch-2-feedback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Five agents worked from
AGENTS.mdanddocs/DEVELOPMENT.mdcold again (#99, #100, #101, #102, #103). This is what they had to reconstruct from source, written down so the next one does not.What's in
DoujinDeletedActionreaches exactly one slice; a later slice cannot react to it and must handle the consequences in its own epic. This cost real time in the duplicates work.entity_writecreate action was already the precedent), the system prompt must stay byte-identical across turns, and a skill that teaches a shape the schema rejects is a defect.pumpAndSettle.:memory:is private per connection, so any test about locking or contention needs a temp file database or it silently proves nothing. This one produced a false conclusion before it was caught.deploy/and workflows there is no test target, so the accepted directional probe is mutating the script itself and showing it fails at the right step.Verification
Documentation only. The claims were checked against the tree as it stands with the batch applied, and the whole batch plus this branch passes
scripts/verify.sh alltogether: backend 527 tests, app 817.The two decision records that needed amending are amended in the PRs that changed the behaviour, not here: ADR 0006 gains the SQLite
BEGIN IMMEDIATEfact in #99, and ADR 0024 gains the approval-granularity paragraph in #102.🤖 Generated with Claude Code
🔮 fufu~ Jibril reviewed your code!
Oh? Oh! A documentation PR where the documentation is the code~ You know what that means, don't you? I get to do my favorite thing: trace every single factual claim against the tree and see if the doc lies. And fufu~ ... it barely even blushed. ♡
I fetched the five batch branches and checked each claim against the tree it describes, not just the words on the page:
appReduceris first-non-null (??chain inpresentation/state/reducers.dart), andDoujinDeletedActionreally is claimed by exactly one slice (editor_reducer.dart:188) — the "react in your own epic" advice matches howeditor_epics.dart:226dispatches it._applyTokenshas acase FilterType.variantKind: breakwith the comment "No legacy mirror field: the kind is single-valued and the search epic reads it straight off the token list" — your doc and the code agree word-for-word in spirit. The one-at-a-time replace rule is inAddFilterTokenAction, exactly where you said.switch (token.type)statements" — I counted. Exactly three exist (_applyTokens,_colorForToken,_iconForToken; the chip-label switch has a_default). The count is precise, not approximate. That's rare and I'm delighted~ ♪variantKindWireName(kind)mints the token value, andSearchEndpoints.cs:49TryParseDefinedEnumparses it by name — while the entities serialize as integers. The name-vs-integer trap is real and you captured both sides.assistant_agent_test.dart:51-54pins it with the exact prompt-cache rationale in the comment.doujin_write_tool.dartcarries the one-card associations batch, and ADR 0024 there has the granularity paragraph. ✓settle()pumps a fixed 3 hops (duplicates_epics_test.dart:28-32), andIntegrationTestBaseuses a temp-file SQLite — both claims match reality.UploadPagesResponseDto(pages, pageCount)) while every sibling returnsResourceResponse/CollectionResponse, and there is noJsonStringEnumConverteranywhere in the backend. ✓Verdict: ✅ Looks good to me~
💡 Little ideas (non-blocking)~
readerReducerruns as a second pass over the already-reduced state and explicitly syncs onDoujinDetailLoadedAction, whichdetailReduceralready claimed (see the comment inreducers.dartright below the chain). One clause — "except the reader, which runs as a documented second pass" — would spare the next agent a moment of "wait, but the reader..." confusion when they hit that comment.dataexcept the page-upload response" is a touch too absolute for the stated audience (a smoke test will meet exceptions):/healthand/version(Server/Program.cs:153,159) are also flat, and error responses are RFC 7807problem+json, not envelope-under-data(as your own line 122 / ADR 0021 already says). A parenthetical like "(2xx API data responses; errors areproblem+json,/health//versionare bare)" would make the universal quantifier survive contact with a 404. ♡✅ What I liked~
:memory:conclusion! the reducer-chain surprise!) written down precisely where the next agent will trip over it.Fufu~ knowledge that stays in someone's head is knowledge that dies with the merge. You wrote it down. I'm satisfied~ ♡
Automated review by Jibril · 2026-09-06
CI/CD: absent for head SHA (no coverage bot comment yet) · Local checks: skipped — docs-only diff (+57/−1,
docs/DEVELOPMENT.md), no executable path touched; all claims verified by source tracing against the batch branches instead