ops: bound automatic Vercel previews to deploy-relevant changes - #638
ndrorchestration wants to merge 13 commits into
Conversation
|
Deployment failed for project dynamicgovernanceagenticformation with the following error: Learn More: https://vercel.com/ndrorchestration?upgradeToPro=build-rate-limit |
|
Deployment failed for project dynamicgovernanceagenticformation with the following error: Learn More: https://vercel.com/ndrorchestration?upgradeToPro=build-rate-limit |
|
Post-#639 dependency checkpoint:
No rebase/integration is being pushed yet because PR #636's current exact-head wave is runner-queued; launching another full validation wave would add avoidable CI contention. Once #636 stabilizes, refresh #638 onto current main and require fresh exact-head evidence before any merge decision. Operational boundary unchanged: preview-quota hygiene only; no scientific/governance transition. |
ndrorchestration
left a comment
There was a problem hiding this comment.
Read-only parked-branch review against exact head 456a7c6d576454c20a23ba8c929e7f21298288f5 found two acceptance questions to resolve when this PR is eventually refreshed. No head change is requested now.
Important — deployment-control self-classification. SAFE_NON_DEPLOY_PREFIXES currently includes the entire scripts/ tree, while the active ignored-build decision program is itself scripts/vercel-ignore-build.mjs. A future change to this control-plane helper can therefore classify its own path as non-deploying. The helper fails safely on missing/invalid Git evidence, but a syntactically valid semantic regression in the helper is precisely the class of change that should not be assumed non-deploying. On refresh, narrow scripts/** to explicitly proven non-deploy subpaths/files or explicitly force-build for scripts/vercel-ignore-build.mjs and any build/deployment-control scripts.
Acceptance risk — ignored status vs DGAF merge policy. Current Vercel documentation confirms that ignoreCommand exit 0 ignores the build and that VERCEL_GIT_PREVIOUS_SHA is the SHA of the last successful deployment (only exposed with an Ignored Build Step). The cumulative diff behavior is conservative and appropriate. However, DGAF's standing policy currently requires terminal external Vercel success for acceptance. Before merging #638, deliberately verify on a non-deploy-only candidate that an ignored Vercel build produces the exact GitHub/Vercel status semantics the repository will accept; do not assume ignored/skipped is equivalent to success under that policy.
I would also keep docs/** / schemas/** on the skip list only after reconfirming they are not build/runtime inputs on the then-current app lineage. The current package.json build command is plain next build, but that alone is not a complete dependency proof.
These are operational hardening findings only. They do not affect #657, accepted freeze state, or scientific authority.
|
Platform-contract note for future reconciliation: Vercel |
2026-09-15 post-#715 reassessment — preserve, do not revive as-isFresh reassessment against protected Two concrete gaps are now established:
A current reconstruction therefore needs one conservative classifier reused by both:
The intended contract remains default BUILD / narrow proven-inert SKIP. Initial skip set: This comment is design/audit provenance only. No current-main implementation has been created from this stale branch yet, and historical validation does not transfer. |
|
Superseded by current-main reconstruction #717. #717 implements the corrected default-BUILD / narrow-SKIP contract from protected main This PR is therefore obsolete as an implementation lane. Closed unmerged; preserve branch/history as provenance and do not delete the ref merely because the PR is closed. |
Purpose
Preserve the deployment-quota hygiene experiment that makes automatic Vercel preview skipping fail safe toward BUILD whenever deployment irrelevance is not proven.
Current disposition — 2026-09-15
DRAFT / HOLD / STALE-LINEAGE. DO NOT MERGE AS-IS.
Current protected
mainis1fb2c665587d5a0e7b213aef1cc5c870097cdc9b. The former #665/quota-block context is historical; Track A has since completed its Epoch 002 blinded collection. The immediate critical path is now #679 retained-byte provenance → pre-lock ledger → dataset-lock evidence.This branch's historical three-file delta remains:
app/lib/vercel-ignore-build.test.tsscripts/vercel-ignore-build.mjsvercel.jsonHistorical validation does not transfer.
Because the active retained-byte evidence preparer binds to exact executing repository
HEAD, do not reconcile or merge this operational lane before the #679 operator checkpoint. It is not a dataset-lock prerequisite.Required design correction before reuse
Use default BUILD / narrow SKIP semantics.
Must force BUILD at minimum:
app/**,api/**,public/**when present,middleware.ts/replacement runtime routing surface,vercel.json, package/lock files, Next/TypeScript/runtime configuration,scripts/vercel-ignore-build.mjs, and all unknown/unmatched root/runtime/config surfaces.Initial SAFE-SKIP candidates should remain limited to explicitly proven-inert surfaces such as
.github/**,docs/**,schemas/**, andtests/**. Do not grant blanketscripts/**skip authority. Missing/invalid SHA evidence, failed comparison, rename ambiguity, mixed inert+deploy-relevant diffs, empty/uncertain comparisons, or classifier uncertainty must force BUILD.Required real acceptance experiment
When this lane is eventually reconstructed from then-current protected
main:Governance boundary
Operational deployment hygiene only. No dataset lock, unblinding, primary-analysis authority, efficacy, High-Assurance status, or scientific-N increment follows.