Skip to content

v0.12.0: al-Mursalat Phase G11.2 Go Sigstore-CASM extension#27

Merged
BayyinahEnterprise merged 10 commits into
mainfrom
v0.12.0-al-mursalat
May 11, 2026
Merged

v0.12.0: al-Mursalat Phase G11.2 Go Sigstore-CASM extension#27
BayyinahEnterprise merged 10 commits into
mainfrom
v0.12.0-al-mursalat

Conversation

@BayyinahEnterprise

Copy link
Copy Markdown
Owner

[0.12.0] - 2026-05-11

Substrate extension (al-Mursalat / G11.2)

Phase G11.2 extends gate11 substrate to Go (third in the
canonical mushaf chain after Python G11.0 v0.10.0 and Rust
G11.1 v0.11.0) and closes Round 29 finding F22 at the CLI
dispatch surface (gate11-rust-smoke-test previously invoked
Python verifier on rust-language manifest, fail-closed at
CASM-V-001; gate11-go-smoke-test would have failed the same
way pre-v0.12.0). Resolves the dispatch question once for
all three substrates per the Shape-B consolidation pattern
under Route (a1-via-args): single canonical dispatch entry
through verification.verify(manifest, args) with the
function-local _LANGUAGE_DISPATCH extended via lazy-
import of _verify_go; CLI flags (--trust-config,
--force-refresh, --expected-identity, --expected-issuer,
--allow-any-identity) threaded uniformly through args
Namespace.

