Commit Graph

311 Commits

Author SHA1 Message Date
khyari hamza d0cfdecdd5 feat(cli): register v3 project and resource commands in main.py + DI wiring (B2.9) 2026-02-13 21:13:58 +00:00
khyari hamza 659e6c00ac feat(service): add project service v3 (B5-ITEM-5)
- ProjectServicePersistent: create, list_all, list_by_namespace, show, delete
- Resource registration, link/unlink via ProjectResourceLinkRepository
- Validation attachment summary helpers
- Persistence-backed (repositories + session commit)
- 11/11 BDD scenarios passing, 0 regressions (197 total)
- pyright 0 errors, ruff all checks passed
2026-02-13 21:13:40 +00:00
khyari hamza 334e5559a7 feat(service): add resource registry service (B5-ITEM-4)
- ResourceRegistryService: register, remove, show, tree, link_child, auto_discover
- Name/ULID resolution for all operations
- Auto-discovery hook registers git-checkout resources (MVP)
- Wraps ResourceRepository with session-level commit management
- 11/11 BDD scenarios passing, 0 regressions (176 total)
- pyright 0 errors, ruff all checks passed
2026-02-13 21:13:37 +00:00
khyari hamza 13638b1862 feat(repo): add project repositories (B5-ITEM-3)
- Added get_by_namespace() and get_by_namespace_and_name() to ProjectRepository
  for namespace-based filtering and lookup
- Created ProjectResourceLinkRepository with link/unlink/list_links/
  list_links_with_details/get_validation_summary operations
