# OSS reconciliation — wireless slice

Written 2026-08-18. Every claim below carries the command that produced it and that command's real
output. Slice: `~/thread-exports/oss-slices/wireless.md`.

---

## 1. Per-package table

| package | local git | public match | ahead / behind / diverged | pip | action taken |
|---|---|---|---|---|---|
| `failclosed` | no own `.git`; tracked in monorepo | `nickharris808/failclosed` PUBLIC | **ahead 3 differ + 1 new**, 0 behind, not diverged | PyPI 0.2.0, local **0.2.1** — build OK, `twine check` PASSED | **PUSHED** `778df5d..c80d2c3` |
| `minicheck` | no own `.git`; tracked | `nickharris808/minicheck` PUBLIC | **ahead 3 + 1 new**, 0 behind | PyPI 0.4.0, local **0.4.1** — build OK, PASSED | **PUSHED** `a2a3eb4..0bb9d09` |
| `minicheck-action` | no own `.git`; tracked | `nickharris808/minicheck-action` PUBLIC | **ahead 5 + 1 new**, 0 behind | n/a (Action) | **PUSHED** `8b1678e..8ced438` |
| `minicheck-mcp` | no own `.git`; tracked | `nickharris808/minicheck-mcp` PUBLIC | **ahead 2 + 1 new**, 0 behind | **NOT_PUBLISHED** (deliberate, `PUBLISH.md` §1) — build OK, PASSED | **PUSHED** `7cce5b8..8080368` |
| `polyfrac` | no own `.git`; tracked | `nickharris808/polyfrac` PUBLIC | **ahead 3 + 1 new**, 0 behind | PyPI 0.2.0, local **0.2.1** — build OK, PASSED | **PUSHED** `73fe9be..a1890b8` |
| `protocol-bench` | no own `.git`; tracked | `nickharris808/protocol-bench` PUBLIC | **ahead 8 + 1 new**, 0 behind | PyPI 1.1.0, local **1.1.1** — build OK, PASSED | **PUSHED** `13556d1..7cb558a` |
| `action-repo` | no own `.git`; tracked | `nickharris808/protocol-bench-action` PUBLIC **(slice said no-public-match)** | **ahead 3**, 0 behind | n/a (Action) | **PUSHED** `01bd9cb..2d53f30` |
| `specforge` | no own `.git`; tracked | `nickharris808/specforge` PUBLIC | **ahead 2 + 2 new**, 0 behind | dist renamed **`pcar-specforge`** — build OK, PASSED. Bare `specforge` on PyPI is **SGLang's** | **PUSHED** `56b570a..07da13d` (2 commits) |
| `verification-docs` | no own `.git`; tracked | `nickharris808/verification-docs` PUBLIC | **ahead 6**, 0 behind | n/a (site) | **PUSHED** `a6cd74c..be5e25c` (2 commits) |
| `.github`, `paper`, `tools` | tracked | none — internal helpers, not packages | n/a | n/a | none needed |
| `.ruff_cache` | ignored | not a package | n/a | n/a | added to publish excludes |
| space `protocol-bench-demo` | tracked | `hf.co/spaces/nickh007/protocol-bench-demo` | live was **pre-fix** (old wheels, no `app_core.py`) | n/a | **PUSHED** → `9e8a27a1` |
| space `specforge-leaderboard` | tracked | `hf.co/spaces/nickh007/specforge-leaderboard` | live was **pre-fix** | n/a | **PUSHED** → `1af65224` |
| dataset `protocol-bench` | source at `protocol-bench/dataset/README.md` | `hf.co/datasets/nickh007/protocol-bench` | card differed from local | n/a | **PUSHED** → `08524938` |
| dataset `specforge` | source at `specforge/dataset/README.md` | `hf.co/datasets/nickh007/specforge` | card differed from local | n/a | **PUSHED** → `dc30f897` |

**Nothing was behind or diverged.** Verified before pushing: `only-remote` was 0 in all nine repos
and no repo had a commit after 2026-07-30, all authored by `nickharris808` — so no one had edited
the published repos directly.

---

## 2. Six corrections to the slice

| # | Slice said | Verified reality |
|---|---|---|
| C1 | `action-repo` → `no-public-match` | It is **`protocol-bench-action`**, PUBLIC. `PUBLISH.md:56` carries the mapping. **9 repos, not 8.** |
| C2 | "HuggingFace datasets (0)" | **2 exist and are mine**, both now in sync. |
| C3 | "HuggingFace spaces (5)" incl. `.gitignore`, `__pycache__`, `conftest.py` | **2 spaces.** The others are files inside `oss/spaces/`. |
| C4 | `.github`, `.ruff_cache`, `paper`, `tools` listed as packages | Not packages. |
| C5 | `NO_GIT` for every package | No package has its **own** `.git`, but all are tracked in the parent monorepo, which has a remote. **Not unbacked.** |
| C6 | *(corrected slice)* "Your packages here that are LIVE: … **specforge**" | **`specforge` on PyPI is NOT ours.** It is SGLang's speculative-decoding framework. Never publish under it. |

