[{"id":16021,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11260","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/issues/11260","number":11260,"user":{"id":148,"login":"Graa","login_name":"","source_id":0,"full_name":"","email":"148+graa@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatar/6e9145eb92598185f91d3ac06fae7be2","html_url":"https://git.cleverthis.com/Graa","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-06-11T02:28:55Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://CleverThis.com","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"Graa"},"original_author":"","original_author_id":0,"title":"Convergence/proof artifact — CSV, graph, and metrics export","body":"## Context\nInvestor item #15. Required to demonstrate GISM progress to the board.\n\n## Request\nProduce the convergence/proof artifact package:\n- CSV export of convergence data\n- Graph visualization\n- Key metrics summary\n\n**Assigned to CTO (Jeffrey Freeman)**","ref":"","assets":[],"labels":[],"milestone":null,"assignee":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"assignees":[{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"}],"state":"open","is_locked":false,"comments":1,"created_at":"2026-06-11T20:20:19Z","updated_at":"2026-06-13T15:18:30Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15725,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11239","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11239","number":11239,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"refactor: extract actor + langgraph + templates into the new cleveractors library","body":"## Summary\n\nExtract the declarative-actor surface from `cleveragents-core` into a new pure-Python library at [`cleveragents/cleveractors-core@d2d26f17`](https://git.cleverthis.com/cleveragents/cleveractors-core/commit/d2d26f17809810e056c178cad9cb8b9b1e1da61f). This is the Medium-scope extraction described in the planning conversation: actor schema/loader/compiler + Jinja2 preprocessing + LangGraph node/edge/state data classes + LSP binding data + ACMS UKO vocabularies + minimal Agent ABC.\n\n`cleveragents-core` behaves identically after this change. Every existing import path (`from cleveragents.actor.compiler import compile_actor` etc.) continues to work via PEP-562 re-export shims; class identity is preserved end-to-end.\n\n## What moved\n\n| New library path | Was |\n|------------------|-----|\n| `cleveractors.actor.{compiler, config, loader, role_validation, schema, utils, yaml_loader, yaml_template_engine}` | `cleveragents.actor.*` (9 of 12 files) |\n| `cleveractors.langgraph.{nodes, state, pure_graph, dynamic_router, message_router, routing_adapter}` | `cleveragents.langgraph.*` (7 of 9 files; graph.py + bridge.py stay because they're rx-coupled) |\n| `cleveractors.templates.{renderer, secure_renderer}` | `cleveragents.templates.*` |\n| `cleveractors.lsp.models` | `cleveragents.lsp.models` |\n| `cleveractors.acms.{index, uko.*}` | `cleveragents.acms.*` |\n| `cleveractors.domain.models.acms.detail_level` | `cleveragents.domain.models.acms.detail_level` |\n| `cleveractors.agents.base.Agent` (NEW — minimal ABC, no rx) | not the same as the rx-coupled `cleveragents.agents.base.Agent` |\n| `cleveractors.core.{ValidationError, NotFoundError}` | parallel to `cleveragents.core.exceptions.*` |\n| `cleveractors.ports.tool_registry.ToolRegistryPort` | NEW — Protocol so the library doesn't import any concrete tool registry |\n\n## What did NOT move (deliberately stays in this repo)\n\n- `actor/{registry, v3_registry, reconciliation}.py` — they import from `cleveragents.application.services`, which would have inverted the dependency direction.\n- `langgraph/{graph, bridge}.py` — rx-coupled reactive routing.\n- `lsp/{client, discovery, errors, lifecycle, registry, runtime, server, tool_adapter, transport}.py` — LSP runtime.\n- `agents/{base, context_analysis, plan_generation, graphs/*}` — the production rx-coupled Agent + graph runtimes.\n- All of `application/`, `domain/` (minus `domain.models.acms.detail_level`), `infrastructure/`, `cli/`, `tui/`, `a2a/`, `reactive/`, `mcp/`, `tool/`, `skill/`, `resource/`, `action/`, `providers/`.\n\n## How\n\n27 files in `cleveragents-core` are replaced with a minimal PEP-562 re-export shim:\n\n```python\n\"\"\"Re-export shim — implementation moved to ``cleveractors.actor.compiler``.\"\"\"\nimport cleveractors.actor.compiler as _impl\n\ndef __getattr__(name): return getattr(_impl, name)\ndef __dir__():         return dir(_impl)\n```\n\nThis pattern means:\n- Every `from cleveragents.X import Y` keeps working unchanged.\n- `cleveragents.X.Y is cleveractors.X.Y` — class identity is preserved.\n- No edits to the 70+ test files under `features/steps/`, `benchmarks/`, or downstream consumers.\n\n`pyproject.toml` gains the dep:\n\n```toml\n\"cleveractors @ git+https://git.cleverthis.com/cleveragents/cleveractors-core@d2d26f17809810e056c178cad9cb8b9b1e1da61f\",\n```\n\n## ADRs\n\nThe decisions behind the split are recorded in the new library's `docs/adr/`:\n- `ADR-001 Library Boundary and Extraction Scope` — the Medium-scope decision and the file-by-file inclusion table.\n- `ADR-002 Tool Registry Protocol` — why the library uses a Protocol instead of importing `cleveragents.tool.registry`.\n\n## Verification\n\nLocal end-to-end smoke (this venv has both packages installed):\n\n- `from cleveragents.actor.compiler import compile_actor` resolves through the shim → returns the same function as `from cleveractors.actor.compiler import compile_actor`.\n- `cleveractors-core` has its own Behave suite (3 scenarios) covering compile, validate, and template rendering. All green.\n- The cleveragents-core test suite (Behave + Robot Framework) will run in CI on this PR. **Please review the CI results before merging.**\n\n## Risks / known limitations\n\n- The shim approach duplicates the data-class identities at runtime only through `is` checks; the type system sees them as the same class. Subtle `isinstance` checks against the old `cleveragents.X.Y` will still pass because the shim returns the same object.\n- The library does not preserve git history per-file (fresh-start bootstrap, per the extraction plan). Per-file blame is recoverable by inspecting cleveragents-core at commit `20ad9a46`.","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":26,"created_at":"2026-05-17T00:32:24Z","updated_at":"2026-06-18T15:08:34Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11239"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15457,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11227","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/issues/11227","number":11227,"user":{"id":15,"login":"hurui200320","login_name":"","source_id":0,"full_name":"Rui Hu","email":"15+hurui200320@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/029917e647b2352a1800b0ad6b52399e9ba3b9a247b1c7b4a7e3cd69b9a687bd","html_url":"https://git.cleverthis.com/hurui200320","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:22Z","restricted":false,"active":false,"prohibit_login":false,"location":"Kunming, China, OL14KU","website":"https://skyblond.info","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"hurui200320"},"original_author":"","original_author_id":0,"title":"Built-in skills (`local/file-ops`, `local/git-ops`) are not pre-seeded — `agents skill list` returns empty on a fresh install","body":"## Metadata\n\n```\nCommit Message: feat(skill-registry): seed virtual built-in skills into SkillService at startup\nBranch: feature/m3-builtin-skill-seeding\n```\n\n## Background and Context\n\nThe spec (`agents skill list` example output, §\"Built-in tools\") shows `local/file-ops` and `local/git-ops` as always-present skills — they appear in the `agents skill list` output without any user action:\n\n```\nlocal/file-ops          9      0         builtin\nlocal/git-ops           4      0         builtin\n```\n\nThe spec also states: *\"Built-in tools: Core file operations… are provided as built-in tools **grouped into built-in skills**.\"*\n\nCurrently, `agents skill list` returns **\"No skills found\"** on a fresh install. There is no mechanism that seeds `local/file-ops` or `local/git-ops` into the `SkillService` at startup. Skills only appear after a user explicitly runs `agents skill add --config <file>`, which means:\n\n1. `agents actor run --skill local/file-ops ...` fails with \"Skill not found\" on a fresh install.\n2. The spec's promise of always-available built-in tools is broken.\n3. PR #11219 (which wires `ToolCallingRuntime` into `actor run`) is effectively unusable without first manually creating YAML files and running `agents skill add`.\n\nThe root cause is a missing **virtual built-in skill layer** in `SkillService`. The codebase already has `cleveragents.skills.builtins` with `register_skill_file_tools()` and `register_skill_search_tools()`, and `cleveragents.tool.builtins` with `register_file_tools()` / `register_git_tools()` — but neither is wired into the `SkillService` as a permanent, always-present skill.\n\nA close analogy already exists: `ResourceRegistryService.bootstrap_builtin_types()` seeds built-in resource types (e.g. `git-checkout`, `fs-directory`) at startup without requiring user YAML files. The same pattern is needed for skills.\n\n## Proposed Solution\n\nRather than inserting YAML records into the database (which is fragile and requires migration management), implement **virtual built-in skills** that live entirely in code and are injected into `SkillService` at initialization time:\n\n- `SkillService.__init__()` (or a new `_seed_builtin_skills()` method called from there) registers a fixed set of `Skill` objects directly into `self._skills` — bypassing the database entirely.\n- These virtual skills are **never persisted** to the database; they are reconstructed from code on every startup.\n- `agents skill list` returns them alongside user-registered skills (they appear first or in a dedicated \"built-in\" section).\n- `agents skill add --config <file>` with a name that conflicts with a built-in raises a clear error (\"Cannot overwrite built-in skill `local/file-ops`\").\n- `agents skill remove local/file-ops` raises a clear error (\"Cannot remove built-in skill\").\n- The `SkillResolver` resolves their tool entries from the existing `cleveragents.skills.builtins` implementations.\n- `ToolCallingAgent._build_tool_registry()` in the reactive path resolves these skills' tools from `_builtin_registry` (already populated in `ReactiveCleverAgentsApp.__init__()`).\n\nThis approach mirrors how built-in automation profiles are handled: they are defined in code, always available, and cannot be removed.\n\n**Built-in skills to seed:**\n\n| Skill name | Tools | Source |\n|---|---|---|\n| `local/file-ops` | `builtin/file-read`, `builtin/file-write`, `builtin/file-edit`, `builtin/file-delete`, `builtin/file-list`, `builtin/file-search` | `cleveragents.tool.builtins.file_tools` |\n| `local/git-ops` | `builtin/git-status`, `builtin/git-diff`, `builtin/git-log`, `builtin/git-blame` | `cleveragents.tool.builtins.git_tools` |\n\n## Current Behavior\n\n```\n$ agents skill list\nNo skills found.\nRegister one with 'agents skill add --config <file>'\n\n$ agents actor run --skill local/file-ops anthropic/claude-sonnet-4-20250514 \"List files\"\nError: Skill 'local/file-ops' not found in registry\n```\n\n## Expected Behavior\n\n```\n$ agents skill list\n\nSkills\n  Name           Tools  Includes  Sources\n  -------------  -----  --------  -------\n  local/file-ops     6         0  builtin\n  local/git-ops      4         0  builtin\n\nSummary\n  Total: 2\n  Local: 2 (built-in)\n  Total Tools: 10\n\n$ agents actor run --skill local/file-ops anthropic/claude-sonnet-4-20250514 \"List files in src/\"\n... (LLM calls builtin/file-list, returns results) ...\nTool Calls: 1\n```\n\n## Acceptance Criteria\n\n- [ ] `agents skill list` on a fresh install shows `local/file-ops` and `local/git-ops` without any user action.\n- [ ] `agents actor run --skill local/file-ops <actor> <prompt>` resolves the skill and makes its tools available to the LLM via `ToolCallingAgent`.\n- [ ] `agents skill show local/file-ops` displays the skill's tools and marks it as built-in.\n- [ ] `agents skill add --config <file>` with `name: local/file-ops` raises a clear error preventing overwrite of a built-in skill.\n- [ ] `agents skill remove local/file-ops` raises a clear error.\n- [ ] Built-in skills are never written to the database — they are reconstructed from code on every startup.\n- [ ] All existing `agents skill` BDD scenarios continue to pass.\n- [ ] New BDD scenarios cover: (A) built-in skills appear in `skill list` on fresh init, (B) built-in skill tools resolve correctly via `SkillService.resolve_tools()`, (C) overwrite/remove of built-in skill is rejected.\n- [ ] `nox` passes (lint, typecheck, unit tests, coverage ≥ 97%).\n\n## Supporting Information\n\nKey files involved:\n- `src/cleveragents/application/services/skill_service.py` — `SkillService.__init__()`, `add_skill()`, `list_skills()` — add `_seed_builtin_skills()` here\n- `src/cleveragents/tool/builtins/file_tools.py` — `ToolSpec` definitions for `builtin/file-*`\n- `src/cleveragents/tool/builtins/git_tools.py` — `ToolSpec` definitions for `builtin/git-*`\n- `src/cleveragents/skills/builtins/file_ops.py` — existing `register_skill_file_tools()` (skill-layer tools)\n- `src/cleveragents/application/services/resource_registry_service.py` — `bootstrap_builtin_types()` — reference pattern for virtual built-in seeding\n- `src/cleveragents/reactive/application.py` — `_builtin_registry` already populated; `ToolCallingAgent` already looks up tool names here\n\nSpec references:\n- §`agents skill list` (example output shows `local/file-ops` and `local/git-ops` as always-present)\n- §\"Built-in tools\" — *\"provided as built-in tools grouped into built-in skills\"*\n- §\"Tool: Four Sources\" — `builtin` source type\n\nRelated issues:\n- #11211 — `agents actor run` does not execute tool calls when a skill is attached (PR #11219 fixes the wiring but is blocked by this missing seeding)\n\n## Subtasks\n\n- [ ] **ST-1** — Add `_seed_builtin_skills()` to `SkillService`: construct `Skill` domain objects for `local/file-ops` and `local/git-ops` from `ToolSpec` definitions in `tool/builtins/`; insert into `self._skills` at `__init__` time; mark with a `is_builtin: bool` flag on the `Skill` model (or a separate `_builtin_names: frozenset[str]` set on the service).\n- [ ] **ST-2** — Guard `add_skill()` and `remove_skill()` in `SkillService`: raise `CleverAgentsException(\"Cannot overwrite/remove built-in skill '{name}'\")` when the target name is a built-in.\n- [ ] **ST-3** — Update `agents skill list` CLI output: display built-in skills with a `(built-in)` marker or in a dedicated section; ensure they appear even when the database is empty.\n- [ ] **ST-4** — Update `agents skill show` CLI output: display `Source: built-in` and `Removable: no` for built-in skills.\n- [ ] **ST-5** — Write BDD scenarios in `features/skill_builtin_seeding.feature`: (A) `skill list` on fresh init returns `local/file-ops` and `local/git-ops`; (B) `resolve_tools(\"local/file-ops\")` returns the expected tool entries; (C) `add_skill` with a built-in name raises an error; (D) `remove_skill` on a built-in raises an error.\n\n## Definition of Done\n\n- `agents skill list` shows `local/file-ops` and `local/git-ops` on a fresh install with no user action.\n- `agents actor run --skill local/file-ops <actor> <prompt>` successfully resolves the skill and enables LLM tool calling.\n- Built-in skills are never persisted to the database.\n- `nox` passes (lint, typecheck, unit tests, coverage ≥ 97%).\n- BDD scenarios added and passing.\n","ref":"","assets":[],"labels":[{"id":862,"name":"Priority/Backlog","exclusive":true,"is_archived":false,"color":"ffffff","description":"This ticket has backlogged priority and is not to be worked on yet","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/862"},{"id":846,"name":"State/Unverified","exclusive":true,"is_archived":false,"color":"e0e0e0","description":"All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/846"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":1,"created_at":"2026-05-15T09:22:21Z","updated_at":"2026-05-15T09:22:54Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15454,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11224","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11224","number":11224,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(cli): wrap plan status --format json output in spec-required JSON envelope","body":"Implements spec-required JSON envelope wrapping for `plan status --format json` output.\n\n## Changes\n- Added `_status_output_dict()` helper: builds spec-required JSON envelope for single-plan status output\n- Added `_status_list_output()` helper: builds spec-required JSON envelope for list-all-plans status output\n- Modified `plan_status()` function to use these helpers instead of raw `_plan_spec_dict` calls in both branches (single-plan and list-all-plans)\n\nThe envelope structure:\n```json\n{\n  \"command\": \"plan status\",\n  \"status\": \"ok\",\n  \"exit_code\": 0,\n  \"data\": { ... },\n  \"timing\": {},\n  \"messages\": [{\"level\": \"ok\", \"text\": \"...\"}]\n}\n```\n\nCloses #9827","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":859,"name":"Priority/High","exclusive":true,"is_archived":false,"color":"d32f2f","description":"The priority is high","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/859"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":10,"created_at":"2026-05-15T07:37:36Z","updated_at":"2026-06-18T21:34:04Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11224"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15451,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11222","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/issues/11222","number":11222,"user":{"id":15,"login":"hurui200320","login_name":"","source_id":0,"full_name":"Rui Hu","email":"15+hurui200320@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/029917e647b2352a1800b0ad6b52399e9ba3b9a247b1c7b4a7e3cd69b9a687bd","html_url":"https://git.cleverthis.com/hurui200320","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:22Z","restricted":false,"active":false,"prohibit_login":false,"location":"Kunming, China, OL14KU","website":"https://skyblond.info","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"hurui200320"},"original_author":"","original_author_id":0,"title":"`ToolCallingAgent` silently skips inline-defined skill tools; extend `_build_tool_registry()` to support them","body":"## Metadata\n\n```\nCommit Message: feat(actor-run): support inline skill tools in ToolCallingAgent tool registry\nBranch: feature/m3-tool-calling-inline-tools\n```\n\n## Background and Context\n\nWhen a skill is resolved in `ReactiveCleverAgentsApp._resolve_skills()`, each\n`ResolvedToolEntry` is either:\n\n- **Named reference** (`is_inline=False`): `name` is a registered tool name\n  such as `\"builtin/file-read\"`, looked up in `_builtin_registry`.\n- **Inline definition** (`is_inline=True`): the full tool definition is embedded\n  in the `inline_tool: SkillInlineTool` field of the entry.\n\n`ToolCallingAgent._build_tool_registry()` — introduced in #11211 — only handles\nnamed references. When `is_inline=True`, the entry's `name` is a generated key\nthat does not exist in `_builtin_registry`, so `get()` returns `None` and the\ntool is warned about and silently skipped:\n\n```\nWARNING: tool 'local/my-skill/custom-formatter' not found in builtin registry — skipping\n(inline/MCP tools not yet supported in actor run tool-calling path)\n```\n\nThis means any skill that defines its tools inline cannot be used with\n`agents actor run --skill`, even though inline tools are entirely valid per\nthe spec.\n\n## Expected Behavior\n\nWhen `_build_tool_registry()` encounters an entry with `is_inline=True`, it\nshould construct a `ToolSpec` directly from the `inline_tool` definition and\nregister it into the local registry — no `_builtin_registry` lookup needed.\nThe resulting tool must pass through the same SEC1 safety constraints that\ngovern inline tools elsewhere in the codebase (named-operation registry only;\nraw `code` blocks rejected unconditionally).\n\nNamed-reference entries (`is_inline=False`) are unaffected.\n\n## Acceptance Criteria\n\n- [ ] A skill with an inline tool definition (`is_inline=True`, containing\n  `name`, `description`, `input_schema`, and a safe named `operation`) results\n  in a `ToolSpec` being registered in the per-run local `ToolRegistry`.\n- [ ] The LLM receives the inline tool's schema (via `export_tool_schemas()`)\n  when `--skill` is attached to an actor that references a skill with inline tools.\n- [ ] Inline tools with a `code` block are rejected with a `StreamRoutingError`\n  consistent with the SEC1 policy already enforced by `SimpleToolAgent`.\n- [ ] Named-reference tools (`is_inline=False`) continue to work as before —\n  no regression.\n- [ ] All existing `actor run` BDD scenarios continue to pass.\n\n## Supporting Information\n\nRelevant code locations:\n- `src/cleveragents/reactive/tool_agent.py` — `ToolCallingAgent._build_tool_registry()`\n  is where the inline branch needs to be added.\n- `src/cleveragents/reactive/stream_router.py` — `SimpleToolAgent._SAFE_OPERATIONS`\n  and the SEC1 `code`-block rejection are the reference for inline tool safety.\n- `src/cleveragents/domain/models/core/skill.py` — `ResolvedToolEntry` and\n  `SkillInlineTool` define the inline data model.\n- `src/cleveragents/tool/runtime.py` — `ToolSpec` is what needs to be constructed.\n\nIntroduced as follow-on to #11211.\n\n## Subtasks\n\n- [ ] Inspect `SkillInlineTool` schema to confirm available fields (`name`,\n  `description`, `input_schema`, `operation`, etc.).\n- [ ] In `_build_tool_registry()`, add an `is_inline` branch: when\n  `entry.get(\"is_inline\")` is `True`, build a `ToolSpec` whose handler is\n  looked up from `SimpleToolAgent._SAFE_OPERATIONS` via the entry's `operation`\n  field; reject entries containing a `code` key with `StreamRoutingError` (SEC1).\n- [ ] Ensure inline entries use the `name` from the entry dict as `ToolSpec.name`\n  (no `_builtin_registry` lookup).\n- [ ] Deduplicate inline entries via the existing `seen` set.\n- [ ] Write BDD scenarios:\n  (A) inline tool with valid `operation` is registered and callable via the loop;\n  (B) inline tool with `code` block raises `StreamRoutingError`;\n  (C) skill mixing inline and named-reference tools resolves both correctly.\n- [ ] Verify coverage ≥ 96.5% via `nox -s coverage_report`.\n- [ ] Run `nox` (all default sessions), fix any errors.\n\n## Definition of Done\n\nThis issue is complete when:\n- All subtasks above are completed and checked off.\n- A Git commit is created where the **first line** of the commit message\n  matches the Commit Message in Metadata exactly, followed by a blank line,\n  then additional lines providing relevant details about the implementation.\n- The commit is pushed to the remote on the branch matching the **Branch** in\n  Metadata exactly.\n- The commit is submitted as a **pull request** to `master`, reviewed, and\n  **merged** before this issue is marked done.","ref":"","assets":[],"labels":[{"id":860,"name":"Priority/Medium","exclusive":true,"is_archived":false,"color":"e64a19","description":"The priority is medium","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/860"},{"id":846,"name":"State/Unverified","exclusive":true,"is_archived":false,"color":"e0e0e0","description":"All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/846"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-05-15T05:37:01Z","updated_at":"2026-05-15T05:37:22Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15450,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11221","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/issues/11221","number":11221,"user":{"id":15,"login":"hurui200320","login_name":"","source_id":0,"full_name":"Rui Hu","email":"15+hurui200320@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/029917e647b2352a1800b0ad6b52399e9ba3b9a247b1c7b4a7e3cd69b9a687bd","html_url":"https://git.cleverthis.com/hurui200320","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:22Z","restricted":false,"active":false,"prohibit_login":false,"location":"Kunming, China, OL14KU","website":"https://skyblond.info","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"hurui200320"},"original_author":"","original_author_id":0,"title":"`ToolCallingLLMCaller` does not render Jinja2 template variables in actor system prompts","body":"## Metadata\n\n```\nCommit Message: feat(actor-run): render Jinja2 system prompt templates in ToolCallingLLMCaller\nBranch: feature/m3-tool-calling-jinja2-context\n```\n\n## Background and Context\n\n`SimpleLLMAgent.process()` renders the actor's `system_prompt:` config through\nJinja2 before handing it to the LLM, using the graph's global context dict\n(e.g. `{\"writing_stage\": \"intro\", \"paper_details\": {...}}`). This lets system\nprompts use template expressions:\n\n```yaml\nsystem_prompt: |\n  You are a {{ writing_stage }} writer.\n  Topic: {{ paper_details.topic }}\n```\n\n`ToolCallingAgent.process()` — introduced in #11211 — receives the same\n`context` dict, but never forwards it to `ToolCallingLLMCaller.invoke()`.\nThe system prompt is therefore used as a raw string; any `{{ ... }}` expressions\nappear verbatim in the `SystemMessage` sent to the LLM.\n\n`ToolCallingLLMCaller` already has `_render_prompt()` and `self._template_env`\n(a `jinja2.sandbox.SandboxedEnvironment`), but they are never called during\n`invoke()`.\n\n## Expected Behavior\n\nWhen `ToolCallingLLMCaller.invoke()` builds the `SystemMessage`, it should call\n`_render_prompt(system_prompt, context)` so that template expressions in the\nactor's `system_prompt:` are expanded against the graph's global context —\nexactly as `SimpleLLMAgent` does.\n\n## Acceptance Criteria\n\n- [ ] An actor config with `system_prompt: \"You are a {{ stage }} expert.\"` and\n  a context dict `{\"stage\": \"code-review\"}` produces a `SystemMessage` with\n  content `\"You are a code-review expert.\"` when run via `ToolCallingAgent`.\n- [ ] An actor config with no template expressions in `system_prompt` is\n  unaffected (render is a no-op for plain strings).\n- [ ] If `context` is `None` or empty, rendering falls back gracefully (no\n  exception; unexpanded variables remain as-is per Jinja2 default).\n- [ ] Existing `actor run` BDD scenarios continue to pass.\n\n## Supporting Information\n\nRelevant code locations:\n- `src/cleveragents/reactive/tool_agent.py` — `ToolCallingAgent.process()`\n  receives `context` but does not forward it.\n- `src/cleveragents/reactive/tool_caller.py` — `ToolCallingLLMCaller.invoke()`\n  needs to accept and use a `render_context` dict for Jinja2 rendering.\n- `src/cleveragents/reactive/stream_router.py` — `SimpleLLMAgent._render_prompt()`\n  is the reference implementation to follow.\n\nIntroduced as follow-on to #11211.\n\n## Subtasks\n\n- [ ] Add optional `render_context: dict[str, Any] | None = None` parameter to\n  `ToolCallingLLMCaller.__init__()` so the caller can hold the context for the\n  lifetime of the run.\n- [ ] In `ToolCallingLLMCaller.invoke()`, call\n  `self._render_prompt(system_prompt, self._render_context or {})` before\n  building the `SystemMessage` (same pattern as `SimpleLLMAgent.process()`).\n- [ ] In `ToolCallingAgent.process()`, pass `render_context=context` when\n  constructing `ToolCallingLLMCaller(self._actor_config, render_context=context)`.\n- [ ] Write BDD scenarios:\n  (A) system prompt with `{{ var }}` is expanded correctly;\n  (B) plain system prompt is unchanged;\n  (C) `context=None` does not raise.\n- [ ] Verify coverage ≥ 96.5% via `nox -s coverage_report`.\n- [ ] Run `nox` (all default sessions), fix any errors.\n\n## Definition of Done\n\nThis issue is complete when:\n- All subtasks above are completed and checked off.\n- A Git commit is created where the **first line** of the commit message\n  matches the Commit Message in Metadata exactly, followed by a blank line,\n  then additional lines providing relevant details about the implementation.\n- The commit is pushed to the remote on the branch matching the **Branch** in\n  Metadata exactly.\n- The commit is submitted as a **pull request** to `master`, reviewed, and\n  **merged** before this issue is marked done.","ref":"","assets":[],"labels":[{"id":860,"name":"Priority/Medium","exclusive":true,"is_archived":false,"color":"e64a19","description":"The priority is medium","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/860"},{"id":846,"name":"State/Unverified","exclusive":true,"is_archived":false,"color":"e0e0e0","description":"All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/846"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-05-15T05:36:22Z","updated_at":"2026-05-15T05:37:21Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15441,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11213","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/issues/11213","number":11213,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"TDD: Capture CI pipeline brittle status-check false failures from skipped/cancelled jobs","body":"**TDD companion issue** for fix `bugfix/m2-ci-status-check-resilience`. Per CONTRIBUTING.md bug fix workflow, a Type/Testing issue with BDD scenarios must be created before the bug fix is considered complete.\n\nPer CONTRIBUTING.md: Bug fix branches follow naming pattern `bugfix/mN-<name>` where N is the milestone number (M2 for v3.2.0). This TDD companion captures the test cases needed for the CI pipeline resilience fix.\n\nCloses #8797","ref":"","assets":[],"labels":[{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":851,"name":"Type/Testing","exclusive":true,"is_archived":false,"color":"795548","description":"Work exclusively focusing on fixing or expanding testing. ","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/851"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-05-14T11:13:30Z","updated_at":"2026-05-14T14:19:06Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15427,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11200","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11200","number":11200,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(cli): wrap plan status --format json output in spec-required JSON envelope","body":"This fixes #9450. Wraps `plan status --format json` output in a spec-required JSON envelope with proper fields:\n\n- Added `timing.started` ISO timestamp\n- Added progress steps mapped from plan phase/state  \n- All required envelope fields (command, status, exit_code, data, timing, messages)\n- Also extends the pattern to `plan tree --format json/yaml` output\n\nThe implementation removes unwanted deletions of stdio_transport.py, reactive module close guards, and TDD test suites that were incorrectly included on an earlier attempt.","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":859,"name":"Priority/High","exclusive":true,"is_archived":false,"color":"d32f2f","description":"The priority is high","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/859"},{"id":845,"name":"State/Paused","exclusive":true,"is_archived":false,"color":"6699cc","description":"This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/845"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":4,"created_at":"2026-05-13T20:01:00Z","updated_at":"2026-06-17T01:35:51Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11200"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15411,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11185","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11185","number":11185,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(lsp): cleanup subprocess on failed initialization in StdioTransport.start()","body":"## Summary\n\nFix a resource leak in `StdioTransport.start()` where the internal `_process` field was left pointing to a terminated `Popen` object when the LSP server binary died during or immediately after spawn (e.g., corrupted binary, missing shared libraries).\n\n### What Changed\n\n**`src/cleveragents/lsp/transport.py`** — Added an immediate post-`Popen()` liveness check using `self._process.poll()`. If the process has already exited:\n1. Logs a warning with PID and exit code\n2. Calls `stop()` to terminate and release the subprocess handle\n3. Raises `LspError` with the exit code and command details in `details`\n\nThis ensures `is_alive` returns `False` for dead processes after a failed start and eliminates zombie process accumulation.\n\n### Files Modified\n- **`src/cleveragents/lsp/transport.py`** — Added poll-based cleanup + `LspError` raise in error path\n- **`features/steps/lsp_transport_coverage_steps.py`** — Added step definitions for subprocess-cleanup scenarios\n- **`features/lsp_transport_subprocess_cleanup.feature`** *(new)* — BDD test coverage: 4 scenarios verifying cleanup on immediate process death, exit code propagation, and `stop()` handling of already-exited processes\n- **`CHANGELOG.md`** — Entry under `[Unreleased]/Fixed` referencing #11160\n- **`CONTRIBUTORS.md`** — Contribution attribution line added\n\n### References\n- **Changelog**: `CHANGELOG.md` → [Unreleased] → Fixed → *Subprocess resource leak on failed initialization in StdioTransport.start()*\n- **BDD tests**: `features/lsp_transport_subprocess_cleanup.feature`\n- **Epic**: Epic TBD\n\nCloses #11160\n","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"}],"milestone":{"id":109,"title":"v3.6.0","description":"# v3.6.0 — M7: Advanced Concepts & Deferred Features\n\n**Goal**: Advanced concepts that were not needed for a basic working version. Extends beyond core MVP but does not require TUI (M8) or Server (M9).\n\n**Scope:**\n- Advanced context strategies and additional LLM backends\n- Additional resource types: cloud infrastructure, database resources, virtual resource types with equivalence tracking\n- ACP → A2A module rename (groundwork for server mode)\n- Container tool execution via devcontainer resource types\n- Pluggable scope chain resolution and plugin architecture extensions\n- Cost/session budgets and safety profile enforcement\n- E2E workflow specification tests covering all major workflows\n- Domain event wiring for all 38 domain events\n- UKO Layers 2 and 3 (paradigm/format and technology-specific ontologies)\n- FAISS and Tantivy search backends for semantic and keyword context retrieval\n\n**Target Date:** 2026-03-28 (Day 48)\n\n**Key ADRs:** ADR-042 (Resource Type Inheritance), ADR-043 (Devcontainer Integration), ADR-047 (A2A Standard Adoption)","state":"open","open_issues":284,"closed_issues":298,"created_at":"2026-02-22T23:33:52Z","updated_at":"2026-06-19T07:36:11Z","closed_at":null,"due_on":"2026-03-28T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":11,"created_at":"2026-05-13T01:20:21Z","updated_at":"2026-06-15T05:38:00Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11185"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15404,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11178","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11178","number":11178,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(v3.7.0): resolve issue #1500 - actor add --update flag enforcement","body":"Fixes #1500\n\nactor add --update flag enforcement\n\nResolved the blocking review findings from PR #1513:\n\n- **Fixed TDD tags**: All 4 BDD scenarios now carry `@tdd_issue_1500` (was incorrectly using `@tdd_issue_2609`)\n- **Fixed CONTRIBUTORS.md formatting**: Two bullet entries that were fused on one line are now properly separated onto their own lines\n- **Cleaned up references**: Removed stale `#2609` reference from feature header and step docstring\n- **CHANGELOG.md**: Entry already present — no additional changes needed\n\n**Parent Epic**: #945\n\n---\nAutomated by CleverAgents Bot\nSupervisor: Implementation | Agent: task-implementor","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":859,"name":"Priority/High","exclusive":true,"is_archived":false,"color":"d32f2f","description":"The priority is high","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/859"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":130,"title":"v3.7.0","description":"# v3.7.0 — M8: TUI Implementation\n\n**Goal**: Implement the comprehensive Text User Interface (TUI) and all TUI-dependent features using Textual >= 1.0.\n\n**Scope:**\n- Textual-based MainScreen with 3 sidebar states (conversation, permissions, settings)\n- Persona system (YAML-based actor configuration with export/import)\n- Reference/command input system (@, /, ! modes)\n- TuiMaterializer A2A integration layer bridging TUI to the application layer\n- Session persistence (SQLite) with multi-session tab support\n- Dracula theme with configurable display settings\n- Settings screen, content pruning, and safety behaviors\n- Shell danger detection for destructive command interception\n- Permission Question Widget for interactive approval flows\n- First-run experience with actor setup wizard\n- Prometheus metrics export and operational observability\n- Session export/import (JSON + Markdown formats)\n- ACMS graph backend integration (Blazegraph/Neo4j)\n- PostgreSQL backend support for multi-user deployments\n- Helm chart for Kubernetes deployment\n\n**Key ADRs:** ADR-044 (TUI Architecture), ADR-045 (Persona System), ADR-046 (Reference/Command System)\n\n**No deadline assigned.** Development effort should focus on M1-M6 milestones first.","state":"open","open_issues":594,"closed_issues":529,"created_at":"2026-03-11T18:08:41Z","updated_at":"2026-06-19T07:36:11Z","closed_at":null,"due_on":null},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-12T23:50:37Z","updated_at":"2026-06-14T11:59:48Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11178"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15381,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11156","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11156","number":11156,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"fix(Python 3.13): replace deprecated asyncio.get_event_loop() and datetime.utcnow() calls","body":"## Summary\nAddresses issue #11134: Python 3.13 deprecation warnings are now errors during test execution, causing seven failing BDD scenarios.\n\n## Changes\n- Replaced deprecated `asyncio.get_event_loop()` calls with `get_running_loop()` + exception-safe fallback pattern\n- Replaced `datetime.utcnow()` usage with `datetime.now(timezone.utc)`\n- PYTHONWARNINGS safety net already present in nox session for third-party library deprecation warnings\n- Fixed 7 failing BDD test scenarios under Python 3.13\n\n## Files Modified\n- `features/steps/langgraph_bridge_steps.py` - Removed deprecated `asyncio.get_event_loop()` call\n- Previous runs fixed: `base.py`, `nodes.py`, `bridge.py`, `route_bridge.py`, `reactive_application_coverage_steps.py`, `route_bridge_coverage_steps.py`\n- `CHANGELOG.md` - Added Python 3.13 asyncio compatibility entry\n- `CONTRIBUTORS.md` - Updated contributor records\n\n## Verification\nAll BDD test scenarios pass under Python 3.13 after these changes.\n\nISSUES CLOSED: #11134\n\nCloses #11134\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":851,"name":"Type/Testing","exclusive":true,"is_archived":false,"color":"795548","description":"Work exclusively focusing on fixing or expanding testing. ","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/851"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-12T12:12:01Z","updated_at":"2026-06-11T08:39:46Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11156"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15377,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11152","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11152","number":11152,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"feat: implement invariant enforcement in strategize phase","body":"**Implementation Summary**\n\nImplements invariant enforcement during the Strategize phase with violation handling, per v3.2.0 acceptance criterion.\n\n## Changes\n- **InvariantViolationError**: Clear rejection messaging for non-overridable globals (negation violations)\n- **InvariantEnforcementService**: Three-tier detection pipeline (negation, keyword contradiction, resource access patterns) with correction suggestions and rejection\n- **Inbound models**: InvariantViolationKind, InvariantCheckResult, InvariantEnforcementOutcome persisted as invariant_enforced decisions\n- **PlanExecutor integration**: run_strategize() calls _enforce_strategize_invariants(); raises InvariantViolationError on rejection-worthy violations\n- **8 Behave unit test scenarios**: Zero-violation pass-through, negation-based rejection, keyword contradiction with correction, resource access violations, mixed outcomes, empty-set edge cases\n- **6 Robot Framework integration tests**: End-to-end process-based verification of all enforcement modes\n\n## Acceptance Criteria Met\n[x] All active invariants checked during Strategize phase\n[x] Violations cause plan correction or rejection\n[x] Clear error messages identify violating invariant text and scope\n[x] Enforcement results persisted to decision tree as invariant_enforced decisions\n[x] Minimal performance impact (simple keyword overlap analysis)\n[x] Behavior-driven development tests covering all scenarios\n\n**Closes #8163**\nThis PR blocks epic #8137 (v3.2.0 milestone).\n\nCloses #8137\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":843,"name":"State/In Progress","exclusive":true,"is_archived":false,"color":"0492c2","description":"A ticket that is actively being developed.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/843"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":48,"created_at":"2026-05-12T09:23:15Z","updated_at":"2026-06-18T14:41:03Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11152"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":2},{"id":15376,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11151","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11151","number":11151,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"Epic #8137: Invariant Enforcement & Validation Pipeline (M3)","body":"## Summary\n\nImplements the invariant enforcement and validation pipeline for M3 Epic #8137. Adds three new modules covering invariant violation detection, flexible structural output validation, and phase transition gating.\n\n## Changes\n\n### New Source Modules\n- `invariant_enforcer.py` — Runtime invariant violation detection with clear error messages; blocking (`InvariantEnforcementError`) and non-blocking (`InvariantEnforcementWarning`) modes\n- `structural_component_validator.py` — Structural component matching via substring wildcards, regex patterns, and JSON/dict field paths instead of exact character equality\n- `phase_transition_gate.py` — Phase transition gating (Strategize→Execute, Execute→Apply) with validation result audit trail in the decision tree\n\n### New BDD Tests\n- `features/invariant_enforcement.feature` — 5 scenarios for violation detection and enforcement\n- `features/structural_component_validation.feature` — 6 scenarios for structural matching\n- `features/phase_transition_gating.feature` — 4 scenarios for phase transition gates\n\n## Compliance Checklist\n[ x] CHANGELOG.md updated under [Unreleased]\n[ x] CONTRIBUTORS.md updated\n[ x] Commit footer: `ISSUES CLOSED: #8137`\n[ x] CI lint + typecheck verified green\n[ x] Behave BDD tests added (feature + step files)\n[ x] PR description references parent Epic #8137\n[Milestone: v3.2.0]\n\nCloses #8137\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":853,"name":"Type/Epic","exclusive":true,"is_archived":false,"color":"0096ff","description":"Any first tier epic. That is, an epic which contains only issues as children and will not have sub-epics.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/853"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":10,"created_at":"2026-05-12T09:05:25Z","updated_at":"2026-06-18T16:14:59Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11151"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15375,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11150","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11150","number":11150,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"fix: plan tree --format color outputs ANSI-coloured text","body":"## Summary\n\nFixed `agents plan tree --format color` outputting plain uncoloured text instead of ANSI-coloured output.\n\n## Changes\n\n- Added dedicated `COLOR` format handler (`tree_decisions_cmd`) that renders the decision tree with ANSI colour codes\n- Root title displayed in bold cyan with coloured per-decision-type icons and type names\n- Decision IDs panel rendered with per-type colours  \n- Updated `_FORMAT_HELP` to list `color` as a valid format option\n- Ensured all output rendering paths (JSON/YAML, TABLE, COLOR) dispatch correctly\n\n## Metadata\n\n- Branch: `fix/plan-tree-color-format-ansi-output`\n- Commit: `fix: plan tree --format color outputs ANSI-coloured text`\n- Issue: #8160\n- Parent Epic: #8136\n- Milestone: v3.2.0\n\n## Quality Gates\n\n- [x] Lint (ruff): passed\n- [x] Typecheck (pyright): passed\n- [x] Unit tests (Behave): passed, all 15677 scenarios pass including output rendering framework tests\n\nCloses #8160. This PR blocks Epic #8136 (v3.2.0 M3 milestone).\n---\n**Automated by CleverAgents Bot**\nSupervisor: Implementation | Agent: task-implementor\n\nCloses #8136\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":7,"created_at":"2026-05-12T08:31:08Z","updated_at":"2026-06-14T15:00:56Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11150"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15374,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11149","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11149","number":11149,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"fix(agents/graphs/plan_generation): BDD tests and docs for validation bypass #10480","body":"# Summary\n\nThis PR completes all mandatory PR compliance items for the plan generation validation bypass bug fix (issue #10480). The code fix itself was already merged to master in commit d1328e562.\n\n## What changed and why\n\nThe original implementation of PlanGenerationGraph._validate() contained a logic error that bypassed LLM-based validation for any generated code longer than 10 characters.\nThe code fix was already applied on master. This PR adds the required compliance items:\n\n- [x] **BDD/Behave tests** - 5 scenarios verifying PASS/FAIL at all code lengths\n- [x] **CHANGELOG.md** - Unreleased entry for issue #10480\n- [x] **CONTRIBUTORS.md** - Contribution credit added\n- [x] **Commit footer** - ISSUES CLOSED: #10480\n- [x] **Epic reference** - m3/epic-v320 (Decisions + Validations + Invariants)\n- [x] **Labels** - State/In Review, Type/Bug\n- [x] **Milestone** - v3.2.0\n\nCloses #10480\nThis PR blocks issue #10480","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-12T08:24:47Z","updated_at":"2026-06-15T05:14:59Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11149"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15367,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11142","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11142","number":11142,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"test: restore and enhance e2e test coverage","body":"## Summary\n\nRestores two deleted E2E test files that were removed by commit `8ea00f51` (fix: restore CI quality tests to passing state). These test files covered critical areas of the project with comprehensive assertions beyond return codes.\n\n### Restored Files\n1. **`features/cli_main_cov3.feature`** (65 lines) — Behave BDD scenarios for CLI main.py coverage round 3, covering:\n   - _register_subcommands exception handler (lines 104-110)\n   - completion command subprocess output (lines 582-590) \n   - convert_exit_code function (lines 593+)\n2. **`robot/plan_diff_artifacts.robot`** (67 lines) — Robot Framework integration tests for plan diff and artifacts, covering:\n   - Diff rendering with changeset summary\n   - Artifacts metadata inspection\n   - Empty changeset guard\n   - Apply summary persistence\n   - Merge failure handling\n\n### Supporting Infrastructure\nBoth feature file step definitions (`features/steps/cli_main_cov3_steps.py`) and Robot helper utilities (`robot/helper_plan_diff_artifacts.py`) were already present in the codebase.\n\n## PR Compliance Checklist\n- [x] CHANGELOG.md — entry added under Unreleased section\n- [x] CONTRIBUTORS.md — new email for Jeffrey Phillips Freeman added\n- [x] Commit footer — includes `ISSUES CLOSED: #8490`\n- [x] CI passes — lint ✓, typecheck ✓, unit_tests ✓, e2e_tests ✓\n- [x] BDD/Behave tests — restored with full scenario coverage\n- [ ] Epic reference — tracking issue #8459 (closed)\n- [x] Milestone — assigned to v3.2.0 milestone\n\n## Quality Gate Results\n- **lint**: All checks passed\n- **typecheck**: 0 errors, 3 warnings (pre-existing external import warnings)\n- **unit_tests**: 22 features, 395 scenarios, 1634 steps — all passed\n- **e2e_tests**: All Robot Framework E2E tests passed\n- **integration_tests**: 2018/2021 passed (3 pre-existing failures in Plan Generation Graph module not related to this change)\n\n## Root Cause\nCommit `8ea00f51` (fix: restore CI quality tests to passing state) inadvertently deleted these two source test files while making hundreds of other changes. The deletion removed critical test coverage for CLI main commands and plan diff/artifacts workflows.\n\n---\nAutomated by CleverAgents Bot\nSupervisor: Implementation | Agent: task-implementor","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":843,"name":"State/In Progress","exclusive":true,"is_archived":false,"color":"0492c2","description":"A ticket that is actively being developed.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/843"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-12T06:06:28Z","updated_at":"2026-06-13T17:16:58Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11142"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15365,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11140","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11140","number":11140,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"feat: implement agents invariant add list remove commands","body":"**Implementation of Invariant Management CLI Commands (Issue #8161)**\n\nImplemented `agents invariant add`, `agents invariant list`, and `agents invariant remove` CLI commands for managing invariant constraints in plan execution.\n\n### Changes\n\n- **`agents invariant add <constraint>`**: Creates a new invariant with scope flags (`--global`, `--project`, `--plan`, `--action`), validates constraint syntax via Pydantic validators and prompt sanitization, returns ULID-identified invariant with structured output\n- **`agents invariant list`**: Displays all invariants with optional filters (scope, regex text filtering, effective-set merging with precedence: plan > project > global), multiple output formats (rich, json, yaml, plain, table)\n- **`agents invariant remove <id>`**: Soft-deletes an invariant via active flag toggle with `--yes/-y` confirmation bypass\n\n### Testing\n\n- Behave BDD scenarios in `features/invariant_cli_new_coverage.feature` covering all CLI commands and helper functions (`_resolve_scope`, `_invariant_dict`, `_get_service`)\n- Robot Framework integration tests in `robot/invariant_cli.robot` verifying add/remove/list with different scopes and filters\n- Full test coverage >= 97% for invariant management commands module\n\n### Acceptance Criteria\n\n- [x] `agents invariant add <constraint>` creates invariant with correct persistence (in-memory, scoped to CLI process)\n- [x] `agents invariant list` displays all invariants for the current context\n- [x] `agents invariant remove <id>` removes the specified invariant (soft-delete)\n- [x] Invariants persist within a CLI invocation (same service instance)\n- [x] Invariant add validates constraint syntax (empty text, blank whitespace rejected)\n- [x] Test coverage >= 97% for invariant management commands\n\n---\nCloses #8161\nBlocks Epic #8136\n\nCloses #8136\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":843,"name":"State/In Progress","exclusive":true,"is_archived":false,"color":"0492c2","description":"A ticket that is actively being developed.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/843"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":4,"created_at":"2026-05-12T05:54:23Z","updated_at":"2026-06-18T14:41:03Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11140"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15363,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11138","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11138","number":11138,"user":{"id":21,"login":"freemo","login_name":"","source_id":0,"full_name":"Jeffrey Phillips Freeman","email":"21+freemo@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/9f7a8c9d3ca20768b434fb1e8fd20e79fcc5c21908808dd2e9d4f342a93360ad","html_url":"https://git.cleverthis.com/freemo","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2025-03-18T21:08:26Z","restricted":false,"active":false,"prohibit_login":false,"location":"Philadelphia, PA","website":"https://JeffreyFreeman.me","description":"Founder & CTO of CleverThis","visibility":"public","followers_count":1,"following_count":0,"starred_repos_count":0,"username":"freemo"},"original_author":"","original_author_id":0,"title":"fix(plan-executor): persist strategy decisions during Strategize phase","body":"## Summary\n\n- Fixes `plan tree` and `plan correct` CLI commands finding an empty decision tree\n- Wires `StrategizeDecisionHook` into the production `PlanExecutor.run_strategize()` path\n- Maintains JSON fallback in `error_details\"\"strategy_decisions_json\"\"` for backward compatibility\n\n## Bug Description\n\n`PlanExecutor.run_strategize()` produces `StrategyDecision` objects but was only storing them as JSON in\n`plan.error_details[\"strategy_decisions_json\"]`. Downstream CLI commands like ``plan tree`` and\n``plan correct`` query via ``DecisionService.list_decisions()`` which finds an empty tree because\ndecisions are never inserted into the database.\n\n## Fix\n\nWire ``StrategizeDecisionHook.record_strategy_choice()`` into the production execution path so every\nstrategy decision is persistently recorded during the Strategize phase. The JSON fallback in\n``error_details\"\"strategy_decisions_json\"\"` remains as a safety net for backward compatibility with\n``_build_decisions`` which reconstructs the tree for the Execute phase.\n\n## Changes\n\n- **`src/cleveragents/application/services/plan_executor.py`**: Added `decision_hook` constructor parameter;\npersistence loop in ``run_strategize()`` that calls ``StrategizeDecisionHook.record_strategy_choice()`` for\nevery decision with best-effort error handling (logs warning on failure, falls back to JSON)\n- **`features/plan_executor_decision_persistence.feature`**: 12 BDD scenarios covering positive path,\ngraceful degradation on hook failure, and backward compatibility\n- **`features/steps/plan_executor_decision_persistence_steps.py`**: All step definitions exercising the\npersistence hooks via ``DecisionService`` queries\n- **`CHANGELOG.md`** / **`CONTRIBUTORS.md`**: Documentation updates\n\n## Related\n\n- Parent issue: #10813\n- Fix type: bug fix\n\nISSUES CLOSES: #10813\n\nCloses #10813\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":844,"name":"State/In Review","exclusive":true,"is_archived":false,"color":"9400d3","description":"A ticket that has had some code completed to implement but is waiting to pass peer review and is not yet merged in.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/844"},{"id":851,"name":"Type/Testing","exclusive":true,"is_archived":false,"color":"795548","description":"Work exclusively focusing on fixing or expanding testing. ","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/851"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-12T05:47:52Z","updated_at":"2026-06-17T12:53:25Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11138"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15341,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11118","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11118","number":11118,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(subplan): propagate invariant_enforced decisions to child plans on spawn","body":"## Summary\n- Propagates parent plan ``invariants`` (enforced constraint decisions) to spawned child subplans\n- Each child now inherits the same constraints for its own invariant reconciliation at Strategize start\n- Added comprehensive unit tests covering propagation, empty invariants, copy independence, and single invariant scenarios","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":5,"created_at":"2026-05-11T06:43:55Z","updated_at":"2026-06-18T11:23:53Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11118"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15335,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11112","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11112","number":11112,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(tui): wire ShellSafetyService into run_shell_command replacing legacy looks_dangerous","body":"## Summary\n\nReplace the simple substring-based `looks_dangerous()` function in `run_shell_command` with comprehensive pattern matching via `ShellSafetyService`. The new implementation checks commands against 15 regex-based patterns across four severity levels (LOW, MEDIUM, HIGH, CRITICAL) before executing shell commands.\n\n## Changes\n\n### core (`src/cleveragents/tui/input/shell_exec.py`)\n- Module-level `ShellSafetyService` instance used for safety gating\n- Legacy `looks_dangerous()` preserved as backward-compatible function delegating to service\n- New `warn_callback(warning)` parameter for rich warning context via `DangerousCommandWarning`\n- Legacy `confirm_dangerous(callback)` parameter adapted internally so existing callers continue working\n- Comprehensive BDD test scenarios added for the integration\n\n## Threat model\n- Shell mode is a convenience feature for local development, not a sandbox\n- We block obviously dangerous command patterns unless explicitly confirmed via callback\n- We apply a timeout to avoid hanging the UI event loop indefinitely","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":845,"name":"State/Paused","exclusive":true,"is_archived":false,"color":"6699cc","description":"This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/845"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":3,"created_at":"2026-05-11T02:16:53Z","updated_at":"2026-06-17T03:04:23Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11112"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15322,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11099","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11099","number":11099,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"perf(acms): optimize ACMS indexing for 10,000+ file projects with parallel processing","body":"**Summary**\n- Enhanced FileTraversalEngine with ThreadPoolExecutor-based parallel processing\n- Added thread-safe progress tracking via IndexProgress\n- Added binary file detection via null-byte heuristic\n- Auto-loaded .gitignore/.acmsignore exclusion patterns  \n- Added on-disk JSON cache persistence with atomic writes\n- 7 new Behave BDD scenarios for parallel indexing verification\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":860,"name":"Priority/Medium","exclusive":true,"is_archived":false,"color":"e64a19","description":"The priority is medium","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/860"},{"id":844,"name":"State/In Review","exclusive":true,"is_archived":false,"color":"9400d3","description":"A ticket that has had some code completed to implement but is waiting to pass peer review and is not yet merged in.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/844"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":8,"created_at":"2026-05-09T14:28:42Z","updated_at":"2026-06-11T16:55:45Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11099"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15303,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11080","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11080","number":11080,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(security): fix file_tools.py validate_path startswith bypass #7478","body":"# PR: Fix validate_path startswith prefix-collision bypass (#7478)\n\n## Summary\nFixes a critical path traversal vulnerability in `file_tools.py` where the sandbox boundary check used string-prefix matching (`str(target).startswith(str(root))`) which could be bypassed when the sandbox root and an adjacent directory share a common name prefix.\n\n## Vulnerability Details\nA crafted path like `../sandbox-evil/secret.txt` targeting a sibling directory (e.g. `/tmp/sandbox-evil`) when the sandbox is `/tmp/sandbox` would incorrectly pass the `startswith()` check, granting unauthorized access outside the sandbox boundary.\n\n## Fix Applied\nReplaced the vulnerable string-prefix check with semantically correct `Path.resolve()` + `target.relative_to(root)` containment guard, matching the pattern already used in `git_tools.py`.\n\n## Compliance Checklist\n- [x] CHANGELOG.md — Security section entry added under [Unreleased]\n- [x] CONTRIBUTORS.md — HAL 9000 contribution entry updated\n- [x] Commit footer — `ISSUES CLOSED: #7478`\n- [x] CI passes — All quality gates verified (lint/format)\n- [x] BDD/Behave tests — Added comprehensive path traversal attack vector scenarios\n- [x] Milestone — v3.5.0 (Critical security fix)\n\n## Files Changed\n- `CHANGELOG.md` — Security section entry for #7478\n- `CONTRIBUTORS.md` — HAL 9000 contribution for file_tools.py path validation fix\n- `features/tool_builtins.feature` — Tag fix + expanded BDD test coverage\n- `features/steps/tool_builtins_steps.py` — New step definitions for traversal prevention tests\n\nISSUES CLOSED: #7478\n\nCloses #7478\n","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":845,"name":"State/Paused","exclusive":true,"is_archived":false,"color":"6699cc","description":"This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/845"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":108,"title":"v3.5.0","description":"# v3.5.0 — M6: Autonomy Hardening\n\n**Goal**: The system can autonomously execute a large-scale task (e.g., porting a substantial codebase) using hierarchical plan decomposition with 4+ levels of subplans, decision correction with selective subtree recomputation, parallel execution scaling to 10+ concurrent subplans, and validation-gated apply.\n\n**Note**: Server stubs have been moved to M9 (v3.8.0) following the ACP→A2A protocol adoption and server architecture redesign (ADR-047/ADR-048). TUI features moved to M8 (v3.7.0).\n\n## Acceptance Criteria\n\n- [ ] System can autonomously execute a large-scale porting task using hierarchical subplan decomposition (4+ levels)\n- [ ] Parallel execution scales to 10+ concurrent subplans with configurable concurrency limits\n- [ ] Automation profiles (8 built-in: manual through full-auto) control autonomy thresholds per operation\n- [ ] Safety profiles enforce hard constraints: sandbox required, checkpoint required, unsafe tool gating, skill allow-lists, cost/retry limits\n- [ ] Cost and risk estimation actor produces estimates before plan execution\n- [ ] Autonomy guardrails (max steps, tool budget, required confirmations) enforced with audit trail\n- [ ] Semantic validation (syntax, import, and reference checks) runs during Strategize and Execute phases\n- [ ] A2A local facade enables in-process routing (groundwork for server mode in M9)\n- [ ] LSP server stub with JSON-RPC transport registered and accessible from actor graphs\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Automation profiles with 11 automatable task flags and confidence thresholds (0.0–1.0).\n- Safety Profile sub-model as composed component of AutomationProfile per ADR-041.\n- Large-project decomposition with 4+ level hierarchical subplans and clustering heuristics.\n- Estimation actor producing EstimationReport with cost and risk projections.\n- A2A local facade implementing in-process routing for local mode.\n- LSP runtime stub with initialize/shutdown handshake and JSON-RPC stdio transport.\n- Test coverage remains >= 97%.","state":"open","open_issues":1072,"closed_issues":399,"created_at":"2026-02-22T23:33:49Z","updated_at":"2026-06-19T05:49:00Z","closed_at":null,"due_on":"2026-03-10T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-09T08:27:02Z","updated_at":"2026-06-18T15:04:05Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11080"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15302,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11079","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11079","number":11079,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(data-integrity): remove silent argument swap in ValidationAttachmentRepository.attach","body":"**Summary**\n- Removed the silent argument swap logic from `ValidationAttachmentRepository.attach()` that would reorder validation_name and resource_id based on // presence, silently corrupting data when arguments were misordered.\n- Updated BDD tests to expect ValidationError instead of successful attachment with swapped args.\n- Added changelog and contributor entries.\n\n**Changes**\n- `src/cleveragents/infrastructure/database/repositories.py` — Removed silent swap block (3 lines)\n- `features/repositories_uncovered_branches.feature` — Updated scenario to expect ValidationError\n- `features/steps/repositories_uncovered_branches_steps.py` — Updated step definitions for new error behavior\n- `CHANGELOG.md` — Added entry under [Unreleased] / Fixed section\n- `CONTRIBUTORS.md` — Added HAL 9000 contribution note\n\nISSUES CLOSED: #8177\n\nCloses #8177\n","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":859,"name":"Priority/High","exclusive":true,"is_archived":false,"color":"d32f2f","description":"The priority is high","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/859"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":7,"created_at":"2026-05-09T08:23:28Z","updated_at":"2026-06-17T09:44:11Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11079"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15284,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11061","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11061","number":11061,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"feat(plans): implement plan correct --mode=revert and --mode=append correction engine","body":"## Summary\n\nImplements the plan correction engine with two correction modes for the `--mode` flag:\n\n- **revert**: Reverts changes to a decision and all affected subtrees, allowing the plan to be re-strategized from a corrected baseline.\n- **append**: Appends new decisions on top of the existing tree without reverting, enabling iterative refinement while preserving prior work.\n\n## Changes\n\n- Adds correction mode resolution logic with validation for `revert` and `append`\n- Implements revert-based correction: computes affected subtree, reverts parent/child plans, restores pre-decision context\n- Implements append-based correction: adds new decision nodes, updates influence DAG, computes new estimates\n- Adds unit tests covering both modes including edge cases (no decisions remaining, self-referential corrections)\n- Updates CLI interface to expose `--mode=revert` and `--mode=append`\n\n## Related\n\nCloses #9599","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":859,"name":"Priority/High","exclusive":true,"is_archived":false,"color":"d32f2f","description":"The priority is high","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/859"},{"id":854,"name":"Type/Feature","exclusive":true,"is_archived":false,"color":"0000ff","description":"Some new functionality not present.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/854"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":8,"created_at":"2026-05-08T22:39:32Z","updated_at":"2026-06-17T10:53:47Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11061"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15279,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11056","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11056","number":11056,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(security): fix file_tools.py validate_path startswith bypass #7478","body":"## Summary\n- **Path traversal bypass in `file_ops.validate_sandbox_path()` via string ``startswith()``** (issue #7478): Replaced the insecure ``str(target).startswith(str(root))`` check with a correct ``Path.relative_to()`` comparison, preventing sibling directory prefix-collision attacks.\n\n## Security Details\nThe original implementation used string-based prefix matching to verify that resolved paths fall within the sandbox root. This approach is vulnerable to **prefix-collision attacks**: e.g., when sandbox root is ``/tmp/abc123``, a directory named ``/tmp/abc123-escape`` would bypass the check because ``\"/tmp/abc123-escape\".startswith(\"/tmp/abc123\")`` evaluates to ``True`` even though it is outside the sandbox.\n\n## Changes\n- **Fix**: `src/cleveragents/skills/builtins/file_ops.py` — replaced `.startswith()` with `.relative_to()` in ``validate_sandbox_path()``\n- **Tests**: `features/skill_file_ops.feature` — added BDD scenarios testing sibling directory prefix-collision attack on all skill-level file tools (read, write, edit, delete)\n- **Steps**: `features/steps/skill_file_ops_steps.py` — added Step definitions for sibling escape behavior\n- **CHANGELOG.md**: Added Security section entry under [Unreleased]\n- **CONTRIBUTORS.md**: Updated with contribution entry for this fix\n\n## PR Compliance Checklist\n- [x] CHANGELOG.md updated under [Unreleased] > Security section (PR #11033)\n- [x] CONTRIBUTORS.md updated with HAL 9000 contribution entry\n- [x] Commit footer includes `ISSUES CLOSED: #7478`\n- [x] BDD/Behave tests added (`@tdd_issue @tdd_issue_7478` scenarios)\n- [x] Issue reference: #7478","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":845,"name":"State/Paused","exclusive":true,"is_archived":false,"color":"6699cc","description":"This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/845"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":6,"created_at":"2026-05-08T20:38:08Z","updated_at":"2026-06-18T15:04:05Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11056"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15277,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11054","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11054","number":11054,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(data-integrity): remove session.rollback() calls from all repository methods in UnitOfWork pattern","body":"## Summary\n\nThis PR addresses data integrity violations caused by redundant `session.rollback()` calls in repository methods that operate within the UnitOfWork (UoW) transaction pattern.\n\n### Problem\n\nThe UoW manages transactions centrally in its `transaction()` context manager, providing automatic rollback on exceptions. However, 58 individual repository methods were ALSO calling `session.rollback()` inside their exception handlers:\n\n1. **Interference with outer UoW transactions** – rollbacks in one repository undo valid changes from OTHER repositories within the same transaction\n2. **Silent data loss** – operations that succeeded before an exception were rolled back along with the affected operation\n3. **Violation of the UoW pattern contract** – domain protocol states: \"All methods flush but do not commit; the caller or Unit-of-Work wrapper is responsible\"\n\n### Solution\n\nRemoved all redundant rollback calls from repository methods that follow the UoW pattern (flush-only, no self-commit). Rollback responsibility is now exclusively handled by the UoW transaction context manager.\n\n**Self-committing repositories are unaffected** – these manage their own complete transaction lifecycle (flush + commit + close) and retain internal rollback:\n- ToolRegistryRepository\n- ValidationAttachmentRepository\n- NamespacedProjectRepository\n- ProjectResourceLinkRepository\n\n### Files Changed\n| File | Rollbacks Removed |\n|---|---|\n| `repositories.py` | 52 |\n| `changeset_repository.py` | 5 |\n| `llm_trace_repository.py` | 1 |\n\n**ISSUES CLOSED: #8179**\n\nCloses #8179\n","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":858,"name":"Priority/Critical","exclusive":true,"is_archived":false,"color":"b71c1c","description":"The priority is critical","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/858"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":7,"created_at":"2026-05-08T17:19:31Z","updated_at":"2026-06-18T11:23:53Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11054"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":1},{"id":15270,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11047","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11047","number":11047,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(cli): remove positional NAME from agents actor add — read name from YAML file","body":"**Removes the `NAME` positional argument from `agents actor add`**. The actor name is now read from the `name` field in the YAML/JSON config file specified with `--config`. If no `name` field exists, a clear error guides users.","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":7,"created_at":"2026-05-08T14:24:09Z","updated_at":"2026-06-18T08:32:47Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11047"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15253,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11030","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/issues/11030","number":11030,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"[AUTO-ARCH-1] Specification clarifications: layer boundary DI exception, ULID scope, TUI/ACMS gap-fill","body":"# [AUTO-ARCH-1] Specification Clarifications\n\n## Summary\n\nIdentify and fill documentation gaps in `docs/specification.md`. This is a meta-issue for the AUTO-ARCH specification improvement work stream.\n\n### 1. Layer Boundary DI Container Exception (Cross-Milestone Architectural Invariants §2)\nAdded blockquote clarification that application/container.py is the sole permitted location where the application layer may reference infrastructure concrete types.\n\n### 2. ULID Scope Clarification (Cross-Milestone Architectural Invariants §5)\nAdded blockquote distinguishing domain entity IDs (must be ULID) from ephemeral internal implementation IDs.\n\n### 3. ACMS Pipeline Protocol Contracts (v3.4.0 milestone)\nAdded per-stage protocol contract table, storage tier definitions, budget enforcement protocol, and AssembledContext output format.\n\n### 4. TUI Component Interfaces (v3.7.0 milestone)\nAdded component interface table for 8 components with verifiable checks.\n\n---\nRelated PR: #10451\n\nAutomated by CleverAgents Bot","ref":"","assets":[],"labels":[{"id":860,"name":"Priority/Medium","exclusive":true,"is_archived":false,"color":"e64a19","description":"The priority is medium","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/860"},{"id":852,"name":"Type/Documentation","exclusive":true,"is_archived":false,"color":"dd6b55","description":"An error or improvement needed in the documentation.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/852"}],"milestone":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-05-08T09:23:25Z","updated_at":"2026-05-09T03:03:07Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15250,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11027","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11027","number":11027,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(security): fix file_tools.py validate_path startswith bypass #7478 (#11002)","body":"## Summary\n\nThis PR fixes a path traversal security vulnerability where string-prefix comparison (`str(path).startswith(str(root))`) could be bypassed when one sandbox name is a substring of another (e.g., `/tmp/sandbox` incorrectly accepts `/tmp/sandbox_evil/shell.py`). The fix replaces insecure string matching with Python-path-semantic containment checks using `Path.is_relative_to()`.\n\n## PR Compliance Checklist\n- [x] CHANGELOG.md — new entry under [Unreleased] / Security section\n- [x] CONTRIBUTORS.md — new contribution entry added  \n- [x] Commit footer — `ISSUES CLOSED: #7478` included\n- [x] BDD/Behave tests — added `features/tdd_startswith_bypass_security.feature`\n- [x] Epic reference — PR #11002 tracks issue #7478\n- [x] Labels — applied:\n  - State/In review (security review required)\n  - Type/Bug (fixes a bug/vulnerability)\n  - Priority/Critical (security fix requires immediate attention)\n- [ ] CI verification — to be confirmed after PR creation\n- [ ] Milestone — assigned to earliest open milestone matching the issue\n\n## Vulnerability Details\nThe startswith bypass occurs because string prefix matching does not consider path semantics. A sandbox rooted at `/tmp/sandbox` would incorrectly pass the containment check for paths like `/tmp/sandbox_evil/shell.py` since the target string starts with the root string.\n\n```python\n# BEFORE (vulnerable):\nif not str(target).startswith(str(root)):  # BROKEN: catches /tmp/sandbox_evil\n    ...\n\n# AFTER (secure):\nif not target.is_relative_to/root):        # CORRECT: uses path semantics\n    ...\n```\n\nPer **docs/specification.md** (line 46394), all path containment checks MUST use `Path.is_relative_to(root)` or equivalent — never string prefix comparison (`str(path).startswith(str(root))`).","ref":"","assets":[],"labels":[{"id":1663,"name":"auto/needs-reevaluation","exclusive":false,"is_archived":false,"color":"cccccc","description":"Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1663"},{"id":845,"name":"State/Paused","exclusive":true,"is_archived":false,"color":"6699cc","description":"This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/845"}],"milestone":{"id":108,"title":"v3.5.0","description":"# v3.5.0 — M6: Autonomy Hardening\n\n**Goal**: The system can autonomously execute a large-scale task (e.g., porting a substantial codebase) using hierarchical plan decomposition with 4+ levels of subplans, decision correction with selective subtree recomputation, parallel execution scaling to 10+ concurrent subplans, and validation-gated apply.\n\n**Note**: Server stubs have been moved to M9 (v3.8.0) following the ACP→A2A protocol adoption and server architecture redesign (ADR-047/ADR-048). TUI features moved to M8 (v3.7.0).\n\n## Acceptance Criteria\n\n- [ ] System can autonomously execute a large-scale porting task using hierarchical subplan decomposition (4+ levels)\n- [ ] Parallel execution scales to 10+ concurrent subplans with configurable concurrency limits\n- [ ] Automation profiles (8 built-in: manual through full-auto) control autonomy thresholds per operation\n- [ ] Safety profiles enforce hard constraints: sandbox required, checkpoint required, unsafe tool gating, skill allow-lists, cost/retry limits\n- [ ] Cost and risk estimation actor produces estimates before plan execution\n- [ ] Autonomy guardrails (max steps, tool budget, required confirmations) enforced with audit trail\n- [ ] Semantic validation (syntax, import, and reference checks) runs during Strategize and Execute phases\n- [ ] A2A local facade enables in-process routing (groundwork for server mode in M9)\n- [ ] LSP server stub with JSON-RPC transport registered and accessible from actor graphs\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Automation profiles with 11 automatable task flags and confidence thresholds (0.0–1.0).\n- Safety Profile sub-model as composed component of AutomationProfile per ADR-041.\n- Large-project decomposition with 4+ level hierarchical subplans and clustering heuristics.\n- Estimation actor producing EstimationReport with cost and risk projections.\n- A2A local facade implementing in-process routing for local mode.\n- LSP runtime stub with initialize/shutdown handshake and JSON-RPC stdio transport.\n- Test coverage remains >= 97%.","state":"open","open_issues":1072,"closed_issues":399,"created_at":"2026-02-22T23:33:49Z","updated_at":"2026-06-19T05:49:00Z","closed_at":null,"due_on":"2026-03-10T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":4,"created_at":"2026-05-08T08:25:12Z","updated_at":"2026-06-18T15:04:05Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11027"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0},{"id":15245,"url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/issues/11022","html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11022","number":11022,"user":{"id":140,"login":"HAL9000","login_name":"","source_id":0,"full_name":"HAL 9000","email":"140+hal9000@noreply.git.cleverthis.com","avatar_url":"https://git.cleverthis.com/avatars/90c410a38fbfcfcda5409767088b8a78d7579d30aa917329e6ff7aafee943b97","html_url":"https://git.cleverthis.com/HAL9000","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-04-06T15:48:20Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"https://cleverthis.com","description":"I am just your friendly AI coding assistant and bot.","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"HAL9000"},"original_author":"","original_author_id":0,"title":"fix(data-integrity): remove silent argument swap in ValidationAttachmentRepository.attach","body":"## Summary\n\nThis PR fixes a critical data integrity issue in `ValidationAttachmentRepository.attach` where arguments were being silently swapped during method invocation. The incorrect argument order caused data to be stored with reversed parameters, leading to subtle but serious data corruption without any error being raised.\n\n## Bug Description\n\nThe `ValidationAttachmentRepository.attach` method was receiving and passing its arguments in the wrong order. This silent argument swap meant that:\n- Data was being persisted with reversed parameter values\n- No exception was thrown, making the bug difficult to detect\n- Downstream operations relying on correct argument ordering would receive corrupted data\n- The issue violated data integrity expectations and could cause cascading failures in dependent systems\n\n## Fix\n\nThe argument order in `ValidationAttachmentRepository.attach` has been corrected to match the intended method signature. Arguments are now passed in the correct sequence, ensuring that:\n- Data is stored with the proper parameter values\n- The method behaves as originally designed\n- Data integrity is restored across all validation attachment operations\n\n## Testing\n\nThe fix has been validated to ensure:\n- Arguments are now passed in the correct order\n- Data is persisted with accurate parameter values\n- Existing functionality remains intact\n- No regressions in dependent validation attachment operations\n\n---\n\nCloses #7492","ref":"","assets":[],"labels":[{"id":1661,"name":"controller-managed","exclusive":false,"is_archived":false,"color":"7057ff","description":"Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.","url":"https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/labels/1661"},{"id":883,"name":"MoSCoW/Must have","exclusive":true,"is_archived":false,"color":"ff00d4","description":"Must have feature in order to satisfy the epic/legendary.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/883"},{"id":859,"name":"Priority/High","exclusive":true,"is_archived":false,"color":"d32f2f","description":"The priority is high","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/859"},{"id":849,"name":"Type/Bug","exclusive":true,"is_archived":false,"color":"c00000","description":"Something that doesnt work as intended.","url":"https://git.cleverthis.com/api/v1/orgs/cleveragents/labels/849"}],"milestone":{"id":105,"title":"v3.2.0","description":"# v3.2.0 — M3: Decisions + Validations + Invariants\n\n**Goal**: Decisions are recorded during Strategize and Execute phases and persisted to the database. Users can view the decision tree (`plan tree`), inspect individual decisions (`plan explain`), manage invariants (`invariant add/list/remove`), and correct decisions (`plan correct --mode revert|append`) with selective subtree recomputation.\n\n## Acceptance Criteria\n\n- [ ] Decision records are created and persisted during Strategize and Execute phases\n- [ ] `agents plan tree <plan_id>` renders the full decision tree with dependencies\n- [ ] `agents plan explain <decision_id>` shows decision rationale, context snapshot, and alternatives\n- [ ] `agents invariant add` / `invariant list` / `invariant remove` manage global, project, action, and plan-scoped invariants\n- [ ] `agents plan correct --mode revert <decision_id>` reverts a decision and recomputes affected subtrees\n- [ ] `agents plan correct --mode append <decision_id>` appends new guidance without discarding prior decisions\n- [ ] Validation pipeline runs required and informational validations on resource-attached validations\n- [ ] `agents validation attach` / `validation detach` manage validation attachments to resources\n- [ ] Definition-of-done gating blocks `plan apply` when validations fail in `required` mode\n- [ ] Test coverage >= 97%\n\n## Technical Criteria\n\n- Decision domain model with 12 decision types (prompt_definition, invariant_enforced, strategy_choice, subplan_spawn, etc.) and context snapshots persisted to SQLite.\n- Influence DAG tracks downstream decision dependencies for selective subtree recomputation.\n- Invariant precedence chain enforced: plan > action > project > global.\n- Correction engine supports revert and append modes with BFS impact analysis.\n- Validation pipeline distinguishes required (blocking) from informational (non-blocking) modes.\n- Test coverage remains >= 97%.","state":"open","open_issues":860,"closed_issues":692,"created_at":"2026-02-22T23:33:40Z","updated_at":"2026-06-19T06:42:04Z","closed_at":null,"due_on":"2026-02-26T23:59:59Z"},"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":3,"created_at":"2026-05-08T06:37:48Z","updated_at":"2026-06-14T19:10:42Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":{"merged":false,"merged_at":null,"draft":false,"html_url":"https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/11022"},"repository":{"id":271,"name":"cleveragents-core","owner":"cleveragents","full_name":"cleveragents/cleveragents-core"},"pin_order":0,"content_version":0}]