This guide is for contributors working on the SESS codebase.
- Go 1.25+
gitgh
Optional but useful:
gofmtgolangci-lint
git clone https://github.com/Orctatech-Engineering-Team/sess-cli.git
cd sess-cli
go build -o sess ./cmd/sess
./sess --helpIn restricted environments, use local caches for test/build commands:
env GOCACHE=/tmp/go-build GOMODCACHE=/tmp/go-mod-cache go test ./...Typical loop:
- make a focused change
- run
gofmt - run targeted tests
- run
go test ./... - verify the CLI in a throwaway repository when behavior changes
Keep the layering stable:
cmd/sessmay depend oninternal/sessinternal/sessmay orchestrateinternal/tui,internal/session, andinternal/dbinternal/tuimay call intointernal/session,internal/db, andinternal/gitinternal/dbandinternal/gitshould remain low-level
Avoid reverse dependencies between these layers.
Prefer:
- small, surgical changes
- explicit error handling
- direct control flow
- localized tests near changed code
Do not:
- add unnecessary abstraction
- hide important git or session state transitions
- mutate user data or repo state before validation
Current test coverage is focused on:
internal/dbinternal/sessioninternal/sessinternal/tuihelper logic
When changing lifecycle behavior, add coverage for:
- session state transitions
- database reads and writes
- failure semantics
- command-facing helper logic where practical
Changes to session workflows should usually be verified in a throwaway repository.
Recommended manual scenarios:
- start in a clean repo
- start in a dirty repo
- pause and resume on another branch
- end a session with dirty changes
- end a session with no shippable work
- end a session that reuses an existing PR
- failure cases for rebase, push, or
gh
- README.md: landing page
- docs/README.md: docs index
- docs/ARCHITECTURE.md: architecture overview
- docs/cli_design_guide.md: output rules
- docs/IMPLEMENTATION-PLAN.md: current execution backlog
- docs/NEXT-STEPS.md: active follow-up items
Release tags are built through GitHub Actions.
See:
Older planning and milestone documents still exist for background:
Treat them as historical context, not the current source of truth.