Skip to content

Import approved host assets into the REPL session workspace #1052

Closed

Description

@taras

Story

As someone supplying a non-repository asset to Sidekick, I want XMD to ask before importing it into the session workspace and then use its relative workspace path, so the task does not depend on repeated access to an absolute host path.

For example, I supply an HTML mockup from Downloads. XMD shows its source and proposed workspace destination, asks permission, copies it after approval, and gives Sidekick the relative path for this and later rounds.

Current gap

The asset-import experiment in session 4e8302de30ebf45c89949c9a09e81e31 succeeded through manually composed elicitation, an absolute Dir, a text File read/write, and relative readback. The actual comparison in a later round passed.

That demonstrates the approved text-copy path, not a reusable general import capability. Refusal was not exercised, binary assets were not qualified, and the saved experiment source was altered by #1050. A Glob returning no regular files is also not sufficient to establish that a destination is unoccupied.

Contract

  • Files belonging to a repository follow repository acquisition into the workspace. This story imports non-repository assets such as mockups, documents and images.
  • Before reading source content or copying it, show the exact source and proposed destination and obtain approval. Supplying a source path alone is not approval to read it.
  • Copy into the existing session workspace by default. Use a symbolic link or other external reference only when explicitly selected and supported by the existing access rules; a link does not grant access outside the workspace.
  • Return and use a workspace-relative path after import. Subsequent ordinary use reads that copy without another host-source read.
  • Preserve source contents and exact copied bytes, including binary files. Do not route arbitrary assets through UTF-8 text conversion.
  • Refusal, cancellation and unanswered approval perform no source-content read or destination write. Failed copies do not leave a destination that appears successfully imported.
  • Do not silently overwrite existing files, directories or symlinks. Require an explicit destination or replacement decision.
  • Reuse existing elicitation, filesystem, permissions and plugin boundaries where sufficient. Validate any necessary addition through the actual Sidekick import journey.

Acceptance and evidence

Provide runnable REPL experiments for approval and refusal using disposable source files. Cover a text file, a binary file, spaces and Unicode in names, an occupied destination and an interrupted copy. Record which filesystem reads and writes occur; a refusal must show zero source-content reads and zero destination writes.

Compare independently known source and destination bytes, verify the original source remains unchanged, then read the relative destination in a later round and after cold reopen without accessing the original. Change or remove the external source between rounds to distinguish workspace reuse from a hidden second import.

Preserve authored experiment source under #1050 and rerun it with changed inputs and a deliberate mismatch. Reports distinguish PASS, FAIL, BLOCKED and NOT RUN rather than treating unexercised refusal or binary support as proven.

Relationships

#975 owns the already-created session workspace. #777 owns approval for Plan information requests; reuse applicable permission behavior without broadening that issue into REPL asset acquisition. #1050 owns preservation of the reusable experiment source.

Workspace preparation before feature work can compose this import with repository acquisition later; this story does not add an orchestration preparation phase.

Owner: Main Orchestrator, queued after #1051. UX design for the approval interaction uses the existing Claude Design process when available. This queue assignment transfers future delivery ownership from Integration; original experiment evidence remains with its original sessions and is reused without replaying completed work.

Activity

  1. added
    enhancementNew feature or request
    needs-uxNeeds UX design or interaction work; route the UX task to Claude Design.
    on Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-uxNeeds UX design or interaction work; route the UX task to Claude Design.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions