engineering-process 0.6.1__tar.gz → 0.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {engineering_process-0.6.1/engineering_process.egg-info → engineering_process-0.8.0}/PKG-INFO +125 -27
- {engineering_process-0.6.1 → engineering_process-0.8.0}/PRODUCTION_STANDARD.md +61 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/README.md +123 -26
- {engineering_process-0.6.1 → engineering_process-0.8.0}/VERSIONING.md +89 -14
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/__init__.py +1 -1
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/bundles.py +21 -3
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/cli.py +163 -1
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/command_catalog.py +3 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/contracts.py +1059 -66
- engineering_process-0.8.0/engineering_process/distribution.py +261 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/distribution_verify.py +4 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/evidence.py +324 -2
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/lifecycle.py +733 -24
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/process_graph.py +28 -5
- engineering_process-0.8.0/engineering_process/publication.py +1981 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/release_candidate.py +193 -3
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/requirements-release.txt +2 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/requirements-runtime.txt +1 -0
- engineering_process-0.8.0/engineering_process/skills.py +225 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/syncing.py +191 -16
- {engineering_process-0.6.1 → engineering_process-0.8.0/engineering_process.egg-info}/PKG-INFO +125 -27
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process.egg-info/SOURCES.txt +6 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process.egg-info/requires.txt +1 -0
- engineering_process-0.8.0/examples/automation-process-adoption-policy.json +36 -0
- engineering_process-0.8.0/examples/automation-process-adoption-proposal.json +174 -0
- engineering_process-0.8.0/examples/plan-decision-review-assignment.json +45 -0
- engineering_process-0.8.0/examples/plan-decision-review.json +26 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/plan.json +14 -2
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/project.json +15 -1
- {engineering_process-0.6.1 → engineering_process-0.8.0}/improvement-catalog.json +31 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process-graph.json +18 -3
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/assess-design/SKILL.md +3 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/evolve-process/SKILL.md +6 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/implement-change/SKILL.md +18 -2
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/plan-change/SKILL.md +15 -3
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/publish-change/SKILL.md +42 -16
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/run-change/SKILL.md +10 -4
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/run-change/references/execution.md +64 -2
- {engineering_process-0.6.1 → engineering_process-0.8.0}/pyproject.toml +7 -1
- engineering_process-0.8.0/release.json +53 -0
- engineering_process-0.8.0/schemas/automation-proposal-policy.schema.json +193 -0
- engineering_process-0.8.0/schemas/automation-proposal.schema.json +432 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/evidence-receipt.schema.json +48 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/lifecycle.schema.json +27 -0
- engineering_process-0.8.0/schemas/plan-decision-review-assignment.schema.json +99 -0
- engineering_process-0.8.0/schemas/plan-decision-review.schema.json +81 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/plan.schema.json +88 -3
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/project.schema.json +42 -3
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_cli.py +1 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_contracts.py +216 -1
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_distribution.py +62 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_evals.py +20 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_lifecycle.py +747 -0
- engineering_process-0.8.0/tests/test_publication.py +2232 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_candidate.py +244 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_runtime.py +13 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_schemas.py +12 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_skills.py +90 -1
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_syncing.py +54 -0
- engineering_process-0.6.1/engineering_process/distribution.py +0 -113
- engineering_process-0.6.1/engineering_process/publication.py +0 -871
- engineering_process-0.6.1/engineering_process/skills.py +0 -118
- engineering_process-0.6.1/release.json +0 -46
- engineering_process-0.6.1/schemas/automation-proposal-policy.schema.json +0 -117
- engineering_process-0.6.1/schemas/automation-proposal.schema.json +0 -223
- engineering_process-0.6.1/tests/test_publication.py +0 -976
- {engineering_process-0.6.1 → engineering_process-0.8.0}/LICENSE +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/MANIFEST.in +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/PROCESS_IMPROVEMENT.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/bundles.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/__main__.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/_download_worker.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/_supervisor_posix.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/_supervisor_windows.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/_windows_job.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/adoption.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/artifact_attestation.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/bootstrap.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/bounded_process.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/diagnostics.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/environment.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/evidence_transport.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/git.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/git_attributes.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/helper_launch.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/impact.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/improvement.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/lifecycle_routes.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/managed.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/markdown.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/recommendation.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/release.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/remote_verification.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/requirements-build.txt +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/requirements-dev.txt +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/runner.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/runtime.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/supervision.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/supplemental.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process/tooling.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process.egg-info/dependency_links.txt +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process.egg-info/entry_points.txt +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/engineering_process.egg-info/top_level.txt +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/adoption-migration.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/automation-policy.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/automation-proposal-policy.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/automation-proposal.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/change.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/improvement-catalog.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/improvement-disposition.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/improvement-reproduction.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/improvement-resolution.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/improvement-signal.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/recommendation-resolution.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/recommendation-review-assignment.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/recommendation-review.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/recommendation.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/release-change.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/release.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/remote-verification-evidence.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/remote-verification-request.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/examples/review.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/build-frontend/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/build-frontend-foundation/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/change-api/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/cross-repo-change/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/define-change-contract/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/design-module/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/finish-change/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/govern-ui/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/implement-module/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/implement-use-case/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/integrate-mcp/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/maintain-docs/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/review-change/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/run-project-command/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/specify-use-case/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/process_assets/skills/verify-change/SKILL.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/adoption-migration.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/automation-policy.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/change.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/improvement-catalog.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/improvement-disposition.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/improvement-reproduction.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/improvement-resolution.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/improvement-signal.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/process-graph.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/process-lock.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/recommendation-resolution.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/recommendation-review-assignment.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/recommendation-review.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/recommendation.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/release-change.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/release.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/remote-verification-evidence.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/remote-verification-request.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/review.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/reviewer-attestation.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/supplemental-verification.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/schemas/verification.schema.json +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/setup.cfg +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/templates/AGENTS.process.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/templates/PULL_REQUEST_TEMPLATE.md +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/templates/adopt-process-windows-job.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/templates/adopt-process.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_adoption.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_adoption_runner.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_artifact_attestation.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_bootstrap.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_bounded_process.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_bundles.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_completed_release_dispatch.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_completion_evidence_transport.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_diagnostics.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_distribution_verify.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_environment.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_impact.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_improvement.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_process_graph.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_process_install.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_publish_event.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_pypi_publication.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_recommendation.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_candidate_boundary.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_completion_identity.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_evidence_restore.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_evidence_selection.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_preparation.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_release_qualification.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_remote_verification.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_remote_verification_adapter.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_runner.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_self_hosting.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_source_checkout.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_supervision.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_supplemental.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_test_suite.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_tooling.py +0 -0
- {engineering_process-0.6.1 → engineering_process-0.8.0}/tests/test_windows_job.py +0 -0
{engineering_process-0.6.1/engineering_process.egg-info → engineering_process-0.8.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: engineering-process
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Agent-neutral end-to-end engineering lifecycle and deterministic process CLI
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/phuongnse/engineering-process
|
|
@@ -19,6 +19,7 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
Requires-Dist: markdown-it-py==4.2.0
|
|
21
21
|
Requires-Dist: mdurl==0.1.2
|
|
22
|
+
Requires-Dist: pyyaml==6.0.3
|
|
22
23
|
Requires-Dist: regex==2026.7.19
|
|
23
24
|
Provides-Extra: dev
|
|
24
25
|
Requires-Dist: attrs==26.1.0; extra == "dev"
|
|
@@ -175,17 +176,18 @@ Renovate must install and verify a target authority before that target exists in
|
|
|
175
176
|
checkout, and `processctl sync --check` compares those bytes with the pinned
|
|
176
177
|
distribution.
|
|
177
178
|
|
|
178
|
-
For an existing consumer,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
new project configuration, it adds
|
|
179
|
+
For an existing opted-in consumer, Renovate may prepare and publish one complete
|
|
180
|
+
process-adoption proposal before consumer-owner review. The managed runner installs
|
|
181
|
+
the target authority from the complete hash lock outside the checkout and atomically
|
|
182
|
+
updates the process lock and managed assets before PR creation. If the consumer
|
|
183
|
+
chooses or requires new project configuration, it adds
|
|
184
184
|
`.process/adoption-migrations/<target-version>.json`; the installed target authority
|
|
185
185
|
binds the source and target manifest digests, validates the complete target manifest,
|
|
186
186
|
and updates `.process/project.json` in the same rollback transaction. Optional
|
|
187
|
-
capabilities are never inferred. CI and
|
|
188
|
-
|
|
187
|
+
capabilities are never inferred. Consumer CI and its chosen review approve the fully
|
|
188
|
+
materialized checkpoint. Renovate cannot auto-merge it; consumer-owner merge completes
|
|
189
|
+
adoption and no post-merge sync runs. Separately, an agent-host candidate created only
|
|
190
|
+
after lifecycle completion retains normal standing-policy auto-merge.
|
|
189
191
|
|
|
190
192
|
The engineering-process producer repository separately owns its root
|
|
191
193
|
`.gitattributes` policy so tracked text sources and distribution inputs are LF and
|
|
@@ -536,6 +538,48 @@ resolution records a selected valid option but grants no lifecycle completion, m
|
|
|
536
538
|
release, deployment, or adoption authority. Those owning gates remain separate. The
|
|
537
539
|
accepted decision is recorded before dependent work resumes.
|
|
538
540
|
|
|
541
|
+
Projects may separately adopt the `provenance-gated-authored-review` lifecycle policy.
|
|
542
|
+
Under that policy, every new nontrivial authored plan uses schema 3 and is assessed
|
|
543
|
+
before implementation by a genuinely fresh read-only reviewer. The assessment covers
|
|
544
|
+
architecture, authority, compatibility, external mutation, lifecycle order, owner,
|
|
545
|
+
rollout, scope, and trust boundary for the exact contract, plan, clean source,
|
|
546
|
+
authority, policy, author, and reviewer context. A clear assessment permits
|
|
547
|
+
implementation. A decision-required assessment must complete the existing reviewed
|
|
548
|
+
recommendation and owner-resolution chain, with a dedicated invariant binding the
|
|
549
|
+
exact assessment digest:
|
|
550
|
+
|
|
551
|
+
~~~text
|
|
552
|
+
processctl change decision start --project-root . --change-id issue-123 \
|
|
553
|
+
--actor <reviewer> --context <fresh-context> --actor-kind agent \
|
|
554
|
+
--method isolated-context --attested-by <host> \
|
|
555
|
+
--attestation-evidence <bounded-attestation>
|
|
556
|
+
processctl contract validate --kind plan-decision-review \
|
|
557
|
+
plan-decision-review.json
|
|
558
|
+
processctl change decision submit --project-root . --change-id issue-123 \
|
|
559
|
+
--review plan-decision-review.json
|
|
560
|
+
processctl change decision resolve --project-root . --change-id issue-123 \
|
|
561
|
+
--actor <coordinator> --context <coordinator-context> --actor-kind agent \
|
|
562
|
+
--recommendation recommendation.json \
|
|
563
|
+
--assignment recommendation-review-assignment.json \
|
|
564
|
+
--recommendation-review recommendation-review.json \
|
|
565
|
+
--resolution recommendation-resolution.json
|
|
566
|
+
processctl change implement --project-root . --change-id issue-123 \
|
|
567
|
+
--actor <worker> --context <worker-context> --actor-kind agent
|
|
568
|
+
~~~
|
|
569
|
+
|
|
570
|
+
The resolve command is used only for `decision-required`; a clear assessment goes
|
|
571
|
+
directly to `change implement`. Unreviewed prose, risk tiers, heuristics, author
|
|
572
|
+
self-classification, and generator labels are candidate-only and grant no authority.
|
|
573
|
+
A generated bypass is valid only for a core-registered generator whose complete plan
|
|
574
|
+
is exactly recomputed from bounded source-owned inputs and the immutable installed
|
|
575
|
+
authority. Exact generated plans are not universally sent to semantic review. Core
|
|
576
|
+
requires no daemon, scheduler, service, webhook receiver, hosted reviewer platform,
|
|
577
|
+
vendor, model, or proprietary agent API.
|
|
578
|
+
Every later implementation cycle after a finding or clean post-verification source
|
|
579
|
+
drift repeats the assessment with a newly reserved reviewer context bound to the new
|
|
580
|
+
source checkpoint. Earlier assignment, assessment, and owner-decision artifacts stay
|
|
581
|
+
historical and cannot authorize the new cycle.
|
|
582
|
+
|
|
539
583
|
When a schema-3 change selects a project-owned `requiredEvidence` id, local profiles
|
|
540
584
|
alone do not advance it to review. Create the exact no-authority request, run the
|
|
541
585
|
project adapter, and ingest the complete supplemental set first:
|
|
@@ -558,7 +602,7 @@ to the explicit durable failure location before cleanup. Remote artifacts and th
|
|
|
558
602
|
service ids remain lifecycle evidence, not merge, release, deployment, or adoption
|
|
559
603
|
authority.
|
|
560
604
|
|
|
561
|
-
The
|
|
605
|
+
The default agent-host publication order is stricter than a PR-first workflow: implementation
|
|
562
606
|
and every required local and remote profile pass on a clean checkpoint; a consumer-selected independent
|
|
563
607
|
agent or human semantically reviews that checkpoint; findings repeat implementation,
|
|
564
608
|
complete verification, and fresh review until approved; `change finish` records
|
|
@@ -566,6 +610,9 @@ completion; only then may automation push and create the PR. Static policy/secre
|
|
|
566
610
|
checks supplement this review and cannot generate a semantic verdict. With a valid
|
|
567
611
|
standing policy, automation then waits for exact-head/current-base required checks and
|
|
568
612
|
performs the configured merge without a separate human step.
|
|
613
|
+
An opted-in schema-3 Renovate process-adoption proposal is the explicit pre-review
|
|
614
|
+
publication exception; its complete candidate passes protected-base proposal
|
|
615
|
+
validation first, then consumer-owner review and manual terminal merge.
|
|
569
616
|
|
|
570
617
|
Completed local evidence can be moved across machines or attached to a release as a
|
|
571
618
|
bounded receipt. Export and validate it before any explicit prune:
|
|
@@ -644,13 +691,14 @@ without per-action confirmation.
|
|
|
644
691
|
### Controlled automation proposals
|
|
645
692
|
|
|
646
693
|
Completion-before-publication remains the default. A consumer may enable an untrusted
|
|
647
|
-
|
|
648
|
-
the protected base at `.process/automation-proposals.json`.
|
|
649
|
-
shape in `examples/automation-proposal-policy.json
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
694
|
+
automation proposal before completion only through a policy file already present on
|
|
695
|
+
the protected base at `.process/automation-proposals.json`. Schema 1 and schema 2 use
|
|
696
|
+
the shape in `examples/automation-proposal-policy.json`, allow only
|
|
697
|
+
`dependency-update`, require the canonical `lifecycle-completion` check, and retain
|
|
698
|
+
their released human-only and completion-gated meanings. Schema 3 uses
|
|
699
|
+
`examples/automation-process-adoption-policy.json` for the distinct
|
|
700
|
+
`process-adoption` route. Absence, disablement, a branch-only policy, or a policy
|
|
701
|
+
digest mismatch blocks every route.
|
|
654
702
|
|
|
655
703
|
The immutable provider verifier emits one bounded
|
|
656
704
|
`engineering-process-controlled-automation-proposal` report for the exact repository,
|
|
@@ -675,9 +723,9 @@ processctl publication validate-proposal --project-root . \
|
|
|
675
723
|
|
|
676
724
|
This pass proves only that the proposal is safe to expose as untrusted input. It is
|
|
677
725
|
not verification, semantic review, completion, or merge authority. Proposal checks
|
|
678
|
-
remain read-only and receive no secrets
|
|
679
|
-
privileged CI, process-authority, workflow,
|
|
680
|
-
trust-root changes
|
|
726
|
+
remain read-only and receive no secrets. Dependency proposals exclude automerge,
|
|
727
|
+
scripts, plugins, shell execution, privileged CI, process-authority, workflow,
|
|
728
|
+
release, deployment, security-policy, and trust-root changes.
|
|
681
729
|
|
|
682
730
|
The required completion check is absent on every new proposal head. After the exact
|
|
683
731
|
head completes the lifecycle, export its receipt, finalize the managed PR requirements,
|
|
@@ -705,6 +753,53 @@ after the protected base's standing automation policy and exact completion gate
|
|
|
705
753
|
Provider tokens, check APIs, branch protection, retries, and repository selection
|
|
706
754
|
remain consumer-owned adapter behavior.
|
|
707
755
|
|
|
756
|
+
Schema-3 process adoption has a different merge boundary. Renovate may create the PR
|
|
757
|
+
only after its allowlisted managed runner has materialized the complete target: direct
|
|
758
|
+
pin, cross-platform hash lock, process lock, managed files, any declared project
|
|
759
|
+
migration, and every immutable action pin. A protected-base immutable verifier is
|
|
760
|
+
fixed by repository and commit in the opt-in policy. Its evidence binds the producer
|
|
761
|
+
release/tag/commit/attestation, source and target authority versions and digests,
|
|
762
|
+
requirements bytes, exact base/head/path set, migration result, complete managed-file
|
|
763
|
+
set, and exact verifier identity. Workflow changes must be only the declared full-SHA
|
|
764
|
+
action-pin replacements with their release annotations.
|
|
765
|
+
|
|
766
|
+
The protected-base policy also fixes the producer repository. The report binds bounded
|
|
767
|
+
raw release-contract and distribution-attestation bytes, their digests, lifecycle
|
|
768
|
+
receipt identity, complete artifact hashes, and the verifier's exact target
|
|
769
|
+
materialization result. The adapter independently supplies a clean producer checkout
|
|
770
|
+
with the exact tag and origin plus downloaded release artifacts, lifecycle receipt,
|
|
771
|
+
and attestation; report bytes alone never pass. Existing release and
|
|
772
|
+
artifact-attestation validators resolve those objects before the target distribution
|
|
773
|
+
is compared with the complete consumer materialization. Validation also requires the
|
|
774
|
+
target wheel hash in the committed requirements lock and every use of that producer action
|
|
775
|
+
across the complete regular-workflow tree; the protected base must be an ancestor and
|
|
776
|
+
workflow mode may not change. Workflow semantics are read with the pinned maintained
|
|
777
|
+
PyYAML safe loader; the process does not maintain a substitute YAML scanner.
|
|
778
|
+
|
|
779
|
+
For schema 3, add these independently resolved inputs to `validate-proposal`:
|
|
780
|
+
|
|
781
|
+
~~~text
|
|
782
|
+
--producer-root <clean-release-checkout> \
|
|
783
|
+
--producer-artifact-root <downloaded-release-artifacts> \
|
|
784
|
+
--producer-receipt <release-lifecycle-receipt> \
|
|
785
|
+
--producer-attestation <distribution-attestation>
|
|
786
|
+
~~~
|
|
787
|
+
|
|
788
|
+
The schema fixes `automerge` to false, `consumerOwnerMergeRequired` to true, and
|
|
789
|
+
`postMergeMutation` to false. `publication validate-proposal-completion` always rejects
|
|
790
|
+
this kind: lifecycle completion, standing automation, provider state, and a successful
|
|
791
|
+
proposal check cannot convert it to automatic merge. The consumer chooses project
|
|
792
|
+
configuration, commands, verification, review method, and whether to merge. Its owner
|
|
793
|
+
manually merges the reviewed PR; that merge is the terminal adoption cutover and no
|
|
794
|
+
post-merge synchronization runs.
|
|
795
|
+
|
|
796
|
+
This does not alter the ordinary agent-host route. When an agent host completes the
|
|
797
|
+
full lifecycle before it creates a source or adoption PR, the completed exact head may
|
|
798
|
+
still auto-merge under the protected base's standing policy. Origin and publication
|
|
799
|
+
state select the route: an agent-host completed PR is not reclassified as a Renovate
|
|
800
|
+
proposal, and a Renovate process-adoption proposal never inherits completed-source
|
|
801
|
+
auto-merge authority.
|
|
802
|
+
|
|
708
803
|
## Trust boundary
|
|
709
804
|
|
|
710
805
|
The CLI proves structural separation: reviewer actor id and context id must both be
|
|
@@ -791,9 +886,10 @@ fingerprint, source tree, or publication range.
|
|
|
791
886
|
exclusively by their hash-locked `requirements/process.txt`. The action invokes the
|
|
792
887
|
producer-owned installer from its immutable action checkout and never downloads or
|
|
793
888
|
executes helper source from the consumer branch.
|
|
794
|
-
- Versioned JSON schemas define change, plan
|
|
795
|
-
|
|
796
|
-
|
|
889
|
+
- Versioned JSON schemas define change, plan provenance, plan-decision assignment and
|
|
890
|
+
review, verification, review, recommendation, independent recommendation assignment
|
|
891
|
+
and challenge, owner resolution, lifecycle, completion-related artifacts,
|
|
892
|
+
release-change fragments, and the release
|
|
797
893
|
classification contract. The generated Release PR gate binds that contract to the
|
|
798
894
|
exact SemVer increment, package version, latest reachable prior tag, reviewed head,
|
|
799
895
|
identical merge tree, immutable checkpoint, and main ancestry.
|
|
@@ -806,10 +902,12 @@ fingerprint, source tree, or publication range.
|
|
|
806
902
|
readable under their released semantics. GitHub's artifact id and digest complete
|
|
807
903
|
the immutable remote reference; this supplements rather than replaces N-1
|
|
808
904
|
lifecycle evidence.
|
|
809
|
-
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
905
|
+
- Projects without plan-decision opt-in continue using bounded plan schema 2. An
|
|
906
|
+
opted-in project uses plan schema 3 provenance and the pre-implementation gate.
|
|
907
|
+
Selective-impact consumers may add optional capabilities on project schema 3,
|
|
908
|
+
while new integrations use bounded project schema 4. Plan schemas 1 and 2 and the
|
|
909
|
+
pre-existing fields of project schemas 1-3 retain their published validation
|
|
910
|
+
behavior instead of being tightened in place.
|
|
813
911
|
- `release.json` is the single release-identity owner. Governed GitHub tag and title
|
|
814
912
|
are both exactly `v<SemVer>`; package metadata, runtime version, artifact names,
|
|
815
913
|
authorization evidence, and later consumer locks must match it. Public-impact PRs
|
|
@@ -115,6 +115,34 @@ evidence boundaries as completion-blocking.
|
|
|
115
115
|
|
|
116
116
|
## Recommendation validity
|
|
117
117
|
|
|
118
|
+
An opted-in project gates implementation through plan provenance. Every nontrivial
|
|
119
|
+
authored plan receives a fresh read-only semantic assessment for architecture,
|
|
120
|
+
authority, compatibility, external mutation, lifecycle order, owner, rollout, scope,
|
|
121
|
+
and trust boundary. The assignment binds the exact contract, plan, clean source,
|
|
122
|
+
authority, project policy, author, reviewer context, and canonical category set. A
|
|
123
|
+
clear assessment may authorize implementation; a decision-required assessment must
|
|
124
|
+
bind the existing independently reviewed recommendation and explicit owner resolution
|
|
125
|
+
for that exact assessment. Drift in any binding fails closed.
|
|
126
|
+
Each later implementation cycle after a finding or clean post-verification source
|
|
127
|
+
drift requires a newly reserved context and assessment bound to that cycle's source;
|
|
128
|
+
cycle-1 evidence cannot be relabeled or reused.
|
|
129
|
+
|
|
130
|
+
A process-generated plan bypass is accepted only when the immutable installed core
|
|
131
|
+
recognizes its generator and exactly recomputes the complete plan from bounded
|
|
132
|
+
validated source-owned inputs. Generator labels, risk labels, author
|
|
133
|
+
self-classification, heuristic prose scanning, and partial comparison are not
|
|
134
|
+
provenance. Exact generated plans are not universally sent to semantic review, and
|
|
135
|
+
portable core does not introduce a daemon, scheduler, webhook, hosted reviewer
|
|
136
|
+
platform, vendor, model, or proprietary agent API. Unreviewed prose remains
|
|
137
|
+
candidate-only and grants no decision or lifecycle authority.
|
|
138
|
+
|
|
139
|
+
The three possible review boundaries never review one another. Plan-decision review
|
|
140
|
+
assesses the authored plan; recommendation review challenges only the recommendation
|
|
141
|
+
and its digest binding; final lifecycle review assesses implemented source and current
|
|
142
|
+
evidence. Reviewer-of-reviewer, meta-assessment, assessment-of-assessment,
|
|
143
|
+
policy-for-policy, dynamically generated approval chains, and generic workflow
|
|
144
|
+
engines are outside the portable contract.
|
|
145
|
+
|
|
118
146
|
A material owner decision derives recommendation eligibility before optimization.
|
|
119
147
|
Every option assesses every governing hard invariant and references only proven or
|
|
120
148
|
explicitly unproven assumptions. Any violated invariant makes the option invalid; any
|
|
@@ -136,6 +164,15 @@ release, deployment, or adoption authority.
|
|
|
136
164
|
|
|
137
165
|
## Resource and generated-state policy
|
|
138
166
|
|
|
167
|
+
Before implementing a standard format, protocol, parser, serializer, cryptographic
|
|
168
|
+
primitive, or platform integration, evaluate maintained dependencies and supported
|
|
169
|
+
tools at the owning boundary. Prefer a mature dependency when it materially reduces
|
|
170
|
+
custom semantics and satisfies compatibility, licensing, supply-chain, portability,
|
|
171
|
+
and resource-bound requirements; add it through the project's managed dependency and
|
|
172
|
+
lock flow. A custom implementation requires concrete evidence that available
|
|
173
|
+
dependencies cannot meet the accepted contract. Do not recreate a mature standard
|
|
174
|
+
merely to avoid proposing or installing a useful dependency.
|
|
175
|
+
|
|
139
176
|
Every operation over repository-controlled or remote input has explicit limits for
|
|
140
177
|
time, count, individual item size, aggregate size, output, and process descendants.
|
|
141
178
|
Limits fail closed and have regression coverage for success, failure, timeout, and
|
|
@@ -149,6 +186,30 @@ authority, and shares one rollback boundary with the process lock and managed as
|
|
|
149
186
|
Optional capabilities are never inferred, while configuration required by the target
|
|
150
187
|
authority blocks adoption when it is missing or invalid.
|
|
151
188
|
|
|
189
|
+
Proposal merge authority derives from proposal origin and publication state. An
|
|
190
|
+
agent-host review object created only after full lifecycle completion may use standing
|
|
191
|
+
policy auto-merge for its exact approved head. A Renovate `process-adoption` proposal
|
|
192
|
+
is created before consumer-owner review and must instead fix automerge false,
|
|
193
|
+
`consumerOwnerMergeRequired` true, and post-merge mutation false. Lifecycle
|
|
194
|
+
completion, standing policy, provider state, and successful static checks never move
|
|
195
|
+
that proposal onto the agent-host route. The consumer owns review and manually
|
|
196
|
+
authorizes merge; merge is the terminal cutover.
|
|
197
|
+
|
|
198
|
+
Before candidate-owned commands, a protected-base immutable verifier independently
|
|
199
|
+
binds the actual base and exact head, producer release/tag/commit/attestation, source
|
|
200
|
+
and target process identities, requirements bytes, process lock, migration result,
|
|
201
|
+
complete selected managed-file set, grouped full-SHA action-pin-only workflow delta,
|
|
202
|
+
and verifier identity. Producer and verifier repositories are protected-base owned;
|
|
203
|
+
report-controlled release claims never authenticate themselves. A separately supplied
|
|
204
|
+
clean tagged producer checkout, artifacts, receipt, and attestation pass the existing
|
|
205
|
+
release/attestation validators and exact target synchronization. Base must be
|
|
206
|
+
an ancestor of head, and every producer use in the regular-workflow tree moves as one
|
|
207
|
+
unchanged-mode pin group. Partial, stale, inferred, unauthorized, or post-merge-dependent
|
|
208
|
+
candidates fail closed. This portable boundary reuses ordinary Renovate generation,
|
|
209
|
+
managed adoption, consumer CI, review and branch protection. It does not introduce a
|
|
210
|
+
reviewer host, daemon, scheduler, generic workflow engine, dynamically generated
|
|
211
|
+
approval chain, meta-assessment, or reviewer-of-reviewer layer.
|
|
212
|
+
|
|
152
213
|
Released serialized contracts are never tightened in place. A new resource bound or
|
|
153
214
|
meaning-changing requirement uses a new integer schema major with explicit migration;
|
|
154
215
|
historical readers retain their published behavior. A new optional capability may
|
|
@@ -140,17 +140,18 @@ Renovate must install and verify a target authority before that target exists in
|
|
|
140
140
|
checkout, and `processctl sync --check` compares those bytes with the pinned
|
|
141
141
|
distribution.
|
|
142
142
|
|
|
143
|
-
For an existing consumer,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
new project configuration, it adds
|
|
143
|
+
For an existing opted-in consumer, Renovate may prepare and publish one complete
|
|
144
|
+
process-adoption proposal before consumer-owner review. The managed runner installs
|
|
145
|
+
the target authority from the complete hash lock outside the checkout and atomically
|
|
146
|
+
updates the process lock and managed assets before PR creation. If the consumer
|
|
147
|
+
chooses or requires new project configuration, it adds
|
|
149
148
|
`.process/adoption-migrations/<target-version>.json`; the installed target authority
|
|
150
149
|
binds the source and target manifest digests, validates the complete target manifest,
|
|
151
150
|
and updates `.process/project.json` in the same rollback transaction. Optional
|
|
152
|
-
capabilities are never inferred. CI and
|
|
153
|
-
|
|
151
|
+
capabilities are never inferred. Consumer CI and its chosen review approve the fully
|
|
152
|
+
materialized checkpoint. Renovate cannot auto-merge it; consumer-owner merge completes
|
|
153
|
+
adoption and no post-merge sync runs. Separately, an agent-host candidate created only
|
|
154
|
+
after lifecycle completion retains normal standing-policy auto-merge.
|
|
154
155
|
|
|
155
156
|
The engineering-process producer repository separately owns its root
|
|
156
157
|
`.gitattributes` policy so tracked text sources and distribution inputs are LF and
|
|
@@ -501,6 +502,48 @@ resolution records a selected valid option but grants no lifecycle completion, m
|
|
|
501
502
|
release, deployment, or adoption authority. Those owning gates remain separate. The
|
|
502
503
|
accepted decision is recorded before dependent work resumes.
|
|
503
504
|
|
|
505
|
+
Projects may separately adopt the `provenance-gated-authored-review` lifecycle policy.
|
|
506
|
+
Under that policy, every new nontrivial authored plan uses schema 3 and is assessed
|
|
507
|
+
before implementation by a genuinely fresh read-only reviewer. The assessment covers
|
|
508
|
+
architecture, authority, compatibility, external mutation, lifecycle order, owner,
|
|
509
|
+
rollout, scope, and trust boundary for the exact contract, plan, clean source,
|
|
510
|
+
authority, policy, author, and reviewer context. A clear assessment permits
|
|
511
|
+
implementation. A decision-required assessment must complete the existing reviewed
|
|
512
|
+
recommendation and owner-resolution chain, with a dedicated invariant binding the
|
|
513
|
+
exact assessment digest:
|
|
514
|
+
|
|
515
|
+
~~~text
|
|
516
|
+
processctl change decision start --project-root . --change-id issue-123 \
|
|
517
|
+
--actor <reviewer> --context <fresh-context> --actor-kind agent \
|
|
518
|
+
--method isolated-context --attested-by <host> \
|
|
519
|
+
--attestation-evidence <bounded-attestation>
|
|
520
|
+
processctl contract validate --kind plan-decision-review \
|
|
521
|
+
plan-decision-review.json
|
|
522
|
+
processctl change decision submit --project-root . --change-id issue-123 \
|
|
523
|
+
--review plan-decision-review.json
|
|
524
|
+
processctl change decision resolve --project-root . --change-id issue-123 \
|
|
525
|
+
--actor <coordinator> --context <coordinator-context> --actor-kind agent \
|
|
526
|
+
--recommendation recommendation.json \
|
|
527
|
+
--assignment recommendation-review-assignment.json \
|
|
528
|
+
--recommendation-review recommendation-review.json \
|
|
529
|
+
--resolution recommendation-resolution.json
|
|
530
|
+
processctl change implement --project-root . --change-id issue-123 \
|
|
531
|
+
--actor <worker> --context <worker-context> --actor-kind agent
|
|
532
|
+
~~~
|
|
533
|
+
|
|
534
|
+
The resolve command is used only for `decision-required`; a clear assessment goes
|
|
535
|
+
directly to `change implement`. Unreviewed prose, risk tiers, heuristics, author
|
|
536
|
+
self-classification, and generator labels are candidate-only and grant no authority.
|
|
537
|
+
A generated bypass is valid only for a core-registered generator whose complete plan
|
|
538
|
+
is exactly recomputed from bounded source-owned inputs and the immutable installed
|
|
539
|
+
authority. Exact generated plans are not universally sent to semantic review. Core
|
|
540
|
+
requires no daemon, scheduler, service, webhook receiver, hosted reviewer platform,
|
|
541
|
+
vendor, model, or proprietary agent API.
|
|
542
|
+
Every later implementation cycle after a finding or clean post-verification source
|
|
543
|
+
drift repeats the assessment with a newly reserved reviewer context bound to the new
|
|
544
|
+
source checkpoint. Earlier assignment, assessment, and owner-decision artifacts stay
|
|
545
|
+
historical and cannot authorize the new cycle.
|
|
546
|
+
|
|
504
547
|
When a schema-3 change selects a project-owned `requiredEvidence` id, local profiles
|
|
505
548
|
alone do not advance it to review. Create the exact no-authority request, run the
|
|
506
549
|
project adapter, and ingest the complete supplemental set first:
|
|
@@ -523,7 +566,7 @@ to the explicit durable failure location before cleanup. Remote artifacts and th
|
|
|
523
566
|
service ids remain lifecycle evidence, not merge, release, deployment, or adoption
|
|
524
567
|
authority.
|
|
525
568
|
|
|
526
|
-
The
|
|
569
|
+
The default agent-host publication order is stricter than a PR-first workflow: implementation
|
|
527
570
|
and every required local and remote profile pass on a clean checkpoint; a consumer-selected independent
|
|
528
571
|
agent or human semantically reviews that checkpoint; findings repeat implementation,
|
|
529
572
|
complete verification, and fresh review until approved; `change finish` records
|
|
@@ -531,6 +574,9 @@ completion; only then may automation push and create the PR. Static policy/secre
|
|
|
531
574
|
checks supplement this review and cannot generate a semantic verdict. With a valid
|
|
532
575
|
standing policy, automation then waits for exact-head/current-base required checks and
|
|
533
576
|
performs the configured merge without a separate human step.
|
|
577
|
+
An opted-in schema-3 Renovate process-adoption proposal is the explicit pre-review
|
|
578
|
+
publication exception; its complete candidate passes protected-base proposal
|
|
579
|
+
validation first, then consumer-owner review and manual terminal merge.
|
|
534
580
|
|
|
535
581
|
Completed local evidence can be moved across machines or attached to a release as a
|
|
536
582
|
bounded receipt. Export and validate it before any explicit prune:
|
|
@@ -609,13 +655,14 @@ without per-action confirmation.
|
|
|
609
655
|
### Controlled automation proposals
|
|
610
656
|
|
|
611
657
|
Completion-before-publication remains the default. A consumer may enable an untrusted
|
|
612
|
-
|
|
613
|
-
the protected base at `.process/automation-proposals.json`.
|
|
614
|
-
shape in `examples/automation-proposal-policy.json
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
658
|
+
automation proposal before completion only through a policy file already present on
|
|
659
|
+
the protected base at `.process/automation-proposals.json`. Schema 1 and schema 2 use
|
|
660
|
+
the shape in `examples/automation-proposal-policy.json`, allow only
|
|
661
|
+
`dependency-update`, require the canonical `lifecycle-completion` check, and retain
|
|
662
|
+
their released human-only and completion-gated meanings. Schema 3 uses
|
|
663
|
+
`examples/automation-process-adoption-policy.json` for the distinct
|
|
664
|
+
`process-adoption` route. Absence, disablement, a branch-only policy, or a policy
|
|
665
|
+
digest mismatch blocks every route.
|
|
619
666
|
|
|
620
667
|
The immutable provider verifier emits one bounded
|
|
621
668
|
`engineering-process-controlled-automation-proposal` report for the exact repository,
|
|
@@ -640,9 +687,9 @@ processctl publication validate-proposal --project-root . \
|
|
|
640
687
|
|
|
641
688
|
This pass proves only that the proposal is safe to expose as untrusted input. It is
|
|
642
689
|
not verification, semantic review, completion, or merge authority. Proposal checks
|
|
643
|
-
remain read-only and receive no secrets
|
|
644
|
-
privileged CI, process-authority, workflow,
|
|
645
|
-
trust-root changes
|
|
690
|
+
remain read-only and receive no secrets. Dependency proposals exclude automerge,
|
|
691
|
+
scripts, plugins, shell execution, privileged CI, process-authority, workflow,
|
|
692
|
+
release, deployment, security-policy, and trust-root changes.
|
|
646
693
|
|
|
647
694
|
The required completion check is absent on every new proposal head. After the exact
|
|
648
695
|
head completes the lifecycle, export its receipt, finalize the managed PR requirements,
|
|
@@ -670,6 +717,53 @@ after the protected base's standing automation policy and exact completion gate
|
|
|
670
717
|
Provider tokens, check APIs, branch protection, retries, and repository selection
|
|
671
718
|
remain consumer-owned adapter behavior.
|
|
672
719
|
|
|
720
|
+
Schema-3 process adoption has a different merge boundary. Renovate may create the PR
|
|
721
|
+
only after its allowlisted managed runner has materialized the complete target: direct
|
|
722
|
+
pin, cross-platform hash lock, process lock, managed files, any declared project
|
|
723
|
+
migration, and every immutable action pin. A protected-base immutable verifier is
|
|
724
|
+
fixed by repository and commit in the opt-in policy. Its evidence binds the producer
|
|
725
|
+
release/tag/commit/attestation, source and target authority versions and digests,
|
|
726
|
+
requirements bytes, exact base/head/path set, migration result, complete managed-file
|
|
727
|
+
set, and exact verifier identity. Workflow changes must be only the declared full-SHA
|
|
728
|
+
action-pin replacements with their release annotations.
|
|
729
|
+
|
|
730
|
+
The protected-base policy also fixes the producer repository. The report binds bounded
|
|
731
|
+
raw release-contract and distribution-attestation bytes, their digests, lifecycle
|
|
732
|
+
receipt identity, complete artifact hashes, and the verifier's exact target
|
|
733
|
+
materialization result. The adapter independently supplies a clean producer checkout
|
|
734
|
+
with the exact tag and origin plus downloaded release artifacts, lifecycle receipt,
|
|
735
|
+
and attestation; report bytes alone never pass. Existing release and
|
|
736
|
+
artifact-attestation validators resolve those objects before the target distribution
|
|
737
|
+
is compared with the complete consumer materialization. Validation also requires the
|
|
738
|
+
target wheel hash in the committed requirements lock and every use of that producer action
|
|
739
|
+
across the complete regular-workflow tree; the protected base must be an ancestor and
|
|
740
|
+
workflow mode may not change. Workflow semantics are read with the pinned maintained
|
|
741
|
+
PyYAML safe loader; the process does not maintain a substitute YAML scanner.
|
|
742
|
+
|
|
743
|
+
For schema 3, add these independently resolved inputs to `validate-proposal`:
|
|
744
|
+
|
|
745
|
+
~~~text
|
|
746
|
+
--producer-root <clean-release-checkout> \
|
|
747
|
+
--producer-artifact-root <downloaded-release-artifacts> \
|
|
748
|
+
--producer-receipt <release-lifecycle-receipt> \
|
|
749
|
+
--producer-attestation <distribution-attestation>
|
|
750
|
+
~~~
|
|
751
|
+
|
|
752
|
+
The schema fixes `automerge` to false, `consumerOwnerMergeRequired` to true, and
|
|
753
|
+
`postMergeMutation` to false. `publication validate-proposal-completion` always rejects
|
|
754
|
+
this kind: lifecycle completion, standing automation, provider state, and a successful
|
|
755
|
+
proposal check cannot convert it to automatic merge. The consumer chooses project
|
|
756
|
+
configuration, commands, verification, review method, and whether to merge. Its owner
|
|
757
|
+
manually merges the reviewed PR; that merge is the terminal adoption cutover and no
|
|
758
|
+
post-merge synchronization runs.
|
|
759
|
+
|
|
760
|
+
This does not alter the ordinary agent-host route. When an agent host completes the
|
|
761
|
+
full lifecycle before it creates a source or adoption PR, the completed exact head may
|
|
762
|
+
still auto-merge under the protected base's standing policy. Origin and publication
|
|
763
|
+
state select the route: an agent-host completed PR is not reclassified as a Renovate
|
|
764
|
+
proposal, and a Renovate process-adoption proposal never inherits completed-source
|
|
765
|
+
auto-merge authority.
|
|
766
|
+
|
|
673
767
|
## Trust boundary
|
|
674
768
|
|
|
675
769
|
The CLI proves structural separation: reviewer actor id and context id must both be
|
|
@@ -756,9 +850,10 @@ fingerprint, source tree, or publication range.
|
|
|
756
850
|
exclusively by their hash-locked `requirements/process.txt`. The action invokes the
|
|
757
851
|
producer-owned installer from its immutable action checkout and never downloads or
|
|
758
852
|
executes helper source from the consumer branch.
|
|
759
|
-
- Versioned JSON schemas define change, plan
|
|
760
|
-
|
|
761
|
-
|
|
853
|
+
- Versioned JSON schemas define change, plan provenance, plan-decision assignment and
|
|
854
|
+
review, verification, review, recommendation, independent recommendation assignment
|
|
855
|
+
and challenge, owner resolution, lifecycle, completion-related artifacts,
|
|
856
|
+
release-change fragments, and the release
|
|
762
857
|
classification contract. The generated Release PR gate binds that contract to the
|
|
763
858
|
exact SemVer increment, package version, latest reachable prior tag, reviewed head,
|
|
764
859
|
identical merge tree, immutable checkpoint, and main ancestry.
|
|
@@ -771,10 +866,12 @@ fingerprint, source tree, or publication range.
|
|
|
771
866
|
readable under their released semantics. GitHub's artifact id and digest complete
|
|
772
867
|
the immutable remote reference; this supplements rather than replaces N-1
|
|
773
868
|
lifecycle evidence.
|
|
774
|
-
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
869
|
+
- Projects without plan-decision opt-in continue using bounded plan schema 2. An
|
|
870
|
+
opted-in project uses plan schema 3 provenance and the pre-implementation gate.
|
|
871
|
+
Selective-impact consumers may add optional capabilities on project schema 3,
|
|
872
|
+
while new integrations use bounded project schema 4. Plan schemas 1 and 2 and the
|
|
873
|
+
pre-existing fields of project schemas 1-3 retain their published validation
|
|
874
|
+
behavior instead of being tightened in place.
|
|
778
875
|
- `release.json` is the single release-identity owner. Governed GitHub tag and title
|
|
779
876
|
are both exactly `v<SemVer>`; package metadata, runtime version, artifact names,
|
|
780
877
|
authorization evidence, and later consumer locks must match it. Public-impact PRs
|