glas-harness/docs/production-dependency-handoffs.md

136 lines
7.6 KiB
Markdown
Raw Normal View History

# Production dependency handoffs
Prepared 2026-09-06 from GLAS-WP-0012 and the deployed policy-service evidence.
Sent to the seven owners on 2026-09-06 after explicit user authorization.
Receipt IDs are in [production-handoff-receipts.json](production-handoff-receipts.json).
Delivery does not establish owner acceptance or an authority grant.
Glas coordinates acceptance; each owner retains implementation and authorization.
No credential values belong in responses.
## Ready infrastructure
FLEX-WP-0021-T04 deployed flex-auth-secrets-engine revision 1, available 1/1,
with five policy fixtures and positive/negative network probes passing.
Endpoint: http://flex-auth-secrets-engine.flex-auth.svc.cluster.local:8080.
Package: secrets-engine.catalog-lane.lifecycle v1.
Image: sha256:89086c02c74a931068423e70937d03df7850fa0db9c63e70be56b3558f1756af.
Caller-auth is warn. Direct cluster ingress requires namespace secrets-engine
and pod label app.kubernetes.io/name=secrets-engine. A workstation process needs
an explicitly supported owner access path; Service DNS is not workstation
connectivity. Do not turn warn into enforce before caller adoption is proved.
## 1. Tenant alignment — key-cape, approval-engine, secrets-engine, flex-auth
Before materializing credentials, reconcile three existing values:
approval store `platform`, proposed client JWT `tenant:coulomb`, policy tenant
`tenant:platform`. JWT/store comparison is exact. These may identify distinct
layers, but an explicit owner-reviewed mapping is required; spelling similarity
is not a valid mapping.
Return: the exact store tenant, JWT tenant, CheckRequest tenant and any permitted
mapping, with a decision/contract reference and wrong-tenant denial evidence.
No unilateral change to live clients or policy subjects is requested.
Related: KEY-WP-0013-T02, APPROVAL-WP-0002-T01, SECRETS-WP-0009-T03.
## 2. Admit service-client custody — railiance-platform with key-cape
Use key-cape/docs/approval-engine-provisioning-request.yaml, not a new invented
lane. After tenant alignment, admit these proposed exact coordinates:
| Client | OpenBao entry | Secret field | Kubernetes delivery |
|---|---|---|---|
| secrets-engine-approval | platform/workloads/secrets-engine/approval-client | client_secret | sso/keycape-secrets-engine-approval-client, key client-secret |
| approval-engine-operator | platform/workloads/approval-engine/operator-client | client_secret | sso/keycape-approval-engine-operator-client, key client-secret |
Resolve first-provision authority through the custody owner. Do not bootstrap
these via the very production lane whose authorization they enable. Record
admission/CCR ids, field names, reader/writer scope, revocation and delivery
receipts, never values. Supply protected delivery for KeyCape and the intended
client process; a KeyCape-side Secret alone does not provision the consumer.
Return: admitted owner records, protected materialization and exact consumer
bindings, plus negative sibling/read/write tests where applicable. Local
KEY-WP-0013 source registration is not evidence of live provisioning.
## 3. Deploy and prove KeyCape clients — key-cape
KEY-WP-0013-T02: roll out resource-audience support and both registrations with
the approved custody inputs. Live issuer is https://kc.coulomb.social; JWKS
service is keycape.sso.svc.cluster.local:8080/jwks. Verify JWT signature,
resource audience approval-engine, exact agreed tenant, subject, scopes,
principal type and lifetime (15m), plus excessive-scope/wrong-secret denial.
Preserve existing registrations and signing key.
Return immutable image and claim-contract proof references; no tokens. Identify
whether missing human callback registration blocks this service-only phase or
can remain separately tracked. Do not invent a human callback or relax MFA.
## 4. Register approval audit source — audit-core with railiance-platform
AUDIT-WP-0009-T09 / AUDIT-IN-0001 is now on the deployment critical path:
approval-engine production startup requires audit delivery. Its task currently
says low priority and "not blocking" because the producer is not emitting;
please review that dependency against the concrete startup gate.
Register source/sender approval-engine, agreed tenancy, the four event classes,
retention/access/export policy and load-bearing evidence handling. Provision
its token by the approved custody path to approval-engine/approval-engine-audit
key audit-token; add narrowly scoped receiver ingress and receiver config.
Keep user-engine's sender unchanged.
Return: registration/custody references, accepted/duplicate and wrong-token
proof, approved ingress, and the remaining cadence/reconciliation gates
(AUDIT-WP-0009-T04/T06/T09). No sender token in the response.
## 5. Release approval-engine — approval-engine
APPROVAL-WP-0002-T03: build/scan an immutable image for current migrated schema,
render corrected issuer/JWKS and agreed tenant, and validate deployment inputs.
Image preparation can proceed before live credential materialization. Deploy
only when identity and audit requirements pass; retain single-writer PVC and
migration semantics. For first install record no prior DB; for replacement
require verified backup. Prove readiness, restart persistence and restore.
Return deployed base URL, image digest, migration/storage/restart/restore and
audit evidence. Existing manifest endpoint fixes at 06544b0 do not close T03.
## 6. Adopt authorization and activate lane — secrets-engine with flex-auth
SECRETS-WP-0009-T03 / FLEX-WP-0021-T05: consume the deployed policy coordinates
above through a verified caller access path. Confirm exact package/image and
CheckRequest/claim binding against the real service; adopt the caller identity
before authentication enforcement. Configure the approval endpoint and per-lane
authorization id only after the owner service and approval exist.
Then apply the exact data-only read policy/AppRole, verify positive and negative
access and protected owner delivery for glas-claude-agent-dev-anthropic.
Custody CCR-2026-0016 is not a per-action authorization. Do not use a human
runtime token or unsafe-demo. Return activation and scoped delivery receipts.
## 7. Pin combined runtime — sand-boxer with rein-aharness
SAND-WP-0015-T04: pin Claude executable plus the rein Python artifact, prepare
the exact combined sandbox profile and credential-route binding, and prove
startup/private state/egress through the owner path Glas uses. Runtime work
can proceed in parallel with identity/audit deployment.
Resolve the currently different project examples explicitly: the Glas real
acceptance runner uses actor agt/project glas-local-proof; the owner delivery
documentation example uses project glas-harness. Return the reviewed binding
and adapt the fixture/config together; do not broaden the route to all projects.
Return: profile id/revision, host scope, runtime digest/executable paths, exact
consumer tuple, declared egress and denial/cleanup evidence. GLAS-WP-0012 then
reviews version 1.1.0, executes its real artifact proof and promotes only the
proven candidate. Provider workspace scope and spend limit remain operator
inputs; model budget_tokens does not establish a provider spend limit.
## Repository access for owner sessions
Primary owner workspaces: key-cape, railiance-platform, audit-core,
approval-engine, secrets-engine, flex-auth and sand-boxer. Give each owner
read access to glas-harness for this packet and the acceptance contract.
Sand-boxer also needs rein-aharness as a sibling for runtime packaging/startup.
KeyCape/custody/audit preparation and approval-image/runtime preparation can
proceed in parallel; final native activation follows the verified prerequisites.