Closures

  • F22 dispatch consolidation at the CLI surface across both
    entry points (cmd_manifest_verify + cmd_check_gate11);
    gate11-rust-smoke-test passes; new gate11-go-smoke-test
    passes (T02, T08). F22 substrate closure was at v0.11.3
    G11.0.2; al-Mursalat closes the CLI dispatch layer per
    F-AL-7 v1.3 absorption framing.
  • Go gate11 substrate: signature canonicalization (T03;
    rules 6-8 mirror of Python H-4 closure adapted for Go
    containers); verifier (T04; private _verify_go handler
    mirrors v0.11.8-LIVE Python/Rust facade pattern per F3
    v1.1 + F-RM-1 v1.4 absorption); pinned source list (T05;
    Option (alpha) alphabetical-within-section per F-PA-3
    v1.8 absorption); identity policy parity (T06; CASM-V-032/
    035/036 honored).
  • Per F-RN-1 v1.5 absorption + Route (a1-via-args): the
    _verify_python / _verify_rust private handlers
    bodies are extended to honor caller-passed
    args.trust_config via
    getattr(args, "trust_config", None) or TrustConfig();
    preserves v0.11.8 programmatic-RP backward compatibility.
  • Per F-PF-3 v1.7 absorption + F6 v1.1 SOURCE-PRESENT
    branch: goast source at
    src/furqan_lint/go_adapter/cmd/goast/main.go pinned in
    _CHECKER_SOURCE_FILES; Form A checker_set_hash surface
    now attests the Go AST emitter source code alongside the
    gate11/* verification modules.
  • Schema + dispatch whitelists extended: language set
    ("python", "rust") becomes ("python", "rust", "go")
    at both Manifest.from_dict (manifest_schema.py line
    186) and Verifier.step2_3_check_version_and_language
    (verification.py line 157); same precedent as v0.11.3
    G11.0.2 F22 corrective extension.
  • Three-substrate symmetry documentation: README + SECURITY.md
    (N2 typosquatting disclosure extended for Go v0.12.0+) +
    new docs/gate11-symmetry.md with seven-row symmetry table
    (T07).

Audit-chain absorption ledger

Round 38.5 fresh-Claude cross-instance audit absorbed as v1.8
(5 F-PA findings); Co-work T00 absorbed as v1.7 (3 F-PF
findings); Round 38 Claude continuity audit absorbed as v1.6
(7 F-TR findings); Round 37 Perplexity absorbed as v1.5 (10
F-RN findings including F-RN-1 CRITICAL trust-config flow);
Round 36 Perplexity absorbed as v1.4 (12 F-RM findings
including 3 CRITICAL substrate-untrue symbol claims); self-
review absorbed as v1.3 (10 F-AL findings; substrate-state
alignment to v0.11.8 post-as-Saff); Round 32 polish absorbed
as v1.2 (F10-F13); Round 31 cross-instance absorbed as v1.1
(F1-F9 + F-PMD-1). Monotonic-narrowing residual surface
across rounds: 3 CRITICAL (Round 36) -> 1 CRITICAL (Round 37)
-> 0 CRITICAL (Round 38 / 38.5 / Co-work T00); CRITICAL
convergence held.

Tests

Test count: 618 (v0.11.8) -> 642 (v0.12.0). Net delta: +24.

Per the §3 inventory: +4 from T02 (new dispatch fixtures in
test_gate11_verify_dispatch.py covering Go dispatch routing +
ONNX-as-next-phase callout + trust_config threading +
function-local dispatch isolation), +1 from T02 substrate
evolution in test_gate11_dispatch_f22_corrective.py
(retired test_schema_rejects_language_go +
test_step2_3_rejects_go_pre_g11_2 per their own retirement
docstrings; replaced with test_schema_accepts_language_go +
test_al_mursalat_step2_3_accepts_go_manifest +
test_al_mursalat_step2_3_unknown_language_message_names_onnx_phase),
+5 from T03 (Go signature canonicalization rules 6-8),
+5 from T04 (Go verifier facade contract pins),
+6 from T05 (checker_set_hash v0.12.0 pinning; 4 prompt-
specified fixtures + 2 added for diagnostic granularity on
F-PA-3 Option (alpha) alphabetical-within-section discipline),
+3 from T08 (smoke-test fixture inventory pins).

Projection per al-Mursalat v1.8 prompt was +26 / 644; empirical
is +24 / 642 (drift -2; within al-Hujurat T05 CHANGELOG-math
gate assertion (c) projection-drift tolerance). The two-test
under-projection reflects T02 dispatch fixture inventory
substrate-actual delta of +4 against the 5 pre-existing
test_gate11_verify_dispatch.py fixtures rather than +9 fresh
(the prompt's "T02 adds 9 dispatch tests" was full post-edit
count, not delta-against-substrate).

Limitations introduced

None. This release is purely additive at the substrate level;
no new four-place documented limits, no new CASM-V codes, no
new signing surface, no schema-version bump (v1.0 retained).

§11.3 Five Questions

  1. What was added? Three new gate11 substrate files
    (gate11/go_signature_canonicalization.py with rules 6-8;
    gate11/go_verification.py with private _verify_go handler;
    tests/fixtures/gate11/go_smoke_module.go); three new test
    files (test_go_signature_canonicalization.py;
    test_gate11_go_verification.py;
    test_gate11_checker_set_hash_v0_12_0_pinning.py;
    test_gate11_smoke_test_fixture_inventory.py); module-level
    verification.py dispatch dict extension; cmd_manifest_verify
    • cmd_check_gate11 refactors to route through
      verification.verify; CI gate11-go-smoke-test job;
      docs/gate11-symmetry.md; SAFETY_INVARIANTS.md Invariant 6
      step 3 generalization; goast source pin in
      _CHECKER_SOURCE_FILES (16 -> 19 entries per F-PA-3 Option
      (alpha)).
  2. What was fixed? F22 at the CLI dispatch surface (the
    substrate closure was at v0.11.3; al-Mursalat closes the
    dispatch consolidation layer). Trust-config flow under
    Route (a1-via-args) -- private handlers now honor
    args.trust_config rather than constructing default
    unconditionally (F-RN-1 v1.5 absorption).
  3. What changed about the existing surface? Verifier
    class API + verify_bundle method signature byte-stable
    (per as-Saff Acceptance §15 byte-stability commitment).
    Schema + dispatch language whitelists extended in lock-
    step (v0.11.3 F22 corrective precedent). python_verification
    • rust_verification bodies extended to thread
      args.trust_config (post-as-Saff scope; those modules are
      new at as-Saff with no pre-existing byte-stability claim).
  4. What is byte-stable? Verifier class, verify_bundle
    method signature (including keyword-only tail per Phase
    G11.1 H-5 audit corrective), CasmVerificationError /
    CasmIndeterminateError semantics, TrustConfig dataclass,
    VerificationResult dataclass. Programmatic Relying Parties
    not setting args.trust_config see v0.11.8 default
    behavior unchanged.
  5. What is the next phase? Phase G11.3 an-Naziat
    (v0.13.0 / ONNX verifier extension). an-Naziat v1.4 will
    inherit v1.8 dispositions verbatim against true v0.12.0
    substrate (Route a1-via-args + asymmetric cmd_check_gate11
    signature + alphabetical-within-section _CHECKER_SOURCE_FILES
    • goast-equivalent SOURCE-PRESENT branch for any ONNX
      tooling source pinning).

…(PROCEED-WITH-ROUTE-a1-via-args)

Eight-step T00 record + step 4b 3-row evidence table + T02.0 helper-
symbol sub-verification. Confirms v0.11.8 substrate matches v1.6
prompt's projected line citations (verify at 556; _LANGUAGE_DISPATCH
at 594-597; consumption at 599-606; _verify_python/_verify_rust at
53/54). Two narrow substrate divergences documented as Round 39
finding seeds:

* #1 _CHECKER_SOURCE_FILES count: substrate has 16 entries; v1.6
  F-RN-6/F-TR-2 claimed 14 (pre-as-Saff baseline mislabel). T05
  implementation honors substrate-actual 16->18.
* #2 cmd_check_gate11 signature: substrate is (directory: Path,
  opts: dict) not (args: list[str]); F-RN-5 architectural-shape
  simplification. T02 Edit 3a/3b implement asymmetric refactors
  respecting substrate-actual signatures.

Step 4b evidence: Row (ii) FAIL on _verify_python/_verify_rust
body trust-config flow (F-RN-1 root-cause substrate gap confirmed).
Route (a1-via-args) required: T02 Edit 2 updates both bodies to
'getattr(args, "trust_config", None) or TrustConfig()'.

Step 5: goast source PRESENT at src/furqan_lint/go_adapter/cmd/
goast/main.go; T05 pins this path (extends tuple to 18 entries).

Step 6: live sigstore API patterns captured for T04 mirror.

Step 7: all four al-Hujurat amendments (T01/T02/T04+T05/T06+T07)
operational at v0.11.8.

T02.0 helper-symbol sub-verification: BOTH _print_error AND
_walk_bundles ABSENT. Proceed under option-i (substrate-actual
idioms: print(f'...', file=sys.stderr) from cmd_check_gate11 line
491; existing rglob loop preserved verbatim).
…pport per Option A (T01)

Per al-Mursalat T01 Option A disposition (default per T00 step 3
CASM-V allocation table evidence: CASM-V-001 already in use as
union code for casm_version mismatch AND language-not-supported
semantics; no need to allocate new code):

Adds explicit substrate-LIVE supported-language set enumeration
to Invariant 6 step 3 (between the language-check semantic and
the CASM-V-020 trust-root step): {python (G11.0/v0.10.0), rust
(G11.1/v0.11.0), go (G11.2/v0.12.0)}. ONNX flagged as
substrate-anticipated per Invariant 5 with ship target v0.13.0
an-Naziat.

CASM-V-001 retains union semantic per Option A; the verifier
substrate's _LANGUAGE_DISPATCH at gate11/verification.py raises
CASM-V-001 with positional construction style (substrate
convention preserved per as-Saff v0.11.8 §15 byte-stability
commitment).

Closes al-Mursalat T01 (SAFETY_INVARIANTS.md amendment as
canonical authority FIRST per framework §11 ordering).
…lization rules 6-8

Mirror of Python H-4 closure (at-Tawbah T03 rules 1-5) adapted for
Go's container shapes. Rules 6-8 continue the H-4 numbering:

* Rule 6 -- nested element-wise recursion: `[]map[string]*Result[T, E]`
  -> `slice[map[string][pointer[Result[T,E]]]]` (slice/map/pointer
  container tokens explicitly named; generic args iterated via
  bracket-depth tracking, not split-on-comma string operations).
* Rule 7 -- multi-return iteration: signatures iterate ReturnTypeNames
  as list (goast pre-stringifies each return type via go/ast
  String() method; Python layer preserves list shape rather than
  collapsing to "(int, error)" tuple string).
* Rule 8 -- channel direction preservation: `chan T`, `<-chan T`,
  `chan<- T` canonicalize as `channel[T]`, `channel_recv[T]`,
  `channel_send[T]` -- three structurally distinct types.

Implementation: 298-line module with private `_canonicalize_type`
recursive descent parser (handles slice/pointer/map/chan/generic
expression depth tracking) + public `canonicalize_function_signature`
+ `canonical_signature_fingerprint` (RFC 8785 + sha256).
`__all__` exports the public surface; private `_canonicalize_type`
exported for test-coverage of rule 6/8.

Tests (5 pinning fixtures per as-Mursalat T03):
* test_rule_6_nested_slice_map_pointer_generic
* test_rule_7_multi_return_iterates_as_list
* test_rule_8_channel_direction_preserved
* test_signal_channel_idiom (map[string]chan struct{})
* test_variadic_context_idiom (...Option + context.Context)

Closes Go-side H-4 equivalent (canonicalization parity with Python
at-Tawbah + Rust as-Saffat substrate).
…0.11.8 LIVE)

Adds src/furqan_lint/gate11/go_verification.py with private
`_verify_go(manifest, args) -> VerificationResult` per substrate
convention (mirror of as-Saff v0.11.8 python_verification.py /
rust_verification.py): private handler only; `__all__ =
("_verify_go",)`; no public `verify` alias.

API pattern mirrored from v0.11.8-LIVE per T00 step 6 pre-flight
record (post-v0.11.5 G11.0.4 al-Bayyina F24 corrective; NOT
at-Tawbah-era reference):
* Verifier class internally uses SgVerifier(_inner=trusted_root)
  with TrustedRoot.production()/staging() fallback per H-5
* C-1 refuse-without-policy default (CASM-V-035)
* CASM-V-032 on identity mismatch; CASM-V-036 on identity-
  extraction TypeError

Per F-RN-1 v1.5 absorption + T00 step 4b Row (ii) FAIL
remediation: body honors caller-passed args.trust_config via
`getattr(args, "trust_config", None) or TrustConfig()`
pattern. CLI loads trust_config via _trust_config_from_path
helper and attaches to args Namespace; programmatic RPs not
setting args.trust_config get default behavior matching v0.11.8
backward-compat semantics. The `--trust-config PATH` CLI flag
flow is preserved under Route (a1-via-args).

Other optional argparse attributes (force_refresh,
expected_identity, expected_issuer, allow_any_identity) read via
getattr-with-default per Edit 2 pattern from python_verification
/ rust_verification at v0.11.8.

Tests (5 mirroring python_verification / rust_verification
contract pinning):
* test_go_verification_facade_is_importable
* test_go_verification_facade_signature (params + return annotation)
* test_go_verification_facade_does_not_regress_verifier_class
* test_go_verification_facade_honors_args_trust_config (F-RN-1
  source-bytes pin; structural-honesty assertion that getattr
  pattern survives refactor)
* test_go_verification_facade_uses_getattr_defaults

Closes Go gate11 verifier substrate (T04 of al-Mursalat). T05
extends checker_set_hash._CHECKER_SOURCE_FILES to pin this module
+ go_signature_canonicalization.py + goast/main.go.
…lpha alphabetical)

Per F-PA-3 v1.8 absorption Option (alpha): extends
`_CHECKER_SOURCE_FILES` with 3 al-Mursalat Go entries at
canonical alphabetical-within-section positions; tuple grows
from 16 v0.11.8 entries to 19 v0.12.0 entries:

* gate11/go_signature_canonicalization.py at position #6
  (between gate11/cli.py and gate11/manifest_schema.py since
  "go_" sorts alphabetically before "m")
* gate11/go_verification.py at position #7
* go_adapter/cmd/goast/main.go at position #19 in NEW
  go_adapter section after gate11 section (per F-PF-3 v1.7
  absorption + F6 v1.1 SOURCE-PRESENT branch)

Substrate-attestation rationale: a Relying Party detects
substrate divergence between bundles signed by furqan-lint
installations whose Go substrate modules disagree. The goast
binary's source code is part of the Form A checker_set_hash
surface, not just the gate11/* verification modules; F6 v1.1
SOURCE-PRESENT branch makes this discipline explicit.

Resolves F-PA-3 four-surface internal contradiction from v1.7:
code block, comment, fixture #1 alphabetical assertion, and
fixture #3 hash computation now all agree on canonical
alphabetical-within-section ordering (NOT end-append). The
F-TR-6 -> F-PF-1 absorption collision that resurfaced the
v1.5-retired alphabetical claim is closed.

Tests (6 pinning fixtures; expanded from prompt's 4 for
diagnostic granularity):
* test_v0_12_0_go_modules_in_checker_source_files (all three
  Go entries present)
* test_v0_12_0_go_gate11_modules_alphabetical_position
  (canonical alphabetical-within-section positions #6/#7)
* test_v0_12_0_goast_in_go_adapter_section (cross-section
  ordering after gate11)
* test_checker_set_hash_changes_when_go_source_changes
  (byte-sensitivity per failure mode #3 of §5.1 step 4)
* test_checker_set_hash_v0_12_0_canonical_interleaved_order
  (full 19-entry tuple matches canonical order; sha256 hash
  computed against canonical interleaved order matches
  compute_checker_set_hash output)
* test_checker_set_hash_includes_goast_source (F-PF-3 goast
  pin per F6 v1.1 SOURCE-PRESENT branch)

Closes H-6 Go-side parity via tuple extension; Form A
checker_set_hash discipline preserved on canonical single-
tuple substrate.
…ify (Route a1-via-args)

Four substrate edits per al-Mursalat T02 Route (a1-via-args)
disposition:

* Edit 1 (verification.py): extend function-local
  _LANGUAGE_DISPATCH with third lazy-import line for
  _verify_go; dict literal grows from 2 to 3 entries; raise
  message updated to name ONNX (G11.3) as next-phase target
  rather than G11.2 (Go, now substrate-LIVE).
* Edit 2 (python_verification.py + rust_verification.py):
  bodies extended to honor caller-passed args.trust_config via
  getattr(args, 'trust_config', None) or TrustConfig() pattern.
  Closes F-RN-1 v1.5 absorption substrate-flow gap: pre-edit,
  private handlers constructed default TrustConfig()
  unconditionally, silently dropping --trust-config PATH CLI
  flag under Route (a1). Post-edit, the flag flows through
  args Namespace.
* Edit 3a (gate11/cli.py cmd_manifest_verify): refactor to
  route through verification.verify(manifest, namespace).
  Loads manifest via Bundle.read; builds argparse.Namespace
  from positional + opts + loaded trust_config; calls
  verification.verify single canonical dispatch. Preserves
  all path-validation + error-mapping behaviors.
* Edit 3b (gate11/cli.py cmd_check_gate11): asymmetric
  parallel refactor per F-PF-2 v1.7 absorption (substrate
  signature is (directory: Path, opts: dict), NOT (args:
  list[str]) parallel to cmd_manifest_verify). Single
  trust_config load shared across all bundles; per-bundle
  Namespace built from pre-parsed opts + per-bundle path;
  routes through verification.verify per-bundle inner call.
  Directory-walk loop preserved.

Substrate evolution edits:
* manifest_schema.py: language whitelist extended from
  ('python', 'rust') to ('python', 'rust', 'go'); schema
  validator accepts go manifests. Same precedent as v0.11.3
  G11.0.2 F22 corrective (extended whitelist from
  ('python',) to ('python', 'rust') -- al-Mursalat extends
  the same shape with a third entry).
* Verifier.step2_3_check_version_and_language whitelist
  extended in lock-step (same precedent).

Pre-existing tests updated per al-Mursalat substrate truth:
* test_schema_rejects_language_go (retired per its own
  docstring 'This pin is removed when Phase G11.2 ships')
  -> test_schema_accepts_language_go (positive pin).
* test_step2_3_rejects_go_pre_g11_2 (retired)
  -> test_al_mursalat_step2_3_accepts_go_manifest (positive
  pin) + test_al_mursalat_step2_3_unknown_language_message_names_onnx_phase.
* test_step2_3_rejects_unknown_language_with_supported_list
  widened to assert 'go' is in the enumerated supported set.
* test_module_level_verify_raises_casm_v_001_on_unknown_language
  switched unknown-language fixture from 'go' (now valid) to
  'haskell'; message assertion updated to require 'G11.3' as
  next-phase callout (NOT 'G11.2').

T02 dispatch test additions (in test_gate11_verify_dispatch.py):
* test_module_level_verify_dispatches_go_to_facade
* test_module_level_verify_unknown_language_message_names_onnx
* test_module_level_verify_threads_trust_config_to_go_handler
  (structural-honesty source-byte pin for F-RN-1 absorption
  pattern survival)
* test_module_level_verify_function_local_dispatch_isolation_at_v0_12_0
  (closes failure mode #2 of §5.1 step 4 ranked list:
  function-local dispatch dict with three lazy-imports)

Closes F22 dispatch consolidation across both CLI entry
points (cmd_manifest_verify + cmd_check_gate11);
substrate-of-record uniqueness preserved at the dispatch dict
layer; trust-config flow preserved across all CLI flags
(--trust-config, --force-refresh, --expected-identity,
--expected-issuer, --allow-any-identity) via args Namespace
threading; per-language modules retain private-only exports
per substrate convention.
…md + docs/gate11-symmetry.md)

* README.md Gate 11 verification flow: step 3 language-check
  updated from "== 'python'" to substrate-LIVE supported set
  ({python G11.0/v0.10.0, rust G11.1/v0.11.0, go G11.2/v0.12.0});
  ONNX flagged as v0.13.0 an-Naziat. Wire format `language`
  field now enumerates all three substrate values rather than
  python only.
* SECURITY.md N2 typosquatting disclosure: extended from
  '(v0.11.2+ Python + v0.11.0+ Rust)' to include Go
  (v0.12.0+ al-Mursalat); cites v0.11.5 al-Bayyina F24
  corrective as the API-routing reference.
* docs/gate11-symmetry.md (NEW): canonical three-substrate
  symmetry table with seven rows (identity policy default,
  identity policy enforcement, trusted_root threading,
  checker_set_hash Form A/B, identity-extraction error
  handling, signature canonicalization, CLI dispatch). The
  dispatch surface row marks v0.12.0+ for all three
  substrates -- F22 closure at the dispatch layer (substrate
  closure was at v0.11.3 per F-AL-7 framing). Substrate-of-
  record entries section enumerates the 19 _CHECKER_SOURCE_FILES
  pins per F-PA-3 v1.8 alphabetical-within-section
  discipline.

Closes T07 (documentation parity). Phase G11.4 Tasdiq al-Bayan
will exercise the symmetry as a unified test matrix in
v0.14.0.
… pins

* .github/workflows/ci.yml: NEW gate11-go-smoke-test job after
  gate11-rust-smoke-test (3-way parallel smoke-test parity per
  al-Mursalat T08). Same push-to-main + id-token: write gating
  as Python/Rust siblings. Install matrix: [dev,gate11,go]
  (the [go] extra builds the goast binary at PEP 517 build-
  hook time). Job body: build a minimal .go fixture, sign via
  manifest init, verify via manifest verify with
  --expected-identity asserted against the GitHub Actions
  OIDC SAN pattern + --expected-issuer asserted against
  token.actions.githubusercontent.com.

* tests/fixtures/gate11/go_smoke_module.go (NEW): minimal Go
  smoke-test substrate with single public Smoke function
  carrying canonical (int, error) may-fail signature per
  T03 canonicalization rule 7. Exercised by the CI job
  body (not directly imported at test-collection time;
  pinned for presence in inventory tests).

* tests/test_gate11_smoke_test_fixture_inventory.py (NEW): 3
  fixture-presence tests per F5 v1.1 explicit per-fixture
  inventory absorption:
  - test_go_smoke_module_fixture_present (substrate path +
    shape: func Smoke + (int, error) + package smoke)
  - test_ci_yml_has_gate11_go_smoke_test_job (workflow job
    declared alongside Python/Rust siblings)
  - test_gate11_go_smoke_job_exercises_dispatch_path
    (substrate-honesty: smoke test uses CLI subcommands
    that route through verification.verify per Route a1-
    via-args + asserts --expected-identity per C-1
    refuse-without-policy enforcement)

Closes F22 fully at the CI surface (gate11-go-smoke-test
ships green from v0.12.0; gate11-rust-smoke-test continues
to pass per v0.11.3 F22 corrective; gate11-smoke-test
Python continues unchanged). F5 ambiguity closed: ci.yml is
the explicit MODIFIED file; go_smoke_module.go is the
explicit NEW fixture; the gate11-rust-smoke-test fixture
remains substrate-EXISTING from v0.11.0.
Phase G11.2 extends gate11 substrate to Go (third in mushaf chain
after Python G11.0 v0.10.0 and Rust G11.1 v0.11.0) and closes F22
at the CLI dispatch surface via Route (a1-via-args) under the
Shape-B consolidation pattern. Single canonical dispatch entry
through verification.verify; CLI flags threaded through args
Namespace; per-language private handlers honor caller-passed
trust_config; goast source pinned in checker_set_hash.

Test count: 618 (v0.11.8) -> 642 (v0.12.0). Net delta: +24.
Projection per v1.8 prompt was +26/644; empirical -2 within
al-Hujurat T05 CHANGELOG-math gate assertion (c) projection-
drift tolerance.

README pins (install + replace-prose + action + 2x pre-commit)
bumped v0.11.8 -> v0.12.0.

Audit-chain absorption: Round 31..38.5 + Co-work T00 (see
CHANGELOG entry for full ledger; monotonic-narrowing across
rounds: 3 CRITICAL Round 36 -> 0 CRITICAL Round 38/38.5/T00).
Resolve conflict on docs/g11.2-preflight.md by superseding the
Round 31 HALT-AND-ESCALATE record (commit 3ac89c7, calibrated
to v0.11.7) with the al-Mursalat v1.6 PROCEED-WITH-ROUTE-(a1-
via-args) record calibrated to v0.11.8 substrate.

Rationale:
* The Round 31 halt was subsequently resolved across Rounds
  32-38.5; the v1.8 APPROVE-CLEAN verdict closes that audit
  chain. The Round 31 record is historical and remains
  retrievable via git history at blob 278859a (commit 3ac89c7).
* docs/g11.2-preflight.md is the canonical filename for this
  gate phase pre-flight record; each phase record overwrites
  the previous per established pattern.
* The v1.6 record contains the seven F-TR surgical amendments
  and the Round 39 finding seeds that v0.12.0 ships against.

Additionally sweep six U+2014 em-dash occurrences in the v1.6
record to double-hyphens per em-dash policy (the v0.11.8 CI
guard at cac6917 extended em-dash enforcement to docs/, which
the sandbox-authored v1.6 record predates by one commit).
@BayyinahEnterprise BayyinahEnterprise merged commit c5c3c4c into main May 11, 2026
18 checks passed
@BayyinahEnterprise BayyinahEnterprise deleted the v0.12.0-al-mursalat branch May 11, 2026 05:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant