diff --git a/AGENTS.md b/AGENTS.md index a90f0cf..db625a5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,6 +11,24 @@ --- +## Developer Workflow + +```bash +# Install (editable, pulls in the sand-boxer sibling checkout) +python3 -m venv .venv && source .venv/bin/activate +pip install -e . -e ../sand-boxer pytest + +# Test +python3 -m pytest tests/ -q + +# Run — resolves a sand-boxer sandbox, runs one task through a rein, verifies +glas-harness run --sandbox-profile profile.bwrap-local \ + --repo --title "..." --description "..." +``` + +No separate lint/build step — this is a plain library + CLI, no packaging +pipeline beyond `pip install -e .`. + ## State Hub Integration The Custodian State Hub tracks work across all domains. Interact via HTTP REST — diff --git a/SCOPE.md b/SCOPE.md index 08be05d..4c2ef22 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -1,32 +1,52 @@ # SCOPE -> This file was generated by `statehub register`. Refine it as the repository -> boundaries become clearer. - ## One-liner -Meta-framework routing between concrete agent-harness backends (reins) +Meta-framework routing between concrete agent-harness backends ("reins"), +consuming sand-boxer for isolation. See `docs/adr/ADR-001-rein-harness-family.md`. ## Core Idea -glas-harness exists to provide the capability described in INTENT.md. +glas-harness owns the harness contract (`docs/harness-contract.md`: +`start_session`/`dispatch_tool`/`end_session`) and the outer loop — profile +resolution, sandbox request/teardown via sand-boxer, actor attribution. A +rein owns its own inner agentic loop and is invoked through that contract. ## In Scope -- Maintain the repository's primary implementation. -- Keep docs, tests, and operational metadata current. +- The `Rein` ABC and `SandboxHandle`/`ToolCall`/`ToolResult` types + (`src/glas_harness/contract.py`) +- The gateway that resolves a harness profile, requests a sand-boxer sandbox, + runs one task through a rein, verifies, tears down + (`src/glas_harness/gateway.py`) +- Rein adapters that shell out to each rein's own CLI + (`src/glas_harness/reins/`) — currently `rein_aharness.py`, + `rein_openweights.py` +- The rein registry (`registry/reins/`) and harness profile catalog + (`profiles/`) ## Out of Scope -- Own unrelated adjacent systems. -- Make irreversible operational decisions without human approval. +- Sandbox provisioning, profiles, placement — owned by `sand-boxer` +- A rein's own agentic loop, tool execution, credential acquisition — + owned by the rein itself (`rein-aharness`, `rein-openweights`, ...) +- Scheduling/task sourcing — stays rein-local + (`docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md`) +- e2e validation, code generation — owned by `wise-validator`, + `snuggle-inventor` ## Current State -- Status: active; implementation and stability should be verified by the repo agent. +`GLAS-WP-0001` (harness contract + first two reins) is done. Both +`rein-aharness` and `rein-openweights` are live-proven through the gateway +against their real underlying providers (Claude Code CLI, OpenRouter). +Not yet built: channel bridges, memory/skills layer, glas-harness's own +State Hub reporting from the gateway (currently each rein reports its own +events). ## Getting Oriented -- Start with: INTENT.md -- Agent instructions: AGENTS.md -- Workplans: workplans/ +- Start with: `INTENT.md`, `docs/adr/ADR-001-rein-harness-family.md` +- Contract: `docs/harness-contract.md` +- Agent instructions: `AGENTS.md` +- Workplans: `workplans/` diff --git a/workplans/GLAS-0001-statehub-bootstrap.md b/workplans/GLAS-0001-statehub-bootstrap.md index c8e75f6..100ab0e 100644 --- a/workplans/GLAS-0001-statehub-bootstrap.md +++ b/workplans/GLAS-0001-statehub-bootstrap.md @@ -4,7 +4,7 @@ type: workplan title: "Bootstrap State Hub integration" domain: infotech repo: glas-harness -status: ready +status: active owner: codex topic_slug: custodian created: "2026-07-26" @@ -20,7 +20,7 @@ Meta-framework routing between concrete agent-harness backends (reins) ```task id: GLAS-0001-T01 -status: todo +status: done priority: high state_hub_task_id: "89f9f0d8-8715-486f-b1b6-bb7afcf885d7" ``` @@ -32,7 +32,7 @@ Replace generated placeholders with repo-specific facts where needed. ```task id: GLAS-0001-T02 -status: todo +status: done priority: high state_hub_task_id: "e52c40e5-49b3-43d2-be50-774993c715d9" ``` @@ -45,7 +45,7 @@ changes confidently. ```task id: GLAS-0001-T03 -status: todo +status: done priority: medium state_hub_task_id: "2ad8b534-ebf8-479b-834b-f8df629df717" ```