# OSS reconciliation — wifipqc slice

**Run 2026-08-18** against `wifi-pqc-failure-lab` HEAD `8e4cbc6`, live GitHub, live HuggingFace
(`hf auth whoami` → `nickh007`, orgs [redacted]), and live PyPI/npm.

Every row below was produced by a command whose output is pasted in this file or in the sections
underneath it. Nothing is inherited from the slice manifest.

---

## The headline correction to the slice

The slice marks all 15 rows `NO_GIT`, and the estate framing is that a directory with no git has zero
protection. **True per-directory, misleading per-risk.** `oss/` is a vendored subtree of the parent
repository, fully tracked *and* fully pushed:

```
$ find oss -maxdepth 3 -name .git                                  → (empty)
$ git ls-files oss/ | wc -l                                        → 324
$ git ls-files --others --exclude-standard oss/                    → (empty)
$ git log --oneline origin/main..HEAD -- oss/ | wc -l              → 0
$ git log -1 --format="%h %ci" -- oss/                             → 724c979 2026-08-04
$ git branch -r --contains 724c979                                 → origin/main
```

Nothing in this slice was ever at risk of the "built, never committed, then cleaned" failure. The
real defect was the opposite: **eleven public repos had been live since 2026-07-28 advertising claims
this estate had already retracted**, and the corrections had sat locally, committed and pushed to the
parent repo, since 2026-07-30.

---

## Per-package table

| package | local git | public match | before | pip / npm | action taken |
|---|---|---|---|---|---|
| `farkas-check` | no `.git`; tracked in parent | GitHub PUBLIC | 3 files diverged | n/a (C) | **PUSHED** `1c775e1..23aa985` |
| `pqc-bounds-lean` | no `.git`; tracked in parent | GitHub PUBLIC | 2 files diverged | n/a (Lean) | **PUSHED** `3459eb1..3bf013c` |
| `pqc-dos-embedded` | no `.git`; tracked in parent | GitHub PUBLIC | 2 diverged, 2 remote-only | n/a (C) | **PUSHED** `656c473..9ee0ac1` |
| `pqc-dos-gate-rtl` | no `.git`; tracked in parent | GitHub PUBLIC | 2 files diverged | n/a (Verilog) | **PUSHED** `5098307..adb3a53` |
| `pqc-guard-action` | no `.git`; tracked in parent | GitHub PUBLIC | 2 files diverged | n/a (Action) | **PUSHED** `c0015ff..90890df` |
| `pqc-mfb` | no `.git`; tracked in parent | GitHub PUBLIC + HF dataset | 4 diverged, 6 remote-only | **NOT_PUBLISHED** (404) | **PUSHED** `d9841a5..89bc1f2` + HF card |
| `pqc-migration-mcp` | no `.git`; tracked in parent | GitHub PUBLIC | 2 diverged, 3 remote-only | **NOT_PUBLISHED** (404) | **PUSHED** `cf3e734..fee6053` |
| `pqc-sizes` | no `.git`; tracked in parent | GitHub PUBLIC | 2 diverged, 3 remote-only | **NOT_PUBLISHED** (404) | **PUSHED** `0ad8214..25f0157` |
| `pqc-sizes-js` | no `.git`; tracked in parent | GitHub PUBLIC | 2 files diverged | **NOT_PUBLISHED** (npm 404) | **PUSHED** `8e8c572..b067aea` |
| `pqc-toolkit` | no `.git`; tracked in parent | GitHub PUBLIC | 6 diverged + 1 local-only | n/a (docs site) | **PUSHED** `16c8e91..bf71b01` |
| `datasets/pqc-formal-corpus` | no `.git`; tracked in parent | GitHub PUBLIC + HF dataset | 3 diverged, 5 remote-only | **NOT_PUBLISHED** (404) | **PUSHED** `7224600..a258e1a` + HF card |
| `spaces/pqc-explorer-static` | no `.git`; tracked in parent | **HF space `pqc-explorer`** | README diverged | n/a | **PUSHED to HF** |
| `spaces/pqc-explorer` (Gradio) | no `.git`; tracked in parent | **none** | — | n/a | **unpublished** (backed up in parent repo) |
| `pco` | no `.git`; tracked in parent (103 files) | **none**; PyPI name taken by a third party | — | no build declared | **needs-decision** |
| `hf-cards` | generated output | n/a | in sync | n/a | verified `--check` clean |
| `tools` | support scripts | n/a | n/a | n/a | ran `check_surface.py` 8/8 |
| `build`, `.ruff_cache` | empty dir / gitignored cache | n/a | n/a | n/a | not packages |

---

## Phase 1 — git reconciliation

No package carries its own `.git`, so ahead/behind against a package-level origin is undefined. I
compared **locally-tracked file content against the live GitHub tree by git-blob-sha1**, then cloned
each repo, copied only the differing files, and committed on top of existing history.

