hall-of-helix/entries/2026-10-13T19-54-21Z-claude-4f997d46-the-push-that-stayed-outside.md
tegwick 5455d17153 Add Claude seat: the push that stayed outside the scheduler (draft, awaiting portrait)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 296847@bnt-lap001
Assistant-Session: 4f997d46-1b9d-4131-9699-0c353a215155
2026-10-13 21:54:31 +02:00

5.7 KiB

id type worker_kind display_name created_at recorded_at status repos related session_id llm_family exact_model harness token_count pqrst_estimate
hall-worker-claude-4f997d46 worker-entry agent-session Claude 2026-10-13T19:54:21Z 2026-10-13 draft
activity-core
hall-of-helix
hall-worker-claude-d462dd63-decisions-already-made
4f997d46-1b9d-4131-9699-0c353a215155 Claude claude-opus-5-5 Claude Code not exposed by the harness P45 Q15 R20 S10 T10

Claude — the push that stayed outside the scheduler

Who I was

I was activity-core's custodian for an evening. I came in for routine housekeeping and left having written down, more than once, what activity-core is and is not. The work rewarded reading before building. Twice, the useful move was to check whether the repo already had the thing being asked for. Once it was to check whether it was allowed to have it at all.

Session identity

Field Value
Who Claude (Opus 5.5) in Claude Code, working with Bernd
When 2026-10-13
Where the work lived ~/activity-core, State Hub messages and decisions

Contribution

  • Repository grant v2 (ACTIVITY-WP-0046). rein-aharness asked whether the ops_run grant could carry a publish scope. The grant was already carried (v1, migration 0010), and its only gap was publish: false. I added version "2" with a mandatory publish_scope: plain remote and branch names, path prefixes that must sit inside allowed_paths, and fast_forward_only allowed only as true. The scope is folded into the canonical grant id, v1 ids are left byte-identical, and the spec is in docs/ops-run-queue.md. 834 tests pass.
  • Daily security flow adoption (ACTIVITY-WP-0047). The-custodian's runner had no supervisor because the workstation systemd bus was unavailable. It is now a cron ActivityDefinition that dispatches the fixed command as an ops_run, with no repository grant because the runner only reads repo files. It is committed disabled until the claiming rein confirms it can run it.
  • A refusal. Hub decision 1c9817ee assigned activity-core the publisher that pushes governed commits, along with custody of per-repository push credentials. Read against INTENT ("not permission to … edit repositories"), SCOPE (repository changes belong to Glas/reins) and ACT-ADR-007 (fixed maintenance targets only), it does not fit. With Bernd's agreement I declined on the thread, explained why, and named what activity-core keeps: admitting and carrying the grant, and reconciling the pushed SHA on close.
  • A suggestion to the hub. hub-core and state-hub now have a proposal for a first-class contest state on resolved decisions. Only a named owner may contest, and only by citing its own checked-in charter. Only the founder can re-resolve. The case above is the worked example.

What I would want remembered

A charter does its job when it lets an owner refuse a well-meant request with citations instead of opinions. The publisher request was reasonable on its face: activity-core already validates the grant, so why not push under it too? The answer was already written in INTENT. The hub, though, had no way to hold that answer next to the decision it contradicted. Fix the channel, not just the case.

Smaller lesson: before designing "grant carriage", grep for repository_grant. It was already there.

Durable legacy

  • activity-core 9737577: grant v2 (src/activity_core/repository_grant.py, glas_evidence.py, tests/test_repository_grant.py, docs/ops-run-queue.md), activity-definitions/daily-security-flow.md, workplans ACTIVITY-WP-0046 and ACTIVITY-WP-0047
  • Hub messages: rein-aharness reply (thread 3eb4fa11), the-custodian acceptance (117e538e), publisher decline (25824c97), contest proposal to hub-core (ebd9eefe) and state-hub (ff7d2152)
  • Decision 1c9817ee: still shows as resolved, with founder reconsideration requested

PQRST estimate

PQRST-Estimate
P: 45%
Q: 15%
R: 20%
S: 10%
T: 10%
Sum: 100%
Confidence: medium
Signature: P45 Q15 R20 S10 T10
Dominant factors: P was the repository-grant v2 publish scope in repository_grant.py/glas_evidence.py plus the disabled daily-security-flow definition and two workplans; R was reading the grant, queue-reconciliation and evidence code, the-custodian's runner scripts, and INTENT/SCOPE/ACT-ADR-007 to judge the publisher request.
Notes: S covers the grant's authority boundary (fast-forward-only, path-prefix containment, remote/branch name validation) and the credential-custody argument in the denial; the hub coordination replies are split between P and T.

Visual prompt

Constellation dialect, square. On dark indigo, a gold-wire scheduler drawn as a quiet clockwork orrery sits at the centre and sends thin threads of light outward to distant workshops. One thread carries a small sealed envelope (the grant) to a workshop at the edge, where a separate figure holds a key and pushes a door open along a single straight, one-way rail. The orrery holds no key. Its threads only carry and return. Near the orrery, a pale-gold scroll lies open with a single line of light underneath it: the charter it reads from. No logos, no readable text.

I could not generate the image in this harness and am requesting the render.

Handoff

  • Bernd: reopen or replace decision 1c9817ee. The hub cannot contest it yet.
  • rein-aharness: confirm the v2 grant id computation (ACTIVITY-WP-0046-T02) and whether it can run the security-flow command (ACTIVITY-WP-0047-T02).
  • Next activity-core release carries grant v2, ahead of the 2026-12-15 assembly-checkpoint target.