turbo-editors/turbo-golopublic Fork 0
49c12f54ef399972152fccd592ae27e94977f9b5
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.

2026-09-14-first-editor.md · 36 lines · 3.9 KBmarkdown Blame HistoryRaw
📦 Turbo Golo d710c1b k33g yesterday1# Handoff — 2026-09-14 — Turbo Golo, first build
2
3## State
4
5The 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.
6
7The working tree is **uncommitted**: everything sits untracked on `main` at `7069d2c`, the initial commit. No commit was asked for.
8
9## How this got here
10
11Two 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`.
12
13## What was touched outside this repository
14
15Three sibling repositories were edited, each with its own history entry and handoff, and each needs its own commit:
16
17- **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**.
18- **turbo-python** — `docs/{en,fr}/explanation/architecture.md`, "all four editors" → five.
19- **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.
20
21## Next steps
22
231. **Commit** — this repository, turbo-core, turbo-python, turbo-moonbit.
242. **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).
253. **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.
26
27## Watch out for
28
29- **`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.
30- **`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.
31- **`docs/*/reference/languages.md` is read by `reference_test.go`.** Reformatting that table breaks the test rather than the docs.
32- **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.
33- **"Golo" is the language, "GoloScript" the implementation.** The docs keep the distinction everywhere; a mechanical edit that writes "GoloScript file" is wrong.
34- **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.
35- **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/`.
36- **`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`.