Evidence for C6:

```
$ curl -s https://pypi.org/pypi/specforge/json | ...
  name       : specforge
  version    : 0.2.0
  summary    : SpecForge: Speculative Decoding Training Framework
  author     : SGLang Team
  project_urls: {'Homepage': 'https://github.com/sgl-project/SpecForge'}
```

Also: the corrected slice lists `protocol-bench` and `specforge` among the **11 hub artifacts with
no local source anywhere in the estate**. For this slice that is wrong — both have local sources
(`oss/<pkg>/dataset/README.md`), and both are now published from them. The other 9 unaccounted
artifacts belong to other repos and are outside this slice.

---

## 3. The monorepo was the real backup gap

`oss/` has no per-package `.git`, but the parent repo does, and it is **private** — so pushing it is
backup, not publication.

```
$ gh repo view nickharris808/wireless-reliability-fallback-lab --json isPrivate,pushedAt
{"isPrivate":true,"pushedAt":"2026-08-04T20:24:24Z"}      # 2 weeks stale

$ git rev-list --left-right --count origin/main...main
  behind 0   ahead 30

$ git push origin main:main
   ef737e6..ff26224  main -> main

$ git push origin repair/...:repair/...
 * [new branch]      repair/cede-80211bt-to-sister-estate

$ git rev-list --left-right --count origin/main...main         -> 0 0
$ git rev-list --left-right --count origin/repair/...          -> 0 0
```

38 commits — including the crown-jewels work — went from local-only to backed up.

---

## 4. Verification that the pushes landed

Re-ran the blob-SHA comparison used to detect the drift (remote tree via
`gh api repos/<r>/git/trees/main?recursive=1`, local via `git hash-object`):

```
repo                      differ  only-local  only-remote
failclosed                     0           5            0
minicheck                      0           5            0
minicheck-action               0           0            0
minicheck-mcp                  0           5            0
polyfrac                       0           5            0
protocol-bench                 0           5            0
protocol-bench-action          0           0            0
specforge                      0           5            0
verification-docs              0           0            0
```

`differ = 0` and `only-remote = 0` everywhere: every content file landed. The residual
`only-local = 5` is `.pytest_cache/`, created by my own test runs *after* the rsync and correctly
never published.

Hub, after upload:

```
$ curl .../api/spaces/nickh007/protocol-bench-demo/tree/main
    .gitattributes  LICENSE  README.md  app_core.py  app_lite.py  index.html  md.py
    minicheck-0.4.0…whl  minicheck-0.4.1…whl  protocol_bench-1.1.0…whl  protocol_bench-1.1.1…whl  style.css

$ curl -sL -o /dev/null -w "%{http_code}" https://nickh007-protocol-bench-demo.static.hf.space/
200      # pyodide refs: 13, loading cdn.jsdelivr.net/pyodide/v0.27.3/full/
```

Both Spaces were reporting **RUNNING while serving a micropip traceback to every visitor**
(`portfolio-control` `F3-NEG-045`). They now serve the pinned Pyodide shell. `.gitattributes` and
the superseded `app_lite.py` survived, as `PUBLISH.md` requires.

---

## 5. Defects found and fixed

**F1 — the `specforge` rename broke the published install command, and I had already pushed it.**
`pip install "specforge @ git+…"` now errors, because pip compares the requested name with the
built metadata:

```
$ pip install --dry-run --no-deps "specforge @ git+https://github.com/nickharris808/specforge.git"
Discarding git+…: Requested pcar-specforge from git+… has inconsistent name:
  expected 'specforge', but metadata has 'pcar-specforge'
ERROR: No matching distribution found for specforge

$ pip install --dry-run --no-deps "pcar-specforge @ git+https://github.com/nickharris808/specforge.git"
Would install pcar-specforge-0.1.0
```
Fixed at **5 sites** and re-pushed to `specforge` and `verification-docs`.

**F2 — the rename left the README warning attached to the wrong name**, which its own test caught:
`AssertionError: README warns pcar-specforge is squatted, but PyPI has no such project`. The bare
name is the squatted one. Rewritten; the card also said SGLang was "at 0.1.0" — PyPI now serves
**0.2.0**.

**F3 — the install-line test derived the IMPORT name from the DISTRIBUTION name.** That held only
while they were equal. Fixed in `tools/install_line_check.py.template` to ask the installed
metadata for the real top-level module, re-synced to all six copies
(`python tools/sync_install_line_test.py` → "synced 6 copies", `--check` → "6 copies in sync").

