Skip to content

Commit cace1c0

Browse files
Merge pull request #26 from BayyinahEnterprise/v0.11.8-as-saff
v0.11.8: as-Saff Phase G11.0.6 architecture-refactor corrective
2 parents 6c629a8 + cac6917 commit cace1c0

16 files changed

Lines changed: 1441 additions & 22 deletions

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ jobs:
4343
# CODE_OF_CONDUCT.md is Contributor Covenant v2.1 verbatim;
4444
# third-party text is excluded per the policy that bans
4545
# em-dashes from project-authored prose only.
46-
if LC_ALL=C.UTF-8 grep -rPn --exclude=CODE_OF_CONDUCT.md '[\x{2013}\x{2014}]' src/ tests/ README.md CHANGELOG.md pyproject.toml; then
47-
echo "Em-dash or en-dash found in source, tests, README, CHANGELOG, or pyproject.toml"
46+
if LC_ALL=C.UTF-8 grep -rPn --exclude=CODE_OF_CONDUCT.md '[\x{2013}\x{2014}]' src/ tests/ docs/ README.md CHANGELOG.md pyproject.toml; then
47+
echo "Em-dash or en-dash found in source, tests, docs, README, CHANGELOG, or pyproject.toml"
4848
exit 1
4949
fi
5050
echo "Em-dash check: clean"

CHANGELOG.md

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,170 @@ introduced this convention.
1919

2020
---
2121

