Bind the declaration to a narrow scope

Record a repository reference, full revision, fixture text, and SHA-256 digest in the same synthetic declaration. Require a synthetic contact/purpose/channel tuple, authoritative preference source, two declared preparation routes, a hold when the current preference is unknown, and a hold for the withdrawn-preference fixture state.

Declaration It does not prove
Digest-bound fixture text A production repository was inspected
Source and route inventory Every sender has the same behavior
Fail-hold rule A real message was stopped
Reviewer field A human approved the change

Run the local gate

node --test sites/odexing.com/evidence/P237/preference-suppression-gate.test.mjs

The gate was exercised on Node.js 22.18.0. It rejects altered fixture text, a non-synthetic boundary, a repository, revision, or scope that is not bound to the declared text, missing route reconciliation, and any declared unknown preference or withdrawn preference rule other than exact hold, including a contradictory declared send rule. It also rejects a missing reviewer or rollback. It neither reads a repository nor evaluates policy semantics beyond those declared fixture rules; it does not call a provider. A passing declaration is only enough to start human review.

Review the actual route map

Ask the policy owner and platform maintainer to identify authoritative input, allowed purpose/channel scope, all preparation routes, queued-work behavior, correction, and rollback for the real environment. Keep the change out of merge when any route or scope is inferred. For a broader authorization-change gate, see Gate an Agent-Generated Authorization Change Before Merge. This gate does not determine a lawful basis, classify communications, or approve a merge.

Verify before human review

  • Run the digest-bound synthetic gate against the declared fixture.
  • Ask a named platform maintainer to inspect the real scope, route map, holds, correction path, and rollback.
  • Do not merge when any source, route, or fail-hold rule is inferred.

The local gate does not inspect a production repository or approve a sender-policy change.