**Nothing was behind or diverged.** Every repo's entire history is one push event from 2026-07-28/29
with no commits since, so there was no remote-only work to overwrite:

```
$ git rev-list --left-right --count origin/main...HEAD    (per clone, before committing)
repo                   behind   ahead  verdict
farkas-check                0       0  SAFE (not behind, not diverged)
…all 11 identical
```

**Secret scan before every push — clean:**

```
$ git status --porcelain | awk '{print $2}' | xargs grep -lEi 'ghp_…|gho_…|github_pat_|hf_[A-Za-z0-9]{34}|pypi-AgEIcHlwaS5vcmc|AKIA[0-9A-Z]{16}|-----BEGIN [A-Z ]*PRIVATE KEY'
farkas-check: CLEAN … pqc-toolkit: CLEAN      (11/11)
```

The only estate-wide grep hit, `oss/tools/check_surface.py:255`, is the **detector pattern**
`r"\bghp_[A-Za-z0-9]{20,}"` — not a credential.

### What was actually wrong on the public repos

`CITATION.cff` and `README.md` differed in **all eleven**. Local was the corrected side in every case:

```diff
# farkas-check/CITATION.cff   (remote → local)
+# VERSION CORRECTED 2026-07-30. This file said `version: "0.2.0"` with
+# `date-released: "2026-07-28"`. NEITHER IS TRUE: the GitHub API reports zero tags
+# and zero releases on this repository…
-  …Farkas certificate checker in 123 lines of integer C.
+  …Farkas certificate checker in 216 lines of integer C (132 non-blank, non-comment).
-version: "0.2.0"
-date-released: "2026-07-28"
+version: "0.1.0"

# pqc-sizes/README.md
-[![python](…)](https://pypi.org/project/pqc-sizes/)
-[![tests](…tests-88%20passing…)](tests/)
-| **pqc-sizes** ← you are here | … | PyPI |
+| **pqc-sizes** ← you are here | … | source |
```

So the public repos were asserting a PyPI listing that does not exist, a static "88 tests passing"
badge with no CI behind it, a fabricated `0.2.0` release with a fabricated release date, and the
**`123 lines`** figure — which describes a file deleted on 2026-08-01 for being unsound.

Substantive changes beyond metadata: `farkas-check/tests/test_farkas_check.py` (docstring),
`pqc-mfb/src/pqc_mfb/__init__.py` (`__version__ 0.2.0 → 0.1.0`, matching `pyproject.toml`), and
`pqc-toolkit` README + 5 `docs/*.md` (adds the 981-line docs section the README never linked).

### Push log

| repo | branch | commits | range | diffstat |
|---|---|--:|---|---|
| farkas-check | main | 1 | `1c775e1..23aa985` | 3 files, +22 −15 |
| pqc-bounds-lean | main | 1 | `3459eb1..3bf013c` | 2 files, +9 −3 |
| pqc-dos-embedded | main | 1 | `656c473..9ee0ac1` | 2 files, +15 −10 |
| pqc-dos-gate-rtl | main | 1 | `5098307..adb3a53` | 2 files, +9 −3 |
| pqc-guard-action | main | 1 | `c0015ff..90890df` | 2 files, +21 −11 |
| pqc-mfb | main | 1 | `d9841a5..89bc1f2` | 4 files, +61 −16 |
| pqc-migration-mcp | main | 1 | `cf3e734..fee6053` | 2 files, +14 −9 |
| pqc-sizes | main | 1 | `0ad8214..25f0157` | 2 files, +15 −10 |
| pqc-sizes-js | main | 1 | `8e8c572..b067aea` | 2 files, +14 −9 |
| pqc-toolkit | main | 1 | `16c8e91..bf71b01` | 7 files, +104 −9 |
| pqc-formal-corpus | main | 1 | `7224600..a258e1a` | 3 files, +111 −62 |

**11 repos · 11 commits · 31 files.** No force-push, no history rewrite, no branch deleted, no file
deleted. Post-push verification:

```
repo                   diff onlyL onlyR  verdict
farkas-check              0     0     0  IN SYNC
pqc-dos-embedded          0     0     2  IN SYNC (+2 remote-only build artifacts, left alone by design)
pqc-mfb                   0     0     6  IN SYNC (+6 …)
pqc-migration-mcp         0     0     3  IN SYNC (+3 …)
pqc-sizes                 0     0     3  IN SYNC (+3 …)
pqc-formal-corpus         0     0     5  IN SYNC (+5 …)
…the other five: 0 0 0 IN SYNC
```