22+
## [0.11.8] - 2026-05-09
23+
24+
### Architecture-refactor corrective (as-Saff / G11.0.6)
25+
26+
Phase G11.0.6 introduces a Route B procedural facade over the
27+
existing class-based ``Verifier`` API in
28+
``furqan_lint.gate11.verification``. This is an additive
29+
refactor: existing callers (``furqan_lint.gate11.cli`` and all
30+
tests) continue using ``Verifier(...).verify_bundle(...)``
31+
unchanged; a new module-level ``verify(manifest, args)``
32+
function dispatches to per-language facades
33+
(``python_verification.py``, ``rust_verification.py``) via a
34+
private ``_LANGUAGE_DISPATCH`` table.
35+
36+
This refactor unblocks Phase G11.2 (al-Mursalat / Go) and Phase
37+
G11.3 (an-Naziat / ONNX), both of which T00-halted at v0.12.0
38+
and v0.13.0 respectively because their prompts assumed Route A
39+
(per-language modules already extracted) but substrate-truth at
40+
v0.11.7 was a monolithic ``Verifier`` class with no module-level
41+
dispatch surface.
42+
43+
### Substrate changes
44+
45+
* New module ``src/furqan_lint/gate11/python_verification.py``:
46+
thin facade exposing ``_verify_python(manifest, args) ->
47+
VerificationResult``. Composes a ``Verifier`` instance
48+
internally and delegates to ``verify_bundle()``. Reads
49+
optional argparse attributes via ``getattr`` with safe
50+
defaults so partial namespaces are accepted.
51+
* New module ``src/furqan_lint/gate11/rust_verification.py``:
52+
mirror of python_verification for ``language=rust`` manifests.
53+
* ``src/furqan_lint/gate11/verification.py`` gains a module-level
54+
``verify(manifest, args)`` function and a private
55+
``_LANGUAGE_DISPATCH`` table built lazily inside the function
56+
(lazy-import pattern documented in F-RV-7 absorption to avoid
57+
module-level circular import). The ``Verifier`` class,
58+
``verify_bundle`` method, ``CasmVerificationError``,
59+
``CasmIndeterminateError``, ``TrustConfig``, and
60+
``VerificationResult`` types are all byte-stable across the
61+
v0.11.7 → v0.11.8 transition. ``__all__`` gains a single
62+
``"verify"`` entry; existing entries are not reordered or
63+
removed.
64+
* ``src/furqan_lint/gate11/checker_set_hash.py``: extends
65+
``_CHECKER_SOURCE_FILES`` from 15 to 17 entries, pinning
66+
python_verification.py + rust_verification.py so a Relying
67+
Party can detect substrate divergence between bundles signed
68+
by furqan-lint installations whose facade modules disagree.
69+
This honors the H-6 propagation-defense audit applied to
70+
Form A.
71+
72+
### Documentation
73+
74+
* New ``docs/g11.0.6-preflight.md``: T00 pre-flight verification
75+
record. Eight steps confirm v0.11.7 substrate against the
76+
four working hypotheses the v1.3 prompt depends on, including
77+
the substrate-truth probe that vindicated Route B as the
78+
correct architectural path (al-Mursalat v1.0 / an-Naziat v1.0
79+
prompts had assumed Route A).
80+
81+
### Tests
82+
83+
Test count: 604 (v0.11.7) -> 618 (v0.11.8). Net delta: +14.
84+
85+
Per the §3 inventory: +4 from T01
86+
(``tests/test_gate11_python_verification.py``: facade
87+
importable + signature contract + Verifier-class byte-stable +
88+
getattr-with-defaults), +4 from T02
89+
(``tests/test_gate11_rust_verification.py``: rust facade
90+
mirror), +5 from T03
91+
(``tests/test_gate11_verify_dispatch.py``: ``verify`` exported +
92+
unknown-language CASM-V-001 + python dispatch + rust dispatch +
93+
verify_bundle keyword-only tail byte-stable), +1 from T04
94+
(``tests/test_gate11_checker_set_hash_v0_11_8_pinning.py``:
95+
both new facade modules pinned in _CHECKER_SOURCE_FILES + all
96+
13 v0.11.7-pinned source files retained).
97+
98+
The recalibrated test count uses the bundle-author full-extras
99+
profile (``[dev,gate11,rust,onnx,onnx-runtime,onnx-profile]``)
100+
which is the profile under which the CHANGELOG-math gate runs at
101+
full strength (per the gate's onnxruntime-importorskip guard).
102+
The v0.11.7 entry's ``408`` was recorded under a leaner profile
103+
that did not have ``[gate11]`` extras installed; the gate
104+
necessarily skipped at that profile because rfc8785 was absent
105+
and most gate11 tests skip-collected. Going forward, releases
106+
that touch the gate11 substrate calibrate against the full-
107+
extras profile.
108+
109+
### Limitations introduced
110+
111+
None. This release is purely additive at the substrate level;
112+
no new four-place documented limits, no new CASM-V codes, no
113+
new signing surface, no schema changes.
114+
115+
### Round 35 absorption ledger
116+
117+
The Round 35 cross-instance audit on the as-Saff v1.0 / v1.1 /
118+
v1.2 prompts surfaced 28 findings absorbed across three audit
119+
iterations (v1.0 → v1.1 → v1.2 → v1.3-dispatch-ready):
120+
121+
* v1.0 audit: 8 findings (substrate-architecture clarity,
122+
byte-stable scoping, dispatch shape, lazy-import pattern,
123+
facade signature, getattr defaults, test coverage scope,
124+
CHANGELOG entry shape) absorbed as v1.1.
125+
* v1.1 audit: 9 F-XR findings absorbed as v1.2 (CASM-V-001
126+
positional vs keyword, dispatch table privacy,
127+
exception-construction style, _CHECKER_SOURCE_FILES
128+
bounded-diff scope, test count realistic delta range,
129+
language-handler signature uniformity, etc.).
130+
* v1.2 audit: 11 F-RV polish findings absorbed as v1.3 (lazy-
131+
import circular-import handling, getattr-default safety,
132+
facade-signature forward-reference resolution via
133+
get_annotations, byte-stable __all__ extension semantics,
134+
Naskh-discipline pinning rationale, etc.).
135+
136+
The v1.3 prompt was dispatched APPROVE-WITH-SURGICAL-AMENDMENTS
137+
per the Round 35 v1.2 audit verdict. All four substrate working
138+
hypotheses (Route B over Route A, _CHECKER_SOURCE_FILES tuple
139+
shape, byte-stable Verifier class, lazy-import circular-import
140+
pattern) verified empirically in T00 with zero divergences.
141+
142+
This release closes the al-Mursalat (v0.12.0) and an-Naziat
143+
(v0.13.0) cascade halts: their v1.2 prompts can dispatch
144+
unchanged against the v0.11.8 substrate without further
145+
refactor.
146+
147+
### §11.3 Five Questions
148+
149+
1. **What was added?** Two new facade modules
150+
(python_verification.py, rust_verification.py); module-level
151+
``verify`` + ``_LANGUAGE_DISPATCH`` in verification.py; two
152+
entries in _CHECKER_SOURCE_FILES; T00 pre-flight record;
153+
13 new tests (5 in test_gate11_verify_dispatch.py + 4 in
154+
test_gate11_python_verification.py + 4 in
155+
test_gate11_rust_verification.py + 1 in
156+
test_gate11_checker_set_hash_v0_11_8_pinning.py = 14 net
157+
per the §3 inventory above; the off-by-one is one rust
158+
facade test that mirrors the python facade's getattr
159+
contract under a slightly different argparse shape).
160+
2. **What was fixed?** Cascade-halt on Phase G11.2 (al-Mursalat
161+
/ Go) and Phase G11.3 (an-Naziat / ONNX). Their v1.2 prompts
162+
T00-halted because they assumed Route A (per-language modules
163+
extracted) but substrate-truth at v0.11.7 was Route B
164+
(monolithic Verifier class). v0.11.8 ships the Route B
165+
facade so both downstream prompts can dispatch unchanged.
166+
3. **What changed about the existing surface?** Nothing of
167+
substance. ``verification.__all__`` gains a single
168+
``"verify"`` entry; existing entries unchanged.
169+
_CHECKER_SOURCE_FILES gains two entries; existing 15 entries
170+
unchanged.
171+
4. **What is byte-stable?** ``Verifier`` class, ``verify_bundle``
172+
method signature (including the keyword-only tail per Phase
173+
G11.1 H-5 audit corrective), ``CasmVerificationError`` /
174+
``CasmIndeterminateError`` semantics, ``TrustConfig``
175+
dataclass, ``VerificationResult`` dataclass, ``cli.py``
176+
verify-path-A and verify-path-B production callers, all
177+
pre-v0.11.8 tests.
178+
5. **What is the next phase?** Phase G11.2 al-Mursalat (v0.12.0
179+
/ Go verifier extension). Its v1.2 prompt dispatches unchanged
180+
against the v0.11.8 substrate. After v0.12.0 ships, Phase
181+
G11.3 an-Naziat (v0.13.0 / ONNX verifier extension) becomes
182+
T00-cleanable.
183+
184+
---
185+
22186
## [0.11.7] - 2026-05-09
23187

24188
### Process-corrective amendment (al-Hujurat / G10.5.A)

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ pip install "furqan-lint[rust,go,onnx-runtime,onnx-profile,gate11]" # all adapt
4141
### Install from a specific commit or tag
4242

4343
```bash
44-
pip install "git+https://github.com/BayyinahEnterprise/furqan-lint.git@v0.11.7"
44+
pip install "git+https://github.com/BayyinahEnterprise/furqan-lint.git@v0.11.8"
4545
```
4646

47-
Replace `v0.11.7` with any tag from the [release history](https://github.com/BayyinahEnterprise/furqan-lint/releases) or `main` for the development tip.
47+
Replace `v0.11.8` with any tag from the [release history](https://github.com/BayyinahEnterprise/furqan-lint/releases) or `main` for the development tip.
4848

4949
### Furqan dependency
5050

@@ -511,7 +511,7 @@ jobs:
511511
runs-on: ubuntu-latest
512512
steps:
513513
- uses: actions/checkout@v4
514-
- uses: BayyinahEnterprise/furqan-lint@v0.11.7
514+
- uses: BayyinahEnterprise/furqan-lint@v0.11.8
515515
with:
516516
path: src/
517517
```
@@ -531,7 +531,7 @@ Python files:
531531
# .pre-commit-config.yaml
532532
repos:
533533
- repo: https://github.com/BayyinahEnterprise/furqan-lint
534-
rev: v0.11.7
534+
rev: v0.11.8
535535
hooks:
536536
- id: furqan-lint
537537
```
@@ -566,7 +566,7 @@ repos:
566566
- id: mypy
567567
568568
- repo: https://github.com/BayyinahEnterprise/furqan-lint
569-
rev: v0.11.7
569+
rev: v0.11.8
570570
hooks:
571571
- id: furqan-lint
572572
```

0 commit comments

Comments
 (0)