From 97cde1740dfc31f2226b95d825b2a471a5529f0b Mon Sep 17 00:00:00 2001 From: tegwick Date: Sun, 27 Sep 2026 20:34:53 +0200 Subject: [PATCH] Preserve accepted budget renewal candidate and native action bindings Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0e387-534d-70e3-ad53-4ea05676db8c --- .../README.md | 29 + .../activation-review.json | 690 +++++++ .../activity-core-metered-worker-token.yaml | 63 + .../glas-claude-agent-dev-anthropic.yaml | 104 + .../native-pdp-inputs.json | 1726 +++++++++++++++++ .../owner.json | 28 + .../spend-policy.json | 23 + 7 files changed, 2663 insertions(+) create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/README.md create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/activation-review.json create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/catalog/activity-core-metered-worker-token.yaml create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/catalog/glas-claude-agent-dev-anthropic.yaml create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/native-pdp-inputs.json create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/owner.json create mode 100644 docs/proposals/glas-metered-tool-renewal-20260927/spend-policy.json diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/README.md b/docs/proposals/glas-metered-tool-renewal-20260927/README.md new file mode 100644 index 0000000..dd620b7 --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/README.md @@ -0,0 +1,29 @@ +# Replacement-window metered proof candidate + +Existing work: REINAH-WP-0003-T05/T06, SECRETS-WP-0009-T03. +One EUR 10 attempt; no extra attempt, retry or publication. Not installed. + +The original memo infd-20260927-b01 was accepted and its native submission +confirmed at 2026-09-27T18:05:35Z, after its 17:35Z execution deadline. Preserve +that signed record. No dispatch was made under it. Its candidate remains evidence. + +Replacement memo: infd-20260927-b02. +Requested native ID: 1e73e514-ef74-4bff-83e7-fa88a3eaba0c. +Window: 2026-09-27T18:20:00Z through 2026-09-28T18:20:00Z. +Human acceptance and native submission were confirmed at 2026-09-27T18:22:57Z. +The separate acceptance receipt is retained by informed-decision; this candidate +alone is not a runtime authorization or credential consume receipt. +User confirmed from the billing account in this session that USD 10, including +applicable tax/conversion fees, fits EUR 10. Recheck tariff validity at execution. + +Offline review passes with two full USD 4.64 holds. native-pdp-inputs.json holds +six exact requests and live evaluator bindings collected through the named +Kubernetes-authenticated policy forward. Its temporary caller token was shredded. +These are not approval entries or consume receipts. Fresh authorization and +Clock admission remain required at the actual side effect. + +No host policy or ledger changed. Preserve old ledgers, reconcile all liabilities, +and retire old dispatch before replacing pins. CCR-2026-0025 is still limited to +three older requests: this six-request set needs explicit owner mandate before +using the requester credential. Provider human review and companion ordinary +approval remain separate per-action gates. No new task or workplan is opened. diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/activation-review.json b/docs/proposals/glas-metered-tool-renewal-20260927/activation-review.json new file mode 100644 index 0000000..780e130 --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/activation-review.json @@ -0,0 +1,690 @@ +{ + "schema": "metered-activation-review/v1", + "status": "review-only", + "dispatch_enabled": false, + "owner_digest": "310600eab467ed79fc3851178a065de12d57d3ada5bcf68d9c364ed11b3ee50f", + "policy_review": { + "passed": true, + "failures": [], + "maximum_request_microusd": 4640000, + "maximum_request_eur_at_configured_fx": "4.64", + "full_output_requests_that_fit": 2, + "provider_facts_ref": "https://platform.claude.com/docs/en/models/sonnet-5/whats-new-sonnet-5", + "authority_granted": false, + "remaining_acceptance": [ + "FX upper bound and validity", + "live CLI/beta compatibility", + "native delivery and runtime admission" + ] + }, + "plans": [ + { + "catalog_id": "glas-claude-agent-dev-anthropic", + "stage": "prod", + "decision_id": "", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "actions": [ + { + "kind": "kv-mount-check", + "target": "platform", + "detail": { + "type": "kv-v2", + "management": "existing", + "mutation": "none" + } + }, + { + "kind": "policy", + "target": "se-prod-glas-claude-agent-dev-anthropic", + "detail": { + "paths": "platform/data/workloads/glas-harness/claude-agent-dev" + } + }, + { + "kind": "approle", + "target": "se-prod-glas-claude-agent-dev-anthropic", + "detail": { + "token_policies": "se-prod-glas-claude-agent-dev-anthropic", + "auth": "approle", + "token_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "secret_id_ttl": "5m", + "secret_id_num_uses": 1 + } + } + ], + "policy_hcl": "# Generated by secrets-engine for policy \"se-prod-glas-claude-agent-dev-anthropic\"\n\npath \"platform/data/workloads/glas-harness/claude-agent-dev\" {\n capabilities = [\"read\"]\n}\n" + }, + { + "catalog_id": "activity-core-metered-worker-token", + "stage": "prod", + "decision_id": "", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "actions": [ + { + "kind": "kv-mount-check", + "target": "platform", + "detail": { + "type": "kv-v2", + "management": "existing", + "mutation": "none" + } + }, + { + "kind": "policy", + "target": "se-prod-activity-core-metered-worker-token", + "detail": { + "paths": "platform/data/workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01" + } + }, + { + "kind": "approle", + "target": "se-prod-activity-core-metered-worker-token", + "detail": { + "token_policies": "se-prod-activity-core-metered-worker-token", + "auth": "approle", + "token_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "secret_id_ttl": "5m", + "secret_id_num_uses": 1 + } + } + ], + "policy_hcl": "# Generated by secrets-engine for policy \"se-prod-activity-core-metered-worker-token\"\n\npath \"platform/data/workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01\" {\n capabilities = [\"read\"]\n}\n" + } + ], + "actions": [ + { + "catalog": "glas-claude-agent-dev-anthropic", + "action": "apply", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "apply", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ] + } + }, + "context": { + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "sand-boxer", + "mount": "platform", + "path": "workloads/glas-harness/claude-agent-dev", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "sand-boxer-glas-agent-dev", + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_modes": [ + "exec-env", + "read-check" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "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-tool-proof-renewal-20260927.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": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db", + "private": true + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2", + "private": true + } + }, + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "field": "token", + "env": "ACTIVITY_CORE_WORKER_TOKEN" + } + ] + } + }, + "auth_capability": {}, + "workload_delivery": [] + }, + "human_control": true + } + } + }, + { + "catalog": "glas-claude-agent-dev-anthropic", + "action": "verify", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "verify", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ] + } + }, + "context": { + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "sand-boxer", + "mount": "platform", + "path": "workloads/glas-harness/claude-agent-dev", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "sand-boxer-glas-agent-dev", + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_modes": [ + "exec-env", + "read-check" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "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-tool-proof-renewal-20260927.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": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db", + "private": true + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2", + "private": true + } + }, + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "field": "token", + "env": "ACTIVITY_CORE_WORKER_TOKEN" + } + ] + } + }, + "auth_capability": {}, + "workload_delivery": [] + }, + "human_control": true + } + } + }, + { + "catalog": "glas-claude-agent-dev-anthropic", + "action": "exec", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "exec", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ] + } + }, + "context": { + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "sand-boxer", + "mount": "platform", + "path": "workloads/glas-harness/claude-agent-dev", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "sand-boxer-glas-agent-dev", + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_modes": [ + "exec-env", + "read-check" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "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-tool-proof-renewal-20260927.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": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db", + "private": true + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2", + "private": true + } + }, + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "field": "token", + "env": "ACTIVITY_CORE_WORKER_TOKEN" + } + ] + } + }, + "auth_capability": {}, + "workload_delivery": [] + }, + "human_control": true, + "exec_owner_sha256": "310600eab467ed79fc3851178a065de12d57d3ada5bcf68d9c364ed11b3ee50f" + } + } + }, + { + "catalog": "activity-core-metered-worker-token", + "action": "apply", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "apply", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ] + } + }, + "context": { + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "activity-core", + "mount": "platform", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "fields": [ + "token" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "rein-aharness-metered-railiance01", + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_modes": [ + "exec-env" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "auth_capability": {}, + "workload_delivery": [] + } + } + } + }, + { + "catalog": "activity-core-metered-worker-token", + "action": "verify", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "verify", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ] + } + }, + "context": { + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "activity-core", + "mount": "platform", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "fields": [ + "token" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "rein-aharness-metered-railiance01", + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_modes": [ + "exec-env" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "auth_capability": {}, + "workload_delivery": [] + } + } + } + }, + { + "catalog": "activity-core-metered-worker-token", + "action": "exec", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "exec", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ] + } + }, + "context": { + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "activity-core", + "mount": "platform", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "fields": [ + "token" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "rein-aharness-metered-railiance01", + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_modes": [ + "exec-env" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "auth_capability": {}, + "workload_delivery": [] + } + } + } + } + ], + "native_evaluator_digests": "not obtained; local hashes are not evaluator digests", + "approval_ids": [], + "host_pins_verified": false +} diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/catalog/activity-core-metered-worker-token.yaml b/docs/proposals/glas-metered-tool-renewal-20260927/catalog/activity-core-metered-worker-token.yaml new file mode 100644 index 0000000..74a011e --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/catalog/activity-core-metered-worker-token.yaml @@ -0,0 +1,63 @@ +id: activity-core-metered-worker-token +kind: kv +org: coulomb +repo: activity-core +stage: prod +description: Activity Core queue token for rein-aharness-metered@railiance01, + delivered only as a companion of the Glas metered owner. Custody and issuance + are activity-core's (ACTIVITY-WP-0039); secrets-engine only reads. +mount: platform +path: workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01 +mount_management: existing +fields: +- token +consumers: +- name: rein-aharness-metered-railiance01 + auth: approle + claim: catalog:activity-core-metered-worker-token + purpose: Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 + inside the catalog-bound Glas metered owner +workload_delivery: [] +delivery_config: + companion_of: + - glas-claude-agent-dev-anthropic +delivery_modes: +- exec-env +delivery_auth: + method: approle + management: engine + policy_name: se-prod-activity-core-metered-worker-token + role_name: se-prod-activity-core-metered-worker-token + metadata_read: false + token_ttl: 5m + token_max_ttl: 15m + secret_id_ttl: 5m + secret_id_num_uses: 1 + token_num_uses: 8 +approval: + model: decision + decision_ref: ACTIVITY-WP-0039 + notes: Ordinary lane approval, no human control (operator decision 2026-09-23, + SECRETS-WP-0011). Native apply and exec still need per-lane claim, PDP decision + and consume. This entry is not authorization. +verification: + positive: Exact scoped AppRole reads only token, delivered as ACTIVITY_CORE_WORKER_TOKEN + into the bound Glas metered owner. + negative: The claim-loop worker path, sibling KV, metadata, listing and writes denied; + the Glas lane AppRole cannot read this path. +risk: + classification: standard + notes: Lets the holder claim, heartbeat and close ops_runs as the metered identity + only. No provider spend by itself. +rotation: + owner: activity-core + expectation: Mint a new value at the same path via ACTIVITY-WP-0039 procedure; ESO + resyncs actcore-runtime-secret; next exec reads the new value. + ttl: owner-defined +deactivation: + owner: activity-core + expectation: Remove the identity from ACTIVITY_CORE_WORKERS and the path; revoke + the se-prod AppRole and policy. +audit: + evidence: Lane id, companion primary, actor, exact path, field name, timestamps, + and pass/fail only diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/catalog/glas-claude-agent-dev-anthropic.yaml b/docs/proposals/glas-metered-tool-renewal-20260927/catalog/glas-claude-agent-dev-anthropic.yaml new file mode 100644 index 0000000..de1a592 --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/catalog/glas-claude-agent-dev-anthropic.yaml @@ -0,0 +1,104 @@ +id: glas-claude-agent-dev-anthropic +kind: kv +org: coulomb +repo: sand-boxer +stage: prod +description: Catalog-bound metered owner with Activity Core worker-token companion. + The 2026-09-27 corrected owner pin requires reviewed host installation; the old + 200k/32k owner is not admitted by this catalog. Native activation remains SECRETS-WP-0009-T03. +mount: platform +path: workloads/glas-harness/claude-agent-dev +mount_management: existing +fields: +- ANTHROPIC_API_KEY +consumers: +- name: sand-boxer-glas-agent-dev + auth: approle + claim: catalog:glas-claude-agent-dev-anthropic + purpose: Owner-admitted glas-harness agt run through the reviewed local profile; + no caller-facing key fetch +workload_delivery: [] +delivery_config: + 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-tool-proof-renewal-20260927.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: fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db + private: true + /home/tegwick/hfact/owner-metered/spend-policy.json: + sha256: 69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2 + private: true + companions: + - catalog: activity-core-metered-worker-token + field: token + env: ACTIVITY_CORE_WORKER_TOKEN +delivery_modes: +- exec-env +- read-check +delivery_auth: + method: approle + management: engine + policy_name: se-prod-glas-claude-agent-dev-anthropic + role_name: se-prod-glas-claude-agent-dev-anthropic + metadata_read: false + token_ttl: 5m + token_max_ttl: 15m + secret_id_ttl: 5m + secret_id_num_uses: 1 + token_num_uses: 8 +approval: + model: ccr + human_control: true + decision_ref: CCR-2026-0016 + notes: Custody only has been completed. Native apply and exec require durable exact-action + authorization, engine consume, scoped backend authority and verified delivery + state. This entry is not authorization. +verification: + positive: Exact scoped AppRole reads only ANTHROPIC_API_KEY into the approved child; + owner binding and redaction pass. + negative: Wrong owner profile/project/actor, direct caller fetch, sibling KV, metadata, + listing and writes denied. +risk: + classification: high + notes: API spend; provider expiry 2027-01-31T21:00:00Z is not enforced by Bao token + TTL. Workspace scope and budget unverified. +rotation: + owner: railiance-platform + sand-boxer + expectation: Provider replacement, versioned CAS custody, stop old runs, verify + replacement then revoke predecessor at Anthropic and prove denial. + ttl: provider-defined +deactivation: + owner: railiance-platform + sand-boxer + expectation: Disable lane, stop affected runs, revoke Bao sessions and provider + key. Preserve custody history. +audit: + evidence: CCR id, actor, exact path, field name, provider key identifier if non-secret, + timestamps, and pass/fail only diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/native-pdp-inputs.json b/docs/proposals/glas-metered-tool-renewal-20260927/native-pdp-inputs.json new file mode 100644 index 0000000..8955d59 --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/native-pdp-inputs.json @@ -0,0 +1,1726 @@ +[ + { + "catalog": "glas-claude-agent-dev-anthropic", + "action": "apply", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "apply", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ] + } + }, + "context": { + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "sand-boxer", + "mount": "platform", + "path": "workloads/glas-harness/claude-agent-dev", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "sand-boxer-glas-agent-dev", + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_modes": [ + "exec-env", + "read-check" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "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-tool-proof-renewal-20260927.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": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db", + "private": true + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2", + "private": true + } + }, + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "field": "token", + "env": "ACTIVITY_CORE_WORKER_TOKEN" + } + ] + } + }, + "auth_capability": {}, + "workload_delivery": [] + }, + "human_control": true + } + }, + "decision": { + "id": "decision:055a4c72507e3216", + "contract_version": "flex-auth.decision-record.v1", + "effect": "allow", + "reason": "catalog_lane_policy_matched", + "matched_policy_version": "v2", + "matched_rule": "catalog_lane_policy_matched", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "fields": [], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "stage": "prod" + } + }, + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "binding": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "action": "apply", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "fields": [], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "stage": "prod" + } + }, + "context": { + "catalog_target": { + "auth_capability": {}, + "consumers": [ + { + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "name": "sand-boxer-glas-agent-dev", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_auth": { + "management": "engine", + "metadata_read": false, + "method": "approle", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "secret_id_num_uses": 1, + "secret_id_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "token_ttl": "5m" + }, + "delivery_config": { + "exec_owner": { + "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" + ], + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "env": "ACTIVITY_CORE_WORKER_TOKEN", + "field": "token" + } + ], + "cwd": "/home/tegwick/hfact/owner-metered", + "environment": { + "ACTIVITY_CORE_URL": "http://127.0.0.1:8010", + "AGENT_HARNESS_EXECUTION_PROJECT": "prj-helixforge-factory", + "AGENT_HARNESS_OPS_LABELS": "hfact-metered", + "AGENT_HARNESS_OPS_LABELS_MODE": "all", + "AGENT_HARNESS_REPO_MAP": "{\"hfact-glas-proof\":\"/home/tegwick/hfact/targets/hfact-glas-proof\"}", + "AGENT_HARNESS_REQUIRE_REQUEST_ADMISSION": "1", + "AGENT_HARNESS_REQUIRE_SPEND_ADMISSION": "1", + "AGENT_HARNESS_SPEND_LEDGER": "/home/tegwick/hfact/owner-metered/spend-tool-proof-renewal-20260927.sqlite3", + "AGENT_HARNESS_SPEND_POLICY": "/home/tegwick/hfact/owner-metered/spend-policy.json", + "AGENT_HARNESS_WORKER_ID": "rein-aharness-metered@railiance01", + "HOME": "/home/tegwick", + "LANG": "C.UTF-8", + "PATH": "/usr/bin:/bin" + }, + "files": { + "/home/tegwick/.helixforge-factory/runtimes/b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969/bin/python3": { + "private": false, + "sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f" + }, + "/home/tegwick/hfact/owner-metered/owner.json": { + "private": true, + "sha256": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db" + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "private": true, + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2" + } + }, + "owner": "rein-aharness MessagesOwner (metered-once) with sand-boxer runtime boundary", + "status": "configured" + } + }, + "delivery_modes": [ + "exec-env", + "read-check" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "kind": "kv", + "mount": "platform", + "mount_management": "existing", + "org": "coulomb", + "path": "workloads/glas-harness/claude-agent-dev", + "repo": "sand-boxer", + "workload_delivery": [] + }, + "human_control": true, + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + }, + "request_digest": "sha256:ad563454ecebe247b34e7b7dd3c06dd851d686624a00f782636a688b1f9069b9", + "submitted_request_digest": "sha256:eefcc2d73f974573d4913434b52cceac68161142935a4d59f9ae9dcf9ca4ccd7" + }, + "lifetime": { + "kind": "ttl", + "ttl": "15m", + "not_before": "2026-09-27T18:23:01Z", + "expires_at": "2026-09-27T18:38:01Z" + }, + "diagnostics": { + "action": "apply", + "matched_relationship": "", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_status": "ready", + "registry_overrode": [], + "registry_resource": false, + "registry_subject": true + }, + "provenance": { + "evaluator": "flex-auth/local", + "mode": "standalone", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_version": "v2", + "policy_package_digest": "sha256:bd11c5fe77ce6439c65fea225ad6b71d2110efc5e7b5bc9b499c59cd0a53b8b4", + "registry_snapshot_digest": "sha256:f5a309bc0b36721fd6d9ad7f53eb21222162bc2eac62a0ab0802a9a1d51340bb", + "input_claim_digests": { + "context": "sha256:973a545e0a06a3b672a0d430268e9308e59e8b7d29b955d28294cc36f3b22955" + }, + "decision_time": "2026-09-27T18:23:01Z" + }, + "caring": { + "profile": "caring-0.4.0-rc2", + "conformance_findings": [ + { + "code": "CARING-DESCRIPTOR-MISSING", + "severity": "warning", + "message": "no CARING descriptor matched the request", + "fields": [ + "caring_context" + ] + } + ] + } + } + }, + { + "catalog": "glas-claude-agent-dev-anthropic", + "action": "verify", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "verify", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ] + } + }, + "context": { + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "sand-boxer", + "mount": "platform", + "path": "workloads/glas-harness/claude-agent-dev", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "sand-boxer-glas-agent-dev", + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_modes": [ + "exec-env", + "read-check" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "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-tool-proof-renewal-20260927.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": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db", + "private": true + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2", + "private": true + } + }, + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "field": "token", + "env": "ACTIVITY_CORE_WORKER_TOKEN" + } + ] + } + }, + "auth_capability": {}, + "workload_delivery": [] + }, + "human_control": true + } + }, + "decision": { + "id": "decision:28e6bd06c550fb5f", + "contract_version": "flex-auth.decision-record.v1", + "effect": "allow", + "reason": "catalog_lane_policy_matched", + "matched_policy_version": "v2", + "matched_rule": "catalog_lane_policy_matched", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "stage": "prod" + } + }, + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "binding": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "action": "verify", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "stage": "prod" + } + }, + "context": { + "catalog_target": { + "auth_capability": {}, + "consumers": [ + { + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "name": "sand-boxer-glas-agent-dev", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_auth": { + "management": "engine", + "metadata_read": false, + "method": "approle", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "secret_id_num_uses": 1, + "secret_id_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "token_ttl": "5m" + }, + "delivery_config": { + "exec_owner": { + "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" + ], + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "env": "ACTIVITY_CORE_WORKER_TOKEN", + "field": "token" + } + ], + "cwd": "/home/tegwick/hfact/owner-metered", + "environment": { + "ACTIVITY_CORE_URL": "http://127.0.0.1:8010", + "AGENT_HARNESS_EXECUTION_PROJECT": "prj-helixforge-factory", + "AGENT_HARNESS_OPS_LABELS": "hfact-metered", + "AGENT_HARNESS_OPS_LABELS_MODE": "all", + "AGENT_HARNESS_REPO_MAP": "{\"hfact-glas-proof\":\"/home/tegwick/hfact/targets/hfact-glas-proof\"}", + "AGENT_HARNESS_REQUIRE_REQUEST_ADMISSION": "1", + "AGENT_HARNESS_REQUIRE_SPEND_ADMISSION": "1", + "AGENT_HARNESS_SPEND_LEDGER": "/home/tegwick/hfact/owner-metered/spend-tool-proof-renewal-20260927.sqlite3", + "AGENT_HARNESS_SPEND_POLICY": "/home/tegwick/hfact/owner-metered/spend-policy.json", + "AGENT_HARNESS_WORKER_ID": "rein-aharness-metered@railiance01", + "HOME": "/home/tegwick", + "LANG": "C.UTF-8", + "PATH": "/usr/bin:/bin" + }, + "files": { + "/home/tegwick/.helixforge-factory/runtimes/b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969/bin/python3": { + "private": false, + "sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f" + }, + "/home/tegwick/hfact/owner-metered/owner.json": { + "private": true, + "sha256": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db" + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "private": true, + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2" + } + }, + "owner": "rein-aharness MessagesOwner (metered-once) with sand-boxer runtime boundary", + "status": "configured" + } + }, + "delivery_modes": [ + "exec-env", + "read-check" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "kind": "kv", + "mount": "platform", + "mount_management": "existing", + "org": "coulomb", + "path": "workloads/glas-harness/claude-agent-dev", + "repo": "sand-boxer", + "workload_delivery": [] + }, + "human_control": true, + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + }, + "request_digest": "sha256:0e45d156c8a2b31789fa6f9431c260ee411d8546c3aeaf50d3ac56d5c4b39139", + "submitted_request_digest": "sha256:6f4ba6f895c418cf7d251f58b3113d569c138b4a0f5c763a5535f9019088b381" + }, + "lifetime": { + "kind": "ttl", + "ttl": "15m", + "not_before": "2026-09-27T18:23:01Z", + "expires_at": "2026-09-27T18:38:01Z" + }, + "diagnostics": { + "action": "verify", + "matched_relationship": "", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_status": "ready", + "registry_overrode": [], + "registry_resource": false, + "registry_subject": true + }, + "provenance": { + "evaluator": "flex-auth/local", + "mode": "standalone", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_version": "v2", + "policy_package_digest": "sha256:bd11c5fe77ce6439c65fea225ad6b71d2110efc5e7b5bc9b499c59cd0a53b8b4", + "registry_snapshot_digest": "sha256:f5a309bc0b36721fd6d9ad7f53eb21222162bc2eac62a0ab0802a9a1d51340bb", + "input_claim_digests": { + "context": "sha256:973a545e0a06a3b672a0d430268e9308e59e8b7d29b955d28294cc36f3b22955" + }, + "decision_time": "2026-09-27T18:23:01Z" + }, + "caring": { + "profile": "caring-0.4.0-rc2", + "conformance_findings": [ + { + "code": "CARING-DESCRIPTOR-MISSING", + "severity": "warning", + "message": "no CARING descriptor matched the request", + "fields": [ + "caring_context" + ] + } + ] + } + } + }, + { + "catalog": "glas-claude-agent-dev-anthropic", + "action": "exec", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "exec", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ] + } + }, + "context": { + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "sand-boxer", + "mount": "platform", + "path": "workloads/glas-harness/claude-agent-dev", + "fields": [ + "ANTHROPIC_API_KEY" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "sand-boxer-glas-agent-dev", + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_modes": [ + "exec-env", + "read-check" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "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-tool-proof-renewal-20260927.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": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db", + "private": true + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2", + "private": true + } + }, + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "field": "token", + "env": "ACTIVITY_CORE_WORKER_TOKEN" + } + ] + } + }, + "auth_capability": {}, + "workload_delivery": [] + }, + "human_control": true, + "exec_owner_sha256": "310600eab467ed79fc3851178a065de12d57d3ada5bcf68d9c364ed11b3ee50f" + } + }, + "decision": { + "id": "decision:a108596dd31cc3d3", + "contract_version": "flex-auth.decision-record.v1", + "effect": "allow", + "reason": "catalog_lane_policy_matched", + "matched_policy_version": "v2", + "matched_rule": "catalog_lane_policy_matched", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "stage": "prod" + } + }, + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "binding": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "action": "exec", + "resource": { + "id": "catalog:glas-claude-agent-dev-anthropic", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "policy_targets": [ + "se-prod-glas-claude-agent-dev-anthropic" + ], + "stage": "prod" + } + }, + "context": { + "catalog_target": { + "auth_capability": {}, + "consumers": [ + { + "auth": "approle", + "claim": "catalog:glas-claude-agent-dev-anthropic", + "name": "sand-boxer-glas-agent-dev", + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + } + ], + "delivery_auth": { + "management": "engine", + "metadata_read": false, + "method": "approle", + "policy_name": "se-prod-glas-claude-agent-dev-anthropic", + "role_name": "se-prod-glas-claude-agent-dev-anthropic", + "secret_id_num_uses": 1, + "secret_id_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "token_ttl": "5m" + }, + "delivery_config": { + "exec_owner": { + "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" + ], + "companions": [ + { + "catalog": "activity-core-metered-worker-token", + "env": "ACTIVITY_CORE_WORKER_TOKEN", + "field": "token" + } + ], + "cwd": "/home/tegwick/hfact/owner-metered", + "environment": { + "ACTIVITY_CORE_URL": "http://127.0.0.1:8010", + "AGENT_HARNESS_EXECUTION_PROJECT": "prj-helixforge-factory", + "AGENT_HARNESS_OPS_LABELS": "hfact-metered", + "AGENT_HARNESS_OPS_LABELS_MODE": "all", + "AGENT_HARNESS_REPO_MAP": "{\"hfact-glas-proof\":\"/home/tegwick/hfact/targets/hfact-glas-proof\"}", + "AGENT_HARNESS_REQUIRE_REQUEST_ADMISSION": "1", + "AGENT_HARNESS_REQUIRE_SPEND_ADMISSION": "1", + "AGENT_HARNESS_SPEND_LEDGER": "/home/tegwick/hfact/owner-metered/spend-tool-proof-renewal-20260927.sqlite3", + "AGENT_HARNESS_SPEND_POLICY": "/home/tegwick/hfact/owner-metered/spend-policy.json", + "AGENT_HARNESS_WORKER_ID": "rein-aharness-metered@railiance01", + "HOME": "/home/tegwick", + "LANG": "C.UTF-8", + "PATH": "/usr/bin:/bin" + }, + "files": { + "/home/tegwick/.helixforge-factory/runtimes/b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969/bin/python3": { + "private": false, + "sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f" + }, + "/home/tegwick/hfact/owner-metered/owner.json": { + "private": true, + "sha256": "fed3f80fb451b742bf306e89b6800a742db5cf75d1a6e2ed5556ee204597b9db" + }, + "/home/tegwick/hfact/owner-metered/spend-policy.json": { + "private": true, + "sha256": "69ea0071d2cc4311895b1df16039438f7bbc9f6dd3c797af05d4bc845d7afde2" + } + }, + "owner": "rein-aharness MessagesOwner (metered-once) with sand-boxer runtime boundary", + "status": "configured" + } + }, + "delivery_modes": [ + "exec-env", + "read-check" + ], + "fields": [ + "ANTHROPIC_API_KEY" + ], + "kind": "kv", + "mount": "platform", + "mount_management": "existing", + "org": "coulomb", + "path": "workloads/glas-harness/claude-agent-dev", + "repo": "sand-boxer", + "workload_delivery": [] + }, + "exec_owner_sha256": "310600eab467ed79fc3851178a065de12d57d3ada5bcf68d9c364ed11b3ee50f", + "human_control": true, + "purpose": "Owner-admitted glas-harness agt run through the reviewed local profile; no caller-facing key fetch" + }, + "request_digest": "sha256:62686f744536db70a48e17f416be6c32203c48d7d1bb3dbda85afb3f0e3ea0f3", + "submitted_request_digest": "sha256:e4eaa26cdd6687a543d88492bbb3b1b9f8ef2c1f1490d19c1e8e718ef0f30d8e" + }, + "lifetime": { + "kind": "ttl", + "ttl": "15m", + "not_before": "2026-09-27T18:23:01Z", + "expires_at": "2026-09-27T18:38:01Z" + }, + "diagnostics": { + "action": "exec", + "matched_relationship": "", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_status": "ready", + "registry_overrode": [], + "registry_resource": false, + "registry_subject": true + }, + "provenance": { + "evaluator": "flex-auth/local", + "mode": "standalone", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_version": "v2", + "policy_package_digest": "sha256:bd11c5fe77ce6439c65fea225ad6b71d2110efc5e7b5bc9b499c59cd0a53b8b4", + "registry_snapshot_digest": "sha256:f5a309bc0b36721fd6d9ad7f53eb21222162bc2eac62a0ab0802a9a1d51340bb", + "input_claim_digests": { + "context": "sha256:087cf05d952a3297d1eb146679841ff2b37b9c48dd0f79caa907285dbe96d160" + }, + "decision_time": "2026-09-27T18:23:01Z" + }, + "caring": { + "profile": "caring-0.4.0-rc2", + "conformance_findings": [ + { + "code": "CARING-DESCRIPTOR-MISSING", + "severity": "warning", + "message": "no CARING descriptor matched the request", + "fields": [ + "caring_context" + ] + } + ] + } + } + }, + { + "catalog": "activity-core-metered-worker-token", + "action": "apply", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "apply", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ] + } + }, + "context": { + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "activity-core", + "mount": "platform", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "fields": [ + "token" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "rein-aharness-metered-railiance01", + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_modes": [ + "exec-env" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "auth_capability": {}, + "workload_delivery": [] + } + } + }, + "decision": { + "id": "decision:3b17db5cbd13621d", + "contract_version": "flex-auth.decision-record.v1", + "effect": "allow", + "reason": "catalog_lane_policy_matched", + "matched_policy_version": "v2", + "matched_rule": "catalog_lane_policy_matched", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "fields": [], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "stage": "prod" + } + }, + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "binding": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "action": "apply", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "fields": [], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "stage": "prod" + } + }, + "context": { + "catalog_target": { + "auth_capability": {}, + "consumers": [ + { + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "name": "rein-aharness-metered-railiance01", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_auth": { + "management": "engine", + "metadata_read": false, + "method": "approle", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "secret_id_num_uses": 1, + "secret_id_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "token_ttl": "5m" + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "delivery_modes": [ + "exec-env" + ], + "fields": [ + "token" + ], + "kind": "kv", + "mount": "platform", + "mount_management": "existing", + "org": "coulomb", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "repo": "activity-core", + "workload_delivery": [] + }, + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + }, + "request_digest": "sha256:f8cffb9005b5d267d14ec1a216a785716ad3d611422c94ab52d6d66d3b259d95", + "submitted_request_digest": "sha256:95138b47056338596a689788c61f0f537011a11c5cab38c94c8e2c04f4d68dec" + }, + "lifetime": { + "kind": "ttl", + "ttl": "15m", + "not_before": "2026-09-27T18:23:01Z", + "expires_at": "2026-09-27T18:38:01Z" + }, + "diagnostics": { + "action": "apply", + "matched_relationship": "", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_status": "ready", + "registry_overrode": [], + "registry_resource": false, + "registry_subject": true + }, + "provenance": { + "evaluator": "flex-auth/local", + "mode": "standalone", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_version": "v2", + "policy_package_digest": "sha256:bd11c5fe77ce6439c65fea225ad6b71d2110efc5e7b5bc9b499c59cd0a53b8b4", + "registry_snapshot_digest": "sha256:f5a309bc0b36721fd6d9ad7f53eb21222162bc2eac62a0ab0802a9a1d51340bb", + "input_claim_digests": { + "context": "sha256:ca775aea253f9f67f99b5729cf6068cf2d81908ceb00fc11e73149e59c616df8" + }, + "decision_time": "2026-09-27T18:23:01Z" + }, + "caring": { + "profile": "caring-0.4.0-rc2", + "conformance_findings": [ + { + "code": "CARING-DESCRIPTOR-MISSING", + "severity": "warning", + "message": "no CARING descriptor matched the request", + "fields": [ + "caring_context" + ] + } + ] + } + } + }, + { + "catalog": "activity-core-metered-worker-token", + "action": "verify", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "verify", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ] + } + }, + "context": { + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "activity-core", + "mount": "platform", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "fields": [ + "token" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "rein-aharness-metered-railiance01", + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_modes": [ + "exec-env" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "auth_capability": {}, + "workload_delivery": [] + } + } + }, + "decision": { + "id": "decision:abc00a7202c11ae9", + "contract_version": "flex-auth.decision-record.v1", + "effect": "allow", + "reason": "catalog_lane_policy_matched", + "matched_policy_version": "v2", + "matched_rule": "catalog_lane_policy_matched", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "stage": "prod" + } + }, + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "binding": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "action": "verify", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "stage": "prod" + } + }, + "context": { + "catalog_target": { + "auth_capability": {}, + "consumers": [ + { + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "name": "rein-aharness-metered-railiance01", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_auth": { + "management": "engine", + "metadata_read": false, + "method": "approle", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "secret_id_num_uses": 1, + "secret_id_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "token_ttl": "5m" + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "delivery_modes": [ + "exec-env" + ], + "fields": [ + "token" + ], + "kind": "kv", + "mount": "platform", + "mount_management": "existing", + "org": "coulomb", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "repo": "activity-core", + "workload_delivery": [] + }, + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + }, + "request_digest": "sha256:d53ce35084b40ccf92f2e0062185d721ba726323f5b6324ba5884d4fbe2c23c4", + "submitted_request_digest": "sha256:4554023dfb52dee7a9af5aa5164b2edb5d885d07d1e01bd3a8f95a3b5087658a" + }, + "lifetime": { + "kind": "ttl", + "ttl": "15m", + "not_before": "2026-09-27T18:23:01Z", + "expires_at": "2026-09-27T18:38:01Z" + }, + "diagnostics": { + "action": "verify", + "matched_relationship": "", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_status": "ready", + "registry_overrode": [], + "registry_resource": false, + "registry_subject": true + }, + "provenance": { + "evaluator": "flex-auth/local", + "mode": "standalone", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_version": "v2", + "policy_package_digest": "sha256:bd11c5fe77ce6439c65fea225ad6b71d2110efc5e7b5bc9b499c59cd0a53b8b4", + "registry_snapshot_digest": "sha256:f5a309bc0b36721fd6d9ad7f53eb21222162bc2eac62a0ab0802a9a1d51340bb", + "input_claim_digests": { + "context": "sha256:ca775aea253f9f67f99b5729cf6068cf2d81908ceb00fc11e73149e59c616df8" + }, + "decision_time": "2026-09-27T18:23:01Z" + }, + "caring": { + "profile": "caring-0.4.0-rc2", + "conformance_findings": [ + { + "code": "CARING-DESCRIPTOR-MISSING", + "severity": "warning", + "message": "no CARING descriptor matched the request", + "fields": [ + "caring_context" + ] + } + ] + } + } + }, + { + "catalog": "activity-core-metered-worker-token", + "action": "exec", + "request": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service" + }, + "action": "exec", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "attributes": { + "stage": "prod", + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ] + } + }, + "context": { + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner", + "catalog_target": { + "kind": "kv", + "org": "coulomb", + "repo": "activity-core", + "mount": "platform", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "fields": [ + "token" + ], + "mount_management": "existing", + "consumers": [ + { + "name": "rein-aharness-metered-railiance01", + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_modes": [ + "exec-env" + ], + "delivery_auth": { + "method": "approle", + "management": "engine", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "metadata_read": false, + "token_ttl": "5m", + "token_max_ttl": "15m", + "secret_id_ttl": "5m", + "secret_id_num_uses": 1, + "token_num_uses": 8 + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "auth_capability": {}, + "workload_delivery": [] + } + } + }, + "decision": { + "id": "decision:38405f0256bfacdc", + "contract_version": "flex-auth.decision-record.v1", + "effect": "allow", + "reason": "catalog_lane_policy_matched", + "matched_policy_version": "v2", + "matched_rule": "catalog_lane_policy_matched", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "stage": "prod" + } + }, + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "binding": { + "tenant": "tenant:platform", + "subject": { + "id": "secrets-engine", + "type": "service", + "tenant": "tenant:platform", + "attributes": { + "description": "secrets-engine's own service identity, the single calling identity for the twelve gated catalog-lane actions it sends to POST /v1/check. Because it is the only subject, the package has no action_not_granted branch (FLEX-WP-0021-T02); registering a second identity is the revisit trigger.", + "display_name": "secrets-engine service principal", + "groups": [ + "group:secrets-engine-lane-operators" + ], + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ] + } + }, + "action": "exec", + "resource": { + "id": "catalog:activity-core-metered-worker-token", + "type": "secret-catalog-lane", + "system": "secrets-engine", + "tenant": "tenant:platform", + "attributes": { + "auth_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "fields": [ + "token" + ], + "policy_targets": [ + "se-prod-activity-core-metered-worker-token" + ], + "stage": "prod" + } + }, + "context": { + "catalog_target": { + "auth_capability": {}, + "consumers": [ + { + "auth": "approle", + "claim": "catalog:activity-core-metered-worker-token", + "name": "rein-aharness-metered-railiance01", + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + } + ], + "delivery_auth": { + "management": "engine", + "metadata_read": false, + "method": "approle", + "policy_name": "se-prod-activity-core-metered-worker-token", + "role_name": "se-prod-activity-core-metered-worker-token", + "secret_id_num_uses": 1, + "secret_id_ttl": "5m", + "token_max_ttl": "15m", + "token_num_uses": 8, + "token_ttl": "5m" + }, + "delivery_config": { + "companion_of": [ + "glas-claude-agent-dev-anthropic" + ] + }, + "delivery_modes": [ + "exec-env" + ], + "fields": [ + "token" + ], + "kind": "kv", + "mount": "platform", + "mount_management": "existing", + "org": "coulomb", + "path": "workloads/activity-core/ops-run-workers/rein-aharness-metered-railiance01", + "repo": "activity-core", + "workload_delivery": [] + }, + "purpose": "Claim the admitted hfact-metered ops_run as rein-aharness-metered@railiance01 inside the catalog-bound Glas metered owner" + }, + "request_digest": "sha256:93b12e31b0323a21ae310fced3add0b887658e64530f2e4bc65130ebbd6d9a3d", + "submitted_request_digest": "sha256:ad628079debc7e46937b58e68cf6784802e2865e039b98aa25d77fb40be3ed36" + }, + "lifetime": { + "kind": "ttl", + "ttl": "15m", + "not_before": "2026-09-27T18:23:02Z", + "expires_at": "2026-09-27T18:38:02Z" + }, + "diagnostics": { + "action": "exec", + "matched_relationship": "", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_status": "ready", + "registry_overrode": [], + "registry_resource": false, + "registry_subject": true + }, + "provenance": { + "evaluator": "flex-auth/local", + "mode": "standalone", + "policy_package": "secrets-engine.catalog-lane.lifecycle", + "policy_version": "v2", + "policy_package_digest": "sha256:bd11c5fe77ce6439c65fea225ad6b71d2110efc5e7b5bc9b499c59cd0a53b8b4", + "registry_snapshot_digest": "sha256:f5a309bc0b36721fd6d9ad7f53eb21222162bc2eac62a0ab0802a9a1d51340bb", + "input_claim_digests": { + "context": "sha256:ca775aea253f9f67f99b5729cf6068cf2d81908ceb00fc11e73149e59c616df8" + }, + "decision_time": "2026-09-27T18:23:02Z" + }, + "caring": { + "profile": "caring-0.4.0-rc2", + "conformance_findings": [ + { + "code": "CARING-DESCRIPTOR-MISSING", + "severity": "warning", + "message": "no CARING descriptor matched the request", + "fields": [ + "caring_context" + ] + } + ] + } + } + } +] diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/owner.json b/docs/proposals/glas-metered-tool-renewal-20260927/owner.json new file mode 100644 index 0000000..95c9f73 --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/owner.json @@ -0,0 +1,28 @@ +{ + "version": "1", + "authority_ref": "approval-engine:1e73e514-ef74-4bff-83e7-fa88a3eaba0c", + "spend_policy_sha256": "21dc71988f56450d03f03829f1b5dd7cb58b60c7e0b7a0b71a6d1c42de99872c", + "messages_policy": { + "tariff_ref": "anthropic-list-2026-09-27:claude-sonnet-5:global-standard:input-bound-1h-cache-write", + "model": "claude-sonnet-5", + "context_tokens": 1000000, + "max_output_tokens": 64000, + "input_microusd_per_token": 4, + "output_microusd_per_token": 10, + "allowed_betas": [ + "claude-code-20250219", + "interleaved-thinking-2025-05-14", + "thinking-token-count-2026-05-13", + "context-management-2025-06-27", + "prompt-caching-scope-2026-01-05", + "mid-conversation-system-2026-04-07", + "effort-2025-11-24" + ], + "max_body_bytes": 2000000, + "timeout_seconds": 120 + }, + "runtime": { + "path": "/home/tegwick/.helixforge-factory/runtimes/b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969", + "sha256": "b6e4e8a429393d68831c996a65c0489664205df969ac9882e581983ec2da4969" + } +} diff --git a/docs/proposals/glas-metered-tool-renewal-20260927/spend-policy.json b/docs/proposals/glas-metered-tool-renewal-20260927/spend-policy.json new file mode 100644 index 0000000..637b6a1 --- /dev/null +++ b/docs/proposals/glas-metered-tool-renewal-20260927/spend-policy.json @@ -0,0 +1,23 @@ +{ + "version": "1", + "envelope_id": "hfact-glas-tool-proof-20260927-renewed-one-attempt", + "authority_ref": "approval-engine:1e73e514-ef74-4bff-83e7-fa88a3eaba0c", + "valid_from": "2026-09-27T18:20:00Z", + "expires_at": "2026-09-28T18:20:00Z", + "timezone": "Europe/Berlin", + "worker_id": "rein-aharness-metered@railiance01", + "activity_definition_id": "5bae5505-77f1-5ba3-8dfa-2e10ed15531e", + "target_repo": "/home/tegwick/hfact/targets/hfact-glas-proof", + "project": "prj-helixforge-factory", + "profile_ref": "harness.agent-dev-local@1.1.1", + "profile_sha256": "10e423fe256d3a1b3a64b9380ce422dd9e3eba3a432ae35ac28680562683ca65", + "descriptor_sha256": "4f151744d8fcc18a58e4b571a6bff32c8688028841c225da3de41d49b29a3a9b", + "repository_grant_id": "656911f7dff83e871434b415f0cee685", + "max_budget_usd": "5.00", + "max_liability_usd": "10.00", + "max_turns": 30, + "eur_per_usd": "1.00", + "per_run_eur": "10", + "daily_eur": "20", + "total_eur": "500" +}