diff --git a/docs/drafts/glas-exec-owner-configured.yaml b/docs/drafts/glas-exec-owner-configured.yaml new file mode 100644 index 0000000..2de3b41 --- /dev/null +++ b/docs/drafts/glas-exec-owner-configured.yaml @@ -0,0 +1,41 @@ +# Draft exec_owner for glas-claude-agent-dev-anthropic (SECRETS-WP-0009-T03). +# Not in the catalog: it replaces the pending binding only after +# activity-core-metered-worker-token is seeded and ACTIVITY-WP-0039 is live. +exec_owner: + status: configured + owner: rein-aharness MessagesOwner (metered-once) with sand-boxer runtime boundary + command: + - /home/tegwick/.helixforge-factory/runtimes/b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969/bin/python3 + - -I + - -B + - -m + - rein_aharness.cli + - metered-once + - --owner-config + - /home/tegwick/hfact/owner-metered/owner.json + cwd: /home/tegwick/hfact/owner-metered + environment: + PATH: /usr/bin:/bin + LANG: C.UTF-8 + HOME: /home/tegwick + ACTIVITY_CORE_URL: http://127.0.0.1:8010 + AGENT_HARNESS_WORKER_ID: rein-aharness-metered@railiance01 + AGENT_HARNESS_OPS_LABELS: hfact-metered + AGENT_HARNESS_OPS_LABELS_MODE: all + AGENT_HARNESS_EXECUTION_PROJECT: prj-helixforge-factory + AGENT_HARNESS_REQUIRE_SPEND_ADMISSION: "1" + AGENT_HARNESS_REQUIRE_REQUEST_ADMISSION: "1" + AGENT_HARNESS_SPEND_POLICY: /home/tegwick/hfact/owner-metered/spend-policy.json + AGENT_HARNESS_SPEND_LEDGER: /home/tegwick/hfact/owner-metered/spend.sqlite3 + AGENT_HARNESS_REPO_MAP: '{"hfact-glas-proof":"/home/tegwick/hfact/targets/hfact-glas-proof"}' + files: + /home/tegwick/.helixforge-factory/runtimes/b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969/bin/python3: + sha256: e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f + private: false + /home/tegwick/hfact/owner-metered/owner.json: + sha256: 0e263f8299a42f63caf3595ff3eb7adc10354673f7b5125e0811def3bea7c274 + private: true + companions: + - catalog: activity-core-metered-worker-token + field: token + env: ACTIVITY_CORE_WORKER_TOKEN diff --git a/workplans/SECRETS-WP-0009-glas-claude-native-delivery.md b/workplans/SECRETS-WP-0009-glas-claude-native-delivery.md index 64bb306..1944bf6 100644 --- a/workplans/SECRETS-WP-0009-glas-claude-native-delivery.md +++ b/workplans/SECRETS-WP-0009-glas-claude-native-delivery.md @@ -467,3 +467,20 @@ approval URLs must be literal loopback or HTTPS (`decision_check.py:73`, `approval_auth.py:90`), so the attended session needs host-side `kubectl port-forward` to 127.0.0.1 for both. That is a session step, not a standing change. + +### 2026-09-23 metered owner provisioned; exec_owner drafted + +Operator provisioned `~/hfact/owner-metered` on railiance01: spend policy +`a8ab3729…`, owner config `0e263f82…`, valid from 2026-09-23T16:36:52Z. The +owner `--check` passes under `rein-aharness-metered@railiance01` with runtime +`b6e4e8a4`. No key, no claim, dispatch disabled. + +The configured binding is drafted in `docs/drafts/glas-exec-owner-configured.yaml`. +It pins the runtime python and the owner config, uses cwd `~/hfact/owner-metered`, +a fixed non-secret environment, and the companion +`activity-core-metered-worker-token` → `ACTIVITY_CORE_WORKER_TOKEN`. It validates +with the catalog code, and the real pin and path-safety checks pass on +railiance01 (owner digest `00b5f076…`). The catalog stays `pending` until +ACTIVITY-WP-0039 seeds the metered token and rolls out. `ACTIVITY_CORE_URL` +assumes the host `actcore-api-port-forward` service on 127.0.0.1:8010; check +that it answers before the attended session.