A task factory based on temporal
Find a file
tegwick a8d3cc2782 Fix repo_sbom_status resolver — close ADHOC-2026-06-01-T01
The state-hub resolver was calling GET /sbom/status?repo={slug}, which State
Hub does not expose. Real SBOM routes are /sbom/, /sbom/{slug},
/sbom/snapshots/, /sbom/snapshots/{id}, /sbom/ingest/, /sbom/report/licences/.
The weekly-sbom-staleness ActivityDefinition was passing params {repos: all}
and the resolver was reading params.get("repo_slug", ""), so the URL
collapsed to /sbom/status?repo= and 404'd. _fetch_json swallowed the error,
the rule context.repos.sbom_age_days > 30 evaluated against {} and never
matched, and the weekly SBOM check has been a silent no-op for as long as
the route mismatch has existed.

Resolver now supports two modes selected by params:
- single-repo: {repo_slug: foo} → GET /sbom/{foo}, returns
  {repo_slug, last_sbom_at, sbom_age_days, has_sbom}
- bulk: {repos: all} → GET /repos/, computes per-repo age, returns the
  worst repo's fields hoisted to the top of the result alongside
  stale_count, total_count, worst_* fields, and the full per-repo list

Never-scanned repos get a 99999 sentinel age so threshold rules treat
them as very stale without forcing the rule to special-case None.

Hoisting the worst entry to the top preserves the existing rule
expression context.repos.sbom_age_days > 30 (and target_repo:
context.repos.repo_slug, though that field is a separate interpolation
gap tracked as ADHOC-2026-06-01-T02). The integration tests'
aspirational per-repo iteration model is left intact.

Live validation against State Hub on 2026-06-01:
- single: activity-core → 36 days since 2026-04-26 ingest
- bulk: 48 repos total, 46 stale (>30d), worst is info-tech-canon (never
  scanned), rule expression evaluates True

Tests: 120 passed, 1 skipped.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 03:31:56 +02:00
.claude/rules Refresh agent instruction files 2026-05-18 16:55:39 +02:00
activity-definitions Fix repo_sbom_status resolver — close ADHOC-2026-06-01-T01 2026-06-02 03:31:56 +02:00
docs feat(WP-0004): railiance deployment & service ops 2026-05-15 00:04:39 +02:00
dynamicconfig Add project scaffold: contracts, schemas, docker-compose, workplans 2026-03-04 22:45:40 +01:00
e2e feat(e2e): add run-on-host.sh for automated cron on railiance01 2026-03-27 01:02:21 +01:00
event-types feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
k8s/railiance Enable hourly RecentlyOnScope rollout 2026-05-23 02:51:54 +02:00
migrations feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
schemas Wire instruction report execution 2026-05-19 18:28:23 +02:00
scripts feat(WP-0004): railiance deployment & service ops 2026-05-15 00:04:39 +02:00
src/activity_core Fix repo_sbom_status resolver — close ADHOC-2026-06-01-T01 2026-06-02 03:31:56 +02:00
tasks feat(WP-0003c): context adapters, first ActivityDefinition, full test suite 2026-05-14 23:24:48 +02:00
tests Fix repo_sbom_status resolver — close ADHOC-2026-06-01-T01 2026-06-02 03:31:56 +02:00
wiki Add project scaffold: contracts, schemas, docker-compose, workplans 2026-03-04 22:45:40 +01:00
workplans Fix repo_sbom_status resolver — close ADHOC-2026-06-01-T01 2026-06-02 03:31:56 +02:00
.custodian-brief.md chore(consistency): sync task status from DB [auto] 2026-05-15 00:06:45 +02:00
.dockerignore feat(WP-0004): railiance deployment & service ops 2026-05-15 00:04:39 +02:00
.env.example feat(WP-0004): railiance deployment & service ops 2026-05-15 00:04:39 +02:00
.gitignore Initial commit 2026-03-02 00:24:41 +00:00
AGENTS.md Refresh agent instruction files 2026-05-18 16:55:39 +02:00
alembic.ini feat(db): init Alembic (async) + SQLAlchemy declarative base — T08 2026-03-26 21:45:40 +00:00
CLAUDE.md Refresh agent instruction files 2026-05-18 16:55:39 +02:00
docker-compose.dev.yml feat(WP-0002): complete Triggers & Ops workstream 2026-03-28 01:04:43 +01:00
docker-compose.railiance.yml fix(WP-0004): live deployment fixes from integration test 2026-05-15 09:23:14 +02:00
Dockerfile Deploy activity-core on railiance01 2026-05-22 13:49:46 +02:00
INTENT.md docs: write INTENT.md and rewrite SCOPE.md for Event Bridge architecture 2026-05-14 16:56:07 +02:00
LICENSE Initial commit 2026-03-02 00:24:41 +00:00
Makefile fix(WP-0004): live deployment fixes from integration test 2026-05-15 09:23:14 +02:00
pyproject.toml feat(event-bridge): WP-0003a — domain model, rules module, event type registry 2026-05-14 22:01:15 +02:00
README.md Initial commit 2026-03-02 00:24:41 +00:00
SCOPE.md docs: write INTENT.md and rewrite SCOPE.md for Event Bridge architecture 2026-05-14 16:56:07 +02:00
uv.lock feat(event-bridge): WP-0003a — domain model, rules module, event type registry 2026-05-14 22:01:15 +02:00

repo-seed

A git repository template to bootstrap coulomb projects from.