**F4 — install-order masking, the trap this estate has hit before.** `pip install -e oss/minicheck`
appeared to succeed but `pip list` showed `minicheck 0.4.0` with no local path: it had been
satisfied from PyPI as another package's dependency. Forced to the local tree with
`--force-reinstall --no-deps` before any suite was trusted.

**F5 — six README test counts were stale.** Regenerated from `pytest --collect-only` via the
existing `tools/sync_test_counts.py` (minicheck 275, protocol-bench 133, specforge 82,
minicheck-mcp 102, failclosed 67, polyfrac 73, root total 849).

**F6 — `PUBLISH.md` used `git add -A`**, which this task forbids. Replaced with explicit-path
staging, and `.ruff_cache/` + `.pytest_cache/` added to both rsync exclude lists.

### A correction to my own earlier finding
I reported that `PUBLISH.md` "would publish the lint cache to nine public repos". **That was
overstated.** `.ruff_cache/` is already in each published repo's `.gitignore`, so it would not have
been committed:

```
$ cd /tmp/osspub/minicheck && mkdir .ruff_cache && touch .ruff_cache/probe
$ git check-ignore -v .ruff_cache/probe
.gitignore:7:.ruff_cache/	.ruff_cache/probe
```
It was a **latent** risk, not a live defect. The exclude is still correct belt-and-braces.

---

## 6. Build and test status (clean venv, Python 3.11.14)

| package | suite | `python -m build` | `twine check` | PyPI |
|---|---|---|---|---|
| minicheck | 270 passed, 5 skipped | OK | PASSED ×2 | 0.4.0 live; **0.4.1 built, not uploaded** |
| protocol-bench | 133 passed | OK | PASSED ×2 | 1.1.0 live; **1.1.1 built, not uploaded** |
| failclosed | 67 passed | OK | PASSED ×2 | 0.2.0 live; **0.2.1 built, not uploaded** |
| polyfrac | 72 passed, 1 skipped | OK | PASSED ×2 | 0.2.0 live; **0.2.1 built, not uploaded** |
| minicheck-mcp | 102 passed | OK | PASSED ×2 | NOT_PUBLISHED (deliberate) |
| specforge | 82 passed | OK | PASSED ×2 | `pcar-specforge` **unclaimed**; not uploaded |

726 passed, 6 skipped, 0 failed. `failclosed` needed `httpx2` for starlette's TestClient — an
environment dependency, not a code defect.

---

## 7. Needs a human decision

1. **Four PyPI version bumps** (minicheck 0.4.1, protocol-bench 1.1.1, failclosed 0.2.1,
   polyfrac 0.2.1). Built and `twine check` PASSED. **Not uploaded**: the granted authority is for
   `git push`, and a PyPI version is irreversible. `PUBLISH.md` §1 has the exact commands.
2. **Claiming `pcar-specforge` on PyPI.** The name is free (404). Claiming a new name on a public
   index is a naming decision.
3. **`minicheck-mcp` first publication** — deliberately unpublished; still is.
4. **Deleting the superseded `app_lite.py` and the 0.4.0/1.1.0 wheels from the two Spaces.**
   `PUBLISH.md` calls this optional and notes unpublishing is harder than publishing.
5. **The 5 pending-publisher forms** (`sparam-lint`, `maxwell-lint`, `interval-core`,
   `physics-lint-mcp`, `touchstone-tools`) — a human at pypi.org. **None belongs to this slice**;
   they are Genesis's, reported here only because the slice named them.

## 8. Blocked

Nothing remains blocked. HuggingFace was authenticated this run (`hf auth whoami` → `nickh007`),
so the hub half completed. One transient obstacle, worked around rather than escalated: `hf upload`
routes through `api/repos/create` and returned **402 Payment Required** ("hosting Gradio and Docker
Spaces on free cpu-basic requires PRO") even though both Spaces exist and are `static`. Uploading
with `HfApi().upload_folder(...)`, which does not create, succeeded.

---

## 9. Counts

- **pushed: 13** — 9 GitHub repos (11 commits total; `specforge` and `verification-docs` twice),
  2 HF Spaces, 2 HF dataset cards. Plus the monorepo: `main` (30 commits) and one new branch ref.
- **needs-decision: 5** — 4 PyPI bumps, the `pcar-specforge` name claim, `minicheck-mcp` first
  publish, the Space cleanup, and the 5 pending-publisher forms (not this slice).
- **blocked: 0**
- **unpublished-and-unbacked: 0** — every package in this slice is tracked in the monorepo, and the
  monorepo is now pushed. `.github`, `paper` and `tools` are internal helpers with no public
  counterpart by design.

*No force-push, no history rewrite, no branch deletion, no repo created, nothing made public that
was not already public. Secret sweep run before every push: 0 hits.*
