You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
**`main` is currently red and this unblocks it.** KnotTheory.jl#48
merged, so quandledb's `@test_broken` on `conway(figure_eight)` now
reports **"Unexpected Pass"** — a hard error, and precisely the forcing
signal the marker existed to produce. Reproduced locally against
KnotTheory `a2f2938`.
### 1. Conway marker → hard assertion
Upstream now normalises Alexander to **Δ(1) = +1** (the Conway
normalisation) instead of "leading coefficient positive", which was the
wrong canonical choice on mixed-sign knots. `conway(figure_eight)` = `1
− z²` exactly, so the assertion is restored.
### 2. Alexander/Conway bounds: 12 → 128
The bound of 12 in #82 was calibrated against the **O(n!)** cofactor
determinant that #48 replaced with **O(n³)** Bareiss elimination.
Re-measured on `s1^n` torus closures (the worst case — no arc merging):
| crossings | alexander, Bareiss | alexander, cofactor (before) |
|---|---|---|
| 16 | ~0 s | **> 6 h** (the CI kill) |
| 40 | 0.07 s | — |
| 100 | 0.10 s | — |
| 140 | 0.61 s | — |
128 keeps the worst case sub-second while covering every realistic
diagram. **Jones (20) and HOMFLY (15) are unchanged** — those are
genuinely exponential (Kauffman bracket 2ⁿ; skein recursion), and their
bounds come from upstream's own limits.
### 3. Guard testset reworked
With the three bounds now an order of magnitude apart, one diagram can
no longer exercise them all — the old single-fixture test would have
silently stopped testing the alexander/conway guard. It now covers:
- **16 crossings** — only HOMFLY defers; alexander, conway and jones
must all be *real* values.
- **130 crossings** — all four defer, with an explicit `@test
length(pd.crossings) > ALEXANDER_MAX_CROSSINGS` so that raising the
bound without raising the fixture fails loudly instead of going quiet.
## Verification
Full axioms suite against KnotTheory `a2f2938`: passes with **zero
broken markers** — a first for this suite.
## Note on the BR-5 fuzz residual
Re-measured at 200 trials: **still exactly 11/200**, unchanged by #48.
My expectation that the sign fix would shrink it was **wrong** — the
mismatches are not caused by the alexander/conway sign convention. A
component-level diagnostic is running to identify the actual cause; the
`@test_broken` counter marker stays until that is known, and the finding
will be posted to KnotTheory#42 (and appended here if it changes
anything in this PR).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
isdir(path) || error("[sources] $name -> $(spec["path"]) resolves to $path, which does not exist; the symlink step above is out of step with server/Project.toml")
110
+
end
111
+
println("PASS: all [sources] paths resolve")'
98
112
99
113
- name: Instantiate server project
100
114
run: julia --color=yes --project=server -e 'using Pkg; Pkg.instantiate()'
0 commit comments