Skip to content

Studio: pattern-set modal — course-repo source, 'Add referenced', commit set to protocol folder (library → colocation) #150

Description

@mbreiser

Context

The library-first workflow (now the lead flow in docs/protocol-pattern-workflow.md) saves patterns to the shared patterns/ library, then builds a protocol referencing them by name. That runs fine on any bench (the library is repo-global), but the protocol is not a self-contained pair: Promote-to-shared copies only the colocated <name>_patterns/ folder, and the repo-side pattern checks (W badges on repo-opened protocols) key off colocation.

Today's workaround (documented in the guide): per pattern, in the Pattern Designer — LOAD ▾ → Open from Repo… → 📚 Shared pattern library → open it → ⇪ SAVE TO REPO… → "A protocol's pattern folder". Clunky for N patterns.

Proposal

A one-click "Collect patterns into this protocol's folder…" action in the Arena Studio (File ▾, Edit view, next to Promote):

  1. Resolve every pattern: name referenced by the current (saved) protocol.
  2. For each name found in patterns/ (and not already in <name>_patterns/): fetch bytes, direct-commit a copy into protocols/<bench-id>/<name>_patterns/.
  3. Skip + report names already colocated; list unresolved names loudly (typo or not yet made).
  4. Same-name-different-content in the destination → hash-compare guard like Promote (refuse, never overwrite silently).

Building blocks all exist: GH.reqGetContents/runBytes/directCommit (path allowlist already covers both areas), RunnerLib-style pattern-name extraction, the Promote flow's hash guard, and registerRepoPatternPreviews to refresh W badges afterwards.

Notes

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions