Commit cae7a4b
fix(core): reject local note creates over existing unindexed files
A DB-first create whose target file already existed on disk but was not yet
indexed (manual write, DB reset, or watcher lag) committed new entity,
note_content, and search rows, then materialization recorded
external_change_detected without overwriting the file or rolling back. The
caller saw "Created" while the markdown kept old content and DB/search
described new content, and the next watcher pass would overwrite the DB with
the stale file, silently losing the write.
Local runtimes (filesystem is the source of truth) now keep the storage
existence check on creates via a new verify_storage_absent_on_create
dependency flag, rejecting with 409 instead of diverging. The previously
uncaught EntityAlreadyExistsError is mapped to a typed conflict rejection.
Cloud keeps DB-first acceptance (flag defaults to False) and reconciles object
storage during materialization.
Addresses the #1002 review comment on accepted_note_mutation_runner create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: phernandez <paul@basicmachines.co>1 parent 96845b0 commit cae7a4b
3 files changed
Lines changed: 52 additions & 1 deletion
File tree
- src/basic_memory
- deps
- indexing
- tests/api/v2
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
706 | 706 | | |
707 | 707 | | |
708 | 708 | | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
709 | 713 | | |
710 | 714 | | |
711 | 715 | | |
| |||
Lines changed: 15 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
290 | 291 | | |
291 | 292 | | |
292 | 293 | | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
293 | 302 | | |
294 | 303 | | |
295 | 304 | | |
| |||
451 | 460 | | |
452 | 461 | | |
453 | 462 | | |
454 | | - | |
| 463 | + | |
455 | 464 | | |
456 | 465 | | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
457 | 471 | | |
458 | 472 | | |
459 | 473 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
386 | 386 | | |
387 | 387 | | |
388 | 388 | | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
389 | 422 | | |
390 | 423 | | |
391 | 424 | | |
| |||
0 commit comments