Skip to content
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,33 @@ The payload is inactive and unqualified. It does not call Claude Code, invoke a
model, use a credential or network, write a target, publish, or activate a
profile.

## Inactive local Git materializer protocol

`adapters/local-git-materializer/v1/protocol.jq` defines the pure input, receipt,
and stage-result boundary for the existing portable-core v2
`core.forge.materialize-candidate.v2` capability. It validates a complete profile,
resolved profile, manifest set, exact stage request, materialization contract, and
patch payload links before projecting a canonical path-free receipt and core-valid
result. The caller first canonicalizes and hashes both payloads, supplies those
verified content-and-digest pairs in the trust context, and keeps raw payloads
separate; changed bytes are rejected before any projection.

Successful result projection likewise requires the raw materialization receipt and
its caller-verified content-and-digest pair. The protocol rechecks the receipt's
request, attempt, source, candidate, path count, and changed/no-change relation
before its digest may back passing evidence.

This stage contains no materialization executable. Its fixture builder is test-only
and creates synthetic JSON under a caller-owned test directory; it is not a product
execution seam. The protocol cannot read a repository, write a candidate, invoke a
hook or filter, use a credential or network, contact a provider, or perform an
external effect.

A later runtime PR can consume this exact protocol and test fixture without copying
them. That PR must separately prove the physical Git and scratch boundaries before
any manifest or profile may bind the package. Nothing here is qualified, selected,
installed, or activated.

## Inactive dormant publisher normalizer payload

`adapters/dormant-publisher/v1/normalize.jq` validates one bounded publisher
Expand Down
24 changes: 24 additions & 0 deletions RESTORE.md
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,30 @@ The pure jq payload is inactive, offline, and unqualified. It does not call Clau
Code, invoke a model, use a credential or network, write a target, publish, or
activate a profile.

Restore the three paths in the manifest's inactive local Git materializer protocol
block, then run:

```sh
bash scripts/test/local-git-materializer-protocol.test.sh
```

This builds only synthetic JSON fixtures. It validates the exact portable-core v2
profile, request, manifest, contract, payload, receipt, and result relations. The
negative matrix rejects malformed, stale, duplicate, relabelled, unsafe-path,
expanded-mode, and weakened-limit inputs, and repeat checks require canonical
output. It also requires caller-verified content-and-digest payload pairs, binds the
source repository, commit, and tree to the request, enforces patch and changed-path
limits, and revalidates the envelope before every projection. A stage result also
requires a caller-verified receipt pair whose request, attempt, source, limits, and
changed/no-change outcome all match before the receipt digest can back passing
evidence.

There is no materialization executable in this stage. Restoring it cannot read or
write a Git repository, create a candidate, run provider tooling, use a credential
or network, grant authority or qualification, or perform an external effect. A
later runtime PR may consume the protocol and test fixture; only a still-later
assembly may add a manifest after the complete package has a durable main commit.

Restore the two paths in the manifest's inactive dormant publisher normalizer
payload block, then run:

Expand Down
Loading