| #1049 |
#1041 follow-ups: live checkers probe removed routes; orphaned permissions; per-key breaker reset /tmp flag; drop api_tokens table
EARS SPEC:
- scripts/verify_* live checkers (#911, #1014, #1020, #1025, #1028, #1032, api_input) sha...
|
open |
low |
2026-10-22 22:50 |
- |
|
| #1048 |
DSL retry_policy retries non-retryable errors and ignores Retry-After; orchestrator never passes retry_at to jumper
EARS: When a tool step raises an error the orchestrator classifies as non-retryable (NON_RETRYABLE_E...
|
open |
medium |
2026-10-22 22:45 |
- |
|
| #1047 |
LLM providers send config/env API keys to a caller-supplied base_url (ollama, OpenAI-compat set, anthropic)
EARS: If a tools.llm.call caller passes base_url and no api_key/api_key_secret_id, then the router s...
|
in-progress |
high |
2026-10-22 22:44 |
- |
|
| #1046 |
Upload links follow-ups (#1042): cancel wakes the waiting workflow, /info stops returning internal ids, local download URL served
EARS SPEC:
- When a person cancels an upload request, the waiting workflow shall resume within 5 s w...
|
open |
medium |
2026-10-22 22:41 |
- |
|
| #1045 |
Pin auth 3.4.0; size and scope the embedded auth pool for pg-nano (AUTH_DATABASE_POOL_*), every Authorization session closed
EARS SPEC:
- Highway shall pin auth==3.4.0 in pyproject.toml and uv.lock.
- Every engine container t...
|
in-progress |
high |
2026-10-22 22:40 |
- |
|
| #1044 |
LLM router: Prism provider, deepseek-v4-flash as default chat model (#921 chat half)
EARS SPEC:
- The LLM router shall offer a provider 'prism' (OpenAI-compatible, base [llm.providers.p...
|
in-progress |
high |
2026-10-22 22:28 |
- |
|
| #1043 |
Stopgap for #945/#1006: only the platform tenant may publish app versions, and only platform-published versions execute
EARS SPEC:
- If a tenant other than platform calls POST /api/v1/apps (create with its own publisher)...
|
in-progress |
high |
2026-10-22 22:26 |
- |
|
| #1042 |
#931 T4: remove duplicate /storage/<ref> routes; make human upload links work end to end
EARS SPEC:
- The API shall not serve DELETE /api/v1/storage/<ref> or GET /api/v1/storage/<ref>/url; ...
|
in-progress |
medium |
2026-10-22 22:26 |
- |
|
| #1041 |
#931 T1+T2+T6: delete dead, no-op and unused routes and the /admin/tokens credential type
EARS SPEC:
- The Highway API shall not serve the T1 routes (/api/v1/../u/<token>, shadowed version.g...
|
in-progress |
medium |
2026-10-22 22:26 |
- |
|
| #1040 |
certifi 2026.7.22 trusts emSign ECC Root CA - G3 (GHSA-6q48-6c7w-9gw2, compromised intermediates); DSL compiler pip-installs caller imports at runtime with pip's vendored certifi
EARS SPEC:
- Every Highway image shall ship certifi >= 2026.10.19 (first patched release; removes em...
|
open |
high |
2026-10-21 22:19 |
- |
|
| #1039 |
auth library pool hardcoded (5+5 per process in 3.1.0, 2+2 in 3.3.0): blocks pg-nano highway_app limit 60
EARS: The API's auth library connections shall be bounded by configuration (target 1 per process at ...
|
open |
high |
2026-10-20 07:39 |
- |
|
| #1038 |
Drop unused tenant_client_keys.suspended_at
Since #908 the tenant state is status/deactivated_at/deactivated_by with the reason in suspended_rea...
|
open |
low |
2026-10-20 07:10 |
- |
|
| #1037 |
Submission accepts definitions naming tools that are not registered (fails later at the worker)
EARS SPEC (from #908, item 1, not done there):
- If a workflow task names a tool that is neither reg...
|
open |
medium |
2026-10-20 07:10 |
- |
|
| #1036 |
A deactivated tenant is not blocked anywhere: no code reads tenant_client_keys.status
EARS SPEC (draft):
- While a tenant's tenant_client_keys.status is 'deactivated', the Highway API sh...
|
closed |
high |
2026-10-20 07:10 |
- |
|
| #1035 |
Activity worker LISTEN channel is never notified for highway.activity_queue inserts; claiming relies on fallback polling only
Found during #906. The activity worker LISTENs on jumper_highway_activity (#246). The only pg_notify...
|
open |
medium |
2026-10-20 07:10 |
- |
|
| #1034 |
Activity worker process exits when _fail_activity raises on the bulkhead-submit failure path
Found during #906. engine/services/activity_worker/worker.py _submit_activities: if bulkhead.execute...
|
open |
medium |
2026-10-20 07:05 |
- |
|
| #1033 |
Activity worker livelocks on an activity whose workflow_run row is missing
Found during #906 (both former copies, now engine/services/activity_worker/claiming.py _claim_activi...
|
open |
high |
2026-10-20 07:05 |
- |
|
| #1032 |
T0 (#931): agent/session/trigger/automation/agent-run and Gmail/Telegram routes have no permission check; idempotency reset routes delete across tenants
EARS SPEC:
- When a caller who is not a member of tenant T with the required permission calls any /a...
|
in-progress |
critical |
2026-10-20 06:58 |
- |
|
| #1031 |
resilient-circuit PostgresStorage connects per operation; request pooled storage (pg-nano rc_app limit 30, TLS+SCRAM per connect)
EARS: The breaker store shall reuse pooled connections (about 2 per process) instead of one connecti...
|
open |
medium |
2026-10-20 06:49 |
- |
|
| #1030 |
GET /analytics/queues reads tenant_id from the query string after require_permission checked the header tenant
Found during #1028 (live, public URL, 2026-10-20, read-only GETs). api/middleware/tenant.py takes g....
|
open |
high |
2026-10-20 06:20 |
- |
|