Commit graph

514 commits

Author SHA1 Message Date
aade470f4a C-32: fix-consistency registration for intake/decision work records (CUST-WP-0061-T02)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Extends fix-consistency to scan any file for kind: intake / kind: decision
YAML blocks (not just workplans/, per canon: any file is a potential
work-record source), create the corresponding hub entity when missing a
state_hub_intake_id / state_hub_decision_id, and write the id back into
the source block -- same write-back pattern as C-06 for workplans.
kind: engagement is reported INFO (deferred, not fixable): no hub entity
exists for it yet, a separate stage-3 follow-on.

- _load_work_record_kind_registry(): kind-aware registry loader, factored
  out so C-31's existing flat _load_work_record_patterns() builds on it
  without duplication (verified: C-31's 16 tests still pass unmodified)
- _check_work_record_registration(): detection, wired into check_repo
  right after C-31
- _inject_yaml_block_field(): write-back helper for  fenced
  blocks, mirroring _inject_task_id_into_block's pattern for
  blocks
- fix_repo C-32 dispatch: creates the intake (scoped to repo_id) or
  decision (scoped to resolved topic_id, reusing C-06's domain->topic
  resolution) via the REST API, then writes the id back
- tests/test_work_record_registration.py: 15 tests (classification,
  detection incl. engagement-deferred and workplan-kind-exclusion,
  injection incl. idempotence and non-interference with sibling blocks)

Live-verified end to end against a real registered repo (binky-control,
not just synthetic fixtures): a real fix-consistency run found and
registered 3 genuinely open, previously-unlinked intake items
(AWQ-002/003/006) sitting in AutopilotWorkQueue.md, and correctly
deferred 5 real OH- engagement items as INFO. No regressions: full
consistency_check + consistency_sweep suite (128 tests) and C-31's own
suite (16 tests) still green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 00:48:10 +02:00
88ba666c95 CUST-WP-0061-T01: intake work-record entity (stage 3)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 1m23s
Fresh hub entity per the founder-reviewed decision (not a suggestions
rename-bridge): kind: intake per canon/standards/work-record-types_v0.1.md,
lifecycle open -> vetted -> routed -> closed(promoted|declined|absorbed).

- api/models/base.py::new_uuid7 -- dependency-free RFC 9562 UUIDv7
  generator (48-bit ms timestamp, version/variant bits, random remainder);
  existing tables keep new_uuid (UUIDv4) unchanged, this is opt-in for new
  work-record entities per the identity-layering canon
- api/models/intake.py: Intake + IntakeNote ORM models, mirroring
  Decision's shape (topic/workplan/repo scope, lane, status, outcome,
  promoted_to back-link); CHECK constraints enforce scope-required,
  closed-requires-outcome, promoted-requires-promoted_to at the DB level
- migrations/a7c3e9f1b4d2: intakes + intake_notes tables, 3 enum types
- api/routers/intake.py: list/create/get/patch + /route + /close + /notes
  actions, mirroring decisions.py's pattern (409 on invalid transitions,
  progress event on close)
- api/schemas/intake.py: Pydantic create/update/route/close/note schemas
- mcp_server/server.py: create_intake, list_intakes, route_intake,
  close_intake tool wrappers
- tests/test_intake.py: 12 tests against the real Postgres test DB
  (create/list/scope-validation, full lifecycle incl. 409s and the
  promoted-requires-promoted_to constraint, notes, UUIDv7 verification)

Verified live against the running dev API + DB (not just pytest): applied
the migration, restarted the MCP server, and ran a full create -> route ->
close cycle over the real REST endpoints. No regressions: full existing
suite (test_routers_core, test_suggestions, test_mcp_smoke,
test_mcp_write_tools, test_mcp_registration, test_consistency_check,
test_consistency_sweep) all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 00:27:45 +02:00
4541f1d6fc Test coverage for C-31 work-record sidetrack detector (CUST-WP-0060 review)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
16 tests: registry loading (env override, missing registry, unparseable
registry -> None, no crash), detector behavior against a synthetic
registry fixture (independent of the-custodian's live state, so stable
across canon changes) -- rogue ids flagged, all registered kinds incl.
grandfathered legacy patterns (AWQ-/DEC-/OH-/single-digit-task) pass,
template placeholders and .git/history dirs skipped, malformed yaml
doesn't crash the scan, dedup of repeated ids within a repo, no-op when
no registry is reachable.

