-
Notifications
You must be signed in to change notification settings - Fork 1
docs(authoring): clarify prepublication provenance order #208
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1290,6 +1290,64 @@ Release cutover is explicit: | |
| channel pointer or formula to the last proven version. Never delete or | ||
| overwrite an immutable package/version. | ||
|
|
||
| ### Prepublication provenance and qualification order | ||
|
|
||
| This order clarifies the cutover above and governs subsequent worker contracts. | ||
| It specifies work to implement and verify; it is not evidence of release readiness. | ||
| Distinguish frozen-input provenance from release qualification: | ||
|
|
||
| 1. Freeze both native products at the final accepted integration commit. A | ||
| separate protected job may attest the exact prepared inputs and a fixed | ||
| provenance-only record before execution. This grants no platform acceptance, | ||
| publication permission, or channel eligibility. Preparation stays read-only; | ||
| its candidate/projection/pair byte contracts remain unchanged. | ||
| 2. Authenticate those inputs and package custody before prepublication execution. | ||
| A reviewed production launcher may accept an explicit checksum-bound local | ||
| asset source for this purpose. It must verify the selected product, target, | ||
| source, outer asset and extracted binary through the normal checked cache | ||
| path. Expected digests come from authenticated input provenance in the verified | ||
| package binding, never from a caller-supplied asset-and-digest pair. Reject | ||
| malformed inputs without fallback, and never execute the supplied | ||
| file directly. This capability must be implemented and reviewed first; | ||
| ordinary null-qualified preparation remains non-executable. | ||
| 3. Pack the final npm tarballs once with the authenticated input binding. Keep | ||
| final qualification and execution receipts outside those immutable bytes: | ||
| frozen inputs -> input provenance -> tarballs -> stage receipt -> execution | ||
| receipts -> release qualification -> distribution readbacks -> channels. | ||
|
Comment on lines
+1313
to
+1316
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift 🔎 Supported by static analysis🤖 get_repo_knowledge executed:
Length of output: 17263 🏁 Script executed: #!/bin/bash
set -e
printf '%s\n' '--- plan subsection ---'
sed -n '1290,1345p' docs/STANDARD_FIRST_AUTHORING_ENGINE_IMPLEMENTATION_PLAN.md
printf '%s\n' '--- workflow files ---'
git ls-files '.github/workflows' | grep -E 'npm|release|publish' || true
printf '%s\n' '--- npm workflow ---'
if [ -f .github/workflows/npm-publish.yml ]; then
cat -n .github/workflows/npm-publish.yml
fi
printf '%s\n' '--- release references ---'
rg -n -C 3 'tarball|pack|repack|anonymous|acqui|artifact|publish|readback' docs/RELEASE.md .github/workflows docs/STANDARD_FIRST_AUTHORING_ENGINE_IMPLEMENTATION_PLAN.mdRepository: 777genius/universal-agent-plugins Length of output: 50392 🏁 Script executed: #!/bin/bash
set -e
for f in \
.github/workflows/agentplugins-npm-publish.yml \
.github/workflows/npm-publish.yml \
.github/workflows/release-assets.yml \
.github/workflows/release-preflight.yml \
.github/workflows/npm-runtime-publish.yml
do
if [ -f "$f" ]; then
echo "--- $f ---"
cat -n "$f"
fi
done
printf '%s\n' '--- package files used by npm publisher ---'
git ls-files 'npm/*' 'package.json' | head -80
printf '%s\n' '--- publisher and tarball references in workflow files ---'
rg -n -C 3 'npm publish|npm pack|tarball|artifact|download-artifact|upload-artifact|release asset|checksums|repack|checkout' .github/workflows/agentplugins-npm-publish.yml .github/workflows/npm-publish.yml .github/workflows/release-assets.yml .github/workflows/release-preflight.yml .github/workflows/npm-runtime-publish.ymlRepository: 777genius/universal-agent-plugins Length of output: 50389 Make all npm publishers consume the recorded tarball.
🤖 Prompt for AI Agents |
||
| Do not embed a future qualification digest in a tarball whose execution | ||
| receipt must itself be included in that qualification. | ||
| 4. Require all twelve native product/target lanes and authenticated public-packed | ||
| acceptance before qualification signing or native release publication. Public | ||
| acceptance includes actual installed launchers, declared host/Node support, | ||
| genuine production installer dry-run and lifecycle, preservation/parity, and | ||
| the complementary ten-project/thirty-plan gate. Help or injected planner | ||
| success cannot replace distributed installer success. Missing lanes remain | ||
| unresolved; they never become skipped successes. | ||
| 5. After qualification and both native release readbacks, install those identical | ||
| npm tarballs from authenticated staging artifacts into fresh disposable homes, | ||
| checking their recorded digests without packaging from a checkout. Before | ||
| publishing either npm package, run their production launchers without the local | ||
| asset source and verify anonymous native downloads from the canonical public | ||
| GitHub release URLs. This is not a prepublication npm-registry download. Both | ||
| publishers verify the staged tarball SHA256, SRI and SHA1 and publish that exact | ||
| file without repacking. Require both registry provenance/readbacks before pair | ||
| channel promotion. Preserve the repository-wide latest release policy needed | ||
| by historical kit launchers; a non-default release is still a public effect. | ||
|
|
||
| Every admitted receipt binds the exact source and signer workflow revision, | ||
| completed run/attempt, artifact identity/digest, subjects and evidence closure. | ||
| Extract the same checked archive bytes. Provenance signatures authenticate input | ||
| custody, not future test results. Cryptographic verifier compatibility requires | ||
| real positive and negative evidence, not supplied fixture JSON. | ||
|
|
||
| No synthetic transport, manufactured cache/assessment qualification, test trust | ||
| flag, command/network-policy relaxation or provider-control workaround satisfies | ||
| these gates. Required process observation and genuine installer services remain | ||
| execution prerequisites. Preserve existing private/v1 contracts and the explicit | ||
| limitations of offline fixture evidence. Native, npm, PyPI, Homebrew and final | ||
| clean-clone gates remain required; this clarification neither reduces scope nor | ||
| opens phases 7-11 before the stable MVP release. | ||
|
|
||
| PyPI remains a launcher/distribution surface, not a second Python | ||
| implementation of the authoring engine. A source distribution must not contain | ||
| a divergent authoring path. | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🛡️ Analyzed with Security Review | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🤖 get_repo_knowledge executed:
get_repo_knowledge 777genius/universal-agent-plugins /tmp/coderabbit-repo-knowledge/777genius-universal-agent-plugins-d8d17cc7/conventionsLength of output: 7623
🏁 Script executed:
Repository: 777genius/universal-agent-plugins
Length of output: 15493
Exploitability: Difficult
CWE: CWE-494 — Download of Code Without Integrity Check
Define the trusted digest source for local assets.
The launcher contract must require the expected digest to come from authenticated provenance. Reject asset-and-digest pairs supplied only by the caller before checked-cache execution.
🤖 Prompt for AI Agents