Skip to content

Commit 0477a17

Browse files
committed
Document release readiness and security posture
1 parent c52221b commit 0477a17

5 files changed

Lines changed: 120 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
- Added an installed `a7` CLI entrypoint via `pyproject.toml`.
1313
- Added `scripts/build_examples.py` to build debug/release native artifacts for Zig and C example outputs and verify each binary against golden fixtures.
1414
- Added `RELEASE.md` with local release gates, artifact layout, tagging steps, and security caveats.
15+
- Added `SECURITY.md` and `RELEASE_READINESS_REVIEW.md` to document trust boundaries, residual release risks, and verification evidence.
1516
- Added release-tooling pytest coverage for the installed CLI and debug build script.
1617
- Added a GitHub Actions CI workflow for Python, backend, package, docs, and artifact checks.
1718

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ All AST traversals are iterative with no recursion. The pipeline works with Pyth
158158
- Documentation website: `https://airbus5717.github.io/a7-py/`
159159
- `docs/SPEC.md` - Language specification
160160
- `RELEASE.md` - Release/debug build checklist
161+
- `SECURITY.md` - Security policy and trust boundary
162+
- `RELEASE_READINESS_REVIEW.md` - Current release-readiness audit
161163
- `examples/` - 36 sample programs
162164
- `MISSING_FEATURES.md` - Feature status and roadmap
163165
- `CHANGELOG.md` - Change history

RELEASE_READINESS_REVIEW.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Release Readiness Review
2+
3+
Date: 2026-05-07
4+
5+
## Result
6+
7+
The repository is substantially more release-ready than before this pass:
8+
9+
- installable `a7` CLI entrypoint
10+
- compatibility `main.py` wrapper
11+
- debug and release artifact builder for Zig and C
12+
- committed docs lockfile for deterministic docs builds
13+
- CI workflow for tests, backends, artifacts, package build, and docs build
14+
- release checklist, security policy, and updated status docs
15+
16+
This is not a claim that the implementation is free of all bugs or
17+
vulnerabilities. For a compiler and native-code build pipeline, that standard is
18+
not factually provable from local tests alone.
19+
20+
## Evidence Checked
21+
22+
- `uv run a7 --help`
23+
- `PYTHONPATH=. uv run pytest test/test_release_tooling.py -q`
24+
- `uv run python scripts/build_examples.py --profile debug --backend both --clean`
25+
- `uv run python scripts/build_examples.py --profile release --backend both --clean`
26+
- `./run_all_tests.sh`
27+
- `uv build`
28+
- `cd site && npm run build`
29+
- built wheel installed into a temporary virtualenv and invoked as `a7`
30+
- `git diff --check`
31+
32+
## Fixed In This Pass
33+
34+
- Package metadata now has a real description and a console script.
35+
- Runtime-only test dependency moved into the dev dependency group.
36+
- `main.py` now delegates to `src.cli:main`.
37+
- `scripts/build_examples.py` builds and verifies debug/release artifacts for
38+
both backends.
39+
- `run_all_tests.sh` now covers C backend tests, C E2E, error-stage audit,
40+
debug/release artifact builds, docs style, and full pytest.
41+
- GitHub CI now runs Python tests, backend verifiers, artifact builds, package
42+
build, docs style, docs lint, and docs build.
43+
- GitHub Pages deploy now uses `npm ci` with `site/package-lock.json`.
44+
- README, SPEC, release docs, status docs, and agent docs describe the same
45+
release commands.
46+
47+
## Residual Risks
48+
49+
- `a7-py` is not a sandbox. Do not compile or run untrusted A7 source.
50+
- `fall` is parsed but not semantically validated or lowered.
51+
- Full ownership/lifetime safety is not implemented.
52+
- Import/module loading still has fail-open behavior that should be hardened.
53+
- Backend parity is verified for examples, not all possible source programs.
54+
- Tag-based publishing is not wired.
55+
- Automated supply-chain scanning is not configured.
56+
57+
## Recommended Next Pass
58+
59+
1. Make import/module loading fail closed with source-language diagnostics.
60+
2. Replace Zig backend `@compileError("unsupported")` fallbacks with compiler
61+
codegen errors.
62+
3. Add tag-based release workflow after choosing the package publishing target.
63+
4. Add dependency and secret scanning to CI.
64+
5. Expand differential backend tests beyond examples.

SECURITY.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
`a7-py` is pre-1.0. Security fixes are made on `master` unless a release branch
6+
is created later.
7+
8+
## Trust Boundary
9+
10+
`a7-py` is not a sandbox.
11+
12+
The compiler reads A7 source, emits Zig or C, and the verification scripts build
13+
and execute native binaries. Compiled A7 programs can do anything the generated
14+
program and host runtime allow. Only compile and run A7 source you trust.
15+
16+
## Local Verification
17+
18+
Before release or broad testing, run:
19+
20+
```bash
21+
./run_all_tests.sh
22+
uv build
23+
cd site && npm run build
24+
```
25+
26+
The full gate includes parser/tokenizer tests, semantic tests, Zig and C backend
27+
tests, example runtime verification, debug/release artifact builds, error-stage
28+
checks, docs style checks, and full pytest.
29+
30+
## Known Security-Relevant Limitations
31+
32+
- No sandboxing for compiled programs.
33+
- No ownership or borrow-style lifetime model yet.
34+
- Import/module loading still needs stronger fail-closed behavior.
35+
- C and Zig backend parity checks exist for examples but are not a proof for all
36+
possible programs.
37+
- Tag-based package publishing is not configured yet.
38+
39+
These limitations are tracked in `MISSING_FEATURES.md`, `TODO.md`, and
40+
`RELEASE.md`.
41+
42+
## Reporting
43+
44+
Open a private security advisory or contact the repository owner before opening
45+
public issues for exploitable crashes, unsafe generated code, or release
46+
pipeline compromise.

scripts/check_docs_style.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,13 @@ class Finding:
4444
def iter_doc_paths(root: Path) -> list[Path]:
4545
paths: set[Path] = set()
4646

47-
for fixed in [root / "README.md", root / "RELEASE.md", root / "site" / "README.md"]:
47+
for fixed in [
48+
root / "README.md",
49+
root / "RELEASE.md",
50+
root / "SECURITY.md",
51+
root / "RELEASE_READINESS_REVIEW.md",
52+
root / "site" / "README.md",
53+
]:
4854
if fixed.exists():
4955
paths.add(fixed)
5056

0 commit comments

Comments
 (0)