Full consistency_check + consistency_sweep suite still green (128 tests,
no regressions from the C-31 addition).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 23:09:40 +02:00
59770145fd C-31 work-record sidetrack detector (CUST-WP-0060-T05)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Warn on YAML-block ids matching no kind in the canon work-record type
registry (~/the-custodian/canon/standards/work-record-types.yaml, override
via WORK_RECORD_REGISTRY). Detection only; registration of non-workplan
kinds is a later stage. Skips template placeholders and repos without the
registry available.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 02:07:17 +02:00
814595c317 evidence: legacy-meter weekly reviews 2026-07-16..18 (STATE-WP-0070 automation)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 16:40:17 +02:00
451f02c1d5 feat(dashboard): expandable full text on decision cards
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Cards previously showed a hard 200-char snippet of description OR
rationale with no way to read the rest, and rationale was hidden
whenever a description existed. Long or dual-field cards now expand
in place (native <details>) to labeled full Description and Rationale
sections; short single-field cards render unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 19:26:12 +02:00
1906289997 docs(deploy): state-hub Forgejo image promote flow (CUST-WP-0059 T06)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 14:48:50 +02:00
custodian-sync
4d2898e2e2 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-13:
  - update .custodian-brief.md for state-hub
2026-07-13 23:52:49 +00:00
92b23f2534 chore: archive finished STATE-WP-0070 (workplan terminology phase-2 retirement)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:27:57 +02:00
custodian-sync
739d76fb58 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 56s
Updated by fix-consistency on 2026-07-14:
  - update .custodian-brief.md for state-hub
2026-07-14 00:27:13 +02:00
ac26bf2e66 STATE-WP-0070: closeout — T03/T04/T05 done, status finished
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 5s
Merge landed (df19c46), gate cleared, MCP restarted, suite green. Field-alias
+ flows/workstream.yaml retirement deferred to CUST-WP-0055 phase-3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:21:53 +02:00
df19c464ff Merge STATE-WP-0070: retire legacy workstream MCP aliases + open_workstreams
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 6m28s
Gate cleared: 10 consecutive 8h zero-usage meter windows (07-10 14:00 → 07-13 22:00).
Removes create/list/update_workstream(_status) MCP tools, state://workstreams
resource, and the open_workstreams summary mirror. workstream_id field alias and
flows/workstream.yaml remain (still have live callers).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:13:13 +02:00
custodian-sync
d15a9928b3 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-13:
  - update .custodian-brief.md for state-hub
2026-07-13 13:22:05 +00:00
b59cff508a chore(wp-0070): daily legacy-meter evidence captures (07-12, 07-13)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
8h zero-usage window snapshots for the STATE-WP-0070 retirement gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 10:53:31 +02:00
bd1fa2a289 STATE-WP-0070: record staged T03/T04 removals + merge gate in workplan
Documents the unmerged state-wp-0070-legacy-retirement branch (T03 full,
T04 low-risk half), the deferred field-alias + flows/workstream.yaml, and
the 7th-zero-window merge gate. Task statuses unchanged until merge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 10:08:38 +02:00
6d3de59436 STATE-WP-0070 T04 (partial): drop open_workstreams from /state/summary
Removes the redundant open_workstreams mirror field from StateSummary (schema,
router, MCP get_domain_summary reader, dashboard consumers + empty-state stub,
and tests). Consumers already preferred open_workplans, so this is the
low-risk half of T04.

Deferred (still have live callers — not yet retirement-ready):
- workstream_id query/body field alias on preferred routes — external
  session-close curls/scripts fleet-wide still send it.
- flows/workstream.yaml — /flows/workstream/{id} routes are still served and
  exercised by tests; retire only once no callers remain.

Staged on branch state-wp-0070-legacy-retirement — do not merge until the 7th
documented zero-usage window is captured.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 10:04:38 +02:00
ef62cb3872 STATE-WP-0070 T03: remove legacy workstream MCP aliases
Meter-gated removal (7 consecutive zero-usage windows reached). Deletes:
- MCP tools: create_workstream, list_workstreams, update_workstream,
  update_workstream_status
