Skip to content

Grammar v8: triplet spacing and base-512 numbers - #5

Merged
emptymalei merged 3 commits into
mainfrom
claude/project-thread-3ll1qa
Oct 8, 2026
Merged

emptymalei merged 3 commits into
mainfrom
claude/project-thread-3ll1qa

Conversation

@emptymalei

@emptymalei emptymalei commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Before: glyph drew v7 pages, where every line was one statement on a fixed 23-cell lattice and numbers stopped at 511.

After: glyph draws v8 pages, where spacing is the structure. There is 1 empty cell inside a word, 2 between the words of a triplet and 4 between triplets. Triplets run left to right, two to a line by default (render --per-line N), and a one-part word is 3 cells wide. Numbers are COUNT followed by base-512 digits, for example COUNT.4.171 = 2219. COUNT.2219 is also accepted, and the new glyph number N command shows how a number is written. decode reads the structure from the gaps alone.

How it works:

  • Word.positions lists the lattice positions of each word, and Triplet.widths() sizes each slot.
  • The decoder tries every split the gaps allow and keeps the one that reads best against the vocabulary.

Known ambiguities:

  • ONE, BEFORE and AFTER are single dots one cell apart, so a few drawings fit two readings. For example, BODY.AFTER | OTHER and BODY | ONE.OTHER draw the same. L chose to keep these shapes, so the reader picks the reading made of known words, and the docs explain this.
  • A number that ends in a 0 digit can't be read back when it is the last word on a line. render warns when this happens.

API changes: Page.lines/Line are now Page.triplets/Triplet. The version is 0.3.0.

Checks: pytest passes (106 tests), ruff check and format pass, gen_docs.py --check passes, zensical build passes, and the render | decode smoke test passes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7

claude added 2 commits October 8, 2026 05:21
Spacing is structure: 1 cell inside a word, 2 between the words of a
triplet, 4 between triplets. One-part words are 3 cells wide and slots
widen for the longest word. Triplets run left to right (render
--per-line). Numbers are COUNT plus base-512 digits (COUNT.4.171 = 2219),
with a new `glyph number` command. decode finds words from the gaps.

BEFORE and AFTER are redrawn as a path with a tick at either end, since
the old single dots were ONE moved one cell sideways and made gaps
ambiguous; validate now checks for that. Page.lines is Page.triplets.
Version 0.3.0.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7
emptymalei pushed a commit to InterImm/interstellar that referenced this pull request Oct 8, 2026
lib/glyph.js now ports glyph-cli 0.3.0: words are spaced 1/2/4 cells,
triplets run left to right, numbers are COUNT plus base-512 digits, and
decode reads the structure from the gaps. The explainer, converter and
dictionary pages describe and use the new rules; the converter gets a
triplets-per-line choice, a free-width drawing grid and a warning for
numbers whose trailing 0 digit would vanish at a line end. Vocabulary
and fixtures regenerated from glyph-cli 0.3.0 (InterImm/glyph-cli#5).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7
L chose to keep the original shapes. The reader already picks the layout
that reads best against the vocabulary, so ambiguous gaps resolve to known
words; the docs now say so, and validate no longer rejects parts that are
one-cell shifts of each other.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7
@emptymalei
emptymalei merged commit 5859e38 into main Oct 8, 2026
5 checks passed
emptymalei added a commit to InterImm/interstellar that referenced this pull request Oct 8, 2026
* Signals: add the resonance theory and read each transmission through it

Adds a 'Speech that needs two' section to /signals/ (CN and EN) and a
short resonance-theory reading under each of the five transmissions.
Framed as a working theory held by listeners in the story, not a
decoding. Encodings and audio are unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7

* Netlify: publish the static site as-is so deploy previews stop failing

The old Netlify site still builds previews with its Hugo settings, which
fail since the Hugo config was removed in #3.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7

* Remove netlify.toml: the site is on GitHub Pages and the Netlify setup is being retired

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RH7A8tqLXxxGiks9mUWtyE

* Grid script pages: grammar v8 (triplet spacing, base-512 numbers)

lib/glyph.js now ports glyph-cli 0.3.0: words are spaced 1/2/4 cells,
triplets run left to right, numbers are COUNT plus base-512 digits, and
decode reads the structure from the gaps. The explainer, converter and
dictionary pages describe and use the new rules; the converter gets a
triplets-per-line choice, a free-width drawing grid and a warning for
numbers whose trailing 0 digit would vanish at a line end. Vocabulary
and fixtures regenerated from glyph-cli 0.3.0 (InterImm/glyph-cli#5).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7

* Grid script: keep BEFORE and AFTER as single dots (L's call)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgskKyin9t8k9F6KcUj5o7

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants