Implement researched Guix package outcome for #75: [Guix packaging] MatthewZMD/aidermacs #625

Closed
opened 2026-08-26 09:25:50 +00:00 by htayj · 1 comment
htayj commented 2026-08-26 09:25:50 +00:00 (Migrated from github.com)

Context

This delivery ticket was created from research issue #75 ([Guix packaging] MatthewZMD/aidermacs).

The host-validated research finding follows:

Canonical source is https://github.com/MatthewZMD/aidermacs at fixed commit 2fc993932d2df9270c3f85f8215f73600b78145c; the six Elisp libraries at that revision identify version 1.11, so encode the package as 1.11-0.2fc9939 (or the equivalent Guix git-version result) while retaining the full commit. Use the codeload source https://codeload.github.com/MatthewZMD/aidermacs/tar.gz/2fc993932d2df9270c3f85f8215f73600b78145c with the existing channel hash 1x2v8i2kzbnlvx7b55fc9b47bg46xf669kghfhyiw6jdc5vpxvl4 from tay/packages/starred-i-m.scm:127-131. The exact-revision license evidence is github.com/MatthewZMD/aidermacs@2fc993932d/LICENSE, which contains the complete Apache License 2.0 text; every tracked .el file also declares SPDX-License-Identifier: Apache-2.0. This is the only fetched origin: the pinned tree has no .gitmodules file or gitlink entries, and no separate submodule license review is required. The source is pure Elisp, with six aidermacs*.el libraries and no Makefile, Eask file, package.json, or upstream tests, so it is source-buildable with emacs-build-system; restrict installation to the six Elisp files and add LICENSE under share/doc/emacs-aidermacs. No equivalent installable package exists in the stock Guix or local-channel enumerations: the local channel only has matthewzmd-aidermacs-source 0-2fc9939, a copy-build-system preservation snapshot that does not install the extension; the recorded 2026-08-14 checks of the other Guix channels also found no same-origin package. Add tay/packages/aidermacs.scm, module (tay packages aidermacs), public package emacs-aidermacs, importing guix build-system emacs, guix gexp, guix packages, guix licenses, and tay packages starred-i-m, and reuse (package-source matthewzmd-aidermacs-source). Propagate emacs-transient >= 0.3.0, emacs-compat >= 30.0.2.0, and emacs-markdown-mode >= 2.7; the channel provides emacs-transient 0.13.2, emacs-compat 31.0.0.1, and emacs-markdown-mode 2.8. emacs-vterm is optional because the vterm backend uses (require 'vterm nil 'noerror); either document it as a separately installable optional input or propagate emacs-vterm if the package is intended to provide that optional backend by default. Do not add Aider, aider-ce, Python, uv, model-provider SDKs, credentials, or network services as package inputs. No wrapper is required: at runtime aidermacs-program defaults to (aider-ce aider), resolves the first executable with executable-find per workspace, and also accepts an absolute configured path; users must supply Aider externally on PATH or configure that variable. Model discovery/pricing and web-content actions are user-invoked network behavior and must not run during build or tests. Use an isolated test command in the emacs-build-system test phase that byte-compiles all six libraries with Emacs -Q --batch, adds the package and propagated dependency load paths, advises url-retrieve-synchronously to raise a network-prohibited error, requires aidermacs, asserts featurep aidermacs and commandp aidermacs-transient-menu, checks a local pure-Elisp transformation such as aidermacs--process-message-if-multi-line, sets default-directory to a non-Git temporary directory, sets exec-path to nil and PATH empty, clears the program cache, and asserts aidermacs-get-program fails with Aider executable not found rather than launching or networking. Final acceptance is guix lint -L. emacs-aidermacs, guix build -L. emacs-aidermacs, and that batch smoke proof; these package checks were not claimed or run because no implementation package exists and the host Guix daemon socket is unavailable.

