These files carried no type field at all. Selection is by 'type: workplan', so
they were invisible to every projection while the hub held a record for each —
and a forge-derived reset read those correct records as no longer deriving and
queued them for retirement.
Only the type line is added.
Refs STATE-WP-0083-T05
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
Identifiers predating the PREFIX-WP-NNNN convention were rejected by the canon
registry, so none of this repository's work records could be registered.
One prefix per repository (ADR-007). Existing conforming identifiers keep their
numbers where possible; the pre-convention records take the next free numbers
rather than renumbering work that was already correct.
Projection UUIDs are re-derived from the new canonical ids (ADR-007 decision 2).
Nothing was registered on central under the old identifiers, so no hub record is
orphaned by this.
Refs CUST-WP-0068-T03
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
Records absent from central carried random pre-ADR-007 identifiers minted by
the retired local hub, which C-06 refused as stale references. Deriving from
the canonical record id takes no identity from anything.
Refs CUST-WP-0068-T06
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
The remote row pointed at 127.0.0.1:18000, a reverse tunnel back to the
workstation. On railiance01 the State Hub runs in the cluster on that same
machine, so the request left the box and came back to reach a local service.
Refs CUST-WP-0067-T07
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
Maintainer decision, 2026-07-29: adopts TRSL V1C1 as this repo's
preliminary governing license, per target-revenue's
workplans/TREV-WP-0008-governance-and-pilot-rollout.md T05. Full
specialist legal review is deferred until out of beta (target-revenue
SCOPE.md §1). No Phase is yet declared for this repo.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ops-mason built the real AppRole/policy/KV path infrastructure, the
founder completed provisioning, and a real task ran through
rein-openweights with OPENROUTER_API_KEY explicitly unset -- real
AppRole login, real KV v2 read, real OpenRouter call, real commit. Full
build record (including two real bugs found and fixed along the way)
in ops-mason/plans/rein-openweights-openrouter-approle.md.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
channels/base.py: GatewayInvocation dataclass + Channel ABC
(parse_invocation/render_result), mirroring Rein one layer up -- a
channel turns an external invocation into what run_task_through_rein
needs, and turns its result back into whatever the invocation medium
expects.
channels/cli_channel.py: CLIChannel, a pure refactor of what cli.py did
inline -- argparse Namespace -> GatewayInvocation, result dict ->
json.dumps(..., indent=2). cli.py's run handler is now a thin
construct-parse-invoke-render wrapper.
docs/channel-contract.md documents the pattern and sketches (without
building) a second channel.
Found and fixed a real bug while live-testing this refactor:
ReinAharness's default cli_bin was still "agent-harness", stale from
before HARNESS-WP-0002-T02's rename.
4 new tests (27/27 passing), plus a real live run through
python3 -m glas_harness.cli against rein-aharness/real Claude Code
confirming identical output shape and a real commit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
GLAS-WP-0002 is now fully done (4/4): formalize the CLI as the first
Channel extension (contract + refactor + tests + second-channel
documentation), not building a second channel yet -- same
generalize-from-a-real-second-example discipline as ADR-002/ADR-004.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Checked ADR-002 part 2's deferred question against the two observability
additions that landed since (rein-aharness's tool-event stream,
glas-harness's own gateway hub event) -- both turned out simpler as
direct implementations, neither needed a wrapping middleware layer.
Still zero real candidates for that shape. docs/harness-contract.md
gains the Middleware ABC as a documented, unimplemented sketch for if a
real third case ever appears -- no code written now.
Also flagged GLAS-WP-0002-T02 (live OpenBao verification) as blocked:
`bao token lookup` from this workstation returns 403, no usable vault
session to provision a new AppRole with. Needs the operator.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
hub.py mirrors the two reins' hub.py under author: agt-glas-harness.
run_task_through_rein gains report_to_hub (default True), posting one
gateway_run progress event from a finally block -- fires on both
success and failure, giving the gateway an audit trail independent of
whatever the rein itself reports. cli.py gained a matching --no-hub
flag.
Live-verified: ran a real task through ReinOpenWeights with hub
reporting enabled, confirmed the gateway_run event landed with correct
detail and a real commit sha. 4 new tests, 23/23 passing.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bundles the four items surfaced while closing out GLAS-WP-0001/
HARNESS-WP-0002/SAND-WP-0013/REIN-OW-WP-0001: composable-reins-as-
middleware design (ADR-002 part 2), live-verifying rein-openweights'
OpenBao path, wiring the gateway's own State Hub reporting, and scoping
a first slice of glas-harness's remaining charter pillars. None were
blocking; all are worth doing.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Refined the auto-generated SCOPE.md/AGENTS.md from generic templates
to real repo specifics, added a Developer Workflow section with
actual install/test/run commands. Real workplan (GLAS-WP-0001) was
already seeded and done.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>