- MCP resource: state://workstreams/{topic_slug}
- Dead helpers: _LEGACY_MCP_* maps, _legacy_mcp_deprecation,
  _meter_legacy_mcp, _attach_legacy_deprecation, _update_workplan_legacy_impl

TOOLS.md keeps a retired→preferred migration map (per backlog). Removed the
now-dead STATEHUB_MCP_LEGACY_METER guard in conftest. Retargeted the
create_workplan error-skip test to the preferred tool; dropped alias-only tests.

Staged on branch state-wp-0070-legacy-retirement — do not merge until the 7th
documented zero-usage window is captured.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 09:29:12 +02:00
1acad4c02c chore(wp-0070): dashboard metering header + 8h zero-window evidence
Some checks failed
CI Smoke / host-smoke (push) Successful in 2s
CI Smoke / container-smoke (push) Failing after 12m58s
apiFetch sends X-StateHub-Component for legacy-meter attribution.
Captured legacy-meter-weekly-review-20260712.json (0 calls / 8h).
2026-07-12 01:09:43 +02:00
34016ee9ac docs: workstream caller status evidence; STATE-WP-0070 T04 progress
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-12 00:21:06 +02:00
90447b4258 docs(ecosystem): boundary alignment and route audit (STATE-WP-0074)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 1m53s
Add ecosystem position to INTENT/SCOPE/README, publish hub-ecosystem-route-audit,
update workstream-coordinate capability relations, and record legacy-meter
weekly review evidence.
2026-07-11 01:26:53 +02:00
54577cd847 fix(legacy-meter): guard MCP alias metering off in tests
Alias tests monkeypatch _get/_post but _meter_legacy_mcp uses _client()
directly, so every pytest run recorded real usage and reset zero-window
retirement streaks. STATEHUB_MCP_LEGACY_METER=off skips metering; set in
tests/conftest.py. Verified meter counts flat across the alias suite.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 21:47:46 +02:00
custodian-sync
a18fa13682 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 6s
Updated by fix-consistency on 2026-07-10:
  - update .custodian-brief.md for state-hub
2026-07-10 15:22:51 +02:00
4603482efc chore(workplans): STATE-WP-0070 T03/T04 to progress
Some checks failed
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 15:22:07 +02:00
b2640a1591 feat(legacy-meter): meter MCP aliases and fix brief workstream_id label (STATE-WP-0070 T03/T04)
T03: MCP alias retirement gate was unstartable — deprecation notices existed
but no mcp:* interfaces were ever registered or metered. Add
_meter_legacy_mcp() posting /legacy-meter/usage (kind mcp_tool, component
state-hub.mcp) from create_workstream, list_workstreams, update_workstream,
update_workstream_status, and state://workstreams/{topic_slug}; register all
five phase-3 backlog keys so zero-window streaks accrue from today.

T04: trace residual POST /progress/ workstream_id (3 calls/8h, unknown) to
.custodian-brief.md labelling workplans "workstream_id:"; brief generator now
prints "workplan_id:". Briefs refresh on each repo's next fix-consistency run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 15:21:49 +02:00
2943251c03 chore(workplans): register STATE-WP-0075 hub IDs from fix-consistency
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
2026-07-10 13:33:37 +02:00
custodian-sync
c53d8333e0 chore(consistency): sync task status from DB [auto]
Some checks are pending
CI Smoke / host-smoke (push) Waiting to run
CI Smoke / container-smoke (push) Waiting to run
Updated by fix-consistency on 2026-07-10:
  - update .custodian-brief.md for state-hub
2026-07-10 13:33:20 +02:00
7036e2aa6b feat(api): retire phase-1/2 /workstreams REST aliases with 410 stranglers
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Has been cancelled
Build and Publish Multi-Context Image / build-and-push (push) Successful in 2m18s
Add retire_legacy_route() helper and convert CRUD, dependency, and
execution intent legacy routes to 410 Gone while preserving final-call
legacy-meter attribution. Update tests, retirement backlog, and close
STATE-WP-0075 with handoff to STATE-WP-0070 T02 and STATE-WP-0073 T04.
2026-07-10 13:31:57 +02:00
c4ac853e35 STATE-WP-0070/0073: 20260710 meter capture and streak progress notes
8h window shows zero phase-1 /workstreams REST calls; ~2/7 consecutive zero
windows toward 410 retirement gate.
2026-07-10 13:31:54 +02:00
custodian-sync
a0ce785529 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 12:36:12 +00:00
custodian-sync
4e3ef53174 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 10s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 13:47:40 +02:00
custodian-sync
784b0e8c00 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 10:35:35 +00:00
e0f0b6d3c6 Migrate state-hub image and clone refs to Forgejo (RAIL-HO-WP-0006)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
2026-07-09 11:59:08 +02:00
custodian-sync
d9217c238d chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 08:21:02 +00:00
18cabc2bd8 STATE-WP-0073: document 8h legacy-meter capture schedule
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
2026-07-09 09:29:41 +02:00
custodian-sync
1bba097211 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 09:27:10 +02:00
a46d5aa2f5 STATE-WP-0073: meter delta zero, remote audit, k8s prompt rollout evidence
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Post-0072 8h capture shows zero legacy REST calls on hot keys. Document remote
sweep, railiance01 ConfigMap rollout, and gitea-remote sync blocker.
2026-07-09 09:26:21 +02:00
custodian-sync
8b6b28f220 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 09:20:41 +02:00
custodian-sync
3e263cad10 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 00:35:12 +00:00
f120c044d5 STATE-WP-0072: write hub workplan and task IDs from fix-consistency
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-09 02:06:35 +02:00
ef51b99ff5 STATE-WP-0072: remediate remaining workstream HTTP callers
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
Research sweep captured in research/20260709-workstream-caller-sweep.md.
Migrate dashboard detail tasks query, custodian_cli POST bodies, and
onboarding curl to workplan-first paths; re-capture 8h legacy-meter evidence.
2026-07-09 01:48:53 +02:00
custodian-sync
3f1eac7bab chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 01:38:15 +02:00
e302ca9f59 Add 8-hour default window for legacy-meter deploy monitoring
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
Build and Publish Multi-Context Image / build-and-push (push) Failing after 1m15s
Expose hours query param on /legacy-meter/summary and weekly-review;
capture_legacy_meter_evidence.py defaults to --hours 8 (--days 7 for
weekly retirement gate). Re-capture post-deploy evidence with tighter window.
2026-07-09 01:36:02 +02:00
custodian-sync
674479dcc7 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-08:
  - update .custodian-brief.md for state-hub
2026-07-08 23:21:15 +00:00
custodian-sync
cd4cbb66c2 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 01:10:00 +02:00
9343981c6a deploy: pin railiance helm image to main-1cf949b (edge read cache)
Some checks failed
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Has been cancelled
2026-07-09 01:09:41 +02:00
35c996416b Complete STATE-WP-0071 railiance01 caller migration deploy
All checks were successful
CI Smoke / host-smoke (push) Successful in 4s
CI Smoke / container-smoke (push) Successful in 40s
Deploy activity-core:railiance01-prod (1a06368), repair railiance01 git
checkouts, roll k8s runtime, run consistency sweep canary, and capture
legacy-meter evidence with fix-consistency attribution. Mark STATE-WP-0070
T01 done; finish STATE-WP-0071.
2026-07-09 01:08:45 +02:00
custodian-sync
0562ef4b46 chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 6s
CI Smoke / container-smoke (push) Successful in 9s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 01:08:01 +02:00
1cf949bda4 feat(edge): add offline read cache for allowlisted State Hub GET routes
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 51s
The edge relay now persists successful GET responses and serves them with
stale markers when upstream is unreachable. Extend Forgejo image workflow
path filters so api changes trigger registry publishes.
2026-07-09 01:04:15 +02:00
138299293d Activate STATE-WP-0071 for railiance01 deploy execution
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Register workplan and tasks in hub (cf7199a1); set status active after
operator review so Ralph loop can drive T01–T06 automatically.
2026-07-09 00:56:19 +02:00
custodian-sync
c91e46777a chore(consistency): sync task status from DB [auto]
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 4s
Updated by fix-consistency on 2026-07-09:
  - update .custodian-brief.md for state-hub
2026-07-09 00:56:00 +02:00