Acceptance criteria

  • Implement the viable package change identified in the host-validated research finding.
  • Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding.
  • Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-26T09:25:50Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:75:1:implementation-ready --> ## Context This delivery ticket was created from research issue #75 ([Guix packaging] MatthewZMD/aidermacs). The host-validated research finding follows: Canonical source is https://github.com/MatthewZMD/aidermacs at fixed commit 2fc993932d2df9270c3f85f8215f73600b78145c; the six Elisp libraries at that revision identify version 1.11, so encode the package as 1.11-0.2fc9939 (or the equivalent Guix git-version result) while retaining the full commit. Use the codeload source https://codeload.github.com/MatthewZMD/aidermacs/tar.gz/2fc993932d2df9270c3f85f8215f73600b78145c with the existing channel hash 1x2v8i2kzbnlvx7b55fc9b47bg46xf669kghfhyiw6jdc5vpxvl4 from tay/packages/starred-i-m.scm:127-131. The exact-revision license evidence is https://github.com/MatthewZMD/aidermacs/blob/2fc993932d2df9270c3f85f8215f73600b78145c/LICENSE, which contains the complete Apache License 2.0 text; every tracked .el file also declares SPDX-License-Identifier: Apache-2.0. This is the only fetched origin: the pinned tree has no .gitmodules file or gitlink entries, and no separate submodule license review is required. The source is pure Elisp, with six aidermacs*.el libraries and no Makefile, Eask file, package.json, or upstream tests, so it is source-buildable with emacs-build-system; restrict installation to the six Elisp files and add LICENSE under share/doc/emacs-aidermacs. No equivalent installable package exists in the stock Guix or local-channel enumerations: the local channel only has matthewzmd-aidermacs-source 0-2fc9939, a copy-build-system preservation snapshot that does not install the extension; the recorded 2026-08-14 checks of the other Guix channels also found no same-origin package. Add tay/packages/aidermacs.scm, module (tay packages aidermacs), public package emacs-aidermacs, importing guix build-system emacs, guix gexp, guix packages, guix licenses, and tay packages starred-i-m, and reuse (package-source matthewzmd-aidermacs-source). Propagate emacs-transient >= 0.3.0, emacs-compat >= 30.0.2.0, and emacs-markdown-mode >= 2.7; the channel provides emacs-transient 0.13.2, emacs-compat 31.0.0.1, and emacs-markdown-mode 2.8. emacs-vterm is optional because the vterm backend uses (require 'vterm nil 'noerror); either document it as a separately installable optional input or propagate emacs-vterm if the package is intended to provide that optional backend by default. Do not add Aider, aider-ce, Python, uv, model-provider SDKs, credentials, or network services as package inputs. No wrapper is required: at runtime aidermacs-program defaults to (aider-ce aider), resolves the first executable with executable-find per workspace, and also accepts an absolute configured path; users must supply Aider externally on PATH or configure that variable. Model discovery/pricing and web-content actions are user-invoked network behavior and must not run during build or tests. Use an isolated test command in the emacs-build-system test phase that byte-compiles all six libraries with Emacs -Q --batch, adds the package and propagated dependency load paths, advises url-retrieve-synchronously to raise a network-prohibited error, requires aidermacs, asserts featurep aidermacs and commandp aidermacs-transient-menu, checks a local pure-Elisp transformation such as aidermacs--process-message-if-multi-line, sets default-directory to a non-Git temporary directory, sets exec-path to nil and PATH empty, clears the program cache, and asserts aidermacs-get-program fails with Aider executable not found rather than launching or networking. Final acceptance is guix lint -L. emacs-aidermacs, guix build -L. emacs-aidermacs, and that batch smoke proof; these package checks were not claimed or run because no implementation package exists and the host Guix daemon socket is unavailable. ## Acceptance criteria - Implement the viable package change identified in the host-validated research finding. - Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding. - Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/625). Originally posted by [htayj](https://github.com/htayj) on 2026-08-26T09:25:50Z.
htayj commented 2026-08-26 23:29:29 +00:00 (Migrated from github.com)

Completed and verified through the enforced package quality gates. Evidence: source inventory and offline lint passed; the package rebuilt reproducibly with its Emacs byte-compilation/runtime test phase; the isolated HOME/XDG + private-network smoke passed; and the proof verified the installed output remained immutable. The audit phase was stopped after self-blocking exploratory checks; its confirmed checks found no package defect.


Imported from GitHub comment. Originally posted by htayj on 2026-08-26T23:29:29Z.

Completed and verified through the enforced package quality gates. Evidence: source inventory and offline lint passed; the package rebuilt reproducibly with its Emacs byte-compilation/runtime test phase; the isolated HOME/XDG + private-network smoke passed; and the proof verified the installed output remained immutable. The audit phase was stopped after self-blocking exploratory checks; its confirmed checks found no package defect. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/625#issuecomment-5432304805). Originally posted by [htayj](https://github.com/htayj) on 2026-08-26T23:29:29Z.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#625
No description provided.