Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/issue-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ jobs:
check-linked-issue:
runs-on: ubuntu-latest
# Closes #1059: bypass Issue Gate for trusted bots (Dependabot opens dep PRs without issues)
if: github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]'
if: >-
github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]'
&& github.event.pull_request.user.login != 'dependabot[bot]'
&& github.event.pull_request.user.login != 'github-actions[bot]'
steps:
- name: Check for linked issues in PR
env:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/l1-traceability.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ jobs:
name: Check L1 TRACEABILITY
runs-on: ubuntu-latest
# Closes #1059: bypass L1 gate for trusted bots (Dependabot maintains deps, not features)
if: github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]'
if: >-
github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]'
&& github.event.pull_request.user.login != 'dependabot[bot]'
&& github.event.pull_request.user.login != 'github-actions[bot]'
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/now-sync-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ jobs:
check-now-freshness:
runs-on: ubuntu-latest
# Closes #1059: bypass NOW Sync Gate for trusted bots (deps PRs don't touch docs/NOW.md)
if: github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]'
if: >-
github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]'
&& github.event.pull_request.user.login != 'dependabot[bot]'
&& github.event.pull_request.user.login != 'github-actions[bot]'
steps:
- uses: actions/checkout@v4
with:
Expand Down
6 changes: 6 additions & 0 deletions docs/NOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

Last updated: 2026-06-14

## ci-bot-bypass-author-guard -- harden trusted-bot gate bypass against human branch-updates (Closes #1031)

- **WHERE** (CI only): `.github/workflows/l1-traceability.yml`, `.github/workflows/issue-gate.yml`, `.github/workflows/now-sync-gate.yml`. Each gate job's `if:` guard is extended from the actor-only check (`github.actor != 'dependabot[bot]' && != 'github-actions[bot]'`) to ALSO require `github.event.pull_request.user.login != 'dependabot[bot]'` and `!= 'github-actions[bot]'`. No source, no specs, no codegen, no conformance JSON, no `gen/` artefacts touched.
- **Why**: the original #1059 bypass keyed only on `github.actor`, which is the Dependabot bot only on its OWN push. When a maintainer clicks 'Update branch' on a Dependabot PR, the resulting `synchronize` event carries `github.actor = <human>`, so all three gates RAN and FAILED (dependency bumps legitimately have no `Closes #N` and no `docs/NOW.md` change), blocking routine dep PRs #1042/#1044/#1045/#1043/#1047/#1048/#1057/#1058 behind branch protection. `github.event.pull_request.user.login` is the PR AUTHOR and stays `dependabot[bot]` regardless of who triggered the event, so bot dependency PRs now SKIP the gates even after a human branch-update; human PRs remain fully gated by Constitutional Law L1. On `push` events `pull_request` is null so the added clause is vacuously true -- existing push behavior of now-sync-gate is unchanged. L6 untouched; L5 untouched (no silicon impact); L4 not applicable (workflow YAML, not a `.t27` spec). Closes #1031.
- **Anchor**: phi^2 + phi^-2 = 3

## conformance-structural-to-bitexact -- promote 6 structural packs to bit-precise (IBM HFP, x87, NF4, GFTernary) (Closes #1076)

- **WHERE** (conformance vectors): extends `conformance/vectors/gen_all_formats.py` with dedicated reference codecs that promote 6 packs from structural (`bitexact: false`, placeholder) to bit-precise (`bitexact: true`, `abs_error = 0` for every recorded vector): `ibm_hfp32/64/128` (IBM Hexadecimal Floating Point, base-16 exponent, layout S1:E7 excess-64:M, value = 0.M(2) * 16^(E-64)); `x87_fp80` (Intel 80-bit extended with the explicit integer bit as the MSB of the 64-bit significand field, S1:E15:SIG64, bias 16383); `nf4` (QLoRA/bitsandbytes NF4 16-entry quantile table over [-1,1], exhaustive 16-code lookup); `gfternary` (2-bit {-phi, 0, +phi}, exhaustive 4-code enumeration). Adds `make_ibm_hfp_decoder`/`ibm_hfp_encode_exact`, `make_x87_decoder`/`x87_encode_exact`, `make_nf4_decoder` + `NF4_TABLE`, `make_gfternary_decoder`, and routes them in `build_decodable`/`build_bitexact_pack`. Regenerates `INDEX_all_formats.json` (`total_packs=83, bitexact_packs=55, structural_packs=28`) and the 6 affected `*_conformance_v0.json` packs. `README.md` index, counts, SHA-256 block, and a new changelog entry updated. The catalog itself is unchanged at 83 formats; only round-trip depth increases. Follows #1070.
Expand Down
Loading