dongarandClaude Opus 5 ce436262f4
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 1m8s
Wire delegation to A12's trigger, and implement A3's resume rule
Two gaps found by auditing spec against code, the second created by
7b landing the harness without its boot-time half.

**The harness was not connected to anything.** Only a live test
constructed a Delegation; A12's failure-count trigger still gated to
the human, which A13 describes as the fallback rather than the path.
Consecutive command failures now hand the sub-task to the delegate,
with the failures in the brief so it need not rediscover what the
local model learned the hard way. A usable handback lets the local
loop carry on; anything else escalates, because a cap breach leaves a
half-edited tree.

**A3 step 5 was unimplemented.** A crash mid-delegation failed safe —
boot gated on "restarted mid-EXECUTING" — but always gated, even on
the clean cut the spec says should resume, and left the branch orphaned
because _abandon only runs while the process lives.

- A delegation now records an intent before the branch exists, and
  settles it whichever way the delegation ends; an aborted delegation
  is a finished one, and leaving it pending would make the next boot
  believe work was still in flight
- delegation_verdict implements the clean-cut test as an observable
  check, never model self-assessment: settled if a completion follows
  the start, absent if the branch was never created, gate on a
  tool_call with no recorded result, resume otherwise
- recover() sweeps at boot, announcing a resume with a notice rather
  than a question, since a clean cut needs no decision from the
  operator, and leaving an unclean one pending so the generic sweep
  gates on it
- resume() continues the same delegation rather than starting a
  second: no new branch, no second delegation_started, because A10
  defines a session as the delegation, not the process lifetime

Honest limit, stated in the code: "the branch sits at the expected
commit" is approximated by the branch existing and carrying the work,
since per-turn shas are not recorded in the log, so a branch rewritten
underneath us would go undetected.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 20:03:46 +00:00

Nisse

Two self-hosted AI agents sharing a common library, named for the Nordic farm spirit that keeps the place running overnight and expects to be treated well in return.

Package Role
nisse-core/ Shared library both agents sit on (Part A)
nisse-dev/ Dev Agent — plans and implements software projects (Part B)
nisse-ops/ Sysadmin Agent — operates infrastructure (Part C)

One repository, three packages. The library does not exist as code yet: it is extracted from nisse-dev once that agent works (build-order step 10), as a package split within this tree.

Architecture

The system-level specification lives at docs/Architecture-Build-Spec.md. It covers the shared library, both agents, the supporting services, the build order, and the remaining open decisions.

S
Description
LLM Agents for specialized tasks.
Readme
4.4 MiB
1 Stars 2 Watchers 0 Forks
v0.1.0
Latest
2026-10-07 22:39:30 +00:00
Languages
Python 98.1%
Shell 1.6%
Dockerfile 0.3%