| #969 |
Secret history triage: gitleaks finds 45 (highway) + 8 (engine) historical findings; default rules missed the [secrets] mail password
EARS SPEC:
- The Highway CI secret scan shall fail on any credential added to tracked files or histo...
|
in-progress |
high |
2026-10-20 00:09 |
- |
|
| #968 |
Remove SMTP leftovers after #927: core config.ini [email], config.example.ini x2, preinstalled_apps.yaml default_secrets, aiosmtplib extra, CLAUDE.md SMTP sections
EARS SPEC:
- The Highway repositories shall contain no SMTP host, SMTP username or Vault mail-secret...
|
closed |
medium |
2026-10-20 00:09 |
- |
|
| #967 |
Unrecovered handled failure waits for unrelated sleeping paths before the run fails
EARS: When a failed step can no longer be consumed by any dependent that accepts failures, the engin...
|
in-progress |
medium |
2026-10-17 17:34 |
- |
|
| #966 |
Branch on_failure handlers never run; handler referenced inside a parallel branch lambda is auto-chained in the parent and runs unconditionally
EARS: When a task inside a parallel branch fails and declares on_failure, the engine shall run that ...
|
in-progress |
high |
2026-10-17 17:34 |
- |
|
| #965 |
Reduce idle PostgreSQL connections: pool_min_size 1, pool_max_idle 90s
EARS: While a Highway service is idle, each engine pool shall hold at most 1 connection, and an idle...
|
closed |
high |
2026-10-17 02:49 |
- |
|
| #964 |
TokenGate client: per-process concurrency cap below TG's 24 per tenant
EARS: The sum of in-flight TokenGate calls across ALL Highway processes (api, worker x2, activity-wo...
|
closed |
low |
2026-10-17 01:01 |
- |
|
| #963 |
POST /admin/api-keys ignores documented expires_in_days; key never expires
EARS: When POST /api/v1/admin/api-keys receives expires_in_days, the API shall set expires_at = now ...
|
closed |
high |
2026-10-17 00:53 |
- |
|
| #962 |
Split tests/unit/test_tool_rate_limiter.py (838 lines) below 500
EARS: test files shall stay under 500 lines.
|
closed |
low |
2026-10-17 00:50 |
- |
|
| #961 |
Remaining sandbox-broken demos: demo-matrix allowlist, workflows/ README gate, demo/*.py, test-logging-pipeline.sh, stale refs
From #944 report: demo-matrix 58 python.run tasks blocked by python_task_policy; workflows/ hello_wo...
|
closed |
medium |
2026-10-17 00:50 |
- |
|
| #960 |
Branch runs log step_succeeded twice; step event results truncated to 200 chars as Python repr
EARS: Each step shall log exactly one step_succeeded event, and event payload results shall be JSON....
|
in-progress |
low |
2026-10-17 00:50 |
- |
|
| #959 |
Reply-tag wire address should use a keyed HMAC, not a plain hash
EARS: The wire reply tag shall be HMAC(server secret, tenant_id, tag) so a third party who knows a t...
|
closed |
medium |
2026-10-17 00:50 |
- |
|
| #958 |
Expose attempt number to tasks and resolve args per attempt
EARS: The engine shall expose the current attempt number as a workflow variable and shall resolve ta...
|
in-progress |
medium |
2026-10-17 00:50 |
- |
|
| #957 |
Trace has no span for a task that fails before its first external call
EARS: The trace endpoint shall include a span for a task that failed before its first external call....
|
in-progress |
medium |
2026-10-17 00:50 |
- |
|
| #956 |
on_failure handler makes a failed step's run report completed
EARS: When a step fails and its on_failure handler succeeds, the run status shall show the step fail...
|
closed |
high |
2026-10-17 00:50 |
- |
|
| #955 |
ALL_OF JoinOperator lets the workflow continue when join_satisfied=false
EARS: If an ALL_OF join has a failed or missing branch, then the engine shall not run the join's dep...
|
closed |
critical |
2026-10-17 00:50 |
- |
|
| #954 |
Admin surface for per-tenant LLM token quota (hw.llm.tokens) + enable [tokengate] llm_token_quota
EARS: The platform admin shall be able to set a per-tenant hw.llm.tokens quota (TokenGate quota poli...
|
in-progress |
medium |
2026-10-17 00:13 |
- |
|
| #953 |
rate_limits: limit_scope=workflow unsupported on TokenGate path (needs per-run subject + assignment)
EARS: If a rate limit uses limit_scope=workflow, then the API shall reject it (400 INVALID_SCOPE) an...
|
in-progress |
low |
2026-10-17 00:13 |
- |
|
| #952 |
Move API workflow-submission bucket (require_rate_limit / TenantRateLimiter.check_quota) to TokenGate, decoupled from run leases
EARS: The workflow submission rate limit shall be a TokenGate rate_limit policy on resource hw.workf...
|
in-progress |
medium |
2026-10-17 00:13 |
- |
|
| #951 |
Drop local tool rate-limit counters (tool_rate_limit_usage + consume/check/cleanup SQL functions) after TokenGate path verified in production
EARS: When the TokenGate tool-limit path (#928) has run in production with no fail-closed incidents ...
|
in-progress |
medium |
2026-10-17 00:13 |
- |
|
| #950 |
Email: expose mail-api send features and durable reply-wait via plus-tags
EARS SPEC:
- tools.email.send and ctx.send_email shall accept cc, bcc, reply_to, from_name, schedule...
|
closed |
high |
2026-10-16 23:02 |
- |
|