> ## Documentation Index
> Fetch the complete documentation index at: https://slopsentral.michne.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Source-bound provider projection

> Trace frozen source through typed Pkl projection and sealed provider packages.

The projector turns one accepted authored graph into a complete provider tree.
JavaScript owns file and process effects. Pkl owns provider-specific shapes and text transformations.

## Freeze, evaluate, seal, publish

The [entry point](https://github.com/amichne/slopsentral/blob/main/tools/project-marketplaces.mjs) reads regular source files once and keeps their bytes and Unix modes.
It rejects source symlinks and nonregular resources.
It also captures local evidence outside `source/` when current routing cases cite those files.
Graph and catalog checks run against a temporary copy of those same inputs.

Pkl receives the frozen model through a temporary JSON file.
Evaluation uses isolated module copies, explicit module and resource allowlists, and a bounded timeout.
Exactly Pkl 0.32.0 is accepted.
A missing runtime, wrong version, rejected model, or malformed plan stops the operation.

The first evaluation derives output operations.
The second evaluation seals the digests of actual derived payloads.
The projector rejects changed derived bytes, changed modes, incomplete plugin coverage, and mismatched reference digests.
It reexamines source and routing evidence before publication.
A concurrent input change produces `INPUT_CHANGED`.

The complete tree enters a staging directory beside the requested destination.
The [native publisher](https://github.com/amichne/slopsentral/blob/main/tools/projection/publish_directory.py) uses a no-replace directory operation.
An existing destination, a destination inside the source repository, or unavailable atomic publication stops the operation.
The projector does not download a runtime or replace a previous tree.

## Provider capability limits

| Provider | Native projection | Limit |
| - | - | - |
| Codex | Marketplace, plugins, skills, declared adapters, and provenance | Host trust and live consumption remain host obligations |
| GitHub Copilot | Marketplace and projected plugin payloads | Provider packaging differs from Codex |
| Amp | Complete directory plugins, native skills, and `agent.start` instructions | Hooks, agents, and MCP stay reference-only. Profiles are unsupported |
| Pi | Aggregate and per-plugin packages, native skills and prompts, and hook adapters | Workflow profiles are unsupported. MCP needs an explicit adapter |

The [Pi model](https://github.com/amichne/slopsentral/blob/main/tools/projection/Pi.pkl) projects every accepted catalog plugin.
It needs one shared version and unique hook owners.
The aggregate deduplicates shared skill registrations by name.
Its inventory binds every payload file to a digest.
The retired single-skill Pi package does not describe current projection.

## Generate a provider tree

From a prepared checkout, install the pinned runtime explicitly:

```sh theme={null}
node tools/install-projection-pkl.mjs --out /tmp/slopsentral-pkl-new/pkl
```

Set `PKL_BIN` to that executable.
Use a fresh output path for each provider:

```sh theme={null}
node tools/project-marketplaces.mjs --source . --harness codex --out /tmp/slopsentral-codex-new
node tools/project-marketplaces.mjs --source . --harness github-copilot --out /tmp/slopsentral-copilot-new
node tools/project-marketplaces.mjs --source . --harness amp --out /tmp/slopsentral-amp-new
```

The [projection guide](https://slopsentral.michne.com/maintainers/projection.md) explains installation and provider-specific recovery.
[Focused tests](https://github.com/amichne/slopsentral/blob/main/tools/tests/pkl-projection.test.mjs) exercise accepted source and rejection paths.
Projection proves package construction. [Hook delivery](https://slopsentral.michne.com/knowledge/architecture/hooks.md), [consumer installation](https://slopsentral.michne.com/knowledge/integrations/installation.md), and [release publication](https://slopsentral.michne.com/knowledge/operations/releases.md) need separate evidence.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.