|
10 | 10 | {"id":"bobs-brain-8jd.2","title":"Add mandate schema to shared contracts","description":"Create Mandate dataclass in pipeline_contracts.py with intent, conditions, limits","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-02T20:50:40.264291346-06:00","created_by":"jeremy","updated_at":"2026-01-02T20:52:33.105066275-06:00","closed_at":"2026-01-02T20:52:33.105066275-06:00","close_reason":"Added Mandate and BudgetStatus dataclasses to pipeline_contracts.py with helper methods","dependencies":[{"issue_id":"bobs-brain-8jd.2","depends_on_id":"bobs-brain-8jd","type":"parent-child","created_at":"2026-01-02T20:50:40.268185676-06:00","created_by":"jeremy"}]} |
11 | 11 | {"id":"bobs-brain-8jd.3","title":"Update foreman to check budget before specialist calls","description":"Add budget awareness to delegation patterns - stop if budget exhausted","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-02T20:50:40.309166593-06:00","created_by":"jeremy","updated_at":"2026-01-02T20:54:08.310144188-06:00","closed_at":"2026-01-02T20:54:08.310144188-06:00","close_reason":"Added validate_mandate to dispatcher - checks budget, iterations, expiration, authorized specialists","dependencies":[{"issue_id":"bobs-brain-8jd.3","depends_on_id":"bobs-brain-8jd","type":"parent-child","created_at":"2026-01-02T20:50:40.311644632-06:00","created_by":"jeremy"}]} |
12 | 12 | {"id":"bobs-brain-8jd.4","title":"Add mandate validation to A2A dispatcher","description":"Validate mandate authorization before invoking specialists","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-02T20:50:40.356455122-06:00","created_by":"jeremy","updated_at":"2026-01-02T20:54:08.349155011-06:00","closed_at":"2026-01-02T20:54:08.349155011-06:00","close_reason":"Added mandate field to A2ATask and validation in call_specialist flow","dependencies":[{"issue_id":"bobs-brain-8jd.4","depends_on_id":"bobs-brain-8jd","type":"parent-child","created_at":"2026-01-02T20:50:40.357950823-06:00","created_by":"jeremy"}]} |
| 13 | +{ "id": "bobs-brain-hvy", "title": "Epic: bob-brain-testing-hardening", "description": "Enterprise-grade test pyramid, CI gates, and observability-driven tests for bobs-brain. Target: 20+ unit, 5+ integration, 3+ E2E, 3+ smoke, OTel assertions, coverage thresholds, deterministic stubs. See gap report in session for full context.", "status": "open", "priority": 1, "issue_type": "epic", "owner": "[email protected]", "created_at": "2026-02-15T18:44:14.327533517-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:44:14.327533517-06:00"} |
| 14 | +{"id":"bobs-brain-hvy.1","title":"Story A: Test harness + repo conventions","description":"Root conftest.py with shared fixtures (fake clock, deterministic IDs, mock agent factory). tests/fixtures/ and tests/stubs/ directories. .env.test with BOB_TEST_MODE, BOB_STUB_EXTERNAL toggles. pytest-timeout default in pytest.ini. Consolidate ruff vs flake8. Fix or remove 5 stale ignored tests. TESTING.md with exact commands. Done when: make ci passes with new harness.","status":"closed","priority":1,"issue_type":"task","owner":" [email protected]","created_at":"2026-02-15T18:45:22.661469451-06:00","created_by":"jeremylongshore","updated_at":"2026-02-17T00:14:12.638286943-06:00","closed_at":"2026-02-17T00:14:12.638286943-06:00","close_reason":"PR #62 merged: test harness with root conftest.py, 8 shared fixtures, .env.test toggles, pytest.ini with markers/timeouts, TESTING.md guide, noxfile with 15 sessions, tests/ directory scaffold","dependencies":[{"issue_id":"bobs-brain-hvy.1","depends_on_id":"bobs-brain-hvy","type":"parent-child","created_at":"2026-02-15T18:45:22.672031243-06:00","created_by":"jeremylongshore"}]} |
| 15 | +{"id":"bobs-brain-hvy.10","title":"Story J: Test data/fixtures + record/replay framework","description":"tests/fixtures/ with factory functions for Mandate, A2ATask, A2AResult, AgentCard. FakeClock utility. Deterministic ID generator. HTTP record/replay (respx). LLM stub provider (BOB_LLM_MODE=stub). freezegun for datetime mocking. Done when: all E2E and integration tests use shared fixtures.","status":"closed","priority":3,"issue_type":"task","owner":" [email protected]","created_at":"2026-02-15T18:45:37.687023812-06:00","created_by":"jeremylongshore","updated_at":"2026-02-17T00:14:24.41205011-06:00","closed_at":"2026-02-17T00:14:24.41205011-06:00","close_reason":"PR #62 merged: StubLLM, StubAgentEngineClient (deepcopy, case-insensitive, monotonic sessions), HTTP replay (respx), A2AResult factory, FakeClock, deterministic IDs, all verified","dependencies":[{"issue_id":"bobs-brain-hvy.10","depends_on_id":"bobs-brain-hvy","type":"parent-child","created_at":"2026-02-15T18:45:37.697538083-06:00","created_by":"jeremylongshore"}]} |
| 16 | +{ "id": "bobs-brain-hvy.2", "title": "Story B: Unit test expansion (orchestrator/agents core)", "description": "20+ new high-signal unit tests for orchestrator state machine. Dispatcher lifecycle: validate_mandate, call_specialist, error paths. Policy gates: all gate methods, edge cases, risk tier transitions. Pipeline contracts: Mandate parsing, serialization, is_expired, record_invocation. Mission spec: parsing, validation. Agent identity: canonical IDs, alias resolution. Coverage threshold enforced (start 60%). Done when: 20+ new tests, coverage \u003e= 60%.", "status": "open", "priority": 1, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:36.483239585-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:36.483239585-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.2", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:36.506229927-06:00", "created_by": "jeremylongshore"}]} |
| 17 | +{ "id": "bobs-brain-hvy.3", "title": "Story C: Integration tests (persistence, queue, tool adapters)", "description": "5+ integration tests across persistence/queue/tool adapter boundaries. Agent Engine client stub provider. A2A delegation with mocked Agent Engine. GitHub client: respx HTTP mocking. Storage writer: GCS stub or memory adapter. Slack gateway: webhook validation with stubbed Slack API. Done when: 5+ new integration tests, all deterministic.", "status": "open", "priority": 2, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:36.620906133-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:36.620906133-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.3", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:36.631903389-06:00", "created_by": "jeremylongshore"}]} |
| 18 | +{ "id": "bobs-brain-hvy.4", "title": "Story D: Contract tests (schemas, internal/external APIs)", "description": "AgentCard JSON schema validation for all 9 agents. A2A protocol payload validation. Pipeline contracts: Mandate, A2ATask, A2AResult, GateResult schema tests. Backward compatibility enforcement. Pydantic model + JSONSchema export tests. Done when: contract tests passing.", "status": "open", "priority": 2, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:36.7543259-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:36.7543259-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.4", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:36.772264211-06:00", "created_by": "jeremylongshore"}]} |
| 19 | +{ "id": "bobs-brain-hvy.5", "title": "Story E: E2E tests (critical workflows)", "description": "3+ E2E tests: (1) Request-\u003evalidate-\u003epreflight-\u003especialist-\u003eresult, (2) Transient failure-\u003eretry-\u003esuccess with fake clock, (3) Multi-agent coordination happy path. All stubbed, deterministic, each under 30s. Done when: pytest tests/e2e/ shows 3+ green tests.", "status": "open", "priority": 2, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:36.9240291-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:36.9240291-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.5", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:36.941490402-06:00", "created_by": "jeremylongshore"}]} |
| 20 | +{ "id": "bobs-brain-hvy.6", "title": "Story F: Smoke tests (post-deploy)", "description": "3+ smoke tests for deployed staging: health/ready endpoint, start a tiny run, complete a tiny run. Wired into CI after deploy. BOB_SMOKE_TARGET env var. Done when: pytest tests/smoke/ shows 3+ tests runnable against staging.", "status": "open", "priority": 2, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:37.085925003-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:37.085925003-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.6", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:37.118468679-06:00", "created_by": "jeremylongshore"}]} |
| 21 | +{ "id": "bobs-brain-hvy.7", "title": "Story G: CI gates + quality checks", "description": "Coverage threshold enforced (fail below 60%). Consolidate ruff vs flake8. pytest-xdist for parallel unit tests in CI. pytest-timeout defaults. pip-audit for dependency scanning. Flake detection with pytest-rerunfailures bridge. Done when: CI enforces all gates, no optional reds.", "status": "closed", "priority": 1, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:37.233370333-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-17T00:14:18.937650047-06:00", "closed_at": "2026-02-17T00:14:18.937650047-06:00", "close_reason": "PR #62 merged: CI workflow fixed (--cov=agents/service, fail_under=60%, ruff replacing flake8, pip-audit replacing safety, error swallowing removed), Makefile lint aligned", "dependencies":[{ "issue_id": "bobs-brain-hvy.7", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:37.244226587-06:00", "created_by": "jeremylongshore"}]} |
| 22 | +{ "id": "bobs-brain-hvy.8", "title": "Story H: OpenTelemetry instrumentation + observability tests", "description": "In-memory span exporter for tests. Root trace per run. Spans for orchestrator step, agent invocation, tool call, persistence. Attributes: run_id, agent_name, tool_name, attempt, outcome. 2-3 tests asserting span parent/child relationships. Done when: otel assertion tests passing.", "status": "open", "priority": 3, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:37.352651807-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:37.352651807-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.8", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:37.363833242-06:00", "created_by": "jeremylongshore"}]} |
| 23 | +{ "id": "bobs-brain-hvy.9", "title": "Story I: Resilience tests (retries, timeouts, cancellation)", "description": "Retry/backoff policy tests with fake clock. Cancellation semantics. Idempotent re-run without double side effects. Timeout handling. Budget exhaustion tests. Done when: 5+ resilience tests passing.", "status": "open", "priority": 3, "issue_type": "task", "owner": "[email protected]", "created_at": "2026-02-15T18:45:37.554346342-06:00", "created_by": "jeremylongshore", "updated_at": "2026-02-15T18:45:37.554346342-06:00", "dependencies":[{ "issue_id": "bobs-brain-hvy.9", "depends_on_id": "bobs-brain-hvy", "type": "parent-child", "created_at": "2026-02-15T18:45:37.563950704-06:00", "created_by": "jeremylongshore"}]} |
13 | 24 | {"id":"bobs-brain-iyv","title":"Bob Orchestrator - Implementation Phase A","description":"Phase A: Add completion_promise to specialist outputs, enhance foreman with loop awareness. Smallest viable changes first.","status":"closed","priority":1,"issue_type":"epic","created_at":"2026-01-02T20:27:03.868348638-06:00","created_by":"jeremy","updated_at":"2026-01-02T20:32:10.41485335-06:00","closed_at":"2026-01-02T20:32:10.41485335-06:00","close_reason":"Phase A complete: completion_promise added to all specialists, loop pattern in foreman"} |
14 | 25 | {"id":"bobs-brain-iyv.1","title":"Add completion_promise to iam-adk AgentCard schema","description":"Add completion_promise field to iam-adk output schema as proof of concept","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-02T20:27:14.592789092-06:00","created_by":"jeremy","updated_at":"2026-01-02T20:28:26.295221409-06:00","closed_at":"2026-01-02T20:28:26.295221409-06:00","close_reason":"Added completion_promise to all 4 iam-adk skills in AgentCard","dependencies":[{"issue_id":"bobs-brain-iyv.1","depends_on_id":"bobs-brain-iyv","type":"parent-child","created_at":"2026-01-02T20:27:14.594325293-06:00","created_by":"jeremy"}]} |
15 | 26 | {"id":"bobs-brain-iyv.2","title":"Update iam-adk prompt with completion awareness","description":"Add instructions for when to output COMPLETE vs IN_PROGRESS vs BLOCKED","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-02T20:27:16.397622519-06:00","created_by":"jeremy","updated_at":"2026-01-02T20:29:17.946371626-06:00","closed_at":"2026-01-02T20:29:17.946371626-06:00","close_reason":"Added completion awareness to iam-adk system prompt with examples","dependencies":[{"issue_id":"bobs-brain-iyv.2","depends_on_id":"bobs-brain-iyv","type":"parent-child","created_at":"2026-01-02T20:27:16.399519244-06:00","created_by":"jeremy"}]} |
|
0 commit comments