Skip to content

nano: add the terminal editor leaf formula#34

Merged
brandonpayton merged 3 commits into
mainfrom
migrate/nano-cli
Jul 12, 2026
Merged

nano: add the terminal editor leaf formula#34
brandonpayton merged 3 commits into
mainfrom
migrate/nano-cli

Conversation

@brandonpayton

@brandonpayton brandonpayton commented Jul 11, 2026

Copy link
Copy Markdown
Member

Purpose

Add GNU Nano 8.0 as a first-class Kandelo terminal-editor formula. It follows the normal Homebrew path: verified upstream source, a declared tap ncurses dependency, the real editor and data files, final fork instrumentation, and a real PTY edit workflow in brew test.

Dependency topology

Ncurses PR #8 is merged, and automattic/kandelo-homebrew/ncurses is Nano's explicit direct dependency. The registry manifest omitted this edge even though its build script resolved and linked ncurses; the formula records the actual dependency instead of relying on ambient registry state.

Formula contract

  • Build the registry-authoritative Nano 8.0 source for wasm32.
  • Link the exact tap ncurses interface and compiled fallback terminfo support.
  • Use /home/linuxbrew/.linuxbrew/etc/nanorc as the guest-stable system configuration path.
  • Disable optional browser, speller, libmagic, and NLS integrations that are not declared dependencies.
  • Fork-instrument the final executable and install nano, rnano, documentation, manpages, and syntax data.
  • Test version and option surfaces, stable runtime paths, and absence of keg/build-host paths.
  • Use the tap-owned PTY runner to open, search, replace, write, and close a real file.

Source acceptance

The source formula may merge independently after a fresh source-only devil review. This PR contains no bottle block or Nano sidecar, and merging it does not claim that a bottle is published or installable.

Existing runtime evidence

Pre-final ABI 18 source and bottle-resolver runs passed the Node PTY workflow and equivalent Chromium workflow. The tested executable had ABI 18, imports only from env and kernel, all five wpk_fork_* exports, no Asyncify residue, and no host build paths in runtime payload files.

The previously reported local bottle SHA-256 b3440b94147780f7c9caf519a6f57c081b25d2050b46166dcc2dff865b0427a2 is historical evidence only and is rejected for publication.

Final source validation

The two Nano semantic commits and installed-tap loader commit were based on tap main at a3ede334ad27aac7c4d5826bac761b9faf768f20. Before merge, an independent source-only review verified a clean merge tree against then-current tap main at 594ad5514dd03b18ce0996cc0aaf6e081202f229.

  • git range-diff reports all three commits unchanged from the already validated b9df206 restack.
  • Every artifact-producing formula line after the support import is unchanged from reviewed head 672239c; the formula-tail SHA-256 is 2197e96ce0058dad3ccdacb21ae4df7b50c765b0ae3ce0bb97d739fc2c74e53e.
  • Homebrew Ruby syntax passed.
  • Formula-support tests passed: 21 runs, 186 assertions.
  • brew style Formula/nano.rb reported no offenses.
  • Literal Homebrew loading through installed Tap.fetch returned Nano; installed and branch support files both had SHA-256 f5f13ecbee24d8d87e50a6f457c5acd23c3fdee7af1cca1fb9f428bf9d021766.
  • git diff --check passed and the worktree is clean.

No source build or runtime suite was rerun for this history/import-only restack. Current head is 1807a29f089446ed1680251c0d85a7adaf7856c5.

Bottle gates

Final bottle construction, publication, and installability claims remain gated on:

Automattic/kandelo#867 is merged ABI 18 baseline, not a pending gate. No platform ABI changes are made here. Firefox, WebKit, wasm64, and a final poured-bottle PTY run are not yet claimed.

@brandonpayton brandonpayton force-pushed the migrate/ncurses-dependency-root branch from a6e58d2 to 23f0533 Compare July 11, 2026 21:35
@brandonpayton brandonpayton force-pushed the migrate/ncurses-dependency-root branch from 23f0533 to 93567f2 Compare July 11, 2026 22:55
@brandonpayton brandonpayton force-pushed the migrate/nano-cli branch 2 times, most recently from 93b5267 to 672239c Compare July 12, 2026 00:26
@brandonpayton brandonpayton changed the base branch from migrate/ncurses-dependency-root to main July 12, 2026 00:26
@brandonpayton

brandonpayton commented Jul 12, 2026

Copy link
Copy Markdown
Member Author

Independent devil's-advocate source-only review at 1807a29f089446ed1680251c0d85a7adaf7856c5: ACCEPT.

The review rechecked the declared GNU Nano 8.0 source and GPL-3.0-or-later licensing, direct ncurses dependency and upstream pkg-config overrides, stable guest sysconf path, final-binary fork instrumentation, installed Tap.fetch loader, and the PTY edit/search/replace/write workflow. Fresh dev-shell evidence passed Ruby syntax, Homebrew style, literal formula loading, formula-support tests (21 runs / 186 assertions), a clean current-main merge tree, and git diff --check.

The diff is source-only: one formula, with no bottle block, sidecar, archive, receipt, provenance metadata, or other binary artifact. Historical ABI 18 bottle inspection was used only as implementation evidence; trusted bottles must be rebuilt from the merged formula. No source-formula blocker remains.

@brandonpayton brandonpayton merged commit aa99c67 into main Jul 12, 2026
@brandonpayton brandonpayton deleted the migrate/nano-cli branch July 12, 2026 02:12
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.

1 participant