nexus-certify 0.1.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.
- nexus_certify-0.1.0/PKG-INFO +128 -0
- nexus_certify-0.1.0/README.md +118 -0
- nexus_certify-0.1.0/nexus_certify.egg-info/PKG-INFO +128 -0
- nexus_certify-0.1.0/nexus_certify.egg-info/SOURCES.txt +49 -0
- nexus_certify-0.1.0/nexus_certify.egg-info/dependency_links.txt +1 -0
- nexus_certify-0.1.0/nexus_certify.egg-info/entry_points.txt +2 -0
- nexus_certify-0.1.0/nexus_certify.egg-info/requires.txt +2 -0
- nexus_certify-0.1.0/nexus_certify.egg-info/top_level.txt +1 -0
- nexus_certify-0.1.0/product/__init__.py +1 -0
- nexus_certify-0.1.0/product/acquisition/__init__.py +29 -0
- nexus_certify-0.1.0/product/acquisition/github.py +400 -0
- nexus_certify-0.1.0/product/adapters/__init__.py +1 -0
- nexus_certify-0.1.0/product/adapters/changeset_certification_v2.py +1006 -0
- nexus_certify-0.1.0/product/adapters/generic_verification.py +429 -0
- nexus_certify-0.1.0/product/adapters/github.py +274 -0
- nexus_certify-0.1.0/product/adapters/legacy.py +34 -0
- nexus_certify-0.1.0/product/adapters/trusted.py +593 -0
- nexus_certify-0.1.0/product/benchmark/__init__.py +1500 -0
- nexus_certify-0.1.0/product/benchmark/tg7_shadow.py +70 -0
- nexus_certify-0.1.0/product/benchmark/tg7_shadow_kernel.py +999 -0
- nexus_certify-0.1.0/product/benchmark/tg9_value.py +1217 -0
- nexus_certify-0.1.0/product/certification/__init__.py +83 -0
- nexus_certify-0.1.0/product/certification/receipt.py +520 -0
- nexus_certify-0.1.0/product/clients/__init__.py +15 -0
- nexus_certify-0.1.0/product/clients/cli.py +421 -0
- nexus_certify-0.1.0/product/clients/github_action.py +312 -0
- nexus_certify-0.1.0/product/clients/local_golden_path.py +835 -0
- nexus_certify-0.1.0/product/clients/mcp.py +159 -0
- nexus_certify-0.1.0/product/completion/__init__.py +550 -0
- nexus_certify-0.1.0/product/evidence/__init__.py +909 -0
- nexus_certify-0.1.0/product/evidence/code_integrity.py +824 -0
- nexus_certify-0.1.0/product/evidence/ingestion.py +2472 -0
- nexus_certify-0.1.0/product/execution/__init__.py +39 -0
- nexus_certify-0.1.0/product/execution/profiles/__init__.py +1 -0
- nexus_certify-0.1.0/product/execution/profiles/python-oci-pytest-v1.json +1 -0
- nexus_certify-0.1.0/product/execution/profiles/python-oci-pytest-v1.lock +1 -0
- nexus_certify-0.1.0/product/execution/python_runner.py +732 -0
- nexus_certify-0.1.0/product/kernel/__init__.py +176 -0
- nexus_certify-0.1.0/product/ledger.py +1068 -0
- nexus_certify-0.1.0/product/protocol/__init__.py +17 -0
- nexus_certify-0.1.0/product/protocol/compatibility_gate.py +163 -0
- nexus_certify-0.1.0/product/protocol/compatibility_gate_kernel.py +1205 -0
- nexus_certify-0.1.0/product/protocol/generic_verification.py +866 -0
- nexus_certify-0.1.0/product/runtime/__init__.py +61 -0
- nexus_certify-0.1.0/product/runtime/auth.py +205 -0
- nexus_certify-0.1.0/product/runtime/http.py +379 -0
- nexus_certify-0.1.0/product/runtime/schemas.py +374 -0
- nexus_certify-0.1.0/product/runtime/service.py +763 -0
- nexus_certify-0.1.0/product/verification/__init__.py +207 -0
- nexus_certify-0.1.0/pyproject.toml +61 -0
- nexus_certify-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nexus-certify
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Nexus Evidence Trust Core and Completion Core
|
|
5
|
+
License: Apache-2.0
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
9
|
+
Requires-Dist: PyGithub>=2.1.0
|
|
10
|
+
|
|
11
|
+
# Nexus Core
|
|
12
|
+
|
|
13
|
+
Nexus Core is the standalone Evidence-to-Claim Completion Certification implementation extracted from Nexus-new.
|
|
14
|
+
|
|
15
|
+
Its truth authorities are Evidence Trust Core and Completion Core.
|
|
16
|
+
|
|
17
|
+
## Scope
|
|
18
|
+
|
|
19
|
+
- **Evidence Trust Core**: Ingestion, normalization, verification, and tamper detection of execution evidence.
|
|
20
|
+
- **Completion Core**: ChangeSet certification, deterministic verification reduction, and disposition enforcement.
|
|
21
|
+
|
|
22
|
+
It provides the standalone `nexus-certify` CLI and HTTP/deterministic runtime interfaces.
|
|
23
|
+
|
|
24
|
+
## Local Golden Path
|
|
25
|
+
|
|
26
|
+
An external Python Git repository can verify a committed or dirty change without
|
|
27
|
+
running the HTTP service or hand-authoring protocol JSON:
|
|
28
|
+
|
|
29
|
+
The public distribution identity is `nexus-certify`. Until the release gate
|
|
30
|
+
publishes a versioned artifact, install the candidate source or locally built wheel
|
|
31
|
+
in a development environment. After an authorized public release, the supported
|
|
32
|
+
registry install command is `python -m pip install nexus-certify`.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
nexus-certify init --base-ref main --allow 'src/**' --allow 'tests/**' \
|
|
36
|
+
--verifier python -m pytest -q
|
|
37
|
+
nexus-certify doctor
|
|
38
|
+
nexus-certify check
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The local shell derives real Git object identities and the canonical manifest,
|
|
42
|
+
runs the configured verifier, delegates the verdict to the existing generic Core
|
|
43
|
+
adapter, and persists a verification receipt under `.nexus-core/receipts/`.
|
|
44
|
+
`VERIFIED` remains distinct from `CERTIFIED`; the local receipt is not a
|
|
45
|
+
Certification receipt or merge/release authority.
|
|
46
|
+
|
|
47
|
+
See [Local Golden Path Contract](docs/LOCAL_GOLDEN_PATH.md) for the exact config,
|
|
48
|
+
negative controls, receipt validation contract, and the not-yet-executed G4
|
|
49
|
+
fresh-environment canary contract.
|
|
50
|
+
|
|
51
|
+
For trusted same-repository GitHub `push` and `pull_request` events on self-hosted
|
|
52
|
+
runners, see the [G2 GitHub Repository Golden Path](docs/GITHUB_REPOSITORY_CHECK.md).
|
|
53
|
+
Fork PRs and GitHub-hosted runners are explicitly unsupported by that path.
|
|
54
|
+
|
|
55
|
+
## Generic ChangeSet Verification (experimental)
|
|
56
|
+
|
|
57
|
+
The loopback HTTP runtime also exposes a transport-neutral, non-GitHub verification seam for bounded consumers such as DevSpace or Open SWE:
|
|
58
|
+
|
|
59
|
+
- `GET /v1/protocol/generic-verification` — authenticated protocol descriptor, JSON schemas, canonicalization rules, schema-bundle hash, and cross-language conformance vectors.
|
|
60
|
+
- `POST /v1/changesets/verify` — deterministic `AcceptanceContract + ChangeSet + VerificationPlan + EvidenceBundle` verification. Certification is optional and occurs only when the caller supplies explicit policy facts.
|
|
61
|
+
|
|
62
|
+
Generic revision identities are typed as `git-commit:<40-lowercase-hex>` or `git-tree:<40-lowercase-hex>`. An uncommitted managed change may therefore be verified against a deterministic Git tree without creating a commit first. The generic `diff_hash` binds a canonical source-tree-to-target-tree manifest instead of pretty-patch formatting.
|
|
63
|
+
|
|
64
|
+
`verification=VERIFIED` does not imply `CERTIFIED`, Candidate acceptance, merge authorization, release, deployment, or production readiness. This interface does not select execution lanes, workers, models, routes, or workspaces.
|
|
65
|
+
|
|
66
|
+
## Completion Evidence Applicability and Freshness Contract
|
|
67
|
+
|
|
68
|
+
`product.completion` is an additive Completion Core capability that binds a
|
|
69
|
+
completion claim to the exact source/artifact state it claims, then decides
|
|
70
|
+
whether verification evidence actually applies to that final state. It is
|
|
71
|
+
deterministic, model-independent, and advisory: the completion claim's
|
|
72
|
+
`asserted_by` identity never confers authority, and certification remains with
|
|
73
|
+
`product.kernel.certify`.
|
|
74
|
+
|
|
75
|
+
It derives three explicit semantic states:
|
|
76
|
+
|
|
77
|
+
- `CLAIMS_COMPLETE` — a completion claim is present, revision-bound to the
|
|
78
|
+
change set's `target_revision`, and covers every changed non-deleted path
|
|
79
|
+
with a claimed final content hash.
|
|
80
|
+
- `VERIFICATION_APPLIES` — every required verifier has an evidence observation
|
|
81
|
+
that is bound to a changed path, observes the claimed final content hash
|
|
82
|
+
(freshness by content-hash comparison), and reports `PASS`.
|
|
83
|
+
- `CLAIMS_VERIFIED` — the conjunction of the two states above with the existing
|
|
84
|
+
deterministic `verify()` reduction. A claim assertion can never substitute
|
|
85
|
+
for a physical observation.
|
|
86
|
+
|
|
87
|
+
Per-verifier `EvidenceDisposition` values (`ACCEPTED`, `REJECTED_STALE`,
|
|
88
|
+
`REJECTED_IRRELEVANT`, `REJECTED_MISSING`, `REJECTED_CONTRADICTORY`,
|
|
89
|
+
`REJECTED_FAILED`) let Completion Core explain exactly which evidence was
|
|
90
|
+
accepted, rejected, stale, missing, or contradictory. Original API:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from product.completion import analyze_completion_evidence, validate_completion_evidence_analysis
|
|
94
|
+
|
|
95
|
+
analysis = analyze_completion_evidence(claim, contract, change_set, plan, evidence)
|
|
96
|
+
assert analysis.claims_verified # all three states
|
|
97
|
+
assert validate_completion_evidence_analysis(analysis, claim, contract, change_set, plan, evidence)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Freshness and execution ordering are derived from content hash comparison
|
|
101
|
+
rather than wall-clock timestamps: an observation whose artifact content hash
|
|
102
|
+
differs from the claimed final content hash predates a later mutation and is
|
|
103
|
+
stale unless the hashes are equal (equivalence proven by the trusted hash
|
|
104
|
+
machinery). See `tests/product/test_completion_evidence_applicability.py` for
|
|
105
|
+
the `modify -> test PASS -> modify again` and irrelevant-verification
|
|
106
|
+
regressions.
|
|
107
|
+
|
|
108
|
+
## Development
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
uv sync
|
|
112
|
+
uv run pytest -q tests/product
|
|
113
|
+
uv run pytest -q tests/benchmark
|
|
114
|
+
uv run ruff check product tests
|
|
115
|
+
uv run nexus-certify --help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Compatibility and Coexistence Boundary
|
|
119
|
+
|
|
120
|
+
`nexus-core` and the current `nexus-legacy` package in `Nexus-new` have distinct package and console-script ownership:
|
|
121
|
+
|
|
122
|
+
- Nexus Core is distributed as `nexus-certify` while continuing to own the
|
|
123
|
+
internal `product` Python package and `nexus-certify` console script.
|
|
124
|
+
- `nexus-legacy` owns the `nexus` and `scripts` packages and the `nexus` console script.
|
|
125
|
+
|
|
126
|
+
The current package definitions therefore no longer have the historical `product` namespace / `nexus-certify` console-script collision described by the previous README.
|
|
127
|
+
|
|
128
|
+
Use separate virtual environments for normal development and testing because the repositories have different dependency sets and operational roles. That isolation is development hygiene, not a requirement caused by the retired namespace/script collision.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Nexus Core
|
|
2
|
+
|
|
3
|
+
Nexus Core is the standalone Evidence-to-Claim Completion Certification implementation extracted from Nexus-new.
|
|
4
|
+
|
|
5
|
+
Its truth authorities are Evidence Trust Core and Completion Core.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
- **Evidence Trust Core**: Ingestion, normalization, verification, and tamper detection of execution evidence.
|
|
10
|
+
- **Completion Core**: ChangeSet certification, deterministic verification reduction, and disposition enforcement.
|
|
11
|
+
|
|
12
|
+
It provides the standalone `nexus-certify` CLI and HTTP/deterministic runtime interfaces.
|
|
13
|
+
|
|
14
|
+
## Local Golden Path
|
|
15
|
+
|
|
16
|
+
An external Python Git repository can verify a committed or dirty change without
|
|
17
|
+
running the HTTP service or hand-authoring protocol JSON:
|
|
18
|
+
|
|
19
|
+
The public distribution identity is `nexus-certify`. Until the release gate
|
|
20
|
+
publishes a versioned artifact, install the candidate source or locally built wheel
|
|
21
|
+
in a development environment. After an authorized public release, the supported
|
|
22
|
+
registry install command is `python -m pip install nexus-certify`.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
nexus-certify init --base-ref main --allow 'src/**' --allow 'tests/**' \
|
|
26
|
+
--verifier python -m pytest -q
|
|
27
|
+
nexus-certify doctor
|
|
28
|
+
nexus-certify check
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The local shell derives real Git object identities and the canonical manifest,
|
|
32
|
+
runs the configured verifier, delegates the verdict to the existing generic Core
|
|
33
|
+
adapter, and persists a verification receipt under `.nexus-core/receipts/`.
|
|
34
|
+
`VERIFIED` remains distinct from `CERTIFIED`; the local receipt is not a
|
|
35
|
+
Certification receipt or merge/release authority.
|
|
36
|
+
|
|
37
|
+
See [Local Golden Path Contract](docs/LOCAL_GOLDEN_PATH.md) for the exact config,
|
|
38
|
+
negative controls, receipt validation contract, and the not-yet-executed G4
|
|
39
|
+
fresh-environment canary contract.
|
|
40
|
+
|
|
41
|
+
For trusted same-repository GitHub `push` and `pull_request` events on self-hosted
|
|
42
|
+
runners, see the [G2 GitHub Repository Golden Path](docs/GITHUB_REPOSITORY_CHECK.md).
|
|
43
|
+
Fork PRs and GitHub-hosted runners are explicitly unsupported by that path.
|
|
44
|
+
|
|
45
|
+
## Generic ChangeSet Verification (experimental)
|
|
46
|
+
|
|
47
|
+
The loopback HTTP runtime also exposes a transport-neutral, non-GitHub verification seam for bounded consumers such as DevSpace or Open SWE:
|
|
48
|
+
|
|
49
|
+
- `GET /v1/protocol/generic-verification` — authenticated protocol descriptor, JSON schemas, canonicalization rules, schema-bundle hash, and cross-language conformance vectors.
|
|
50
|
+
- `POST /v1/changesets/verify` — deterministic `AcceptanceContract + ChangeSet + VerificationPlan + EvidenceBundle` verification. Certification is optional and occurs only when the caller supplies explicit policy facts.
|
|
51
|
+
|
|
52
|
+
Generic revision identities are typed as `git-commit:<40-lowercase-hex>` or `git-tree:<40-lowercase-hex>`. An uncommitted managed change may therefore be verified against a deterministic Git tree without creating a commit first. The generic `diff_hash` binds a canonical source-tree-to-target-tree manifest instead of pretty-patch formatting.
|
|
53
|
+
|
|
54
|
+
`verification=VERIFIED` does not imply `CERTIFIED`, Candidate acceptance, merge authorization, release, deployment, or production readiness. This interface does not select execution lanes, workers, models, routes, or workspaces.
|
|
55
|
+
|
|
56
|
+
## Completion Evidence Applicability and Freshness Contract
|
|
57
|
+
|
|
58
|
+
`product.completion` is an additive Completion Core capability that binds a
|
|
59
|
+
completion claim to the exact source/artifact state it claims, then decides
|
|
60
|
+
whether verification evidence actually applies to that final state. It is
|
|
61
|
+
deterministic, model-independent, and advisory: the completion claim's
|
|
62
|
+
`asserted_by` identity never confers authority, and certification remains with
|
|
63
|
+
`product.kernel.certify`.
|
|
64
|
+
|
|
65
|
+
It derives three explicit semantic states:
|
|
66
|
+
|
|
67
|
+
- `CLAIMS_COMPLETE` — a completion claim is present, revision-bound to the
|
|
68
|
+
change set's `target_revision`, and covers every changed non-deleted path
|
|
69
|
+
with a claimed final content hash.
|
|
70
|
+
- `VERIFICATION_APPLIES` — every required verifier has an evidence observation
|
|
71
|
+
that is bound to a changed path, observes the claimed final content hash
|
|
72
|
+
(freshness by content-hash comparison), and reports `PASS`.
|
|
73
|
+
- `CLAIMS_VERIFIED` — the conjunction of the two states above with the existing
|
|
74
|
+
deterministic `verify()` reduction. A claim assertion can never substitute
|
|
75
|
+
for a physical observation.
|
|
76
|
+
|
|
77
|
+
Per-verifier `EvidenceDisposition` values (`ACCEPTED`, `REJECTED_STALE`,
|
|
78
|
+
`REJECTED_IRRELEVANT`, `REJECTED_MISSING`, `REJECTED_CONTRADICTORY`,
|
|
79
|
+
`REJECTED_FAILED`) let Completion Core explain exactly which evidence was
|
|
80
|
+
accepted, rejected, stale, missing, or contradictory. Original API:
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
from product.completion import analyze_completion_evidence, validate_completion_evidence_analysis
|
|
84
|
+
|
|
85
|
+
analysis = analyze_completion_evidence(claim, contract, change_set, plan, evidence)
|
|
86
|
+
assert analysis.claims_verified # all three states
|
|
87
|
+
assert validate_completion_evidence_analysis(analysis, claim, contract, change_set, plan, evidence)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Freshness and execution ordering are derived from content hash comparison
|
|
91
|
+
rather than wall-clock timestamps: an observation whose artifact content hash
|
|
92
|
+
differs from the claimed final content hash predates a later mutation and is
|
|
93
|
+
stale unless the hashes are equal (equivalence proven by the trusted hash
|
|
94
|
+
machinery). See `tests/product/test_completion_evidence_applicability.py` for
|
|
95
|
+
the `modify -> test PASS -> modify again` and irrelevant-verification
|
|
96
|
+
regressions.
|
|
97
|
+
|
|
98
|
+
## Development
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
uv sync
|
|
102
|
+
uv run pytest -q tests/product
|
|
103
|
+
uv run pytest -q tests/benchmark
|
|
104
|
+
uv run ruff check product tests
|
|
105
|
+
uv run nexus-certify --help
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Compatibility and Coexistence Boundary
|
|
109
|
+
|
|
110
|
+
`nexus-core` and the current `nexus-legacy` package in `Nexus-new` have distinct package and console-script ownership:
|
|
111
|
+
|
|
112
|
+
- Nexus Core is distributed as `nexus-certify` while continuing to own the
|
|
113
|
+
internal `product` Python package and `nexus-certify` console script.
|
|
114
|
+
- `nexus-legacy` owns the `nexus` and `scripts` packages and the `nexus` console script.
|
|
115
|
+
|
|
116
|
+
The current package definitions therefore no longer have the historical `product` namespace / `nexus-certify` console-script collision described by the previous README.
|
|
117
|
+
|
|
118
|
+
Use separate virtual environments for normal development and testing because the repositories have different dependency sets and operational roles. That isolation is development hygiene, not a requirement caused by the retired namespace/script collision.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nexus-certify
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Nexus Evidence Trust Core and Completion Core
|
|
5
|
+
License: Apache-2.0
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
9
|
+
Requires-Dist: PyGithub>=2.1.0
|
|
10
|
+
|
|
11
|
+
# Nexus Core
|
|
12
|
+
|
|
13
|
+
Nexus Core is the standalone Evidence-to-Claim Completion Certification implementation extracted from Nexus-new.
|
|
14
|
+
|
|
15
|
+
Its truth authorities are Evidence Trust Core and Completion Core.
|
|
16
|
+
|
|
17
|
+
## Scope
|
|
18
|
+
|
|
19
|
+
- **Evidence Trust Core**: Ingestion, normalization, verification, and tamper detection of execution evidence.
|
|
20
|
+
- **Completion Core**: ChangeSet certification, deterministic verification reduction, and disposition enforcement.
|
|
21
|
+
|
|
22
|
+
It provides the standalone `nexus-certify` CLI and HTTP/deterministic runtime interfaces.
|
|
23
|
+
|
|
24
|
+
## Local Golden Path
|
|
25
|
+
|
|
26
|
+
An external Python Git repository can verify a committed or dirty change without
|
|
27
|
+
running the HTTP service or hand-authoring protocol JSON:
|
|
28
|
+
|
|
29
|
+
The public distribution identity is `nexus-certify`. Until the release gate
|
|
30
|
+
publishes a versioned artifact, install the candidate source or locally built wheel
|
|
31
|
+
in a development environment. After an authorized public release, the supported
|
|
32
|
+
registry install command is `python -m pip install nexus-certify`.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
nexus-certify init --base-ref main --allow 'src/**' --allow 'tests/**' \
|
|
36
|
+
--verifier python -m pytest -q
|
|
37
|
+
nexus-certify doctor
|
|
38
|
+
nexus-certify check
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The local shell derives real Git object identities and the canonical manifest,
|
|
42
|
+
runs the configured verifier, delegates the verdict to the existing generic Core
|
|
43
|
+
adapter, and persists a verification receipt under `.nexus-core/receipts/`.
|
|
44
|
+
`VERIFIED` remains distinct from `CERTIFIED`; the local receipt is not a
|
|
45
|
+
Certification receipt or merge/release authority.
|
|
46
|
+
|
|
47
|
+
See [Local Golden Path Contract](docs/LOCAL_GOLDEN_PATH.md) for the exact config,
|
|
48
|
+
negative controls, receipt validation contract, and the not-yet-executed G4
|
|
49
|
+
fresh-environment canary contract.
|
|
50
|
+
|
|
51
|
+
For trusted same-repository GitHub `push` and `pull_request` events on self-hosted
|
|
52
|
+
runners, see the [G2 GitHub Repository Golden Path](docs/GITHUB_REPOSITORY_CHECK.md).
|
|
53
|
+
Fork PRs and GitHub-hosted runners are explicitly unsupported by that path.
|
|
54
|
+
|
|
55
|
+
## Generic ChangeSet Verification (experimental)
|
|
56
|
+
|
|
57
|
+
The loopback HTTP runtime also exposes a transport-neutral, non-GitHub verification seam for bounded consumers such as DevSpace or Open SWE:
|
|
58
|
+
|
|
59
|
+
- `GET /v1/protocol/generic-verification` — authenticated protocol descriptor, JSON schemas, canonicalization rules, schema-bundle hash, and cross-language conformance vectors.
|
|
60
|
+
- `POST /v1/changesets/verify` — deterministic `AcceptanceContract + ChangeSet + VerificationPlan + EvidenceBundle` verification. Certification is optional and occurs only when the caller supplies explicit policy facts.
|
|
61
|
+
|
|
62
|
+
Generic revision identities are typed as `git-commit:<40-lowercase-hex>` or `git-tree:<40-lowercase-hex>`. An uncommitted managed change may therefore be verified against a deterministic Git tree without creating a commit first. The generic `diff_hash` binds a canonical source-tree-to-target-tree manifest instead of pretty-patch formatting.
|
|
63
|
+
|
|
64
|
+
`verification=VERIFIED` does not imply `CERTIFIED`, Candidate acceptance, merge authorization, release, deployment, or production readiness. This interface does not select execution lanes, workers, models, routes, or workspaces.
|
|
65
|
+
|
|
66
|
+
## Completion Evidence Applicability and Freshness Contract
|
|
67
|
+
|
|
68
|
+
`product.completion` is an additive Completion Core capability that binds a
|
|
69
|
+
completion claim to the exact source/artifact state it claims, then decides
|
|
70
|
+
whether verification evidence actually applies to that final state. It is
|
|
71
|
+
deterministic, model-independent, and advisory: the completion claim's
|
|
72
|
+
`asserted_by` identity never confers authority, and certification remains with
|
|
73
|
+
`product.kernel.certify`.
|
|
74
|
+
|
|
75
|
+
It derives three explicit semantic states:
|
|
76
|
+
|
|
77
|
+
- `CLAIMS_COMPLETE` — a completion claim is present, revision-bound to the
|
|
78
|
+
change set's `target_revision`, and covers every changed non-deleted path
|
|
79
|
+
with a claimed final content hash.
|
|
80
|
+
- `VERIFICATION_APPLIES` — every required verifier has an evidence observation
|
|
81
|
+
that is bound to a changed path, observes the claimed final content hash
|
|
82
|
+
(freshness by content-hash comparison), and reports `PASS`.
|
|
83
|
+
- `CLAIMS_VERIFIED` — the conjunction of the two states above with the existing
|
|
84
|
+
deterministic `verify()` reduction. A claim assertion can never substitute
|
|
85
|
+
for a physical observation.
|
|
86
|
+
|
|
87
|
+
Per-verifier `EvidenceDisposition` values (`ACCEPTED`, `REJECTED_STALE`,
|
|
88
|
+
`REJECTED_IRRELEVANT`, `REJECTED_MISSING`, `REJECTED_CONTRADICTORY`,
|
|
89
|
+
`REJECTED_FAILED`) let Completion Core explain exactly which evidence was
|
|
90
|
+
accepted, rejected, stale, missing, or contradictory. Original API:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from product.completion import analyze_completion_evidence, validate_completion_evidence_analysis
|
|
94
|
+
|
|
95
|
+
analysis = analyze_completion_evidence(claim, contract, change_set, plan, evidence)
|
|
96
|
+
assert analysis.claims_verified # all three states
|
|
97
|
+
assert validate_completion_evidence_analysis(analysis, claim, contract, change_set, plan, evidence)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Freshness and execution ordering are derived from content hash comparison
|
|
101
|
+
rather than wall-clock timestamps: an observation whose artifact content hash
|
|
102
|
+
differs from the claimed final content hash predates a later mutation and is
|
|
103
|
+
stale unless the hashes are equal (equivalence proven by the trusted hash
|
|
104
|
+
machinery). See `tests/product/test_completion_evidence_applicability.py` for
|
|
105
|
+
the `modify -> test PASS -> modify again` and irrelevant-verification
|
|
106
|
+
regressions.
|
|
107
|
+
|
|
108
|
+
## Development
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
uv sync
|
|
112
|
+
uv run pytest -q tests/product
|
|
113
|
+
uv run pytest -q tests/benchmark
|
|
114
|
+
uv run ruff check product tests
|
|
115
|
+
uv run nexus-certify --help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Compatibility and Coexistence Boundary
|
|
119
|
+
|
|
120
|
+
`nexus-core` and the current `nexus-legacy` package in `Nexus-new` have distinct package and console-script ownership:
|
|
121
|
+
|
|
122
|
+
- Nexus Core is distributed as `nexus-certify` while continuing to own the
|
|
123
|
+
internal `product` Python package and `nexus-certify` console script.
|
|
124
|
+
- `nexus-legacy` owns the `nexus` and `scripts` packages and the `nexus` console script.
|
|
125
|
+
|
|
126
|
+
The current package definitions therefore no longer have the historical `product` namespace / `nexus-certify` console-script collision described by the previous README.
|
|
127
|
+
|
|
128
|
+
Use separate virtual environments for normal development and testing because the repositories have different dependency sets and operational roles. That isolation is development hygiene, not a requirement caused by the retired namespace/script collision.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
nexus_certify.egg-info/PKG-INFO
|
|
4
|
+
nexus_certify.egg-info/SOURCES.txt
|
|
5
|
+
nexus_certify.egg-info/dependency_links.txt
|
|
6
|
+
nexus_certify.egg-info/entry_points.txt
|
|
7
|
+
nexus_certify.egg-info/requires.txt
|
|
8
|
+
nexus_certify.egg-info/top_level.txt
|
|
9
|
+
product/__init__.py
|
|
10
|
+
product/ledger.py
|
|
11
|
+
product/acquisition/__init__.py
|
|
12
|
+
product/acquisition/github.py
|
|
13
|
+
product/adapters/__init__.py
|
|
14
|
+
product/adapters/changeset_certification_v2.py
|
|
15
|
+
product/adapters/generic_verification.py
|
|
16
|
+
product/adapters/github.py
|
|
17
|
+
product/adapters/legacy.py
|
|
18
|
+
product/adapters/trusted.py
|
|
19
|
+
product/benchmark/__init__.py
|
|
20
|
+
product/benchmark/tg7_shadow.py
|
|
21
|
+
product/benchmark/tg7_shadow_kernel.py
|
|
22
|
+
product/benchmark/tg9_value.py
|
|
23
|
+
product/certification/__init__.py
|
|
24
|
+
product/certification/receipt.py
|
|
25
|
+
product/clients/__init__.py
|
|
26
|
+
product/clients/cli.py
|
|
27
|
+
product/clients/github_action.py
|
|
28
|
+
product/clients/local_golden_path.py
|
|
29
|
+
product/clients/mcp.py
|
|
30
|
+
product/completion/__init__.py
|
|
31
|
+
product/evidence/__init__.py
|
|
32
|
+
product/evidence/code_integrity.py
|
|
33
|
+
product/evidence/ingestion.py
|
|
34
|
+
product/execution/__init__.py
|
|
35
|
+
product/execution/python_runner.py
|
|
36
|
+
product/execution/profiles/__init__.py
|
|
37
|
+
product/execution/profiles/python-oci-pytest-v1.json
|
|
38
|
+
product/execution/profiles/python-oci-pytest-v1.lock
|
|
39
|
+
product/kernel/__init__.py
|
|
40
|
+
product/protocol/__init__.py
|
|
41
|
+
product/protocol/compatibility_gate.py
|
|
42
|
+
product/protocol/compatibility_gate_kernel.py
|
|
43
|
+
product/protocol/generic_verification.py
|
|
44
|
+
product/runtime/__init__.py
|
|
45
|
+
product/runtime/auth.py
|
|
46
|
+
product/runtime/http.py
|
|
47
|
+
product/runtime/schemas.py
|
|
48
|
+
product/runtime/service.py
|
|
49
|
+
product/verification/__init__.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
product
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Pure completion-certification product kernel."""
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Credential-free acquisition ports for externally owned source systems.
|
|
2
|
+
|
|
3
|
+
Acquisition is deliberately separate from :mod:`product.adapters`: ports are
|
|
4
|
+
injected by the controller and return already-authorized, read-only data.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .github import (
|
|
8
|
+
AcquisitionError,
|
|
9
|
+
GitHubAcquisitionSnapshot,
|
|
10
|
+
GitHubPullRequestAcquisition,
|
|
11
|
+
GitHubPullRequestLocator,
|
|
12
|
+
GitHubReadPort,
|
|
13
|
+
acquire_github_pull_request,
|
|
14
|
+
acquire_pull_request,
|
|
15
|
+
load_github_acquisition_snapshot,
|
|
16
|
+
serialize_github_acquisition_snapshot,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"AcquisitionError",
|
|
21
|
+
"GitHubAcquisitionSnapshot",
|
|
22
|
+
"GitHubPullRequestAcquisition",
|
|
23
|
+
"GitHubPullRequestLocator",
|
|
24
|
+
"GitHubReadPort",
|
|
25
|
+
"acquire_github_pull_request",
|
|
26
|
+
"acquire_pull_request",
|
|
27
|
+
"load_github_acquisition_snapshot",
|
|
28
|
+
"serialize_github_acquisition_snapshot",
|
|
29
|
+
]
|