the tracker and forge: gitea, moved whole as agreed.
Seams:
State store.nisse_core.state.StateStore holds the tables every agent has (schema v4). An agent's subclass adds its own SCHEMA, SCHEMA_VERSION, MIGRATIONS, ACTORS and SHOWN. nisse_dev.state.StateStore adds vm_blocks (v5) and the dev roles. Existing v5 stores open unchanged, and v4 stores still migrate.
Views.views.project takes the role table as an argument instead of a module constant.
Vault.Vault now requires agent=, the agent's name written into provenance. It used to default to nisse-dev.
Stays in nisse-dev (deferred, as agreed): the loop, config, git, delegation, expert, tools and evals.
Tests:
New: test_independence.py, which checks that nisse_core never imports an agent. A deliberately bad import made it fail, as it should.
New: test_dev_state.py, covering VM blocks, the v4→v5 migration, and the dev roles and views against the core store.
Locally, the unit tier passes (826 tests) and ruff is clean. CI runs the walks and the smoke e2e.
Docs:
Development Plan: M7.1 marked done. Phase 6 marked as waiting on the agent host and Terraform.
Architecture: Part L now names the package's modules.
nisse-core/README.md rewritten to list the modules.
Development Plan M7.1. Moves what isn't the dev agent's into `nisse-core`, with no change in behaviour.
**Moved to `nisse_core`, each with its tests:**
- transcript and models: `canonical`, `render`, `render_anthropic`, `llm`, `catalog`, `probe`, `context`, `views`;
- durability: `state`, `reconcile`, `worker`, `cancel`, `dump`;
- conversation: `transport`, `matrix`;
- execution: `execution`, `testing`;
- knowledge: `vault`, `memory`;
- operations: `oplog`, `envfile`;
- the tracker and forge: `gitea`, moved whole as agreed.
**Seams:**
- **State store.** `nisse_core.state.StateStore` holds the tables every agent has (schema v4). An agent's subclass adds its own `SCHEMA`, `SCHEMA_VERSION`, `MIGRATIONS`, `ACTORS` and `SHOWN`. `nisse_dev.state.StateStore` adds `vm_blocks` (v5) and the dev roles. Existing v5 stores open unchanged, and v4 stores still migrate.
- **Views.** `views.project` takes the role table as an argument instead of a module constant.
- **Vault.** `Vault` now requires `agent=`, the agent's name written into provenance. It used to default to `nisse-dev`.
**Stays in nisse-dev** (deferred, as agreed): the loop, `config`, `git`, `delegation`, `expert`, `tools` and `evals`.
**Tests:**
- New: `test_independence.py`, which checks that `nisse_core` never imports an agent. A deliberately bad import made it fail, as it should.
- New: `test_dev_state.py`, covering VM blocks, the v4→v5 migration, and the dev roles and views against the core store.
- Locally, the unit tier passes (826 tests) and `ruff` is clean. CI runs the walks and the smoke e2e.
**Docs:**
- Development Plan: M7.1 marked done. Phase 6 marked as waiting on the agent host and Terraform.
- Architecture: Part L now names the package's modules.
- `nisse-core/README.md` rewritten to list the modules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
What isn't the dev agent's moves to nisse-core, unchanged in behaviour,
with its tests: canonical, render, render_anthropic, llm, catalog, probe,
context, views, state, reconcile, worker, cancel, dump, transport, matrix,
execution, testing, vault, memory, oplog, envfile and gitea (whole).
- nisse_core.state.StateStore holds the tables every agent has; an
agent's subclass adds its tables (version, migrations), roles and
views. nisse_dev.state.StateStore adds the build VM blocks (v5).
- views.project takes what each role is shown, rather than a fixed table.
- Vault takes the agent's name (agent=), for provenance.
- A test that nisse_core never imports an agent.
- The loop, config, git, delegation, expert, tools and evals stay in
nisse-dev until nisse-ops has a loop to share.
Docs: the Development Plan marks M7.1 done and notes that Phase 6 waits on
the agent host and Terraform; Architecture Part L names the package.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Development Plan M7.1. Moves what isn't the dev agent's into
nisse-core, with no change in behaviour.Moved to
nisse_core, each with its tests:canonical,render,render_anthropic,llm,catalog,probe,context,views;state,reconcile,worker,cancel,dump;transport,matrix;execution,testing;vault,memory;oplog,envfile;gitea, moved whole as agreed.Seams:
nisse_core.state.StateStoreholds the tables every agent has (schema v4). An agent's subclass adds its ownSCHEMA,SCHEMA_VERSION,MIGRATIONS,ACTORSandSHOWN.nisse_dev.state.StateStoreaddsvm_blocks(v5) and the dev roles. Existing v5 stores open unchanged, and v4 stores still migrate.views.projecttakes the role table as an argument instead of a module constant.Vaultnow requiresagent=, the agent's name written into provenance. It used to default tonisse-dev.Stays in nisse-dev (deferred, as agreed): the loop,
config,git,delegation,expert,toolsandevals.Tests:
test_independence.py, which checks thatnisse_corenever imports an agent. A deliberately bad import made it fail, as it should.test_dev_state.py, covering VM blocks, the v4→v5 migration, and the dev roles and views against the core store.ruffis clean. CI runs the walks and the smoke e2e.Docs:
nisse-core/README.mdrewritten to list the modules.🤖 Generated with Claude Code
https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk