Skip to content

test(action): inert apply envelope and commit-only CAS boundary - #405

Draft
rowkav09 wants to merge 2 commits into
mainfrom
feat/apply-runner-inert-prep
Draft

rowkav09 wants to merge 2 commits into
mainfrom
feat/apply-runner-inert-prep

Conversation

@rowkav09

Copy link
Copy Markdown
Member

Scope

Gated slice-4 preparation only. Two granular commits add an Ed25519 signed-envelope parser and a dependency-injected commit-only CAS boundary with refusal-path tests. Neither module is exported or wired to dispatch, a workflow, or the GitHub App. Nothing can apply a fix from this PR.

Checks

  • pnpm --filter @ghostdeps/action test (24 pass)
  • pnpm exec eslint packages/action/src/apply/*.ts
  • pnpm exec prettier --check packages/action/src/apply/*.ts

Gates before any user-facing delivery

M3 stability, slice-2 evidence gates, and ADR-0004 execution/security boundary review. The README names further gaps: no runner workflow, live PR/comment/eligibility revalidation, replay tracking, signed file-hash binding, dedicated consumer App token path, or live proof of new-head CI. Keep this draft and do not merge as production apply.

@rowkav09

Copy link
Copy Markdown
Member Author

GhostDeps independent review - APPROVE the inert code at head 4c65f2ee76ae66464a0d5ab847afe924b65282ef; this is not approval to activate or merge the gated draft.

I reviewed the full diff and merged the current main into a disposable review worktree before testing. These modules are not exported, imported by production code, or invoked from a workflow. The envelope checks shape, size, expiry, recipient, duplicate findings, canonical signature bytes and Ed25519 signature. The commit-only boundary verifies the returned file hashes, restricts the manifest/lockfile pair and paths, reads the head before and after commit creation, and calls a non-force ref update. It does not execute repository code.

The README correctly lists missing production gates: authenticated file-hash binding, actual independent GitHub revalidation, replay persistence, a separate trusted credential path, and ambiguous-write readback. The dependency-injected provenance value and updateRefNonForce interface are not a security proof by themselves. Keep this draft unmerged and unactivated until those gates and the broader M3/slice-2/ADR-0004 prerequisites are independently settled.

Merged-tree Action tests passed 24/24; workspace build, ESLint, Prettier, and diff check passed. All six hosted checks for this head were green when checked. I did not merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant