engineering-process 0.7.0__tar.gz → 0.9.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.7.0/engineering_process.egg-info → engineering_process-0.9.0}/PKG-INFO +154 -27
- {engineering_process-0.7.0 → engineering_process-0.9.0}/PROCESS_IMPROVEMENT.md +8 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/PRODUCTION_STANDARD.md +73 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/README.md +152 -26
- {engineering_process-0.7.0 → engineering_process-0.9.0}/VERSIONING.md +126 -14
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/__init__.py +1 -1
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/adoption.py +5 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/artifact_attestation.py +20 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/bundles.py +21 -3
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/cli.py +355 -4
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/command_catalog.py +5 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/contracts.py +1533 -201
- engineering_process-0.9.0/engineering_process/distribution.py +261 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/distribution_verify.py +11 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/evidence.py +273 -5
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/lifecycle.py +926 -30
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/process_graph.py +15 -2
- engineering_process-0.9.0/engineering_process/publication.py +1981 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/release.py +23 -3
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/release_candidate.py +86 -18
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/remote_verification.py +18 -5
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/requirements-release.txt +2 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/requirements-runtime.txt +1 -0
- engineering_process-0.9.0/engineering_process/skills.py +225 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/supplemental.py +14 -4
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/syncing.py +191 -16
- engineering_process-0.9.0/engineering_process/transition.py +2606 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0/engineering_process.egg-info}/PKG-INFO +154 -27
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process.egg-info/SOURCES.txt +18 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process.egg-info/requires.txt +1 -0
- engineering_process-0.9.0/examples/authority-transition-evidence.json +42 -0
- engineering_process-0.9.0/examples/authority-transition-request.json +43 -0
- engineering_process-0.9.0/examples/automation-process-adoption-policy.json +36 -0
- engineering_process-0.9.0/examples/automation-process-adoption-proposal.json +174 -0
- engineering_process-0.9.0/examples/bootstrap-adoption-consumption.json +17 -0
- engineering_process-0.9.0/examples/bootstrap-adoption-intent.json +34 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/change.json +29 -1
- engineering_process-0.9.0/examples/protected-transition-policy.json +16 -0
- engineering_process-0.9.0/examples/release-authority-transition.json +32 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/review.json +4 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/improvement-catalog.json +29 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process-graph.json +2 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/define-change-contract/SKILL.md +7 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/evolve-process/SKILL.md +19 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/finish-change/SKILL.md +4 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/implement-change/SKILL.md +18 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/publish-change/SKILL.md +48 -16
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/review-change/SKILL.md +16 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/run-change/SKILL.md +19 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/run-change/references/execution.md +70 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/verify-change/SKILL.md +5 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/pyproject.toml +14 -1
- engineering_process-0.9.0/release.json +87 -0
- engineering_process-0.9.0/schemas/authority-transition-evidence.schema.json +53 -0
- engineering_process-0.9.0/schemas/authority-transition-request.schema.json +67 -0
- engineering_process-0.9.0/schemas/automation-proposal-policy.schema.json +193 -0
- engineering_process-0.9.0/schemas/automation-proposal.schema.json +432 -0
- engineering_process-0.9.0/schemas/bootstrap-adoption-consumption.schema.json +23 -0
- engineering_process-0.9.0/schemas/bootstrap-adoption-intent.schema.json +32 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/change.schema.json +97 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/evidence-receipt.schema.json +43 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/lifecycle.schema.json +156 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/plan-decision-review-assignment.schema.json +25 -0
- engineering_process-0.9.0/schemas/protected-transition-policy.schema.json +23 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/recommendation.schema.json +1 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/release.schema.json +50 -4
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/remote-verification-evidence.schema.json +31 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/remote-verification-request.schema.json +32 -3
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/review.schema.json +82 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/supplemental-verification.schema.json +41 -2
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/verification.schema.json +65 -1
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_adoption.py +31 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_cli.py +1 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_contracts.py +700 -1
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_distribution.py +62 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_evals.py +20 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_lifecycle.py +925 -0
- engineering_process-0.9.0/tests/test_publication.py +2232 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_candidate.py +71 -0
- engineering_process-0.9.0/tests/test_release_plan_continuation.py +115 -0
- engineering_process-0.9.0/tests/test_release_plan_review_dispatch.py +170 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_qualification.py +4 -1
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_remote_verification_adapter.py +42 -0
- engineering_process-0.9.0/tests/test_review_context_handoff.py +150 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_runner.py +95 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_runtime.py +13 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_schemas.py +10 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_self_hosting.py +223 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_skills.py +66 -1
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_syncing.py +54 -0
- engineering_process-0.9.0/tests/test_test_suite.py +496 -0
- engineering_process-0.9.0/tests/test_transition.py +1090 -0
- engineering_process-0.7.0/engineering_process/distribution.py +0 -113
- engineering_process-0.7.0/engineering_process/publication.py +0 -871
- engineering_process-0.7.0/engineering_process/skills.py +0 -118
- engineering_process-0.7.0/release.json +0 -50
- engineering_process-0.7.0/schemas/automation-proposal-policy.schema.json +0 -117
- engineering_process-0.7.0/schemas/automation-proposal.schema.json +0 -223
- engineering_process-0.7.0/tests/test_publication.py +0 -976
- engineering_process-0.7.0/tests/test_test_suite.py +0 -62
- {engineering_process-0.7.0 → engineering_process-0.9.0}/LICENSE +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/MANIFEST.in +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/bundles.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/__main__.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/_download_worker.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/_supervisor_posix.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/_supervisor_windows.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/_windows_job.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/bootstrap.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/bounded_process.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/diagnostics.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/environment.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/evidence_transport.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/git.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/git_attributes.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/helper_launch.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/impact.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/improvement.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/lifecycle_routes.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/managed.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/markdown.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/recommendation.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/requirements-build.txt +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/requirements-dev.txt +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/runner.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/runtime.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/supervision.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process/tooling.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process.egg-info/dependency_links.txt +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process.egg-info/entry_points.txt +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/engineering_process.egg-info/top_level.txt +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/adoption-migration.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/automation-policy.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/automation-proposal-policy.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/automation-proposal.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/improvement-catalog.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/improvement-disposition.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/improvement-reproduction.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/improvement-resolution.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/improvement-signal.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/plan-decision-review-assignment.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/plan-decision-review.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/plan.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/project.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/recommendation-resolution.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/recommendation-review-assignment.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/recommendation-review.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/recommendation.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/release-change.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/release.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/remote-verification-evidence.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/examples/remote-verification-request.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/assess-design/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/build-frontend/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/build-frontend-foundation/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/change-api/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/cross-repo-change/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/design-module/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/govern-ui/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/implement-module/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/implement-use-case/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/integrate-mcp/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/maintain-docs/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/plan-change/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/run-project-command/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/process_assets/skills/specify-use-case/SKILL.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/adoption-migration.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/automation-policy.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/improvement-catalog.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/improvement-disposition.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/improvement-reproduction.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/improvement-resolution.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/improvement-signal.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/plan-decision-review.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/plan.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/process-graph.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/process-lock.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/project.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/recommendation-resolution.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/recommendation-review-assignment.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/recommendation-review.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/release-change.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/schemas/reviewer-attestation.schema.json +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/setup.cfg +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/templates/AGENTS.process.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/templates/PULL_REQUEST_TEMPLATE.md +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/templates/adopt-process-windows-job.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/templates/adopt-process.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_adoption_runner.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_artifact_attestation.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_bootstrap.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_bounded_process.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_bundles.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_completed_release_dispatch.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_completion_evidence_transport.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_diagnostics.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_distribution_verify.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_environment.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_impact.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_improvement.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_process_graph.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_process_install.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_publish_event.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_pypi_publication.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_recommendation.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_candidate_boundary.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_completion_identity.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_evidence_restore.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_evidence_selection.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_release_preparation.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_remote_verification.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_source_checkout.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_supervision.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_supplemental.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_tooling.py +0 -0
- {engineering_process-0.7.0 → engineering_process-0.9.0}/tests/test_windows_job.py +0 -0
{engineering_process-0.7.0/engineering_process.egg-info → engineering_process-0.9.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.9.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
|
|
@@ -462,8 +464,13 @@ processctl change review submit --change-id issue-123 --report review.json
|
|
|
462
464
|
~~~
|
|
463
465
|
|
|
464
466
|
`changes-requested` returns to `change implement`, which starts a new cycle and
|
|
465
|
-
invalidates prior verification and approval.
|
|
466
|
-
|
|
467
|
+
invalidates prior verification and approval. Under the bounded-loop authority this
|
|
468
|
+
is finite: the third changes-requested final-review cycle in one decision window
|
|
469
|
+
records an owner-decision escalation and blocks a fourth autonomous implementation
|
|
470
|
+
cycle. Finding renames, splits, paths, severities and invariant labels do not reset
|
|
471
|
+
the count. The existing decision-required assessment, challenged recommendation and
|
|
472
|
+
owner resolution may open one fresh three-cycle window; they never approve or remove
|
|
473
|
+
findings. `approved` can advance only while the source still matches:
|
|
467
474
|
|
|
468
475
|
~~~text
|
|
469
476
|
processctl change finish --change-id issue-123 \
|
|
@@ -471,6 +478,43 @@ processctl change finish --change-id issue-123 \
|
|
|
471
478
|
processctl change status --change-id issue-123
|
|
472
479
|
~~~
|
|
473
480
|
|
|
481
|
+
### Process authority transition
|
|
482
|
+
|
|
483
|
+
A trust-root adoption uses a clean N-1 control checkout and a separate N+1 candidate
|
|
484
|
+
checkout. Register the exact transition before the target changes any candidate file,
|
|
485
|
+
then let the installed target emit only non-authoritative evidence:
|
|
486
|
+
|
|
487
|
+
~~~text
|
|
488
|
+
processctl change transition register --project-root control \
|
|
489
|
+
--change-id adopt-process-0-9-0 --request transition-request.json \
|
|
490
|
+
--target-checkout target-tag-checkout --artifact-root target-artifacts \
|
|
491
|
+
--release-receipt target-evidence.json --artifact-attestation target-artifacts.json \
|
|
492
|
+
--actor worker --context worker-session --actor-kind agent
|
|
493
|
+
|
|
494
|
+
processctl authority-transition candidate-evidence \
|
|
495
|
+
--candidate-root candidate --target-process-root /installed/target \
|
|
496
|
+
--request transition-request.json --output candidate-evidence.json \
|
|
497
|
+
--actor candidate-materializer --context candidate-session --actor-kind agent
|
|
498
|
+
|
|
499
|
+
processctl change transition ingest --project-root control \
|
|
500
|
+
--change-id adopt-process-0-9-0 --candidate-root candidate \
|
|
501
|
+
--target-process-root /installed/target --evidence candidate-evidence.json \
|
|
502
|
+
--actor worker --context worker-session --actor-kind agent
|
|
503
|
+
~~~
|
|
504
|
+
|
|
505
|
+
Every later `change verify`, `change remote`, `change review`, `change finish`, and
|
|
506
|
+
`change status` command supplies the same `--candidate-root`; lifecycle state and the
|
|
507
|
+
CLI authority remain in `control`. The target lock never becomes an ordinary bypass.
|
|
508
|
+
Transition verification, review, completion, remote evidence and receipt use their
|
|
509
|
+
transition-only schema majors.
|
|
510
|
+
|
|
511
|
+
The initial producer bootstrap is separate. Public 0.7.0 completes an exact intent
|
|
512
|
+
and protected-transition policy. A verifier checked out from the policy's fixed
|
|
513
|
+
protected-base feature commit validates the 0.7.0 bundle, immutable target release,
|
|
514
|
+
complete candidate and current base. Only its fixed
|
|
515
|
+
`authority-transition-completion` check may feed the policy-bound exact-head merge;
|
|
516
|
+
the successful merge consumes the authorization and activates the target.
|
|
517
|
+
|
|
474
518
|
One worker owning specification, planning, implementation, and verification is the
|
|
475
519
|
default topology. Bounded helpers are optional optimizations, not required roles;
|
|
476
520
|
only review requires a separate actor and context.
|
|
@@ -578,7 +622,22 @@ drift repeats the assessment with a newly reserved reviewer context bound to the
|
|
|
578
622
|
source checkpoint. Earlier assignment, assessment, and owner-decision artifacts stay
|
|
579
623
|
historical and cannot authorize the new cycle.
|
|
580
624
|
|
|
581
|
-
|
|
625
|
+
New finite-boundary changes use change schema 4. Their `reviewBoundary` is a closed
|
|
626
|
+
set of trust boundaries and fault rows; every row names its trigger or injection
|
|
627
|
+
boundary, expected outcome, criteria, proving profiles/evidence, and stop condition.
|
|
628
|
+
Every review finding is exactly `covered` or `contract-gap`. Covered findings bind
|
|
629
|
+
one declared row and carry that identity unchanged. Contract gaps bind no row, remain
|
|
630
|
+
open, and trigger owner decision on the first review. The registered contract is
|
|
631
|
+
never extended in place: after owner decision the current lifecycle stays
|
|
632
|
+
superseded, and a new contract must explicitly own the expanded boundary.
|
|
633
|
+
|
|
634
|
+
Review-loop decision windows start prospectively under the adopted authority; older
|
|
635
|
+
lifecycle artifacts are not replayed into a new counter. Resolved escalation chains
|
|
636
|
+
are retained separately from the mutable current plan-decision slot and are included
|
|
637
|
+
in completion and exported receipt evidence. This reuses existing reviewers and
|
|
638
|
+
recommendation authority; it adds no loop arbiter or reviewer-of-reviewer.
|
|
639
|
+
|
|
640
|
+
When a schema-3 or schema-4 change selects a project-owned `requiredEvidence` id, local profiles
|
|
582
641
|
alone do not advance it to review. Create the exact no-authority request, run the
|
|
583
642
|
project adapter, and ingest the complete supplemental set first:
|
|
584
643
|
|
|
@@ -600,7 +659,7 @@ to the explicit durable failure location before cleanup. Remote artifacts and th
|
|
|
600
659
|
service ids remain lifecycle evidence, not merge, release, deployment, or adoption
|
|
601
660
|
authority.
|
|
602
661
|
|
|
603
|
-
The
|
|
662
|
+
The default agent-host publication order is stricter than a PR-first workflow: implementation
|
|
604
663
|
and every required local and remote profile pass on a clean checkpoint; a consumer-selected independent
|
|
605
664
|
agent or human semantically reviews that checkpoint; findings repeat implementation,
|
|
606
665
|
complete verification, and fresh review until approved; `change finish` records
|
|
@@ -608,6 +667,9 @@ completion; only then may automation push and create the PR. Static policy/secre
|
|
|
608
667
|
checks supplement this review and cannot generate a semantic verdict. With a valid
|
|
609
668
|
standing policy, automation then waits for exact-head/current-base required checks and
|
|
610
669
|
performs the configured merge without a separate human step.
|
|
670
|
+
An opted-in schema-3 Renovate process-adoption proposal is the explicit pre-review
|
|
671
|
+
publication exception; its complete candidate passes protected-base proposal
|
|
672
|
+
validation first, then consumer-owner review and manual terminal merge.
|
|
611
673
|
|
|
612
674
|
Completed local evidence can be moved across machines or attached to a release as a
|
|
613
675
|
bounded receipt. Export and validate it before any explicit prune:
|
|
@@ -686,13 +748,14 @@ without per-action confirmation.
|
|
|
686
748
|
### Controlled automation proposals
|
|
687
749
|
|
|
688
750
|
Completion-before-publication remains the default. A consumer may enable an untrusted
|
|
689
|
-
|
|
690
|
-
the protected base at `.process/automation-proposals.json`.
|
|
691
|
-
shape in `examples/automation-proposal-policy.json
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
751
|
+
automation proposal before completion only through a policy file already present on
|
|
752
|
+
the protected base at `.process/automation-proposals.json`. Schema 1 and schema 2 use
|
|
753
|
+
the shape in `examples/automation-proposal-policy.json`, allow only
|
|
754
|
+
`dependency-update`, require the canonical `lifecycle-completion` check, and retain
|
|
755
|
+
their released human-only and completion-gated meanings. Schema 3 uses
|
|
756
|
+
`examples/automation-process-adoption-policy.json` for the distinct
|
|
757
|
+
`process-adoption` route. Absence, disablement, a branch-only policy, or a policy
|
|
758
|
+
digest mismatch blocks every route.
|
|
696
759
|
|
|
697
760
|
The immutable provider verifier emits one bounded
|
|
698
761
|
`engineering-process-controlled-automation-proposal` report for the exact repository,
|
|
@@ -717,9 +780,9 @@ processctl publication validate-proposal --project-root . \
|
|
|
717
780
|
|
|
718
781
|
This pass proves only that the proposal is safe to expose as untrusted input. It is
|
|
719
782
|
not verification, semantic review, completion, or merge authority. Proposal checks
|
|
720
|
-
remain read-only and receive no secrets
|
|
721
|
-
privileged CI, process-authority, workflow,
|
|
722
|
-
trust-root changes
|
|
783
|
+
remain read-only and receive no secrets. Dependency proposals exclude automerge,
|
|
784
|
+
scripts, plugins, shell execution, privileged CI, process-authority, workflow,
|
|
785
|
+
release, deployment, security-policy, and trust-root changes.
|
|
723
786
|
|
|
724
787
|
The required completion check is absent on every new proposal head. After the exact
|
|
725
788
|
head completes the lifecycle, export its receipt, finalize the managed PR requirements,
|
|
@@ -747,6 +810,53 @@ after the protected base's standing automation policy and exact completion gate
|
|
|
747
810
|
Provider tokens, check APIs, branch protection, retries, and repository selection
|
|
748
811
|
remain consumer-owned adapter behavior.
|
|
749
812
|
|
|
813
|
+
Schema-3 process adoption has a different merge boundary. Renovate may create the PR
|
|
814
|
+
only after its allowlisted managed runner has materialized the complete target: direct
|
|
815
|
+
pin, cross-platform hash lock, process lock, managed files, any declared project
|
|
816
|
+
migration, and every immutable action pin. A protected-base immutable verifier is
|
|
817
|
+
fixed by repository and commit in the opt-in policy. Its evidence binds the producer
|
|
818
|
+
release/tag/commit/attestation, source and target authority versions and digests,
|
|
819
|
+
requirements bytes, exact base/head/path set, migration result, complete managed-file
|
|
820
|
+
set, and exact verifier identity. Workflow changes must be only the declared full-SHA
|
|
821
|
+
action-pin replacements with their release annotations.
|
|
822
|
+
|
|
823
|
+
The protected-base policy also fixes the producer repository. The report binds bounded
|
|
824
|
+
raw release-contract and distribution-attestation bytes, their digests, lifecycle
|
|
825
|
+
receipt identity, complete artifact hashes, and the verifier's exact target
|
|
826
|
+
materialization result. The adapter independently supplies a clean producer checkout
|
|
827
|
+
with the exact tag and origin plus downloaded release artifacts, lifecycle receipt,
|
|
828
|
+
and attestation; report bytes alone never pass. Existing release and
|
|
829
|
+
artifact-attestation validators resolve those objects before the target distribution
|
|
830
|
+
is compared with the complete consumer materialization. Validation also requires the
|
|
831
|
+
target wheel hash in the committed requirements lock and every use of that producer action
|
|
832
|
+
across the complete regular-workflow tree; the protected base must be an ancestor and
|
|
833
|
+
workflow mode may not change. Workflow semantics are read with the pinned maintained
|
|
834
|
+
PyYAML safe loader; the process does not maintain a substitute YAML scanner.
|
|
835
|
+
|
|
836
|
+
For schema 3, add these independently resolved inputs to `validate-proposal`:
|
|
837
|
+
|
|
838
|
+
~~~text
|
|
839
|
+
--producer-root <clean-release-checkout> \
|
|
840
|
+
--producer-artifact-root <downloaded-release-artifacts> \
|
|
841
|
+
--producer-receipt <release-lifecycle-receipt> \
|
|
842
|
+
--producer-attestation <distribution-attestation>
|
|
843
|
+
~~~
|
|
844
|
+
|
|
845
|
+
The schema fixes `automerge` to false, `consumerOwnerMergeRequired` to true, and
|
|
846
|
+
`postMergeMutation` to false. `publication validate-proposal-completion` always rejects
|
|
847
|
+
this kind: lifecycle completion, standing automation, provider state, and a successful
|
|
848
|
+
proposal check cannot convert it to automatic merge. The consumer chooses project
|
|
849
|
+
configuration, commands, verification, review method, and whether to merge. Its owner
|
|
850
|
+
manually merges the reviewed PR; that merge is the terminal adoption cutover and no
|
|
851
|
+
post-merge synchronization runs.
|
|
852
|
+
|
|
853
|
+
This does not alter the ordinary agent-host route. When an agent host completes the
|
|
854
|
+
full lifecycle before it creates a source or adoption PR, the completed exact head may
|
|
855
|
+
still auto-merge under the protected base's standing policy. Origin and publication
|
|
856
|
+
state select the route: an agent-host completed PR is not reclassified as a Renovate
|
|
857
|
+
proposal, and a Renovate process-adoption proposal never inherits completed-source
|
|
858
|
+
auto-merge authority.
|
|
859
|
+
|
|
750
860
|
## Trust boundary
|
|
751
861
|
|
|
752
862
|
The CLI proves structural separation: reviewer actor id and context id must both be
|
|
@@ -771,10 +881,27 @@ carried findings; the attesting host or human boundary, not local process state,
|
|
|
771
881
|
authenticates who produced it.
|
|
772
882
|
|
|
773
883
|
The producer release workflows implement the same host-neutral chain with explicit
|
|
774
|
-
artifacts and callbacks: `release-pr.yml` creates only an unpublished Git bundle
|
|
775
|
-
`release-candidate.yml` restores it and runs
|
|
776
|
-
`change implement`, and every required `change verify`;
|
|
777
|
-
`engineering-process-review-required` event names the exact artifact
|
|
884
|
+
artifacts and callbacks: `release-pr.yml` creates only an unpublished Git bundle.
|
|
885
|
+
For an ordinary governed Release, `release-candidate.yml` restores it and runs
|
|
886
|
+
`change start`, `change plan`, `change implement`, and every required `change verify`;
|
|
887
|
+
the resulting `engineering-process-review-required` event names the exact artifact
|
|
888
|
+
and checkpoint. The one `authority-transition-bootstrap` Release instead contains an
|
|
889
|
+
authored schema-3 plan readable by immutable public 0.7. The initial workflow runs
|
|
890
|
+
`change start`, `change plan`, and `change decision start`, then emits
|
|
891
|
+
`engineering-process-plan-review-required` without implementing the candidate. A
|
|
892
|
+
fresh read-only plan reviewer returns the exact assigned report to
|
|
893
|
+
`release-plan-approval.yml`; that protected-main callback authenticates the producing
|
|
894
|
+
workflow path, protected-base SHA, run id and attempt before restoring the same source
|
|
895
|
+
and lifecycle. The provider handoff carries the id and attempt together as the
|
|
896
|
+
required `plannedRun` object so every identity remains explicit without exceeding
|
|
897
|
+
GitHub's ten-property `client_payload` limit. A protected-base adapter renders and
|
|
898
|
+
validates that bounded event before the provider call. It submits the report,
|
|
899
|
+
implements, verifies, and emits the ordinary
|
|
900
|
+
source-review handoff. A separate bounded `needs: continue`, `always()` cleanup job
|
|
901
|
+
runs on another runner after primary-job success, failure, timeout, or interruption;
|
|
902
|
+
after artifact resolution it preserves bounded diagnostics, consumes and reconciles
|
|
903
|
+
the single-use planned artifact, and makes a retry require a fresh planned run and
|
|
904
|
+
assignment. It cannot finish, publish, or merge the Release.
|
|
778
905
|
The consumer-selected host restores that lifecycle, chooses an agent or human,
|
|
779
906
|
registers the assignment, submits the exact report, resolves any finding loop, runs
|
|
780
907
|
`change finish`, and exports completion evidence. It sends only that bounded
|
|
@@ -97,6 +97,14 @@ with the same reusable class and `activeChangeId` as the selected lifecycle. Rel
|
|
|
97
97
|
PR materialization resolves only entries whose active change is in the exact release
|
|
98
98
|
change set.
|
|
99
99
|
|
|
100
|
+
Repeated friction is also counted at the lifecycle boundary. Three
|
|
101
|
+
changes-requested final-review cycles in one prospective decision window are one
|
|
102
|
+
owner-escalation class even when findings are renamed, split, moved, or assigned new
|
|
103
|
+
local invariant ids. Core blocks the next implementation cycle and preserves the
|
|
104
|
+
complete chain. For a finite-boundary contract, an observed failure outside every
|
|
105
|
+
declared row is a contract gap on its first review and requires a superseding change;
|
|
106
|
+
it cannot be closed through another local-fix label.
|
|
107
|
+
|
|
100
108
|
## Release and adoption
|
|
101
109
|
|
|
102
110
|
Producer completion, producer release, consumer adoption, and consumer reproduction
|
|
@@ -143,6 +143,22 @@ evidence. Reviewer-of-reviewer, meta-assessment, assessment-of-assessment,
|
|
|
143
143
|
policy-for-policy, dynamically generated approval chains, and generic workflow
|
|
144
144
|
engines are outside the portable contract.
|
|
145
145
|
|
|
146
|
+
Correction autonomy is finite. Under the adopted bounded-loop authority, three
|
|
147
|
+
distinct final-review cycles with changes-requested in one decision window trigger a
|
|
148
|
+
durable owner-decision escalation and block a fourth implementation cycle. Counting
|
|
149
|
+
is independent of finding names, invariant labels, paths, severities and splits. The
|
|
150
|
+
stop preserves every finding and failed quality assessment; it never creates
|
|
151
|
+
approval. Recovery reuses the existing decision-required plan assessment,
|
|
152
|
+
independently challenged recommendation and explicit owner resolution. A resolved
|
|
153
|
+
covered-boundary decision opens one fresh window; a contract-gap decision supersedes
|
|
154
|
+
the lifecycle and requires a new immutable contract.
|
|
155
|
+
|
|
156
|
+
New finite-boundary contracts enumerate closed fault rows with trigger or injection
|
|
157
|
+
boundary, expected outcome, criteria, proof and stop condition. Every finding is
|
|
158
|
+
exactly covered by one row or is a contract gap. Review does not expand the model by
|
|
159
|
+
inventing adjacent instruction-level injection points, and it never hides an observed
|
|
160
|
+
gap as out of scope. Historical artifacts are not retroactively counted.
|
|
161
|
+
|
|
146
162
|
A material owner decision derives recommendation eligibility before optimization.
|
|
147
163
|
Every option assesses every governing hard invariant and references only proven or
|
|
148
164
|
explicitly unproven assumptions. Any violated invariant makes the option invalid; any
|
|
@@ -164,6 +180,15 @@ release, deployment, or adoption authority.
|
|
|
164
180
|
|
|
165
181
|
## Resource and generated-state policy
|
|
166
182
|
|
|
183
|
+
Before implementing a standard format, protocol, parser, serializer, cryptographic
|
|
184
|
+
primitive, or platform integration, evaluate maintained dependencies and supported
|
|
185
|
+
tools at the owning boundary. Prefer a mature dependency when it materially reduces
|
|
186
|
+
custom semantics and satisfies compatibility, licensing, supply-chain, portability,
|
|
187
|
+
and resource-bound requirements; add it through the project's managed dependency and
|
|
188
|
+
lock flow. A custom implementation requires concrete evidence that available
|
|
189
|
+
dependencies cannot meet the accepted contract. Do not recreate a mature standard
|
|
190
|
+
merely to avoid proposing or installing a useful dependency.
|
|
191
|
+
|
|
167
192
|
Every operation over repository-controlled or remote input has explicit limits for
|
|
168
193
|
time, count, individual item size, aggregate size, output, and process descendants.
|
|
169
194
|
Limits fail closed and have regression coverage for success, failure, timeout, and
|
|
@@ -177,6 +202,54 @@ authority, and shares one rollback boundary with the process lock and managed as
|
|
|
177
202
|
Optional capabilities are never inferred, while configuration required by the target
|
|
178
203
|
authority blocks adoption when it is missing or invalid.
|
|
179
204
|
|
|
205
|
+
A self-hosted authority transition keeps the governing and candidate workspaces
|
|
206
|
+
separate. N-1 owns lifecycle state and every authoritative decision; N+1 output is
|
|
207
|
+
bounded untrusted input. The pre-registered request fixes source and target authority,
|
|
208
|
+
release provenance, base, paths, migration, selected assets and expiry. Transition
|
|
209
|
+
verification recomputes the clean candidate commit, tree, workspace, lock, hash graph,
|
|
210
|
+
managed distribution and action-pin set. A protected-transition policy is a separate
|
|
211
|
+
schema-1 mutation grant: it fixes the source-owned verifier commit, protected workflow,
|
|
212
|
+
check context and App identity, exact current base and head, target, required checks, no post-merge
|
|
213
|
+
mutation, and one-use protected auto-merge. Target or candidate code can never
|
|
214
|
+
interpret the authorization that activates itself.
|
|
215
|
+
|
|
216
|
+
Transition artifact schemas and portable contract validation share one serialized
|
|
217
|
+
shape boundary. Operational entrypoints additionally enforce cross-field relations
|
|
218
|
+
that standard JSON Schema cannot represent. Those semantic checks are mandatory at
|
|
219
|
+
registration, evidence ingestion, protected validation and terminal consumption; a
|
|
220
|
+
shape-only validation never grants authority. Candidate evidence includes observed
|
|
221
|
+
apply/check/idempotence trees and an after-write rollback probe executed in disposable
|
|
222
|
+
worktrees under a bounded target process.
|
|
223
|
+
Repository identity comes from deterministic provider service evidence resolved by
|
|
224
|
+
the existing project adapter: repository/release/tag/asset ids and URLs, immutable
|
|
225
|
+
release state, peeled tag commit and artifact digests are pre-bound by canonical
|
|
226
|
+
digest. Mutable local Git remote configuration is never repository provenance, and
|
|
227
|
+
the provider adapter gains no acceptance authority.
|
|
228
|
+
|
|
229
|
+
Proposal merge authority derives from proposal origin and publication state. An
|
|
230
|
+
agent-host review object created only after full lifecycle completion may use standing
|
|
231
|
+
policy auto-merge for its exact approved head. A Renovate `process-adoption` proposal
|
|
232
|
+
is created before consumer-owner review and must instead fix automerge false,
|
|
233
|
+
`consumerOwnerMergeRequired` true, and post-merge mutation false. Lifecycle
|
|
234
|
+
completion, standing policy, provider state, and successful static checks never move
|
|
235
|
+
that proposal onto the agent-host route. The consumer owns review and manually
|
|
236
|
+
authorizes merge; merge is the terminal cutover.
|
|
237
|
+
|
|
238
|
+
Before candidate-owned commands, a protected-base immutable verifier independently
|
|
239
|
+
binds the actual base and exact head, producer release/tag/commit/attestation, source
|
|
240
|
+
and target process identities, requirements bytes, process lock, migration result,
|
|
241
|
+
complete selected managed-file set, grouped full-SHA action-pin-only workflow delta,
|
|
242
|
+
and verifier identity. Producer and verifier repositories are protected-base owned;
|
|
243
|
+
report-controlled release claims never authenticate themselves. A separately supplied
|
|
244
|
+
clean tagged producer checkout, artifacts, receipt, and attestation pass the existing
|
|
245
|
+
release/attestation validators and exact target synchronization. Base must be
|
|
246
|
+
an ancestor of head, and every producer use in the regular-workflow tree moves as one
|
|
247
|
+
unchanged-mode pin group. Partial, stale, inferred, unauthorized, or post-merge-dependent
|
|
248
|
+
candidates fail closed. This portable boundary reuses ordinary Renovate generation,
|
|
249
|
+
managed adoption, consumer CI, review and branch protection. It does not introduce a
|
|
250
|
+
reviewer host, daemon, scheduler, generic workflow engine, dynamically generated
|
|
251
|
+
approval chain, meta-assessment, or reviewer-of-reviewer layer.
|
|
252
|
+
|
|
180
253
|
Released serialized contracts are never tightened in place. A new resource bound or
|
|
181
254
|
meaning-changing requirement uses a new integer schema major with explicit migration;
|
|
182
255
|
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
|
|
@@ -427,8 +428,13 @@ processctl change review submit --change-id issue-123 --report review.json
|
|
|
427
428
|
~~~
|
|
428
429
|
|
|
429
430
|
`changes-requested` returns to `change implement`, which starts a new cycle and
|
|
430
|
-
invalidates prior verification and approval.
|
|
431
|
-
|
|
431
|
+
invalidates prior verification and approval. Under the bounded-loop authority this
|
|
432
|
+
is finite: the third changes-requested final-review cycle in one decision window
|
|
433
|
+
records an owner-decision escalation and blocks a fourth autonomous implementation
|
|
434
|
+
cycle. Finding renames, splits, paths, severities and invariant labels do not reset
|
|
435
|
+
the count. The existing decision-required assessment, challenged recommendation and
|
|
436
|
+
owner resolution may open one fresh three-cycle window; they never approve or remove
|
|
437
|
+
findings. `approved` can advance only while the source still matches:
|
|
432
438
|
|
|
433
439
|
~~~text
|
|
434
440
|
processctl change finish --change-id issue-123 \
|
|
@@ -436,6 +442,43 @@ processctl change finish --change-id issue-123 \
|
|
|
436
442
|
processctl change status --change-id issue-123
|
|
437
443
|
~~~
|
|
438
444
|
|
|
445
|
+
### Process authority transition
|
|
446
|
+
|
|
447
|
+
A trust-root adoption uses a clean N-1 control checkout and a separate N+1 candidate
|
|
448
|
+
checkout. Register the exact transition before the target changes any candidate file,
|
|
449
|
+
then let the installed target emit only non-authoritative evidence:
|
|
450
|
+
|
|
451
|
+
~~~text
|
|
452
|
+
processctl change transition register --project-root control \
|
|
453
|
+
--change-id adopt-process-0-9-0 --request transition-request.json \
|
|
454
|
+
--target-checkout target-tag-checkout --artifact-root target-artifacts \
|
|
455
|
+
--release-receipt target-evidence.json --artifact-attestation target-artifacts.json \
|
|
456
|
+
--actor worker --context worker-session --actor-kind agent
|
|
457
|
+
|
|
458
|
+
processctl authority-transition candidate-evidence \
|
|
459
|
+
--candidate-root candidate --target-process-root /installed/target \
|
|
460
|
+
--request transition-request.json --output candidate-evidence.json \
|
|
461
|
+
--actor candidate-materializer --context candidate-session --actor-kind agent
|
|
462
|
+
|
|
463
|
+
processctl change transition ingest --project-root control \
|
|
464
|
+
--change-id adopt-process-0-9-0 --candidate-root candidate \
|
|
465
|
+
--target-process-root /installed/target --evidence candidate-evidence.json \
|
|
466
|
+
--actor worker --context worker-session --actor-kind agent
|
|
467
|
+
~~~
|
|
468
|
+
|
|
469
|
+
Every later `change verify`, `change remote`, `change review`, `change finish`, and
|
|
470
|
+
`change status` command supplies the same `--candidate-root`; lifecycle state and the
|
|
471
|
+
CLI authority remain in `control`. The target lock never becomes an ordinary bypass.
|
|
472
|
+
Transition verification, review, completion, remote evidence and receipt use their
|
|
473
|
+
transition-only schema majors.
|
|
474
|
+
|
|
475
|
+
The initial producer bootstrap is separate. Public 0.7.0 completes an exact intent
|
|
476
|
+
and protected-transition policy. A verifier checked out from the policy's fixed
|
|
477
|
+
protected-base feature commit validates the 0.7.0 bundle, immutable target release,
|
|
478
|
+
complete candidate and current base. Only its fixed
|
|
479
|
+
`authority-transition-completion` check may feed the policy-bound exact-head merge;
|
|
480
|
+
the successful merge consumes the authorization and activates the target.
|
|
481
|
+
|
|
439
482
|
One worker owning specification, planning, implementation, and verification is the
|
|
440
483
|
default topology. Bounded helpers are optional optimizations, not required roles;
|
|
441
484
|
only review requires a separate actor and context.
|
|
@@ -543,7 +586,22 @@ drift repeats the assessment with a newly reserved reviewer context bound to the
|
|
|
543
586
|
source checkpoint. Earlier assignment, assessment, and owner-decision artifacts stay
|
|
544
587
|
historical and cannot authorize the new cycle.
|
|
545
588
|
|
|
546
|
-
|
|
589
|
+
New finite-boundary changes use change schema 4. Their `reviewBoundary` is a closed
|
|
590
|
+
set of trust boundaries and fault rows; every row names its trigger or injection
|
|
591
|
+
boundary, expected outcome, criteria, proving profiles/evidence, and stop condition.
|
|
592
|
+
Every review finding is exactly `covered` or `contract-gap`. Covered findings bind
|
|
593
|
+
one declared row and carry that identity unchanged. Contract gaps bind no row, remain
|
|
594
|
+
open, and trigger owner decision on the first review. The registered contract is
|
|
595
|
+
never extended in place: after owner decision the current lifecycle stays
|
|
596
|
+
superseded, and a new contract must explicitly own the expanded boundary.
|
|
597
|
+
|
|
598
|
+
Review-loop decision windows start prospectively under the adopted authority; older
|
|
599
|
+
lifecycle artifacts are not replayed into a new counter. Resolved escalation chains
|
|
600
|
+
are retained separately from the mutable current plan-decision slot and are included
|
|
601
|
+
in completion and exported receipt evidence. This reuses existing reviewers and
|
|
602
|
+
recommendation authority; it adds no loop arbiter or reviewer-of-reviewer.
|
|
603
|
+
|
|
604
|
+
When a schema-3 or schema-4 change selects a project-owned `requiredEvidence` id, local profiles
|
|
547
605
|
alone do not advance it to review. Create the exact no-authority request, run the
|
|
548
606
|
project adapter, and ingest the complete supplemental set first:
|
|
549
607
|
|
|
@@ -565,7 +623,7 @@ to the explicit durable failure location before cleanup. Remote artifacts and th
|
|
|
565
623
|
service ids remain lifecycle evidence, not merge, release, deployment, or adoption
|
|
566
624
|
authority.
|
|
567
625
|
|
|
568
|
-
The
|
|
626
|
+
The default agent-host publication order is stricter than a PR-first workflow: implementation
|
|
569
627
|
and every required local and remote profile pass on a clean checkpoint; a consumer-selected independent
|
|
570
628
|
agent or human semantically reviews that checkpoint; findings repeat implementation,
|
|
571
629
|
complete verification, and fresh review until approved; `change finish` records
|
|
@@ -573,6 +631,9 @@ completion; only then may automation push and create the PR. Static policy/secre
|
|
|
573
631
|
checks supplement this review and cannot generate a semantic verdict. With a valid
|
|
574
632
|
standing policy, automation then waits for exact-head/current-base required checks and
|
|
575
633
|
performs the configured merge without a separate human step.
|
|
634
|
+
An opted-in schema-3 Renovate process-adoption proposal is the explicit pre-review
|
|
635
|
+
publication exception; its complete candidate passes protected-base proposal
|
|
636
|
+
validation first, then consumer-owner review and manual terminal merge.
|
|
576
637
|
|
|
577
638
|
Completed local evidence can be moved across machines or attached to a release as a
|
|
578
639
|
bounded receipt. Export and validate it before any explicit prune:
|
|
@@ -651,13 +712,14 @@ without per-action confirmation.
|
|
|
651
712
|
### Controlled automation proposals
|
|
652
713
|
|
|
653
714
|
Completion-before-publication remains the default. A consumer may enable an untrusted
|
|
654
|
-
|
|
655
|
-
the protected base at `.process/automation-proposals.json`.
|
|
656
|
-
shape in `examples/automation-proposal-policy.json
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
715
|
+
automation proposal before completion only through a policy file already present on
|
|
716
|
+
the protected base at `.process/automation-proposals.json`. Schema 1 and schema 2 use
|
|
717
|
+
the shape in `examples/automation-proposal-policy.json`, allow only
|
|
718
|
+
`dependency-update`, require the canonical `lifecycle-completion` check, and retain
|
|
719
|
+
their released human-only and completion-gated meanings. Schema 3 uses
|
|
720
|
+
`examples/automation-process-adoption-policy.json` for the distinct
|
|
721
|
+
`process-adoption` route. Absence, disablement, a branch-only policy, or a policy
|
|
722
|
+
digest mismatch blocks every route.
|
|
661
723
|
|
|
662
724
|
The immutable provider verifier emits one bounded
|
|
663
725
|
`engineering-process-controlled-automation-proposal` report for the exact repository,
|
|
@@ -682,9 +744,9 @@ processctl publication validate-proposal --project-root . \
|
|
|
682
744
|
|
|
683
745
|
This pass proves only that the proposal is safe to expose as untrusted input. It is
|
|
684
746
|
not verification, semantic review, completion, or merge authority. Proposal checks
|
|
685
|
-
remain read-only and receive no secrets
|
|
686
|
-
privileged CI, process-authority, workflow,
|
|
687
|
-
trust-root changes
|
|
747
|
+
remain read-only and receive no secrets. Dependency proposals exclude automerge,
|
|
748
|
+
scripts, plugins, shell execution, privileged CI, process-authority, workflow,
|
|
749
|
+
release, deployment, security-policy, and trust-root changes.
|
|
688
750
|
|
|
689
751
|
The required completion check is absent on every new proposal head. After the exact
|
|
690
752
|
head completes the lifecycle, export its receipt, finalize the managed PR requirements,
|
|
@@ -712,6 +774,53 @@ after the protected base's standing automation policy and exact completion gate
|
|
|
712
774
|
Provider tokens, check APIs, branch protection, retries, and repository selection
|
|
713
775
|
remain consumer-owned adapter behavior.
|
|
714
776
|
|
|
777
|
+
Schema-3 process adoption has a different merge boundary. Renovate may create the PR
|
|
778
|
+
only after its allowlisted managed runner has materialized the complete target: direct
|
|
779
|
+
pin, cross-platform hash lock, process lock, managed files, any declared project
|
|
780
|
+
migration, and every immutable action pin. A protected-base immutable verifier is
|
|
781
|
+
fixed by repository and commit in the opt-in policy. Its evidence binds the producer
|
|
782
|
+
release/tag/commit/attestation, source and target authority versions and digests,
|
|
783
|
+
requirements bytes, exact base/head/path set, migration result, complete managed-file
|
|
784
|
+
set, and exact verifier identity. Workflow changes must be only the declared full-SHA
|
|
785
|
+
action-pin replacements with their release annotations.
|
|
786
|
+
|
|
787
|
+
The protected-base policy also fixes the producer repository. The report binds bounded
|
|
788
|
+
raw release-contract and distribution-attestation bytes, their digests, lifecycle
|
|
789
|
+
receipt identity, complete artifact hashes, and the verifier's exact target
|
|
790
|
+
materialization result. The adapter independently supplies a clean producer checkout
|
|
791
|
+
with the exact tag and origin plus downloaded release artifacts, lifecycle receipt,
|
|
792
|
+
and attestation; report bytes alone never pass. Existing release and
|
|
793
|
+
artifact-attestation validators resolve those objects before the target distribution
|
|
794
|
+
is compared with the complete consumer materialization. Validation also requires the
|
|
795
|
+
target wheel hash in the committed requirements lock and every use of that producer action
|
|
796
|
+
across the complete regular-workflow tree; the protected base must be an ancestor and
|
|
797
|
+
workflow mode may not change. Workflow semantics are read with the pinned maintained
|
|
798
|
+
PyYAML safe loader; the process does not maintain a substitute YAML scanner.
|
|
799
|
+
|
|
800
|
+
For schema 3, add these independently resolved inputs to `validate-proposal`:
|
|
801
|
+
|
|
802
|
+
~~~text
|
|
803
|
+
--producer-root <clean-release-checkout> \
|
|
804
|
+
--producer-artifact-root <downloaded-release-artifacts> \
|
|
805
|
+
--producer-receipt <release-lifecycle-receipt> \
|
|
806
|
+
--producer-attestation <distribution-attestation>
|
|
807
|
+
~~~
|
|
808
|
+
|
|
809
|
+
The schema fixes `automerge` to false, `consumerOwnerMergeRequired` to true, and
|
|
810
|
+
`postMergeMutation` to false. `publication validate-proposal-completion` always rejects
|
|
811
|
+
this kind: lifecycle completion, standing automation, provider state, and a successful
|
|
812
|
+
proposal check cannot convert it to automatic merge. The consumer chooses project
|
|
813
|
+
configuration, commands, verification, review method, and whether to merge. Its owner
|
|
814
|
+
manually merges the reviewed PR; that merge is the terminal adoption cutover and no
|
|
815
|
+
post-merge synchronization runs.
|
|
816
|
+
|
|
817
|
+
This does not alter the ordinary agent-host route. When an agent host completes the
|
|
818
|
+
full lifecycle before it creates a source or adoption PR, the completed exact head may
|
|
819
|
+
still auto-merge under the protected base's standing policy. Origin and publication
|
|
820
|
+
state select the route: an agent-host completed PR is not reclassified as a Renovate
|
|
821
|
+
proposal, and a Renovate process-adoption proposal never inherits completed-source
|
|
822
|
+
auto-merge authority.
|
|
823
|
+
|
|
715
824
|
## Trust boundary
|
|
716
825
|
|
|
717
826
|
The CLI proves structural separation: reviewer actor id and context id must both be
|
|
@@ -736,10 +845,27 @@ carried findings; the attesting host or human boundary, not local process state,
|
|
|
736
845
|
authenticates who produced it.
|
|
737
846
|
|
|
738
847
|
The producer release workflows implement the same host-neutral chain with explicit
|
|
739
|
-
artifacts and callbacks: `release-pr.yml` creates only an unpublished Git bundle
|
|
740
|
-
`release-candidate.yml` restores it and runs
|
|
741
|
-
`change implement`, and every required `change verify`;
|
|
742
|
-
`engineering-process-review-required` event names the exact artifact
|
|
848
|
+
artifacts and callbacks: `release-pr.yml` creates only an unpublished Git bundle.
|
|
849
|
+
For an ordinary governed Release, `release-candidate.yml` restores it and runs
|
|
850
|
+
`change start`, `change plan`, `change implement`, and every required `change verify`;
|
|
851
|
+
the resulting `engineering-process-review-required` event names the exact artifact
|
|
852
|
+
and checkpoint. The one `authority-transition-bootstrap` Release instead contains an
|
|
853
|
+
authored schema-3 plan readable by immutable public 0.7. The initial workflow runs
|
|
854
|
+
`change start`, `change plan`, and `change decision start`, then emits
|
|
855
|
+
`engineering-process-plan-review-required` without implementing the candidate. A
|
|
856
|
+
fresh read-only plan reviewer returns the exact assigned report to
|
|
857
|
+
`release-plan-approval.yml`; that protected-main callback authenticates the producing
|
|
858
|
+
workflow path, protected-base SHA, run id and attempt before restoring the same source
|
|
859
|
+
and lifecycle. The provider handoff carries the id and attempt together as the
|
|
860
|
+
required `plannedRun` object so every identity remains explicit without exceeding
|
|
861
|
+
GitHub's ten-property `client_payload` limit. A protected-base adapter renders and
|
|
862
|
+
validates that bounded event before the provider call. It submits the report,
|
|
863
|
+
implements, verifies, and emits the ordinary
|
|
864
|
+
source-review handoff. A separate bounded `needs: continue`, `always()` cleanup job
|
|
865
|
+
runs on another runner after primary-job success, failure, timeout, or interruption;
|
|
866
|
+
after artifact resolution it preserves bounded diagnostics, consumes and reconciles
|
|
867
|
+
the single-use planned artifact, and makes a retry require a fresh planned run and
|
|
868
|
+
assignment. It cannot finish, publish, or merge the Release.
|
|
743
869
|
The consumer-selected host restores that lifecycle, chooses an agent or human,
|
|
744
870
|
registers the assignment, submits the exact report, resolves any finding loop, runs
|
|
745
871
|
`change finish`, and exports completion evidence. It sends only that bounded
|