diff --git a/.github/workflows/protocol-validation.yml b/.github/workflows/protocol-validation.yml index 97257ba..e13d572 100644 --- a/.github/workflows/protocol-validation.yml +++ b/.github/workflows/protocol-validation.yml @@ -2,6 +2,9 @@ name: Operational-memory protocol validation on: pull_request: + push: + branches: + - main workflow_dispatch: permissions: @@ -26,7 +29,10 @@ jobs: - name: Validate protocol structure run: python tools/validate_protocol.py -# This workflow is intentionally advisory and does not run on every direct -# operational-memory write. It runs for pull requests or when manually -# dispatched. PROTOCOL.yaml declares blocking_required_check: false, and the -# recommended main-branch ruleset does not require this status check. +# This workflow is intentionally advisory. It runs for pull requests, every +# push to canonical main (including normal operational-memory writes), or when +# manually dispatched. Main-push validation is a post-write repository-integrity +# check; immediate persistence claims still depend on write readback/verification, +# not on waiting for this workflow. PROTOCOL.yaml declares +# blocking_required_check: false, and the recommended main-branch ruleset does +# not require this status check. diff --git a/OPERATIONS.md b/OPERATIONS.md index 2c9083c..ad2f6df 100644 --- a/OPERATIONS.md +++ b/OPERATIONS.md @@ -144,7 +144,7 @@ A health check has two layers. Use the advisory validator declared in `PROTOCOL.yaml` when available. It checks machine-verifiable invariants such as required files, project registration/template structure, identifier uniqueness/reference integrity, supersession lifecycle consistency, manifest identity fields, and soft budget warnings. -The included GitHub Action is advisory and intentionally does **not** run on every direct operational-memory write. It runs for pull requests or when manually dispatched. It is **not** a required status check and does not block ordinary direct ChatGPT writes to `main`. +The included GitHub Action remains advisory, but now runs for pull requests, every push to canonical `main` including normal operational-memory writes, or manual dispatch. A main-push run is an independent post-write repository-integrity check; it does not replace the immediate write/readback verification required before claiming persistence. It is **not** a required status check and does not block ordinary direct ChatGPT writes to `main`. ### Semantic layer diff --git a/PROTOCOL.yaml b/PROTOCOL.yaml index ae7e8d6..0c1df6a 100644 --- a/PROTOCOL.yaml +++ b/PROTOCOL.yaml @@ -151,6 +151,11 @@ validation: mode: advisory script: tools/validate_protocol.py workflow: .github/workflows/protocol-validation.yml + runs_on_pull_request: true + runs_on_main_push: true + manual_dispatch_available: true + main_push_is_post_write_integrity_check: true + immediate_persistence_claim_depends_on_readback_not_ci: true blocking_required_check: false release_lifecycle: