Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
4e1e0a6
fix(action): fail closed on explicitly requested package version; rep…
fraware Oct 15, 2026
352bd20
test(action): execute install branch with fake pip to prove requested…
fraware Oct 15, 2026
e218b71
docs(readme): replace nonexistent RC copy-paste pin with exact publis…
fraware Oct 15, 2026
e45e910
docs(pilot): remove small-sample strict-promotion shortcut, require i…
fraware Oct 15, 2026
9299a5e
docs(security): reconcile published release vs unverified maintenance…
fraware Oct 15, 2026
abccfb5
docs(release): record live unsigned historical tag, missing RC ref, a…
fraware Oct 15, 2026
13a8500
docs(license): restore complete standard Apache-2.0 terms for SPDX re…
fraware Oct 15, 2026
28cf5ab
docs(license): retain project copyright attribution alongside full Ap…
fraware Oct 15, 2026
eef44e4
build: include copyright NOTICE in source distribution
fraware Oct 15, 2026
9edfad7
docs(readme): remove unpublished green docs badge and label checkout …
fraware Oct 15, 2026
b610080
docs(pilot): use exact historic release source SHA, not mutable tag, …
fraware Oct 15, 2026
80318fa
test(action): use shell-sourced command mocks portable across Linux, …
fraware Oct 15, 2026
c613098
docs(readme): disclose actual legacy Action fallback; reserve fail-cl…
fraware Oct 15, 2026
a9e6acf
docs(pilot): replace unpublished RC pins; disclose legacy installer a…
fraware Oct 15, 2026
352ff60
docs(pilot): replace unpublished RC pins; disclose legacy installer a…
fraware Oct 15, 2026
7275fea
docs(integration): distinguish historical Action fallback from future…
fraware Oct 15, 2026
adfd938
docs(launch): define reproducible first-user task, explicit release g…
fraware Oct 15, 2026
bb2919f
test(launch): guard public pins, release scope and standard licensing
fraware Oct 15, 2026
691d31e
test(launch): match exact legacy fallback and unpublished-tag language
fraware Oct 15, 2026
5dc984c
test(action): resolve Git Bash explicitly on Windows runners before s…
fraware Oct 15, 2026
a7249d4
docs(onboarding): replace non-installable strict example with least-p…
fraware Oct 15, 2026
37c9d81
docs(strict): make required-check template explicitly noninstallable …
fraware Oct 15, 2026
cc81702
docs(adoption): align copyable example and integration guide with non…
fraware Oct 15, 2026
5e32ad6
docs(adoption): align copyable example and integration guide with non…
fraware Oct 15, 2026
c2c6c0a
docs(adoption): align copyable example and integration guide with non…
fraware Oct 15, 2026
525a854
test(onboarding): guard least-privilege advisory installation and ine…
fraware Oct 15, 2026
56c5f29
integration(action): retain fail-closed distribution pin and bind PR …
fraware Oct 15, 2026
04cd26f
integration(action): import qualified source-binding .github/workflow…
fraware Oct 15, 2026
9a776e6
integration(action): import qualified source-binding tests/test_relea…
fraware Oct 15, 2026
f241299
integration(action): import bounded PR source identity contract docs/…
fraware Oct 15, 2026
a9ca3a4
integration(action): import bounded PR source identity contract scrip…
fraware Oct 15, 2026
3c0fd5a
integration(action): import bounded PR source identity contract tests…
fraware Oct 15, 2026
3a69c5c
integration(action): import bounded PR source identity contract tests…
fraware Oct 15, 2026
e690b02
test(action): qualify ordering of fail-closed installation and PR sou…
fraware Oct 15, 2026
89c23ef
integration(pilot): preserve #217 evidence-adjudication boundary in s…
fraware Oct 15, 2026
3658b0f
integration(pilot): preserve #217 evidence-adjudication boundary in t…
fraware Oct 15, 2026
4c36acf
integration(pilot): preserve #217 evidence-adjudication boundary in d…
fraware Oct 15, 2026
9ee333a
integration(pilot): preserve #217 evidence-adjudication boundary in d…
fraware Oct 15, 2026
6310a16
integration(release): import #219 historical release corrections in d…
fraware Oct 15, 2026
406c4f6
integration(release): import #219 historical release corrections in d…
fraware Oct 15, 2026
e56b9bb
integration(release): import #219 historical release corrections in d…
fraware Oct 15, 2026
d43d962
integration(pilot): preserve read-only advisory fork workflow and dis…
fraware Oct 15, 2026
5c400f2
docs(security): make README copyable Action example read-only and sou…
fraware Oct 15, 2026
0dfec6d
docs(security): distinguish historical write-enabled examples from au…
fraware Oct 15, 2026
ee15096
fix(pilot): invalidate prior reviewer error rates on every new artifa…
fraware Oct 15, 2026
f332f63
test(pilot): prevent stale error-rate reuse on incomplete artifact co…
fraware Oct 15, 2026
55f7d60
docs(pilot): flag legacy unbound diffs and prohibit automatic publica…
fraware Oct 15, 2026
fa3f630
test(integration): enforce pilot metric placeholders and least-privil…
fraware Oct 15, 2026
948f36c
fix(metrics): never infer false-positive rate from checker fixture ve…
fraware Oct 15, 2026
c866d57
fix(metrics): prevent reimport of historical unadjudicated dogfood er…
fraware Oct 15, 2026
5e43290
test(metrics): fixture BLOCK cannot be adjudicated as false positive
fraware Oct 15, 2026
788c077
test(metrics): renderer rejects legacy self-judged zero-error rates
fraware Oct 15, 2026
ddda0e4
data(pilot): remove unadjudicated zero-error claims from maintained f…
fraware Oct 15, 2026
1699d64
data(adoption): mark unadjudicated dogfood false-positive figures as …
fraware Oct 15, 2026
6a2e25e
docs(pilot): correct circular fixture false-positive claims and stric…
fraware Oct 15, 2026
59fd9ab
test(pilot): guard archived summary against invented zero-error metrics
fraware Oct 15, 2026
2f50861
docs(pilot): distinguish historical fixture outcomes from adjudicated…
fraware Oct 15, 2026
070ae82
docs(pilot): distinguish historical fixture outcomes from adjudicated…
fraware Oct 15, 2026
fc8a48e
docs(pilot): distinguish historical fixture outcomes from adjudicated…
fraware Oct 15, 2026
9a44ddd
test(pilot): historical fixture reports cannot claim adjudicated zero…
fraware Oct 15, 2026
6289ffc
fix(pilot): fail closed on missing inputs and invalidate stale cohort…
fraware Oct 16, 2026
1976010
test(pilot): reject missing sources and stale partial-cohort metrics
fraware Oct 16, 2026
673ea23
fix(pilot): prevent partial reviewer reports from mixing cohort metrics
fraware Oct 16, 2026
1ce6d59
test(pilot): prevent mixed cohort counts and stale adjudication pairs
fraware Oct 16, 2026
49a9e91
test(pilot): require cohort correspondence before retaining artifact …
fraware Oct 16, 2026
1cd9cec
security(action): forbid PR-wide publication from unbound manifest ev…
fraware Oct 16, 2026
4672bdd
test(action): prevent manifest-derived PR publication and stale recei…
fraware Oct 16, 2026
cb8683d
security(action): clear stale outputs before any install and reject r…
fraware Oct 16, 2026
b8d853b
test(action): guard stale artifacts before install and reject reused …
fraware Oct 16, 2026
4f95cf4
docs(security): define unbound manifest publication and stale bundle …
fraware Oct 16, 2026
1b97f0a
security(action): prevent unbound manifest PASS becoming downstream a…
fraware Oct 16, 2026
ed73975
test(action): manifest PASS remains scoped evidence, never PR-wide allow
fraware Oct 16, 2026
34e4906
docs(action): record that manifest PASS never becomes downstream PR a…
fraware Oct 16, 2026
c5562c6
security(action): deny allow outputs for every unbound caller-supplie…
fraware Oct 16, 2026
82e9e28
test(action): preserve source-bound outputs and neutralize unbound di…
fraware Oct 16, 2026
16afc46
docs(action): extend output trust rule to caller-supplied diffs
fraware Oct 16, 2026
16bd668
feat(product): render portable read-only advisory PR summary with exa…
fraware Oct 16, 2026
3851745
fix(product): render ordinary Markdown code spans without escape slashes
fraware Oct 16, 2026
e72686a
feat(action): surface source-scoped PR observations without write per…
fraware Oct 16, 2026
b5d0eea
test(product): only source-aligned advisory PRs create read-only summ…
fraware Oct 16, 2026
0097aca
test(product): assert exact source and evidence disclaimers
fraware Oct 16, 2026
127ae8f
docs(product): portable no-write summary and observed adoption loop
fraware Oct 16, 2026
db3e2b7
security(summary): bind observed diff bytes and checkout tree to read…
fraware Oct 16, 2026
2b55d4e
test(summary): reject tampered or unavailable PR diff bytes
fraware Oct 16, 2026
923ee96
feat(action): verify actual binary input bytes before rendering summary
fraware Oct 16, 2026
3ecf77b
docs(product): make exact binary diff verification explicit
fraware Oct 16, 2026
e582a11
test(summary): use real newline-bearing diffs and assert byte-source …
fraware Oct 16, 2026
5b6423a
test(action): assert no PR comments from source-unbound manifests
fraware Oct 16, 2026
90f0a44
fix(summary): expose validated Git tree identity for cross-revision c…
fraware Oct 16, 2026
ae1831f
fix(source): validate actual PR merge subject before evidence emission
fraware Oct 16, 2026
d6e3009
fix(context): retain explicitly validated merge-preview subject witho…
fraware Oct 16, 2026
b7b94f0
fix(source): propagate structurally checked merge subject through kernel
fraware Oct 16, 2026
7c85575
fix(source): propagate structurally checked merge subject through kernel
fraware Oct 16, 2026
27d5c8c
fix(cli): select merge-preview evidence subject only after local rece…
fraware Oct 16, 2026
b7020af
fix(action): pin check evidence subject to validated PR merge preview
fraware Oct 16, 2026
0fbf565
test(source): real Git PR merge must survive event metadata and rejec…
fraware Oct 16, 2026
3502025
fix(cli): admit exact-bound empty PR diffs without inventing coverage
fraware Oct 16, 2026
5a17d08
docs(source): disclose measured event override defect and bounded opt…
fraware Oct 16, 2026
1d6c07a
feat(report): export reusable scoped Markdown artifact without loosen…
fraware Oct 16, 2026
05d67ea
feat(action): upload safe human-shareable PR report in advisory runs
fraware Oct 16, 2026
6cec23e
test(report): portable report equivalence, stale suppression, and sou…
fraware Oct 16, 2026
fe49235
docs(report): portable shareable summary with explicit unsigned limit…
fraware Oct 16, 2026
56256ed
security(action): never upload raw PR diff in portable advisory artif…
fraware Oct 16, 2026
837c931
test(report): prohibit uploading unredacted PR diffs
fraware Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 24 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -188,27 +188,28 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: read
checks: write
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
# GitHub's pull_request github.sha is the synthetic merge preview.
ref: ${{ github.sha }}
fetch-depth: 2
persist-credentials: false
- name: Strict emit-check on known-bad diff
- name: Strict Action must reject caller-selected unbound input
id: ovk
continue-on-error: true
uses: ./
with:
mode: strict
use-check: "true"
emit-check: "true"
emit-check: "false"
changed-files: examples/ci_secrets/workflow_secrets_on_pr.diff
post-comment: "false"
- name: Assert strict block and observable check
- name: Assert unsafe input refused before verification
run: |
test "${{ steps.ovk.outcome }}" = "failure"
test "${{ steps.ovk.outputs.recommendation }}" = "block"
test "${{ steps.ovk.outputs.exit_code }}" = "1"
test ! -f ovk-source-binding.json
test ! -f ovk-evidence.json

action_default_diff_dogfood:
runs-on: ubuntu-latest
Expand All @@ -217,7 +218,8 @@ jobs:
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
# Match the actual GitHub event checkout subject, not PR-head.
ref: ${{ github.sha }}
fetch-depth: 2
persist-credentials: false
- name: Exercise automatic diff collection
Expand All @@ -231,6 +233,20 @@ jobs:
run: |
test -f ovk-evidence.json
test -f ovk-evidence-quality.json
test -f ovk-source-binding.json
python - <<'PY'
import json
import os
from pathlib import Path
r = json.loads(Path("ovk-source-binding.json").read_text())
assert r["evaluated_checkout_commit_sha"] == os.environ["GITHUB_SHA"]
assert r["evidence_subject_sha"] == os.environ["GITHUB_SHA"]
if os.environ["GITHUB_EVENT_NAME"] == "pull_request":
assert r["input_comparison"] == "event_base_to_verified_merge_preview"
assert r["input_structurally_bound_to_checkout"] is True
assert r["bound_into_signed_evidence_envelope"] is False
assert r["production_reliance_authorized"] is False
PY
ovk evidence-quality ovk-evidence.json

package:
Expand Down
205 changes: 198 additions & 7 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,11 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

Copyright 2026 fraware
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

http://www.apache.org/licenses/LICENSE-2.0
1. Definitions.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
include README.md
include LICENSE
include NOTICE
recursive-include schemas *.json
recursive-include templates *.intent.json
recursive-include adapters *.json
Expand Down
5 changes: 5 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Open Verification Kernel

Copyright 2026 fraware

Licensed under the Apache License, Version 2.0. See the LICENSE file for the complete terms.
33 changes: 20 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
[![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](pyproject.toml)
[![FormalPR-Bench](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/fraware/open-verification-kernel/main/docs/benchmarks/leaderboard-badge.json)](docs/benchmarks/latest-leaderboard-summary.json)
[![Docs](https://img.shields.io/badge/docs-v1.3.0--rc.1-green.svg)](docs/README.md)
[![Docs](https://img.shields.io/badge/docs-development--candidate-informational.svg)](docs/README.md)

[Quick start](#quick-start) · [Add to CI](#github-actions) · [Contribute](#contribute) · [Documentation](docs/README.md)

Expand Down Expand Up @@ -95,10 +95,12 @@ ovk repair-suggest --evidence ovk-evidence.json

---

## Quick start
## Quick start (local development snapshot)

**Requirements:** Python 3.10+

These commands clone current, unreleased development `main`. They are for local inspection and experimentation; they do **not** install an attributable published release or qualify a strict production gate.

```bash
git clone https://github.com/fraware/open-verification-kernel.git
cd open-verification-kernel
Expand Down Expand Up @@ -129,7 +131,7 @@ Installation, package, optional-solver, and signing paths: [docs/INTEGRATION.md]

## GitHub Actions

Add OVK to a pull request workflow. Start in **advisory** mode (reports findings without failing the job); move to **strict** only for lanes/profiles whose signal and trusted inputs you have calibrated for that repository.
Add OVK to a pull request workflow in **advisory** mode, with the repository maintainer's consent and no merge-blocking authority. The current public source profiles lack independent strict qualification; strict enforcement is a separate release, evidence, and source-model security decision.

```yaml
name: Verify PR
Expand All @@ -139,25 +141,30 @@ on:

permissions:
contents: read
pull-requests: write
checks: write # required when emit-check: true

jobs:
ovk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: fraware/open-verification-kernel@v1.3.0-rc.1
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
fetch-depth: 2
persist-credentials: false
# SHA of the latest published v1.2.1 release's direct source commit.
# Change this only after reviewing the release identity and limits.
- uses: fraware/open-verification-kernel@a27d5720f4350c00bca34f71d991c31f5a2f38c7
env:
OVK_PACKAGE_VERSION: "1.2.1"
with:
mode: advisory # switch to strict only after calibration
use-check: "true" # analyze the PR diff automatically
emit-check: "true" # optional; requires checks: write
post-comment: "true" # requires pull-requests: write
mode: advisory # reviewed, non-blocking compatibility pilot
use-check: "true" # legacy automatic PR-diff path; not a signed receipt
emit-check: "false" # no check-write authority
post-comment: "false" # no comment-write authority
```

Pin target is `v1.3.0-rc.1` only after the attributable tag/release exists. Until then, do not treat that tag as a live install surface; see [docs/CURRENT_RELEASE_STATUS.md](docs/CURRENT_RELEASE_STATUS.md).
**Release safety boundary (verified 2026-10-15):** `v1.3.0-rc.1` is not published or tagged. This example runs **historical `v1.2.1` code**, pinned to its original source commit; it does not include the draft guarantee-continuity feature or the new fail-closed installer. **The `v1.2.1` Action falls back to its checkout if the requested PyPI version fails to install.** Do not treat that installation as independently authenticated solely because `OVK_PACKAGE_VERSION` is set. The old Git tag is unsigned, and its GitHub Release is not marked immutable. The corrected installation contract in draft PR #220 takes effect only in a later, independently authorized release. Until then use the checkout examples for development or a separately governed, consenting **advisory-only** experiment. See [release status](docs/CURRENT_RELEASE_STATUS.md), [pilot playbook](docs/EXTERNAL_PILOT_PLAYBOOK.md), and [launch checklist](docs/DEVELOPER_PREVIEW_READINESS.md).

Copy a full consumer example: [`examples/github_workflows/external_consumer.yml`](examples/github_workflows/external_consumer.yml)
Copy the **minimal advisory-only** consumer example: [`examples/github_workflows/external_consumer.yml`](examples/github_workflows/external_consumer.yml). It uses the historical Action and discloses its fallback limitation; it does not enable strict enforcement or require write tokens.

---

Expand Down
Loading
Loading