Add harness.agent-dev-local 1.1.0 metered-owner candidate (GLAS-WP-0012-T03)
All checks were successful
ci / validate (push) Successful in 1m5s

Unverified bounded-proof profile for rein-aharness metered-once: bwrap-local
with empty egress, no credential routes, 900 s / 60k tokens, 30 turns and a
USD 5.00 native cap matching the accepted spend envelope. 1.0.0 stays
blocked; unpinned selection becomes ambiguous. 134 tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272244@bnt-lap001
Assistant-Session: c8962fa7-b290-47df-865f-403ddb6c77e9
This commit is contained in:
tegwick 2026-09-21 23:06:42 +02:00
parent f08ecc35e5
commit 462436b611
3 changed files with 69 additions and 6 deletions

View file

@ -0,0 +1,35 @@
id: harness.agent-dev-local
version: "1.1.0"
contract_version: "1.0"
status: enabled
operational_readiness:
status: unverified
reason: bounded GLAS-WP-0012-T04 proof candidate; no positive real-run evidence yet
owner: glas-harness
evidence_ref: GLAS-WP-0012-T03
rein:
id: rein-aharness
required_capabilities:
session_style: unattended
model_class: frontier
sandbox_profile: profile.bwrap-local
tool_profile: green-commit-only
model:
provider: anthropic
model: claude-sonnet-4-6
model_class: frontier
route: claude-code-cli
limits:
budget_tokens: 60000
timeout_seconds: 900
max_turns: 30
max_budget_usd: 5.0
credential_route_refs: []
metadata:
latency_class: fast
stream_tool_events: true
# Candidate for the metered one-cycle owner (rein-aharness metered-once).
# The provider key stays with MessagesOwner outside bwrap; the workload gets
# only an owner-socket route, so the sandbox keeps empty egress and no
# credential route refs. max_budget_usd matches the accepted spend envelope
# hfact-glas-anthropic-2026-09 (infd-20260921-b01). Rollback: pin 1.0.0.

View file

@ -67,18 +67,19 @@ def test_committed_catalog_resolves_both_constellations() -> None:
contexts = catalog.validate_all()
assert len(contexts) == 3
assert len(contexts) == 4
assert {context.rein_id for context in contexts} == {
"rein-aharness",
"rein-openweights",
}
assert {
(context.profile.id, context.operational_readiness.status)
(context.profile.id, context.profile.version, context.operational_readiness.status)
for context in contexts
} == {
("harness.agent-dev-local", "blocked"),
("harness.agent-dev-openweights-local", "blocked"),
("harness.agent-dev", "unverified"),
("harness.agent-dev-local", "1.0.0", "blocked"),
("harness.agent-dev-local", "1.1.0", "unverified"),
("harness.agent-dev-openweights-local", "1.0.0", "blocked"),
("harness.agent-dev", "1.0.0", "unverified"),
}
profile, descriptor = catalog.resolve(
"harness.agent-dev-openweights-local@1.0.0"
@ -98,6 +99,21 @@ def test_committed_catalog_resolves_both_constellations() -> None:
assert rein.budget_tokens == 60000
def test_metered_candidate_carries_native_limits_and_no_credential_route() -> None:
catalog = ProfileCatalog()
profile, _ = catalog.resolve("harness.agent-dev-local@1.1.0")
catalog.require_operational(profile)
assert profile.operational_readiness.status == "unverified"
assert profile.sandbox_profile == "profile.bwrap-local"
assert profile.credential_route_refs == []
assert profile.limits.max_turns == 30
assert profile.limits.max_budget_usd == 5.0
assert profile.limits.timeout_seconds == 900
assert profile.limits.budget_tokens == 60000
with pytest.raises(AmbiguousProfileError):
catalog.resolve("harness.agent-dev-local")
def test_ready_profile_requires_an_evidence_reference(tmp_path) -> None:
profiles = tmp_path / "profiles"
reins = tmp_path / "reins"

View file

@ -105,7 +105,7 @@ See docs/local-profile-acceptance.md.
```task
id: GLAS-WP-0012-T03
status: wait
status: progress
priority: high
state_hub_task_id: "c660808a-1724-555c-bc59-7318870d3591"
```
@ -126,6 +126,18 @@ Done when the exact candidate resolves, the real runtime starts through its
owner, the focused tests and full suite pass, and rollback to the blocked
`harness.agent-dev-local@1.0.0` pin is documented.
2026-09-21 candidate: `profiles/harness.agent-dev-local-1.1.0.yaml`, readiness
`unverified` (evidence_ref GLAS-WP-0012-T03), `profile.bwrap-local`, no
credential route refs, claude-sonnet-4-6, 900 s / 60,000 tokens, max_turns 30,
max_budget_usd 5.0. The provider key stays with rein-aharness MessagesOwner
outside bwrap (metered-once); the owner bootstrap's sandbox, model and
credential-route checks accept it. max_budget_usd matches the operator-accepted
spend envelope hfact-glas-anthropic-2026-09 (Informed Decision
infd-20260921-b01, approval ba5ce2d8). Unpinned selection is now ambiguous and
1.0.0 stays blocked; rollback is pinning 1.0.0. 134 tests pass. Remaining for
done: the rebuilt runtime artifact carrying this profile starts through its
owner on railiance01 (SECRETS-WP-0009-T03 step B2).
## Prove one real bounded rein task inside the sandbox
```task