Skip to content

fix(policy): verify equivalent signed merge origins - #5

Merged
djm81 merged 1 commit into
mainfrom
codex/pr784-attested-merge-identity
Oct 22, 2026
Merged

djm81 merged 1 commit into
mainfrom
codex/pr784-attested-merge-identity

Conversation

@djm81

@djm81 djm81 commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

PR specfact-cli#784 produced an authentic signed native origin, but deployed admission refuses it at origin-source. Its attested workflow merge 21cca82b and live synthetic merge 6636108b have the same reviewed tree and ordered base/head parents, with valid signatures. Their signed payloads encode time zones differently, so their IDs differ.

This correction accepts that equivalent merge case only when both authenticated full commit IDs match, both signatures verify, both trees equal the exact reviewed head tree, and both ordered parent lists are exactly the same distinct base/head pair. Workflow bytes and official attestation verification still bind the actual original signer/source revision.

All existing subject, fourteen-selector mapping, native failure, immutable artifact, human permission/expiry and deployed-policy checks remain enforced. The original exact-head and exact-current-merge paths retain their behavior. Candidate code cannot prepare or grant admission until explicitly deployed. Earlier human approvals cannot transfer to a new head or policy revision.

Validation includes a regression that first failed with Refused: origin-source, separate reversed/duplicate-parent tests that failed before tightening, 264 passing policy tests, formatting/lint checks and genuine read-only verification of the existing signed origin/native ZIP. Independent security review passed the exact evaluator bytes, and the candidate was committed normally without local signing. Evidence remains tied to CI run 39595683488.

This is a proposed protected deployment. Owner approval is required before merging it to main. It does not approve a core merge, waive CI, mutate evidence or authorize local signing. Rollback reverts this correction and restores the existing refusal.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review ✅ Completed 2026-10-21T12:15:42.155045Z 5cd61c4 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@djm81 djm81 left a comment •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent technical review returned PASS for policy5 at 5cd61c4 against b328ace, tree 291b547fc7700e7d1e05ed6857bcda29ab53ebb3. Stable patch 38579fbc924f1c3f639c2313f0879de3cf3871bd and evaluator SHA-256 bdd671842d0f0c1d252a759a7aa8230b2b94d6d97e44bebc760b9b13e7c967f0 were independently verified. Two separate reviewers each passed all 264 policy tests. No blocking technical findings remain.

The added path requires both valid signed commit identities, the exact reviewed tree and identical ordered distinct base/head parents. Actual source/signer attestation, workflow bytes, all 14 selectors and every human/deployment guard remain enforced. Real read-only verification accepted the original signed native origin; the actual candidate deployment check still refuses policy-not-deployed.

This COMMENT records Codex technical evidence only. Protected deployment, a new exact-head human grant and core merging remain separate owner decisions. Signing stays in CI/CD.

@djm81
djm81 merged commit 9f952f1 into main Oct 22, 2026
2 checks passed
djm81 added a commit to nold-ai/specfact-cli that referenced this pull request Oct 22, 2026
PR #782 merged with missing historical Requirements provenance. This
separately requested follow-up enforces an explicit, revision-bound
human admission at producer, fresh execution and final verdict. Raw
native failure remains unchanged, and independent Code Review and all CI
stay required.

- Call the immutable live policy independently at each boundary. Audit
sidecars grant no later authority. An isolated CI job attests the
original native artifact.
- Preserve the eleven dependency cases and three CI controls, with all
fourteen selectors and protected mapping digests unchanged.
- Restore all three current-run evidence transfers by exact artifact ID.
The pinned download action discarded a valid requested rerun ID through
name deduplication. One shared workflow program checks
repository/run/head/name, SHA-256, bounded HTTPS transfer and inert ZIP
extraction before exclusive publication. Existing context survives.

Policy [nold-ai/.github#4](nold-ai/.github#4)
was owner-approved and deployed. Genuine fresh origin verification then
exposed a literal synthetic-merge ID refusal despite identical signed
tree/ancestry. Reviewed correction
[nold-ai/.github#5](nold-ai/.github#5) has green
CI and 264 passing policy tests. Core pins its immutable revision, but
the candidate remains inactive pending explicit owner approval for
protected deployment. Its new path requires both valid signed
identities, the exact reviewed full tree and identical ordered base/head
parents, while retaining actual source attestation. Fresh exact
authority and separate missing-RED admission follow deployed-policy
verification. Previous grants cannot transfer.

Validation includes 179 policy tests, 114 focused core tests,
independent security review with eight additional hostile probe groups,
genuine live exact-ID transfers through the final program, and normal
commit hooks. The required local smart-test gate passed its 111 selected
tests. Full lint, YAML, pinned workflow lint, strict OpenSpec and
unchanged mapping/plan checks pass. New test code has zero review
findings; seven precisely scoped diagnostics in unchanged existing
functions have independently verified baseline exceptions documented in
[TDD
evidence](https://github.com/nold-ai/specfact-cli/blob/c73a9d6d3809ac763edb4eeacb7ad4e2d082e38d/openspec/changes/isolate-semgrep-security-runtime/TDD_EVIDENCE.md).
Final-head CI is running.

Scope is CI, tests and issue #780 specifications. Official packages,
certifi 2026.10.19, core 0.55.11 and the reviewed MCP exception through
4 November 2026 remain as merged. Signing and attestation generation are
CI/CD-only. Core merging and any further protected deployment require
owner approval.

A future dependency-only release starts from published v0.55.4 and
excludes unrelated dev runtime changes. This PR publishes no release.
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