fix(kanban): serialize shared board writes - #73328
Conversation
|
Thanks for addressing a real concurrency gap: current Problems
Suggested changes
Automated hermes-sweeper review. |
SummaryTen PRs address or reference the reported SQLite-corruption complex. The diffs split into broad per-write serialization proposals (#31965, #32461, #35770, #35787, #37292, #37344, #37350, #67477, and #73328) and the merged root-cause fix #71724, which removes raw file-descriptor reads that cancelled live POSIX SQLite locks; later contributor evidence also confounds the original concurrent-WAL-writer premise and identifies #71724 as the better fit for observed real damage. Related pull requests
Duplicates#32461, #35770, #35787, #37292, #37344, #37350, #67477, and #73328 overlap on cross-process Kanban write serialization; #35787 and #37292 are effectively the same mixed Kanban/DingTalk change, while #73328 is the narrower duplicate of #67477. #31965 additionally overlaps the already-closed WAL-initialization chain #33482/#33696; #71724 is complementary root-cause work rather than merely another serialization duplicate. Suggested consolidationKeep #67477 open with a salvage path: rebase it onto the merged #71724 baseline, retain its shared bounded lock coverage for normal writes and close-time checkpoints, and add the contributor-requested Windows contention, bounded-failure, and unlock-on-exception tests. Close #73328 as a duplicate of #67477 despite its keep-open review because its diff covers only Complex graphflowchart TD
classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
classDef best stroke-width:3px,stroke:#b45309
classDef target stroke-width:3px,stroke:#4338ca
I53819(["issue #53819 (open)"])
subgraph Dup31965 ["PRs duplicating each other"]
P31965["PR #31965 (closed)"]
P32461["PR #32461 (closed)"]
P35770["PR #35770 (closed)"]
P35787["PR #35787 (closed)"]
P37292["PR #37292 (closed)"]
P37344["PR #37344 (closed)"]
P37350["PR #37350 (closed)"]
P67477["PR #67477 (open)"]
P73328["PR #73328 (open)"]
end
P73328 -.->|partial| I53819
class I53819 open
class P31965 closed
class P32461 closed
class P35770 closed
class P35787 closed
class P37292 closed
class P37344 closed
class P37350 closed
class P67477 open
class P73328 open
class P67477 best
class P73328 target
click I53819 "https://github.com/NousResearch/hermes-agent/issues/53819"
click P31965 "https://github.com/NousResearch/hermes-agent/pull/31965"
click P32461 "https://github.com/NousResearch/hermes-agent/pull/32461"
click P35770 "https://github.com/NousResearch/hermes-agent/pull/35770"
click P35787 "https://github.com/NousResearch/hermes-agent/pull/35787"
click P37292 "https://github.com/NousResearch/hermes-agent/pull/37292"
click P37344 "https://github.com/NousResearch/hermes-agent/pull/37344"
click P37350 "https://github.com/NousResearch/hermes-agent/pull/37350"
click P67477 "https://github.com/NousResearch/hermes-agent/pull/67477"
click P73328 "https://github.com/NousResearch/hermes-agent/pull/73328"
Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label). Cross-PR triage: Reviewed 10 pull requests and 2 issues in this complex. Each diff was read against this issue; Assessment working set: 155 kB of PR diffs, 33 kB of issue/PR text, 43 kB of discussion (34 comments), 16 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch. |
What does this PR do?
Related Issue
Fixes #
Type of Change
Changes Made
How to Test
Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/AFor New Skills
hermes --toolsets skills -q "Use the X skill to do Y"Screenshots / Logs