Feature: Session resource limits and quotas #11

Closed
opened 2026-03-10 03:46:42 +00:00 by Mark · 1 comment
Owner

Issue

No enforcement of per-user resource limits (CPU, memory, disk) or session quotas.

Location

  • services/api/app/docker_manager.py:161-179 (limits defined but not enforced per-user)
  • User model lacks quota fields

Current Implementation

Resource limits are profile-based but not user-specific:

resource_limits = {
    "standard": {"cpu_period": 100000, "cpu_quota": 50000, "mem_limit": "2g"},
    ...
}

Proposed Solution

  1. Add quota fields to User model
  2. Enforce max sessions per user
  3. Track and limit resource usage
  4. Soft/hard limits with notifications

Acceptance Criteria

  • Add quota fields to User model (max_sessions, cpu_quota, memory_quota)
  • Enforce session count limits
  • Track per-user resource consumption
  • Add admin UI for quota management
  • Notify users approaching limits
  • Block new sessions when quota exceeded

Priority: Medium
Type: Feature
References: ROADMAP.md Multi-user/RBAC

## Issue No enforcement of per-user resource limits (CPU, memory, disk) or session quotas. ## Location - `services/api/app/docker_manager.py:161-179` (limits defined but not enforced per-user) - User model lacks quota fields ## Current Implementation Resource limits are profile-based but not user-specific: ```python resource_limits = { "standard": {"cpu_period": 100000, "cpu_quota": 50000, "mem_limit": "2g"}, ... } ``` ## Proposed Solution 1. Add quota fields to User model 2. Enforce max sessions per user 3. Track and limit resource usage 4. Soft/hard limits with notifications ## Acceptance Criteria - [ ] Add quota fields to User model (max_sessions, cpu_quota, memory_quota) - [ ] Enforce session count limits - [ ] Track per-user resource consumption - [ ] Add admin UI for quota management - [ ] Notify users approaching limits - [ ] Block new sessions when quota exceeded **Priority:** Medium **Type:** Feature **References:** ROADMAP.md Multi-user/RBAC
Author
Owner

GSD VERIFY phase failed after 3 attempts.
═══ Gate: verify-passed (devforge#11) ═══
Mode: Tier 1 (functional only)

GATE OK: All gates up to 'implement' pass
── Tier 1: Functional ────────────────────────────────
Running tests...
❌ Tests failed (exit 1)
+ Received

- true
+ false

 ❯ services/web/src/utils/terminalUtils.test.ts:56:40
 54|  it("should return true when debug is enabled", () => {
 55|  enableTerminalDebug();
 56|  expect(isTerminalDebugEnabled()).toBe(true);
 |  ^
 57|  });
 58| 

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/4]⎯

 Test Files  4 failed | 1 passed (5)
 Tests  1 failed | 9 passed (10)
 Start at  01:05:50
 Duration  647ms (transform 505ms, setup 0ms, import 140ms, tests 11ms, environment 1ms)
Running linter...
✅ Lint clean
⚠️ No type checker discovered
Previous test count: unknown

❌ GATE FAIL: verify-passed
- Tests failed with exit code 1
GATE FAIL: verify — blocked at 2026-05-21T08:05:52Z
Class: test-failure
Evidence: Verification failed: 1 failures
Git tag: devforge#11-gate-verify-fail-17424555cd2c (use gate-retry after fixing)

GSD VERIFY phase failed after 3 attempts. ═══ Gate: verify-passed (devforge#11) ═══ Mode: Tier 1 (functional only) GATE OK: All gates up to 'implement' pass ── Tier 1: Functional ──────────────────────────────── Running tests... ❌ Tests failed (exit 1) + Received - true + false  ❯ services/web/src/utils/terminalUtils.test.ts:56:40  54|  it("should return true when debug is enabled", () => {  55|  enableTerminalDebug();  56|  expect(isTerminalDebugEnabled()).toBe(true);  |  ^  57|  });  58|  ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/4]⎯  Test Files  4 failed | 1 passed (5)  Tests  1 failed | 9 passed (10)  Start at  01:05:50  Duration  647ms (transform 505ms, setup 0ms, import 140ms, tests 11ms, environment 1ms) Running linter... ✅ Lint clean ⚠️ No type checker discovered Previous test count: unknown ❌ GATE FAIL: verify-passed - Tests failed with exit code 1 GATE FAIL: verify — blocked at 2026-05-21T08:05:52Z Class: test-failure Evidence: Verification failed: 1 failures Git tag: devforge#11-gate-verify-fail-17424555cd2c (use gate-retry after fixing)
Mark closed this issue 2026-06-09 02:35:19 +00:00
Sign in to join this conversation.
No description provided.