| #43 |
FTX-43: SSRF guard rewrite + secret hygiene
net_guard resolve-validate-pin (closes DNS rebinding TOCTOU); WEBHOOK_ALLOW_HOSTS env replaces hardc...
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #42 |
FTX-42: Rate limiting
Redis fixed-window limiter per key/tenant/IP; 429 + error shape + headers (UB-API-8). Unauthenticate...
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #41 |
FTX-41: CSRF + Action Web session + OTP in Redis
Signed HttpOnly session cookie on review GET + double-submit CSRF on all Action Web POSTs (UB-AW-6, ...
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #40 |
FTX-40: Capability token hardening
HITL_TOKEN_SECRET mandatory in prod (delete futex-dev-secret fallback + master-key reuse); verify te...
|
closed |
critical |
2026-07-23 15:08 |
- |
|
| #39 |
FTX-39: Fail-closed tenant scoping sweep
Frozen Principal dataclass; eliminate every principal.get('tenant_id','default') fallback (CI grep g...
|
closed |
critical |
2026-07-23 15:08 |
- |
|
| #38 |
FTX-38: Delete unauthenticated one_click_approve/reject routes
Remove GET /v1/tasks/{id}/one_click_approve|reject (main.py:643-664) - no auth, no token, no tenant ...
|
closed |
critical |
2026-07-23 15:08 |
- |
|
| #37 |
FTX-37: API key issuance + member namespace provisioning
POST/GET/DELETE /v1/tenants/{id}/api-keys (raw key shown once); member add writes role/permissions/m...
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #36 |
FTX-36: api_keys authn core + auth oracle client
api_keys table (hashed futex_sk_* secrets, UNIQUE key_hash, tenant+principal binding, policy_allowli...
|
closed |
critical |
2026-07-23 15:08 |
- |
|
| #35 |
FTX-35: Migration: delegation_rules
CREATE TABLE IF NOT EXISTS delegation_rules matching models.py + indexes. Fixes unreproducible fresh...
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #34 |
FTX-34: config/db/errors/obs skeleton
app/config.py (all env in one place, one REDIS_URL, prod startup validation), app/db.py, app/errors....
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #33 |
FTX-33: Test DB isolation (prod-wipe guard)
conftest.py hardwired to futex_test; assert dbname endswith _test before ANY truncate (current conft...
|
closed |
critical |
2026-07-23 15:08 |
- |
|
| #32 |
FTX-32: Packaging + pytest config
Add pyproject.toml with pinned deps + [tool.pytest.ini_options] (markers=[e2e], addopts='-m "not e2e...
|
closed |
high |
2026-07-23 15:08 |
- |
|
| #31 |
TEST-1: Contract & Isolation Tests
Write tests mocking Auth, Mail, RunFlow with circuit-open behavior. Prove cross-tenant isolation and...
|
closed |
medium |
2026-07-22 21:59 |
- |
|
| #30 |
INT-1: RunFlow Binding Sync
Implement /v1/runflow/bindings CRUD. Map stage completions to RunFlow node_ref. Call RunFlow approve...
|
wont-do |
medium |
2026-07-22 21:59 |
- |
|
| #29 |
SEC-1: Redis Rate Limiting & API Security
Enforce per-tenant and per-key rate limits via Redis. Enforce 1MB max JSON body. Protect Webhooks ag...
|
closed |
medium |
2026-07-22 21:59 |
- |
|
| #28 |
API-7: Audit REST API & Event Logging
Implement /v1/audit read endpoint. Trigger audit events for decision lifecycle, actions, delegations...
|
closed |
medium |
2026-07-22 21:59 |
- |
|
| #27 |
CORE-5: Delegation Resolution Engine
Resolve active delegation rules at task assignment time. Cap chain depth to 1. Skip non_delegable ta...
|
closed |
high |
2026-07-22 21:59 |
- |
|
| #26 |
API-6: Delegation REST API
Implement /v1/delegations CRUD. Require hitl:delegation:manage_self or manage_others. Rules must hav...
|
closed |
high |
2026-07-22 21:59 |
- |
|
| #25 |
CORE-4: Policy Engine - Clearance Profiles
Implement conditional further approval (clearance). Generate clearance tasks on approve, block RunFl...
|
closed |
high |
2026-07-22 21:59 |
- |
|
| #24 |
CORE-3: Policy Engine - Separation of Duties (SoD)
Implement SoD rules: submitter-cannot-act, mutually exclusive principals/roles. Reject task assignme...
|
closed |
high |
2026-07-22 21:59 |
- |
|