Skip to content

Commit 8475a9d

Browse files
committed
docs: pin alpha package badge
1 parent 5150e9e commit 8475a9d

2 files changed

Lines changed: 27 additions & 6 deletions

File tree

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# GovEngine
22

33
[![CI: pytest](https://github.com/rozmiarD/GovEngine/actions/workflows/pytest.yml/badge.svg)](https://github.com/rozmiarD/GovEngine/actions/workflows/pytest.yml)
4-
[![Package: govengine](https://img.shields.io/pypi/v/govengine?label=package%3A%20govengine&color=blueviolet)](https://pypi.org/project/govengine/)
4+
[![Package: govengine 0.10.0a0](https://img.shields.io/badge/package-govengine%200.10.0a0-blueviolet.svg)](https://pypi.org/project/govengine/0.10.0a0/)
55
[![Python: 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](pyproject.toml)
66
[![Dependency: SCLite >=0.5.1](https://img.shields.io/badge/dependency-SCLite%20%3E%3D0.5.1-informational.svg)](https://github.com/rozmiarD/SCLite)
77
[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE)
88

99
GovEngine is a carrier-agnostic deterministic governed-runtime kernel for portable artifact governance and policy-gated controlled execution.
1010

11-
It consumes **SCLite** as its contract lifecycle layer and provides reusable services around artifact state/transition boundaries, policy decisions, execution-contract shaping, execution-ticket checks, command-shape normalization, dry-run result assembly, and neutral runtime/control projections. Security-oriented action/tool/scope/signal helpers remain available as an optional profile for hosts such as Ravenclaw, not as the neutral core itself.
11+
It consumes **SCLite** as its contract lifecycle layer and provides reusable services around artifact state/transition boundaries, policy decisions, execution-contract shaping, execution-ticket checks, command-shape normalization, dry-run result assembly, and neutral runtime/control projections. Security-oriented action/tool/scope/signal helpers remain available as optional Ravenclaw-derived compatibility helpers, not as the neutral core itself.
1212

1313

1414
## Why it exists
@@ -40,7 +40,7 @@ GovEngine is **not** Ravenclaw, Tecrax, Logdash, an LLM agent loop, a scanner, o
4040
## What GovEngine includes now
4141

4242
- a public surface registry that separates neutral artifact-governance core, controlled-execution core, and optional security-profile helpers;
43-
- an explicit `govengine.security_profile` facade for optional security-profile helper discovery;
43+
- an explicit `govengine.security_profile` compatibility facade for optional Ravenclaw-derived helper discovery;
4444
- serializable kernel/profile/runtime/SCLite boundary contracts and a machine-readable boundary report;
4545
- execution-contract shaping/redaction helpers;
4646
- artifact descriptor/state/transition boundary helpers;
@@ -55,7 +55,7 @@ GovEngine is **not** Ravenclaw, Tecrax, Logdash, an LLM agent loop, a scanner, o
5555
- neutral runtime-shell contracts for host control actions, queue snapshots, runtime snapshots, and scheduler-tick metadata;
5656
- neutral planning contracts for task, plan-intent, and planner-port handoffs;
5757
- neutral admission, policy, approval, and audit contracts for host runtime gates;
58-
- optional security-profile helpers for action schema/validation/compilation, capability recipes, tool registry, semantic-loss policy, scope checks, policy gateway, and signal/analysis/evidence-confirmation contracts;
58+
- optional compatibility helpers for action schema/validation/compilation, capability recipes, tool registry, semantic-loss policy, scope checks, policy gateway, and signal/analysis/evidence-confirmation contracts;
5959
- explicit SCLite integration seams;
6060
- focused standalone pytest coverage and GitHub Actions CI.
6161

@@ -76,10 +76,10 @@ GovEngine is an **alpha 0.10.0a0 (`0.10.0-alpha`) helper package**. The package
7676

7777
## Installation
7878

79-
Install the current public package from PyPI:
79+
Install the current public alpha package from PyPI with an exact version pin:
8080

8181
```bash
82-
python -m pip install govengine
82+
python -m pip install govengine==0.10.0a0
8383
```
8484

8585
GovEngine depends on the PyPI distribution `sclite-core` while preserving the Python import package `sclite`.

scripts/validate_public_truth.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,26 @@ def _assert_no_current_stale_status(paths: Iterable[str], version: str) -> None:
100100
raise AssertionError(f'{path}:stale_current_claim:{match.group(0)}')
101101

102102

103+
def _assert_readme_package_truth(readme: str, version: str) -> None:
104+
release_url = f'https://pypi.org/project/govengine/{version}/'
105+
badge = f'package-govengine%20{version}-blueviolet.svg'
106+
install_command = f'python -m pip install govengine=={version}'
107+
forbidden_dynamic_badges = (
108+
'img.shields.io/pypi/v/govengine',
109+
'label=package%3A%20govengine',
110+
)
111+
for marker in forbidden_dynamic_badges:
112+
if marker in readme:
113+
raise AssertionError(f'README.md:dynamic_prerelease_unsafe_badge:{marker}')
114+
_assert_contains('README.md', readme, badge)
115+
_assert_contains('README.md', readme, release_url)
116+
_assert_contains('README.md', readme, install_command)
117+
unpinned_install = re.compile(r'python -m pip install govengine(?![=<>\[])')
118+
match = unpinned_install.search(readme)
119+
if match:
120+
raise AssertionError(f'README.md:unpinned_alpha_install:{match.group(0)}')
121+
122+
103123
def _assert_alpha_maturity_truth(paths: Iterable[str]) -> None:
104124
forbidden = re.compile(r'\bcurrent\s+pre-alpha\b|\bcurrently\s+pre-alpha\b|\bin\s+pre-alpha\s+form\b', re.IGNORECASE)
105125
for path in paths:
@@ -133,6 +153,7 @@ def main() -> int:
133153
_assert_contains('README.md', readme, f'alpha {version}')
134154
_assert_contains('README.md', readme, release_label)
135155
_assert_contains('README.md', readme, dependency)
156+
_assert_readme_package_truth(readme, version)
136157
_assert_contains('docs/ROADMAP.md', roadmap, f'Current source baseline: `govengine=={version}`')
137158
_assert_contains('docs/ROADMAP.md', roadmap, dependency)
138159
_assert_contains('PUBLIC_STATUS.md', public_status, f'Source version: `{version}`.')

0 commit comments

Comments
 (0)