docs: the handoff's resume steps assume a machine this is not
§§1-9 were written on fabi-Hyrican-PC. On the other desktop the ~/.sylph-*
credentials do not exist, the Pi does not resolve, and stable is 1.90.0 rather
than the 1.98.1 §8 records -- so §8.2 (fetch the WASM bundle) and §8.4 (Phase 7)
cannot be run from here at all. Says which of the four steps can.
Measured rather than carried over: protection holds (10/10), fmt is 774 hunks
across 154 files, check-citations is 19, and the tests are 207/0/14 across 30
suites. Two of those need reading carefully:
* clippy DIVERGES. The runner is rustc 1.98.1 -- read out of job 794's log,
not assumed -- and is clean; here 1.90.0 exits 101 on only_used_in_recursion
at vfs.rs:85. That is #15 ceasing to be theoretical. It is NOT evidence that
CI's green is fake, which is the §7 lesson-5 inference in the other
direction.
* the test tally matches to the unit while measuring something else. 15
*_disc.rs files resolve disc_root() through a hardcoded absolute path, so
unsetting SYLPHEED_DISC does not skip them: the disc suites RAN here (1936 s,
mesh_consistency_disc alone 1220 s) and skipped on CI (2.4 s total) -- and
both report 207/0/14, because the skip path returns from a test that still
passes. Good news for #14, since this run is the stronger evidence; and worth
an issue, since SYLPHEED_DISC looks like a control and is not one.
I got that last one wrong first -- inferred "the counts cannot match" from "the
fallback resolves", which is §7's shape a sixth time, recorded as such.
Also: a plain `git clone` of this repo fails three ways on the pack that still
carries the 545 MB; --filter=blob:none works. And §6's tokio claim was
challenged and survived -- every use is inside a #[cfg(test)] module.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -245,3 +245,153 @@ result from before does not.
|
|||||||
* **Never self-screenshot**; ask the human to capture. Ask before a
|
* **Never self-screenshot**; ask the human to capture. Ask before a
|
||||||
watch-and-verify `--ui` launch.
|
watch-and-verify `--ui` launch.
|
||||||
* **Never judge emulator crash or stability from a Bash-launched run.**
|
* **Never judge emulator crash or stability from a Bash-launched run.**
|
||||||
|
|
||||||
|
## 10. The second machine — measured on `fabi-MS-7C37`, 2026-09-06
|
||||||
|
|
||||||
|
**§§1–9 were written on `fabi-Hyrican-PC`.** This section was written on the
|
||||||
|
other desktop, and every line is a command run *here*. Nothing above is carried
|
||||||
|
across untested — §7 is the reason.
|
||||||
|
|
||||||
|
Everything §§4–5 say about the **server** checks out exactly: 13 open issues,
|
||||||
|
#10 and #14 open and `mergeable`, Gitea 1.25.5. What does not transfer is the
|
||||||
|
**box**.
|
||||||
|
|
||||||
|
### What is different here, and what it costs
|
||||||
|
|
||||||
|
| § | says | here |
|
||||||
|
|---|---|---|
|
||||||
|
| 8 | four `~/.sylph-*` credentials, `chmod 600` | **none exist.** `~/.git-credentials` holds a `fabi@git.mc02.dev` token that reads `branch_protections` — an endpoint both agent tokens are refused on — so it is not an agent token. Whether it can *push* is untested |
|
||||||
|
| 8.2 | fetch `/tmp/sylph-wasm-compile.bundle` from the Pi | **`raspberrypi.fritz.box` does not resolve here**, and there is no host key for it. `ba6c5da` is unreachable from this machine |
|
||||||
|
| 8 | "updated to `rustc 1.98.1` … to match the runner" | that was the *other* desktop. Here `stable` = **1.90.0**, with a `1.92.0` also installed |
|
||||||
|
| 5 | the agent images | no `sylph-decoder` / `sylph-port` image on this box |
|
||||||
|
|
||||||
|
So of §8's four steps, only **1** (the human's merges) and **3** (the
|
||||||
|
trunk-action decision, an edit to `ci.yml`) can be done from here. **2 and 4
|
||||||
|
cannot, at all.**
|
||||||
|
|
||||||
|
### 🔴 `git clone` of this repository does not work
|
||||||
|
|
||||||
|
Three attempts died on `GnuTLS recv error (-9)` / `Recv failure: Connection
|
||||||
|
reset by peer`, at 135 MB, 4.6 MB and 73 MB. A default clone fetches **every**
|
||||||
|
branch, and `auto/port-p6-audio`'s history still carries the 545 MB of game
|
||||||
|
content §9 describes — gone from the tree, still in the pack.
|
||||||
|
|
||||||
|
What works, in seconds:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git -c http.version=HTTP/1.1 clone --filter=blob:none \
|
||||||
|
https://git.mc02.dev/fabi/Sylpheed.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Blobs fault in on demand. The tree is **108 MB in 1 007 files** (98 MB of it
|
||||||
|
`docs/re/captures/`), and it was verified byte-for-byte against
|
||||||
|
`git ls-tree -r -l` — worth doing, because the clone printed *"checkout failed"*
|
||||||
|
partway and then recovered silently. ⚠️ One cost: `check-citations` reaches into
|
||||||
|
peer branches, so on a blobless clone it faults blobs over that same flaky link
|
||||||
|
and takes minutes rather than seconds.
|
||||||
|
|
||||||
|
### The numbers that carry, and the one that does not
|
||||||
|
|
||||||
|
Expected values taken from §§4–5 *before* running, per R2:
|
||||||
|
|
||||||
|
| | expected | measured here | |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `gitea-protect --verify` | protection holds | **holds**, 10/10, rc=0 | ✅ carries |
|
||||||
|
| `cargo fmt --all -- --check` | 774 hunks | **774**, across **154 files** | ✅ carries |
|
||||||
|
| `check-citations --for-merge` | 19 | **19**, rc=1 | ✅ carries |
|
||||||
|
| `cargo test --workspace` | 207 / 0 / 14, 30 suites | **207 / 0 / 14, 30** | ✅ carries — see below |
|
||||||
|
| `cargo clippy --workspace -- -D warnings` | *not comparable* | **exit 101** | 🔴 diverges |
|
||||||
|
|
||||||
|
154 files corroborates rather than adds: §7's split of the fmt debt into "133
|
||||||
|
that cannot collide" and "21 that are the real blocker" sums to exactly it.
|
||||||
|
|
||||||
|
`gitea-protect --verify` needs `SYLPH_GIT_CREDENTIALS=~/.git-credentials` here,
|
||||||
|
since its default is one of the four missing files.
|
||||||
|
|
||||||
|
### 🔴 The test count carries — and that is what is wrong with it
|
||||||
|
|
||||||
|
It matched to the unit. It should not be read as the two runs having done the
|
||||||
|
same thing, because they did not.
|
||||||
|
|
||||||
|
**15 files** under `crates/sylpheed-formats/tests/*_disc.rs` resolve the disc
|
||||||
|
through a `disc_root()` whose second branch is a **hardcoded absolute path** —
|
||||||
|
`/home/fabi/RE - Project Sylpheed/Project Sylpheed - Arc of Deception (USA,
|
||||||
|
Europe) (En,Ja)`. So `unset SYLPHEED_DISC` does **not** disable them: that
|
||||||
|
directory exists on this box, and the disc suites *ran*.
|
||||||
|
|
||||||
|
| | CI (job 794) | here |
|
||||||
|
|---|---|---|
|
||||||
|
| test **execution** wall time | **2.4 s**, slowest suite 0.29 s | **1 936 s**, `mesh_consistency_disc` alone **1 220 s** |
|
||||||
|
| tally | 207 / 0 / 14, 30 suites | **identical** |
|
||||||
|
|
||||||
|
Identical because the skip path is `eprintln!("SKIP: …")` **plus an early return
|
||||||
|
from a test that still passes**. A skipped disc test and a fully exercised one
|
||||||
|
both score `1 passed`. And the message is invisible either way — `cargo test`
|
||||||
|
captures a passing test's stderr, so *neither* log contains a `SKIP:` line. The
|
||||||
|
absence of one proves nothing; only the clock separated these two runs.
|
||||||
|
|
||||||
|
So ask the question this project keeps having to ask — **what would this check
|
||||||
|
still report if the corpus were entirely absent?** — and the answer is
|
||||||
|
`207 / 0 / 14`.
|
||||||
|
|
||||||
|
Two consequences, and the first is good news:
|
||||||
|
|
||||||
|
* this run is **strictly stronger evidence than CI's**: 207 passed with the disc
|
||||||
|
corpus actually exercised, on x86_64, at `593b378`.
|
||||||
|
* `SYLPHEED_DISC` looks like the control and is not one. Whether the disc suites
|
||||||
|
run is a property of *the machine's directory layout*, invisible in the command
|
||||||
|
and in the output. Worth an issue — it is the `.gitignore` lesson again,
|
||||||
|
**naming an instance instead of the condition.**
|
||||||
|
|
||||||
|
📌 **A sixth instance for §7, and it is mine.** I inferred "the counts cannot
|
||||||
|
match" from "the fallback resolves" — an adjacent property, never tested — and
|
||||||
|
wrote it into this section before the run finished. The run returned 207 / 0 / 14.
|
||||||
|
The correction was the same as every other time in that table: run it, and count.
|
||||||
|
|
||||||
|
### 🔴 The clippy gate genuinely disagrees between the two toolchains
|
||||||
|
|
||||||
|
This is **#15 ceasing to be theoretical**, and it needs stating carefully,
|
||||||
|
because it is §7's lesson 5 arriving from the other side.
|
||||||
|
|
||||||
|
Both sides measured with the same command, both versions read rather than assumed:
|
||||||
|
|
||||||
|
* **the runner** — `rustc 1.98.1 (48a229cea 2026-09-01)`, read out of job 794's
|
||||||
|
own log. `cargo clippy --workspace -- -D warnings` finishes in 9.26 s with no
|
||||||
|
lint. Native is green on runs **206, 207, 208 and 209** — four consecutive,
|
||||||
|
not three.
|
||||||
|
* **here** — `rustc 1.90.0` / `clippy 0.1.90`. The same command exits **101**, on
|
||||||
|
exactly one lint:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: parameter is only used in recursion
|
||||||
|
--> crates/sylpheed-formats/src/vfs.rs:85:10
|
||||||
|
= note: `-D clippy::only-used-in-recursion` implied by `-D warnings`
|
||||||
|
```
|
||||||
|
|
||||||
|
Without `-D warnings` it is a warning and clippy exits 0 — so the disagreement
|
||||||
|
sits exactly at the gate.
|
||||||
|
|
||||||
|
**What this does not mean.** It does not mean #14 is wrong, and it does not mean
|
||||||
|
CI's green is cached or ungated. That is the inference §7 records as the sharpest
|
||||||
|
of its five failures, and the evidence points the other way: the runner's log
|
||||||
|
shows the step running, on this code, clean. `d8807c4` already collapsed one
|
||||||
|
`else { if }` *"so both toolchains agree"* — this is the same class, one lint on.
|
||||||
|
|
||||||
|
What it establishes is narrower and more useful: **the gate's verdict depends on
|
||||||
|
which stable happened to be current**, and there is now a named reproducible case
|
||||||
|
rather than an argument. That is #15's evidence.
|
||||||
|
|
||||||
|
📌 For whoever picks up #13/#14: *"clippy is clean"* is not a property of the
|
||||||
|
tree, it is a property of the tree **and** a toolchain. Until #15 pins one, say
|
||||||
|
which one you ran.
|
||||||
|
|
||||||
|
### Refutation attempted, and survived
|
||||||
|
|
||||||
|
Per the adversarial duty — §6's claim that `sylpheed-formats` declares `tokio` as
|
||||||
|
a normal dependency **it never uses**. It *is* referenced, in `ship.rs` and
|
||||||
|
`xiso.rs`, which looked like a refutation. It is not: every one of those sits
|
||||||
|
inside a `#[cfg(test)]` module (`ship.rs:497`, `xiso.rs:178`). The library's
|
||||||
|
non-test code does not use tokio, so moving it to `dev-dependencies` is sound and
|
||||||
|
the `examples/` targets keep compiling. **Claim survives** — recorded because a
|
||||||
|
survived challenge is stronger than an unchallenged one, not because it changed
|
||||||
|
anything.
|
||||||
|
|||||||
Reference in New Issue
Block a user