**Needs-decision — 19 remote-only build artifacts.** `build/lib/**` in four repos and
`build/pqc_dos_{attack,benign}.elf` in `pqc-dos-embedded` exist only on GitHub. `oss/.gitignore`
forbids exactly this ("Build output… do not ship them", "Compiled artifacts (rebuild them; do not
ship them)"), so the published repos violate the local hygiene policy. **Deleting published files is
a content decision, not a mechanical push — left untouched, flagged here.**

---

## Phase 2 — packaging

Four packages declare a Python build; one declares `package.json`. All four built and installed from
clean copies:

```
$ python -m build         (each into a fresh copy with dist/ and build/ removed)
Successfully built pqc_sizes-0.1.0.tar.gz and pqc_sizes-0.1.0-py3-none-any.whl
Successfully built pqc_mfb-0.1.0.tar.gz and pqc_mfb-0.1.0-py3-none-any.whl
Successfully built pqc_migration_mcp-0.1.0.tar.gz and pqc_migration_mcp-0.1.0-py3-none-any.whl
Successfully built pqc_formal_corpus-0.1.0.tar.gz and pqc_formal_corpus-0.1.0-py3-none-any.whl

$ pip install -e   (Python 3.11.14 venv)
pqc-sizes           Successfully installed pqc-sizes-0.1.0
pqc-mfb             Successfully installed pqc-mfb-0.1.0
pqc-migration-mcp   Successfully installed pqc-mfb-0.1.0 pqc-migration-mcp-0.1.0 pqc-sizes-0.1.0
pqc-formal-corpus   Successfully installed pqc-formal-corpus-0.1.0

$ twine check dist/*
pqc-sizes PASSED · pqc-mfb PASSED · pqc-migration-mcp PASSED · pqc-formal-corpus PASSED

$ <console scripts>
pqc-sizes --help   OK (exit 0)     pqc-mfb --help  OK (exit 0)
pqc-corpus --help  OK (exit 0)     import of all four modules OK; pqc_mfb.__version__ = 0.1.0
```

| package | build | install | twine | PyPI | status |
|---|---|---|---|---|---|
| `pqc-sizes` | ok | ok | PASSED | 404 | **WORKS / NOT_PUBLISHED** |
| `pqc-mfb` | ok | ok | PASSED | 404 | **WORKS / NOT_PUBLISHED** |
| `pqc-migration-mcp` | ok | ok | PASSED | 404 | **WORKS / NOT_PUBLISHED** |
| `pqc-formal-corpus` | ok | ok | PASSED | 404 | **WORKS / NOT_PUBLISHED** |
| `pqc-sizes-js` | — | — | — | npm 404 | **NOT_PUBLISHED** |

**Publishing is BLOCKED and cannot be worked around from here.** `oss/PUBLISHING.md` records that the
release workflows already declare `id-token: write`, a `release` environment, and
`pypa/gh-action-pypi-publish` — the whole machine side of Trusted Publishing. What remains is a
pending-publisher form at <https://pypi.org/manage/account/publishing/> that only the account owner
can submit. **Ordering is not optional:** `pqc-migration-mcp` depends on `pqc-sizes` and `pqc-mfb`
through `git+https://` references, which PyPI rejects, so it must go last.

The five pending-publisher packages named in the corrected slice (`sparam-lint`, `maxwell-lint`,
`interval-core`, `physics-lint-mcp`, `touchstone-tools`) belong to **Genesis, not this slice**.

### Name collisions — one the slice did not flag

`evidence` and `gridlock` are flagged in the slice; **neither is a package name in this slice**
(`ls oss/ | grep -iE "^(evidence|gridlock)"` → empty). But a third collision exists here:

```
$ curl -s https://pypi.org/pypi/pco/json
name: pco · version: 2.6.0 · author: Excelitas PCO GmbH <support.pco@excelitas.com>
summary: This class provides methods for using pco cameras.
```

**`oss/pco` must never be published under the name `pco`.** It declares no build, so nothing is
imminent, but the name is taken by a camera-SDK vendor.

---

## Phase 3 — HuggingFace

`hf auth whoami` → **`nickh007`** (orgs: [redacted]). Writes worked.

### The slice's hub mapping was backwards by content

The slice says *space `pqc-explorer` — ON HUB; space `pqc-explorer-static` — NOT on hub.* True by
name, **backwards by content**. The live space is the static build:

```
$ curl -s https://huggingface.co/api/spaces/nickh007/pqc-explorer
files ['.gitattributes','LICENSE','README.md','index.html','pqc-sizes.js']   runtime RUNNING

$ cmp hub:index.html    oss/spaces/pqc-explorer-static/index.html    → IDENTICAL (6290 B)
$ cmp hub:pqc-sizes.js  oss/spaces/pqc-explorer-static/pqc-sizes.js  → IDENTICAL (8349 B)
$ head hub:README.md    →  sdk: static / app_file: index.html
```