- Duplicate link guard raises ValueError on re-link attempt
- 10/10 BDD scenarios passing, 0 regressions
- pyright 0 errors, ruff all checks passed
2026-02-13 21:13:33 +00:00
khyari hamza ed10d7d208 feat: add scenarios for parsing namespaced project names and name validation 2026-02-13 21:13:01 +00:00
khyari hamza 281936ddd9 refactor: standardize Field defaults in project model classes 2026-02-13 21:12:57 +00:00
khyari hamza 453b310460 refactor: fix linting issues 2026-02-13 21:12:54 +00:00
khyari hamza 8b2ad60c5b feat: Add ValidationConfig and ContextConfig models with step definitions
- Introduced ValidationConfig for project validation commands including test, lint, type-check, and build commands.
- Added ContextConfig for project context indexing and filtering, with support for ignore/include patterns and file size limits.
- Implemented step definitions for both models in project_config_model_steps.py.
- Enhanced Project model to include validation_config and context_config fields.
- Created comprehensive step definitions for Resource model, including validation and manipulation steps in resource_model_steps.py.
- Updated resource.py to define Resource model with necessary fields and validation.
- Refactored project.py to integrate new models and maintain backward compatibility.
2026-02-13 21:12:50 +00:00
khyari hamza 6200c9327a feat: add ResourceType and SandboxStrategy enums with associated tests 2026-02-13 21:12:45 +00:00
brent.edwards fc6f4bfcf7 Merge pull request 'feat(domain): align plan model with spec' (#49) from feature/m1-plan-model into master
Reviewed-on: cleveragents/cleveragents-core#49
2026-02-13 20:50:30 +00:00
CoreRasurae f528d6c3a8 feat(domain): align plan model with spec
Step A2.beta
2026-02-13 20:34:57 +00:00
freemo 9b30421b34 feat(db): add spec-aligned action and plan tables with migrations, ORM models, and benchmarks 2026-02-13 13:05:20 -05:00
freemo fd6d41b371 feat(domain): align action model with spec 2026-02-13 09:41:28 -05:00
freemo a9d3672e8a docs: updated imp plan, improved format 2026-02-13 01:41:12 -05:00
brent.edwards 7620a8365e Merge pull request 'feature/q0-min-ci' (#45) from feature/q0-min-ci into master
Reviewed-on: cleveragents/cleveragents-core#45
Reviewed-by: Jeffrey Phillips Freeman <jeffrey.freeman@cleverthis.com>
2026-02-13 05:34:27 +00:00
brent.edwards af67476b99 test: force unreadable agentsignore branch in coverage steps
Simulate PermissionError on .agentsignore reads so the
_load_agentsignore exception path is exercised even when CI
runs as root.
2026-02-13 05:21:08 +00:00
brent.edwards 434cad5d1a chore(lint): fix ruff findings in coverage step files
- Normalize import ordering and remove unused imports
- Replace non-ASCII dashes in comments with ASCII hyphens
- Clean up unused assignments and use contextlib.suppress
- Adjust unused variable name in plan_cli_streaming steps
2026-02-13 05:01:27 +00:00
brent.edwards bb09434d5e chore(ci): pin ruff version in nox and nightly workflow
Ensures linting uses the same ruff version range in CI and nightly
jobs to avoid rule drift from latest releases.
2026-02-13 04:57:01 +00:00
brent.edwards 5da6de97ac Merge branch 'master' into feature/q0-min-ci 2026-02-13 04:46:07 +00:00
freemo 30f8e08f7e tests: Further improved test to get that 97% coverage we want 2026-02-12 23:35:53 -05:00
brent.edwards da3d0dfd06 chore(ci): re-enable pabot, add discovery resource stub
- Restore pabot-based integration_tests with conservative parallelism
  (<=2 processes by default) and support PABOT_PROCESSES/--processes
- Remove the temporary CI debug dump from noxfile.py
- Add robot/discovery_common.resource to silence non-fatal warning
- Document the change in implementation_plan.md
2026-02-13 04:32:45 +00:00
brent.edwards 6ffba3e2ba fix(ci): guard scientific_paper_basic cleanup when OpenAI key missing
- Avoid deleting the workspace when OPENAI_API_KEY is unset
  by guarding cleanup and initializing CONTEXT_DIR
- Prevents downstream Robot suites from losing .nox venv and
  resource files after the basic scientific paper suite is skipped
2026-02-13 04:15:14 +00:00
freemo e5b30bf6bf Merge branch 'feature/m1-plan-model' 2026-02-12 23:07:06 -05:00
freemo 36b4ec2b8d feat(domain): align plan model with spec 2026-02-12 22:58:15 -05:00
brent.edwards 51a6e76e9e fix(ci): merge duplicate Settings blocks, inject venv Python, add CI debug
Three fixes targeting CI integration_tests failures (18 failures on e8aa5ac):

1. Merge duplicate *** Settings *** blocks in 14 robot files into single
   blocks. Multiple Settings sections are non-standard RF practice and
   may cause resource import failures in certain Robot Framework versions
   or CI environments.

2. Replace bare 'python' with ${PYTHON} variable in all Run Process
   calls (14 files). Noxfile now passes --variable PYTHON:<venv-path>
   to robot so tests use the venv interpreter regardless of PATH. This
   fixes '/usr/local/bin/python: No module named cleveragents' on CI.

3. Add comprehensive CI debug output in noxfile.py: file existence
   checks for .resource files, PATH/Python resolution, fixture dir
   checks, and RF version. This will diagnose any remaining resource
   import issues.

Also: remove hardcoded '/app/src' sys.path.insert in
system_prompt_template_rendering.robot (not portable to CI), and
add trailing newline to common.resource.

All 204 tests pass locally (4 excluded: 2 slow, 2 discovery).
2026-02-13 03:43:44 +00:00
brent.edwards e8aa5ac268 fix(ci): restore venv PATH, use absolute resource paths, and add timeouts in robot tests
- Restore session.env["PATH"] in integration_tests nox session to ensure
  Run Process uses venv Python instead of system Python
- Convert bare Resource references to ${CURDIR}/ absolute paths across
  30 robot files to fix CI resolution failures
- Add timeout=30s to all Run Process calls in rxpy_route_validation.robot
  to prevent hanging tests
- Tag 2 rxpy tests as slow (require running actors unavailable on CI)
- Fix LangGraph test to use correct config file (LANGGRAPH_CONFIG)
- All 204 tests pass (4 excluded: 2 slow + 2 discovery)
2026-02-13 02:42:57 +00:00
brent.edwards 0059050836 fix(ci): replace pabot with robot for reliable CI execution
- integration_tests: replace pabot with sequential robot execution to
  eliminate FileNotFoundError caused by subprocess/FD exhaustion in
  constrained CI containers (pabot spawns a robot subprocess per suite;
  after ~24 suites the container cannot execve new processes)

- integration_tests: add resource debug output (open FD count, ulimit
  values) to help diagnose future CI container issues

- integration_tests: remove _pabot_parallel_args (no longer needed);
  slow_integration_tests session still available for parallel runs

- load_context_test: add env:TERM=dumb alongside NO_COLOR=1 to disable
  all Rich terminal styling (NO_COLOR only disables color, not bold/
  reset ANSI codes that may split substrings)

- load_context_test: add repr() debug logging around the --load-context
  match to reveal any invisible characters on CI
2026-02-13 01:37:32 +00:00
brent.edwards 25e6f95eb9 fix(ci): resolve security_scan and integration_tests CI failures
- security_scan: create build/ directory before bandit writes its JSON
  report (fails on fresh CI checkout where directory does not exist)

- integration_tests: cap pabot parallelism to 2 processes and explicitly
  propagate venv bin/ to PATH, preventing FileNotFoundError for the
  robot binary under CI resource constraints

- integration_tests: add env:NO_COLOR=1 to load_context_test.robot help
  text assertions so Rich ANSI escape codes do not break substring
  matching on CI

- integration_tests: tag initial_next_command_test as slow (requires
  OPENAI_API_KEY for LLM agent invocation, unavailable on CI)
2026-02-13 01:04:22 +00:00
brent.edwards 321ab18a37 fix(ci): resolve unit_tests and integration_tests CI failures
- Fix Rich Console line-wrapping breaking assertions in
  context_unit_tests_steps.py: collapse newlines before checking for
  filenames and overflow summaries (CI temp paths exceed 80 columns)
- Fix features.mocks import failure in database_integration.robot:
  replace hardcoded sys.path '/app' with portable ${CURDIR}/..
- Fix --load-context help text assertions in load_context_test.robot:
  merge stderr into stdout via stderr=STDOUT and remove duplicate test
- Add standalone dead_code nox session running vulture directly
- Rename security nox session to security_scan to match CI references
- Restore --exclude discovery to integration_tests nox session (lost
  during merge conflict resolution)
2026-02-13 00:15:58 +00:00
freemo 9ae038a431 Enforcing 97% coverage on nox file 2026-02-12 18:53:48 -05:00
brent.edwards 3e3530de48 ci(git-merge): Merging from master 2026-02-12 23:01:35 +00:00
brent.edwards e5b1b04ec6 test(integration_tests-3.13): fix nox tests
`integration_tests-3.13` was failing; it is now passing.
2026-02-12 22:48:19 +00:00
CoreRasurae 3adc9c1f47 chore: Fix conflicts in the implementation plan 2026-02-12 22:17:32 +00:00
freemo 89184689dc build: Coverage was broken, now fixed. 2026-02-12 17:02:21 -05:00
brent.edwards e801eb1ee8 feat(ci): add nox-based PR validation workflow
- Rewrite .forgejo/workflows/ci.yml to route all jobs through nox sessions
- Fix coverage_report nox session: serial behave mode replaces broken parallel
  mode (22% -> 97% accuracy), raise fail-under from 85% to 97%
- Pass posargs through format nox session for CI --check support
- Add 11 CI workflow validation scenarios (Behave) + Robot smoke test + ASV bench
- Add 108 new Behave scenarios covering 6 largest coverage gaps to reach 97%:
  yaml_template_engine, actor/config, actor/registry, message_router,
  context_analysis, context_service
- Update docs/development/ci-cd.md with nox-based CI docs and 97% threshold
- Restore implementation_plan.md verbose style, check off completed CI tasks

Verified: 1673 scenarios pass, 97% coverage, lint clean, typecheck clean
2026-02-12 22:01:51 +00:00
freemo 3d96c3d9ff Docs: made the glossary a little less verbose 2026-02-12 16:29:40 -05:00
CoreRasurae 5d1825fb60 ci: CI jobs need to have git command
Some tests require it
2026-02-12 20:20:00 +00:00
CoreRasurae e7ad541b71 build(env): Update security Vulture check exceptions 2026-02-12 20:19:57 +00:00
CoreRasurae aa299966ad build(env): Update noxfile config to include a secuity check with vulture 2026-02-12 20:19:55 +00:00
CoreRasurae 091c93838c build(env): Update noxfile config to also lint the behave features and robot tests 2026-02-12 20:19:52 +00:00
CoreRasurae c8f6bbaf9a build(env): Update noxfile config to be backward compatible with older behave 2026-02-12 20:19:49 +00:00
CoreRasurae f2f7aa5dc9 feat(core): add v3 lifecycle models, automation levels, subplan support, and security hardening
Implement multiple Stage A/B/E/SEC milestones for the v3 lifecycle system:
- Stage A5.3+A5.4: Add LifecycleActionModel and LifecyclePlanModel SQLAlchemy
  models with to_domain()/from_domain() conversion methods
- Stage A5.6: Implement ActionRepository with full CRUD, namespace/state
  queries, referential integrity checks, and retry decorator
- Stage E1: Add subplan domain models (ExecutionMode, SubplanMergeStrategy,
  SubplanConfig, SubplanStatus, SubplanAttempt, SubplanFailureHandler) with
  computed properties on Plan (is_subplan, is_root_plan, depth, has_subplans)
- Stage A6: Add AutomationLevel enum (MANUAL, REVIEW_BEFORE_APPLY,
  FULL_AUTOMATION), settings integration, PlanLifecycleService auto-progression,
  pause/resume, and CLI commands (--automation-level, set-automation-level)
- Stage SEC1: Remove eval()/exec() from stream_router.py, replace with named
  operation and transform registries; code blocks and unregistered transforms
  now raise StreamRoutingError
- Add langchain-anthropic dependency
- Update BDD tests for security changes and relax ADR directory requirement
2026-02-12 20:19:42 +00:00
freemo a1c1540a00 Docs: updated plan 2026-02-12 15:01:51 -05:00
freemo 453c1479de Docs: Fixed several descrepencies within the specification document 2026-02-12 14:48:30 -05:00
freemo ea81a5856b Docs: updated the glossary to make it more succinct 2026-02-12 14:20:29 -05:00
freemo 6c7a48e7dc Docs: split out some sections from the specification 2026-02-12 14:04:10 -05:00
freemo 687bf6b6ec Docs: using standard kroki server since ours appears to be down (or broken) 2026-02-12 13:41:26 -05:00
freemo 578bfbf102 Docs: updated implementation plan to remove discrepencies between it and the specification 2026-02-12 13:24:44 -05:00
freemo 31fd332c7b Docs: Updated implementation plan to eliminate indescrepencies with specification 2026-02-12 13:11:38 -05:00
freemo dc2fa53942 Docs: Updated the implementation plan, included more schedule adherance data as well 2026-02-12 13:08:01 -05:00