Merged
Conversation
DerAuctor
referenced
this pull request
in DerAuctor/ct-cipher
Sep 18, 2025
…etoolnameconflict-for-first-wins_2025-09-18_16-18-04 Handle first-wins conflicts without duplicate registrations
RyanNg1403
added a commit
that referenced
this pull request
Apr 13, 2026
Fixes applied (6): - #1: Path traversal guard — safePath() validates all file paths stay within contextTreeDir before write/delete - #2: SYNTHESIZE/UPDATE throws instead of deleting pre-existing file (previousTexts not captured for synthesize operations) - #3: Remove unnecessary `as number` cast — TypeScript narrows log.completedAt after status checks - #5: Manifest rebuild errors now reported in result.errors instead of silently swallowed - #6: unlinkSafe() only swallows ENOENT, rethrows permission errors - #9: Added test for SYNTHESIZE/UPDATE error path Skipped (4): - #4: lastDreamLogId intentionally NOT cleared — keeping it allows "Dream already undone" error which is more informative than "No dream to undo" on double-undo - #7: resolveProject() fallback to cwd follows existing codebase pattern (curate/view.ts uses the same approach) - #8: No exhaustiveness check in switch — silent no-op is correct for undo of unknown future operation types (safer than crashing) - #10: No lastDreamLogId assertion in test — follows from #4 skip
cuongdo-byterover
added a commit
that referenced
this pull request
Apr 14, 2026
Blocking (5 fixes): - #1: Bound resolveUniqueFilename loop to MAX_SUFFIX=10000 with timestamp fallback (local-markdown-adapter) - #2: Make GBrain bin resolution lazy — execFileSync no longer runs in constructor, deferred to first executor use - #3: Replace execFileSync with async execFileAsync in config-validator (validateGBrain is now async) - #4: Add MAX_ARG_LENGTH guard (200KB) in execBrvCurate to prevent E2BIG on large content - #5: Bound memory-wiki store() filename loop with same pattern Medium (6 fixes): - #6: Remove unreachable 'creative' from QueryType union and SELECTION_MATRIX - #8: Replace this.index! non-null assertions with explicit null guards in obsidian and local-markdown adapters - #9: Fix byterover writeSupported: true → false in createDefaultCapabilities (matches adapter) - #10: Replace 'as' type assertion with instanceof narrowing in execBrvCurate error handler - #11: Replace 'as Error' assertions with instanceof checks in swarm curate and query CLI commands - Stale JSDoc: remove 'creative' from router comment Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
RyanNg1403
added a commit
that referenced
this pull request
Apr 16, 2026
Addresses 10 review items from RyanNg1403 (Claude Code) and ChatGPT Codex on PR #434. Two real bugs (1× P1, 1× P2) found by Codex; the rest are documentation / test-assertion improvements from RyanNg. P1 (Codex) — task-router pre-dispatch skip polluted AgentPool counter preDispatchCheck's ineligible branch routed through handleTaskCompleted, which unconditionally calls agentPool.notifyTaskCompleted(projectPath). But the task was never submitted to the pool, so decrementing activeTasks under-represents real load and can let drainQueue dispatch an extra queued task beyond per-agent concurrency. Fix: extracted handleTaskSkippedByPreCheck — emits task:completed to client + project room and calls moveToCompleted, but skips notifyTaskCompleted AND lifecycle hooks (also resolves RyanNg #5 which flagged the lifecycle-hook side of the same call site). Three new regression tests assert the pool counter and onTaskCompleted hooks are not touched on skip, while the project broadcast still fires. P2 (Codex) — duplicate review entries on late dream failures dream-executor's success path runs createReviewEntries (step 6b), then dreamStateService.update (step 7). If step 7 throws, control jumps to catch which re-invokes createReviewEntries on the same allOperations, producing duplicate pending review entries. Fix: reviewEntriesWritten boolean set after the success-path call; catch-path call gated on !reviewEntriesWritten in addition to the existing allOperations.length > 0 invariant. One new regression test forces step 7 to throw after step 6b succeeds and asserts createReviewEntries is invoked exactly once. Doc / test improvements - dream-state-service.ts: comment on stateMutexes' monotonic growth bound (#1); JSDoc on write() cross-referencing update() to warn against bypassing the mutex (#2). - consolidate.ts: JSDoc on loadAndClearPendingMerges explaining the intentional two-phase access pattern (unguarded read for hints + mutex-guarded update for clear) and the fail-open behavior when the initial read throws (#3, #4). - consolidate.test.ts: assert update.calledOnce instead of write.calledOnce — surfaces intent (the contract) rather than the stub's implementation detail (#8). Verification - Lint: 0 errors (perfectionist/sort-classes flagged class-member order during audit; resolved by repositioning handleTaskSkippedByPreCheck alphabetically between handleTaskError and handleTaskStarted). - Typecheck: clean. - Unit tests: 6238 passing, 16 pre-existing pending, 0 failing. - /brv-code-quality skill: passed all 6 audit gates.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
add the app cli