Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a02b6f-7db1-7222-918b-e813a6bda38d
126 lines
5.1 KiB
Markdown
126 lines
5.1 KiB
Markdown
---
|
|
id: REIN-A-0004
|
|
type: workplan
|
|
title: "Profile-driven ops-run execution through Glas"
|
|
domain: infotech
|
|
repo: rein-aharness
|
|
status: blocked
|
|
owner: codex
|
|
topic_slug: rein-aharness
|
|
priority: high
|
|
created: "2026-08-22"
|
|
updated: "2026-08-22"
|
|
related:
|
|
- ACTIVITY-WP-0032
|
|
- ACT-ADR-006
|
|
state_hub_workstream_id: "443bf39c-11e1-5db8-9d91-7b852aeefdb6"
|
|
---
|
|
|
|
# REIN-A-0004 — Profile-driven ops-run execution through Glas
|
|
|
|
## Origin
|
|
|
|
Activity Core handoff `4ed3422a-b42c-4408-843c-f63c3e86cf3e` reports that
|
|
the claim consumer currently drops `harness_profile_ref` and `execution_refs`.
|
|
A profiled row would consequently enter the legacy `select_approach` path and
|
|
could execute a different constellation than the producer authorized.
|
|
|
|
The related handoff `69710949-9726-4fd0-aef3-1c7075870410` reports that
|
|
llm-connect provider errors lose their safe structured status at this boundary,
|
|
making a provider 401 look like an undifferentiated 502 transport failure.
|
|
|
|
## Carry the profile selector and attribution references
|
|
|
|
```task
|
|
id: REIN-A-0004-T01
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "32501497-16b7-567f-9925-215e1784bc2a"
|
|
```
|
|
|
|
Extend `OpsRun.from_api` with `harness_profile_ref` and the allowlisted
|
|
`execution_refs`. Preserve the queued selector verbatim for the authoritative
|
|
Glas resolver; do not translate it into an approach hint.
|
|
|
|
**Done 2026-08-22:** both fields are normalized onto `OpsRun` and covered by
|
|
the API projection test.
|
|
|
|
## Route profiled rows through the Glas gateway
|
|
|
|
```task
|
|
id: REIN-A-0004-T02
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "ead932ef-f8c9-5cd5-8268-c96048f82718"
|
|
```
|
|
|
|
For a row with a profile, resolve its target checkout, build the Glas
|
|
`ExecutionRequest`, and invoke `run_execution` before any sandbox is created by
|
|
this consumer. Complete or fail the ops run with the full `GatewayResult`.
|
|
Profile refusal and gateway failure are terminal and never fall back to
|
|
`select_approach`. Profile-absent rows retain the legacy coexistence path.
|
|
|
|
**Done 2026-08-22:** `glas_execution.py` resolves the queued checkout, maps the
|
|
complete contract 1.0 request (including attribution refs), and invokes Glas
|
|
through lazy runtime imports. The claim loop branches on profile presence
|
|
before legacy selection and sends the full `GatewayResult` to Activity Core.
|
|
Its own returned detail retains only `ExecutionEvidence`. Tests prove success,
|
|
terminal refusal, no legacy fallback, and profile-aware queue inspection. A
|
|
real sibling-package probe of `harness.unknown@9.9.9` returned
|
|
`refused/resolution` with no sandbox id.
|
|
|
|
## Preserve safe llm-connect provider failure context
|
|
|
|
```task
|
|
id: REIN-A-0004-T03
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "b0af0efc-689e-586f-a0e2-78df411c7834"
|
|
```
|
|
|
|
On an HTTP error, retain only llm-connect's allowlisted `error`,
|
|
`provider_status`, `provider`, and `model` fields plus a bounded message. Never
|
|
copy the raw provider response or credential material into an ops-run result.
|
|
|
|
**Done 2026-08-22:** HTTP errors retain exactly the four safe diagnostic fields
|
|
plus a 400-character message. Tests cover the upstream 401 hidden behind 502,
|
|
redaction-by-allowlist, bounding, and unusable bodies.
|
|
|
|
## Deploy and coordinate one production proof
|
|
|
|
```task
|
|
id: REIN-A-0004-T04
|
|
status: wait
|
|
priority: high
|
|
state_hub_task_id: "b19a4dab-d6d7-537a-8c8f-77217f0d9069"
|
|
```
|
|
|
|
Install the Glas and sand-boxer sibling packages into the railiance01 claim
|
|
worker environment, deploy the source-tested consumer, and coordinate one
|
|
low-risk profiled definition with Activity Core. Evidence must show the queued
|
|
profile, resolved rein/model/sandbox/outcome, and teardown/commit facts.
|
|
|
|
**Progress 2026-08-22:** source verification is green (96 tests, compilation,
|
|
and diff checks). Packaging exposes the local Glas/sand-boxer extra and the
|
|
deployment rsync now excludes `.venv`, preventing workstation-bound shebangs
|
|
from overwriting the live worker environment. railiance01 is healthy on the
|
|
legacy worker but still needs the Glas checkout/package install, deployment,
|
|
restart, and coordinated pilot.
|
|
|
|
Deployment then exposed a pre-existing upstream database mismatch: the live
|
|
Activity Core image selects `ops_runs.harness_profile_ref`, but production
|
|
PostgreSQL has not applied migration `0008`, so every claim returns 500. The
|
|
worker's prior error path retried that failure every two seconds; it now uses
|
|
the configured 30-second backoff for claim errors and reserves the short pause
|
|
for cycles that actually claimed work. Activity Core must apply/verify its
|
|
migration before the coordinated pilot can run.
|
|
|
|
**Live deployment evidence:** railiance01 runs consumer `db58801`,
|
|
glas-harness `ae2a706`, and sand-boxer `20258de`; the user service is active,
|
|
the packaged profile catalog validates all three profiles, and the remote
|
|
unknown-profile probe refused before sandbox creation. Journal timestamps
|
|
`21:59:13`, `21:59:43`, and `22:00:13` UTC prove the corrected 30-second error
|
|
backoff. Activity Core handoff `413a4041-cfb3-4d02-a41a-1d92b3de06af`
|
|
contains the production traceback and requests migration application before a
|
|
pilot is scheduled. T04 waits only on that upstream repair and the coordinated
|
|
low-risk proof.
|