Milestone 1: Foundations #1

Closed
opened 2026-05-26 19:15:53 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-26 19:15:53 +00:00 (Migrated from github.com)

Goal

Implement the non-UI foundation for limen so the repository has a working Go module, Nix package, config parsing, advisory state persistence, relative-time formatting, and a JSON-printing CLI.

Scope

  • Initialize go.mod as github.com/KofTwentyTwo/limen with Go 1.22 or newer.
  • Add flake.nix exposing packages.default via pkgs.buildGoModule.
  • Implement internal/config for hosts.json per docs/DESIGN.md §7.1 and §9.1.
  • Enforce the exact public error strings from §9.1.
  • Implement internal/state for state.json per §7.2, including advisory reads and atomic writes.
  • Implement internal/format relative-time strings per §8.5.
  • Add main.go with no UI: load config and state, then print both as JSON to stdout.
  • Include unit tests for every logic package and an end-to-end sample hosts.json exercise.

Out of scope

  • Bubble Tea or Lip Gloss.
  • Host probing.
  • SSH invocation.
  • syscall.Exec handoff.
  • Terminal rendering.

Acceptance criteria

  • go test -race ./... passes.
  • go vet ./... passes.
  • go build ./... passes.
  • CI is green.
  • PR targets develop.
## Goal Implement the non-UI foundation for limen so the repository has a working Go module, Nix package, config parsing, advisory state persistence, relative-time formatting, and a JSON-printing CLI. ## Scope - Initialize `go.mod` as `github.com/KofTwentyTwo/limen` with Go 1.22 or newer. - Add `flake.nix` exposing `packages.default` via `pkgs.buildGoModule`. - Implement `internal/config` for `hosts.json` per `docs/DESIGN.md` §7.1 and §9.1. - Enforce the exact public error strings from §9.1. - Implement `internal/state` for `state.json` per §7.2, including advisory reads and atomic writes. - Implement `internal/format` relative-time strings per §8.5. - Add `main.go` with no UI: load config and state, then print both as JSON to stdout. - Include unit tests for every logic package and an end-to-end sample `hosts.json` exercise. ## Out of scope - Bubble Tea or Lip Gloss. - Host probing. - SSH invocation. - `syscall.Exec` handoff. - Terminal rendering. ## Acceptance criteria - `go test -race ./...` passes. - `go vet ./...` passes. - `go build ./...` passes. - CI is green. - PR targets `develop`.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/limen#1