Skip to content

Define filtered digest contract for scoped mounts #387

Description

@willwashburn

Problem

Scoped multi-path mounts persist a remote-path allowlist and promise that only the selected subtrees are mirrored. The canonical workspace digest is global: the renderer deliberately includes event providers even when they are absent from the supplied provider list. Pulling /digests/* into a scoped mount can therefore disclose summaries from providers outside that allowlist.

Creating an empty digests/ directory plus .skills/activity-summary.md is also unsafe: the skill promises a current digest while no scoped Syncer can maintain it. An honest absence is preferable to a stale artifact with a currency promise.

Unit B of #379 therefore omits both root-level surfaces for scoped topology. Exact mounts are unchanged.

Acceptance criteria

  • Define a filtered digest whose source events are constrained to the caller’s explicit remote-path/provider scope.
  • Make the visibility/consent semantics explicit; opting into a workspace-global digest is not equivalent to opting into filtered metadata.
  • Permit scoped mounts to request and maintain the filtered digest without widening their persisted allowlist.
  • Cover the source-event filter, generated artifact, normal file event emission, and /digests/* non-recursion path.
  • Restore the activity-summary skill only when the mounted digest is actually maintained and current.

Related: #379, split review trail #384.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions