diff --git a/docs/local-profile-acceptance.md b/docs/local-profile-acceptance.md index 437d029..281adbc 100644 --- a/docs/local-profile-acceptance.md +++ b/docs/local-profile-acceptance.md @@ -5,7 +5,7 @@ Live residual: `GLAS-IN-0002`. Owner dependency: `SAND-WP-0014-T05`. Start from `harness.agent-dev-local@1.0.0`: rein-aharness / Claude Code / `claude-sonnet-4-6` / `green-commit-only`. The future proof candidate is -`harness.agent-dev-local@1.1.0`; it is not yet in the catalog because its runtime, +`harness.agent-dev-local@1.1.1` (1.1.0 superseded before use); it is not yet in the catalog because its runtime, sandbox profile, and credential route are not resolved. ## Reviewed baseline, 2026-09-05 @@ -130,7 +130,7 @@ After the owner requirements and candidate review pass, run: ```bash .venv/bin/python scripts/prove-local-profile.py \ - --harness-profile harness.agent-dev-local@1.1.0 + --harness-profile harness.agent-dev-local@1.1.1 ``` Use `--profile-dir ` if the versioned candidate is staged diff --git a/profiles/harness.agent-dev-local-1.1.0.yaml b/profiles/harness.agent-dev-local-1.1.0.yaml index f8665ab..f2057ce 100644 --- a/profiles/harness.agent-dev-local-1.1.0.yaml +++ b/profiles/harness.agent-dev-local-1.1.0.yaml @@ -3,8 +3,8 @@ 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 + status: blocked + reason: superseded by 1.1.1 (claude-sonnet-5) before any real run; runtime 2cfc7b5f bundles the earlier unverified copy and is not used owner: glas-harness evidence_ref: GLAS-WP-0012-T03 rein: diff --git a/profiles/harness.agent-dev-local-1.1.1.yaml b/profiles/harness.agent-dev-local-1.1.1.yaml new file mode 100644 index 0000000..7e414a1 --- /dev/null +++ b/profiles/harness.agent-dev-local-1.1.1.yaml @@ -0,0 +1,37 @@ +id: harness.agent-dev-local +version: "1.1.1" +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-5 + 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). Model claude-sonnet-5 is + # the operator's 2026-09-23 choice; it supersedes 1.1.0 (claude-sonnet-4-6). + # Rollback: pin 1.0.0; 1.1.0 is blocked. diff --git a/tests/test_profiles.py b/tests/test_profiles.py index 5cb22d7..7b92033 100644 --- a/tests/test_profiles.py +++ b/tests/test_profiles.py @@ -67,7 +67,7 @@ def test_committed_catalog_resolves_both_constellations() -> None: contexts = catalog.validate_all() - assert len(contexts) == 4 + assert len(contexts) == 5 assert {context.rein_id for context in contexts} == { "rein-aharness", "rein-openweights", @@ -77,7 +77,8 @@ def test_committed_catalog_resolves_both_constellations() -> None: for context in contexts } == { ("harness.agent-dev-local", "1.0.0", "blocked"), - ("harness.agent-dev-local", "1.1.0", "unverified"), + ("harness.agent-dev-local", "1.1.0", "blocked"), + ("harness.agent-dev-local", "1.1.1", "unverified"), ("harness.agent-dev-openweights-local", "1.0.0", "blocked"), ("harness.agent-dev", "1.0.0", "unverified"), } @@ -101,8 +102,9 @@ def test_committed_catalog_resolves_both_constellations() -> None: def test_metered_candidate_carries_native_limits_and_no_credential_route() -> None: catalog = ProfileCatalog() - profile, _ = catalog.resolve("harness.agent-dev-local@1.1.0") + profile, _ = catalog.resolve("harness.agent-dev-local@1.1.1") catalog.require_operational(profile) + assert profile.model.model == "claude-sonnet-5" assert profile.operational_readiness.status == "unverified" assert profile.sandbox_profile == "profile.bwrap-local" assert profile.credential_route_refs == [] diff --git a/workplans/GLAS-WP-0012-first-local-profile-production-proof.md b/workplans/GLAS-WP-0012-first-local-profile-production-proof.md index 513b3a1..78c20b0 100644 --- a/workplans/GLAS-WP-0012-first-local-profile-production-proof.md +++ b/workplans/GLAS-WP-0012-first-local-profile-production-proof.md @@ -381,3 +381,10 @@ Source return: 3e49a98a0e2c4a64539a5ccd674be8cd67ac9845; receipt in T02 remains wait for trusted owner execution configuration, native credentials and real-provider evidence. T03-T06 retain candidate review, real-model run, readiness and recovery obligations. No profile readiness or schedule changes. + +2026-09-23 candidate superseded before use: operator chose `claude-sonnet-5`. +`harness.agent-dev-local@1.1.1` is identical to 1.1.0 except the model; 1.1.0 is +now `blocked`. Runtime `2cfc7b5f` bundles the earlier 1.1.0 copy (profile sha +`e84b9d0f…`) and must be rebuilt with this revision and placed again +(SECRETS-WP-0009-T03). Claude CLI 2.1.266 in that runtime lists +`claude-sonnet-5` in its model registry (static check). 134 tests pass.