turbo-editors/turbo-golopublic Fork 0
v1.0.0
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-golo.git
git clone ssh://git@rickub.com/turbo-editors/turbo-golo.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

📦 Turbo Golo d710c1b · on v1.0.0 · k33g · 12h ago
2026-09-14-first-editor.md · 36 lines · 3.9 KBmarkdown
Blame HistoryOpen raw

Handoff — 2026-09-14 — Turbo Golo, first build

State

The editor is complete and green. make check passes (250 tests, 0 skipped with golo on PATH), the quality gate passes, the documentation is complete in both languages, the root README.md is written, and the tutorial has been driven through a pty. Nothing is in flight.

The working tree is uncommitted: everything sits untracked on main at 7069d2c, the initial commit. No commit was asked for.

How this got here

Two sessions on the same day. The first built everything and ended before writing .memory/ — its only record was /tmp/tg/FACTS.md (its fact sheet for the docs), the pty dumps /tmp/tg/*.raw, and the drivers /tmp/tg/pty_run.py / screen.py / wire.py. The second session found the state from disk, wrote the missing French tutorial, the README and this memory, and registered the editor in the family. /tmp will not survive the sandbox; everything worth keeping from FACTS.md is now in summary.md.

What was touched outside this repository

Three sibling repositories were edited, each with its own history entry and handoff, and each needs its own commit:

  • turbo-coreREADME.md, docs/{en,fr}/README.md, docs/{en,fr}/how-to/test-without-publishing.md, profile/profile.go (comment only), .memory/summary.md. Five editors now. Its .go strings were swept; no code change.
  • turbo-pythondocs/{en,fr}/explanation/architecture.md, "all four editors" → five.
  • turbo-moonbit — the same sentence. Its tree also carries the user's own uncommitted change to demos/hello/.turbo-moonbit/settings.toml, which predates this work.

Next steps

  1. Commit — this repository, turbo-core, turbo-python, turbo-moonbit.
  2. Run a mutation pass over the tests before tagging. No record says the first session did; every sibling's first session did. The scanner, the templates, the diagram test and the LSP tests are the four suites to break on purpose. /tmp/falsify*.py from turbo-moonbit's session show the in-process pattern (never a shell cp round trip — see that repository's handoff).
  3. Tag v0.1.0. release.env already says so. 01-release.tag.sh runs make check and refuses a live replace; it should go through as it stands.

Watch out for

  • golo must be on PATH for the suite to mean anything. The golo lsp tests skip themselves without it, and under -short. A green go test -short ./... proves nothing about the server. Here it is /home/agent/bin/golo, v0.1.1.
  • golo with no argument is the REPL, reading stdin as Golo. The lsp in ServerArgs() is load-bearing; dropping it looks like a server that never answers and never dies.
  • docs/*/reference/languages.md is read by reference_test.go. Reformatting that table breaks the test rather than the docs.
  • The builtins table is held to the real server's list. A newer GoloScript that adds a builtin fails that test on purpose; update the table, do not loosen the test.
  • "Golo" is the language, "GoloScript" the implementation. The docs keep the distinction everywhere; a mechanical edit that writes "GoloScript file" is wrong.
  • The Golo menu's Run asks which script to run — there is no manifest, so nothing else could know. Six of the eight tools ask for something; that is the design, not an omission.
  • The user is on macOS; this sandbox is Linux. /tmp/tg/turbo-golo is an ELF built for the pty run and lives outside the tree on purpose. Never leave a binary in bin/.
  • cp onto an existing file under ~/.claude/skills/ produced a file made entirely of NUL bytes, twice — once over the old file and once after rm. Writing the bytes from Python (open(dst,'wb').write(open(src,'rb').read())) worked; verify with cmp afterwards. turbo-moonbit's handoff records the same filesystem doing this to Go sources during a cp round trip. Do not trust a cp on this sandbox without a cmp.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Handoff — 2026-09-14 — Turbo Golo, first build

## State

The editor is complete and green. `make check` passes (250 tests, 0 skipped with `golo` on PATH), the quality gate passes, the documentation is complete in both languages, the root `README.md` is written, and the tutorial has been driven through a pty. Nothing is in flight.

The working tree is **uncommitted**: everything sits untracked on `main` at `7069d2c`, the initial commit. No commit was asked for.

## How this got here

Two sessions on the same day. The first built everything and **ended before writing `.memory/`** — its only record was `/tmp/tg/FACTS.md` (its fact sheet for the docs), the pty dumps `/tmp/tg/*.raw`, and the drivers `/tmp/tg/pty_run.py` / `screen.py` / `wire.py`. The second session found the state from disk, wrote the missing French tutorial, the README and this memory, and registered the editor in the family. `/tmp` will not survive the sandbox; everything worth keeping from `FACTS.md` is now in `summary.md`.

## What was touched outside this repository

Three sibling repositories were edited, each with its own history entry and handoff, and each needs its own commit:

- **turbo-core** — `README.md`, `docs/{en,fr}/README.md`, `docs/{en,fr}/how-to/test-without-publishing.md`, `profile/profile.go` (comment only), `.memory/summary.md`. Five editors now. Its `.go` strings were swept; **no code change**.
- **turbo-python** — `docs/{en,fr}/explanation/architecture.md`, "all four editors" → five.
- **turbo-moonbit** — the same sentence. **Its tree also carries the user's own uncommitted change** to `demos/hello/.turbo-moonbit/settings.toml`, which predates this work.

## Next steps

1. **Commit** — this repository, turbo-core, turbo-python, turbo-moonbit.
2. **Run a mutation pass over the tests before tagging.** No record says the first session did; every sibling's first session did. The scanner, the templates, the diagram test and the LSP tests are the four suites to break on purpose. `/tmp/falsify*.py` from turbo-moonbit's session show the in-process pattern (never a shell `cp` round trip — see that repository's handoff).
3. **Tag `v0.1.0`.** `release.env` already says so. `01-release.tag.sh` runs `make check` and refuses a live `replace`; it should go through as it stands.

## Watch out for

- **`golo` must be on PATH for the suite to mean anything.** The `golo lsp` tests skip themselves without it, and under `-short`. A green `go test -short ./...` proves nothing about the server. Here it is `/home/agent/bin/golo`, v0.1.1.
- **`golo` with no argument is the REPL**, reading stdin as Golo. The `lsp` in `ServerArgs()` is load-bearing; dropping it looks like a server that never answers and never dies.
- **`docs/*/reference/languages.md` is read by `reference_test.go`.** Reformatting that table breaks the test rather than the docs.
- **The builtins table is held to the real server's list.** A newer GoloScript that adds a builtin fails that test on purpose; update the table, do not loosen the test.
- **"Golo" is the language, "GoloScript" the implementation.** The docs keep the distinction everywhere; a mechanical edit that writes "GoloScript file" is wrong.
- **The Golo menu's `Run` asks which script to run** — there is no manifest, so nothing else could know. Six of the eight tools ask for something; that is the design, not an omission.
- **The user is on macOS; this sandbox is Linux.** `/tmp/tg/turbo-golo` is an ELF built for the pty run and lives outside the tree on purpose. Never leave a binary in `bin/`.
- **`cp` onto an existing file under `~/.claude/skills/` produced a file made entirely of NUL bytes, twice** — once over the old file and once after `rm`. Writing the bytes from Python (`open(dst,'wb').write(open(src,'rb').read())`) worked; verify with `cmp` afterwards. turbo-moonbit's handoff records the same filesystem doing this to Go sources during a `cp` round trip. Do not trust a `cp` on this sandbox without a `cmp`.