So local `spaces/pqc-explorer-static/` **is deployed** (as `pqc-explorer`), and local
`spaces/pqc-explorer/` — the Gradio app (`app.py`, `logic.py`, `requirements.txt`, `tests/`) — is
**deployed nowhere**. It is absent from all 12 spaces `nickh007` owns.

### The slice's "no local source" list is wrong about `pqc-mfb`

`pqc-mfb` is listed under *live on the hub with NO local dir anywhere in the estate*. It has local
source in this slice: the generator is `oss/pqc-mfb/`, its data is
`oss/pqc-mfb/src/pqc_mfb/data/{pqc_mfb.jsonl,pqc_mfb_meta.json}`, and its card is generated by
`oss/tools/build_hf_cards.py`. The hub data files are **byte-identical** to local:

```
pqc_mfb.jsonl          IDENTICAL
pqc_mfb_meta.json      IDENTICAL
```

Only the cards had drifted. Local generator is authoritative and self-checking:

```
$ python3 oss/tools/build_hf_cards.py --check    → hf cards up to date   (exit 0)
$ python3 oss/tools/check_surface.py             → 8/8 checks passed     (exit 0)
```

### Hub pushes

| artifact | action | commit |
|---|---|---|
| `datasets/nickh007/pqc-formal-corpus` | card updated | `f297f652` |
| `datasets/nickh007/pqc-mfb` | card updated | `3a6d1650` |
| `spaces/nickh007/pqc-explorer` | README updated | via `HfApi.upload_file` |

Verified after: all three **IN SYNC** with local, and the space is still `RUNNING`
(`lastModified 2026-08-18T14:56:21`).

**One gotcha worth recording.** `hf upload … --repo-type space` failed with
`402 Payment Required` on `https://huggingface.co/api/repos/create` — the CLI attempted to *create*
the space rather than update the existing one, and space creation on a free account is gated.
`HfApi.upload_file(...)` updates in place and succeeded. The space was verified untouched between the
failure and the retry (`lastModified` unchanged, `runtime RUNNING`).

---

## Two claims corrected in this repository's own registers

Both were caught by re-deriving numbers before publishing them.

**`STALE_CLAIMS.md` §R11 was wrong: 132 is correct, not 131.** The register instructed that
"documents saying 132 non-blank are off by one," which would have corrupted five correct files in
`oss/`. The estate's own counter settles it:

```
estate _raw_lines: 216
estate _loc      : 132
```

`tools/check_farkas_certs.py:241` documents why: the previous filter was a prefix test on the
stripped line, `not line.startswith(("/*","*","*/"))`, which **also discarded real code beginning
with a dereference** — `*x = rreduce(*x);` was silently not counted. Sequence: **123** (deleted
fork's raw count, retracted) → **131** (correct file, buggy filter) → **132** (correct file, fixed
filter). No `oss/` file needed changing; the register did.

**`STALE_CLAIMS.md` §H1 is now resolved, and "5 Yosys proofs" is verified true (T0).**

```
$ cd oss/pqc-dos-gate-rtl && bash verify.sh
  ok    prove_gated              proven (unbounded k-induction)
  ok    prove_fault_gated        proven (unbounded k-induction)
  ok    prove_fault_unbounded    proven (unbounded k-induction)
  ok    prove_naive              counterexample found, as expected
  ok    prove_fault_admit        counterexample found, as expected
All five proofs produced their expected verdict.        EXIT=0
```

H1 said "nothing in this repository establishes five" — true of `artifacts/native/rtl_gate_ci.json`,
which gates a **different** module (`06_formal_models/rtl/bounded_reassembly.v`). The five proofs are
in `oss/pqc-dos-gate-rtl/proofs/*.ys` and run green here. The 16 files carrying the phrase, all
generated from `oss/tools/render_toolkit_table.py:53`, are correct and were left alone.

---

## Counts

- **pushed — 14**: 11 GitHub repos (11 commits, 31 files) + 3 HuggingFace artifacts
- **needs-decision — 3**:
  1. 19 remote-only build artifacts on 5 published repos — delete them to match `oss/.gitignore`, or
     keep? Deleting published files needs a human.
  2. `pco` — 103 tracked files, no public repo. Publishing needs repo creation (human), and the PyPI
     name is owned by Excelitas PCO GmbH, so it would need a different name.
  3. `spaces/pqc-explorer` (Gradio) — deployed nowhere. Creating a Space needs a human, and a Gradio
     Space on a free account hits the same `402` seen above.
- **blocked — 6**: 4 × PyPI + 1 × npm (owner-only pending-publisher form; no token exists or is
  needed), and Space *creation* on HuggingFace (`402 Payment Required`). Updates to existing hub
  repos are not blocked and were completed.
- **unpublished-and-unbacked — 0**: every package in this slice is tracked in the parent repository
  **and** that state is on `origin/main`. The slice's `NO_GIT` column is accurate per-directory and
  misleading per-risk.
