mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
docs: record the reference-implementation comparison
All eight avatar golden vectors pass. The Python reference CLI is a week stale on the avatar kind (33331, where the spec and the two current implementations say 11333) and we follow the spec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JwXApJjoZYtkD3sPRWbPNa
This commit is contained in:
co-authored by
Claude Opus 5
parent
0cc0e8c8b8
commit
fdb6630ea2
@@ -239,6 +239,49 @@ mode), `orient` (winding faces outward so a lit bench can paint backfaces dark),
|
||||
exists nowhere in the DECK), `pose`, `scale`, `hsv`. None of it is needed to *read* an
|
||||
object. All of it would be needed to build a workshop, which is D3's argument.
|
||||
|
||||
### 2.5a Checked against the reference implementations, not only the spec
|
||||
|
||||
§8.10 says its two reference implementations are "pinned to one set of golden
|
||||
vectors", and the first pass built the avatar ladder from the section's
|
||||
pseudocode instead — which is the same text both implementations read, so
|
||||
agreement with it proved nothing about agreement with them. Closed since:
|
||||
`tests/fixtures/avatar_work.json` from cyberspace-cli is now a test, and **all
|
||||
eight vectors pass**. The two fixture sets (cyberspace-cli and cyberspace-core)
|
||||
carry the same eight names with identical `reach` and `required` throughout, so
|
||||
the "one set" claim holds and checking either checks both.
|
||||
|
||||
The vector that earns its keep is **"half gibson, ticks"**: a vertex of
|
||||
`[-1, -1, -1]` with ticks `[60, 60, 60]` is **-0.5** of a unit, not -1.5,
|
||||
because the whole part is the floor and the ticks count up from it. An
|
||||
implementation that takes the magnitude before adding the ticks prices that
|
||||
avatar at three times its reach and passes every other vector in the set.
|
||||
|
||||
`verify_avatar_work` in the Python reference also confirms the shape of the
|
||||
payment check independently: committed ≥ required **and** zeros ≥ committed, as
|
||||
two separate conditions with distinct failure reasons — which is what §5 of this
|
||||
plan's own note about `Event.pow()` is about.
|
||||
|
||||
**The Python reference is stale on the avatar kind, and we do not follow it.**
|
||||
|
||||
| Implementation | Avatar kind |
|
||||
| ---- | ---- |
|
||||
| `CYBERSPACE_V2.md` §8.10 | **11333** |
|
||||
| cyberspace-core (TS, 2026-09-14) | 11333 |
|
||||
| ONOSENDAI (the client) | 11333 |
|
||||
| cyberspace-cli (Python, 2026-09-07) | **33331** |
|
||||
|
||||
The Python CLI predates the kind move by a week and still calls 33331 the avatar
|
||||
kind, which DECK-0003 has since given to standalone objects. Run against the
|
||||
current network it would refuse a conformant avatar as `not-an-avatar`, and
|
||||
would treat one of the seven published `kind 33331` objects as an avatar and
|
||||
demand proof of work of it. We follow the spec and the two current
|
||||
implementations.
|
||||
|
||||
Nothing else in the Python CLI overlaps this work: it implements no §1.9, no
|
||||
palette and no mode — its only SNO surface is the avatar ladder. It does
|
||||
implement the `kind 33330` bag (encrypt/decrypt), which is the part we
|
||||
deliberately do not.
|
||||
|
||||
### 2.6 The two reference implementations disagree, and I checked which way
|
||||
|
||||
The DECK's conformance note says `sno-reference.py` and ONOSENDAI's TypeScript reader
|
||||
|
||||
Reference in New Issue
Block a user