Commit eee3753
committed
fix: dreamer merge honors workspace per-category sharing inside a workspace (D1)
The dreamer is the cross-PROJECT merge superuser (#5971) — its merge loop
supersedes each source under its own identity and reconciles every affected
project's m[1]. That power is correct OUTSIDE a workspace. But inside a workspace,
per-category sharing is the user's explicit privacy boundary, and the visibility
check sat only inside the non-dreamer branch — so the dreamer could merge
(supersede) a FOREIGN member's memory in a NON-shared category (e.g. a workspace
sharing only CONSTRAINTS, dreamer merges a foreign ARCHITECTURE memory), crossing
that boundary.
Fix: when the caller IS the dreamer AND it's operating in a workspace
(identities.length > 1), gate merge sources on memoryVisibleToTool — own→always,
foreign-shared-category→ok, foreign-non-shared→blocked. Outside a workspace the
dreamer's cross-project merge is unchanged (#5971 intact; the existing
"merging across identities" test still passes). Mirrored in Pi.
+2 OpenCode tests (dreamer blocked on foreign non-shared; allowed on foreign
shared, both inside a workspace). A4 in AUDIT-KNOWN-ISSUES updated with the
workspace refinement.
Gate: plugin ctx-memory 42/0 (+2), Pi ctx-memory 11/0, Pi tsc clean.1 parent e5737f5 commit eee3753
4 files changed
Lines changed: 111 additions & 3 deletions
File tree
- docs
- packages
- pi-plugin/src/tools
- plugin/src/tools/ctx-memory
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
59 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
64 | 72 | | |
65 | 73 | | |
66 | 74 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
484 | 484 | | |
485 | 485 | | |
486 | 486 | | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
487 | 502 | | |
488 | 503 | | |
489 | 504 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
582 | 582 | | |
583 | 583 | | |
584 | 584 | | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
585 | 656 | | |
586 | 657 | | |
587 | 658 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
503 | 503 | | |
504 | 504 | | |
505 | 505 | | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
506 | 520 | | |
507 | 521 | | |
508 | 522 | | |
| |||
0 commit comments