feat: Board Roadmap MVP task generation (#142)#17
Open
Conversation
Model fixes:
- task_dependency: error messages ('circular dependency', 'cannot depend on itself')
+ self.strict_loading_mode = :n_plus_one + skip circular check for self-deps
- task_template: global slug uniqueness now scoped to global templates only
(prevents fixture interference with create_defaults! tests)
- factory_cycle_log: belongs_to :factory_loop optional: true
- notification: add after_create :enforce_cap_for_user callback
- task/agent_integration: in_progress_requires_active_lease only checks
claimed tasks (agent_claimed_at.present?); requires_agent_output_for_done?
only checks claimed/session tasks (not just assigned)
Migrations:
- 20260218140000: allow null source on runner_leases
- 20260218140001: add expires_at to api_tokens
- 20260218140002: allow null factory_loop_id on factory_cycle_logs
Test fixes:
- task_dependency_test: add 3rd create for for_task scope; fix self-dep message
- openclaw_integration_status_test: clean up users(:two) in setup;
assert_raises(ArgumentError) for invalid enum value
- task_template_test: fix %w[] slug literal, validation_command commands,
ordered scope destroy_all, @board.slug → hardcoded slug, priority slugs
- agent_test_recording_test: delete_all fixtures before for_task assertion
- agent_auto_runner_service_test: add orchestration_mode pipeline_assist;
destroy onboarding boards to prevent sample task interference
- task_activity_test: actor → actor_name/type; fix record_creation(task)
and record_status_change(task, old_status:, new_status:) signatures
- behavioral_intervention_test: valid AuditReport (daily + score)
- openclaw_memory_search_health_service_test: service now uses HTTP probe
Service fixes:
- openclaw_memory_search_health_service: use HTTP probe instead of CLI
(post_json('/api/memory/search')) to match test expectations
View fixes:
- _panel.html.erb: mobile div classes include min-h-0 + overflow-y-auto
Controller fixes:
- file_viewer_controller: return 403 (not 404) for nonexistent files
… integration step 1)
…ns and routes (Item 1)
… delivery (Item 3)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Board Roadmap MVP with markdown checklist parsing and idempotent task generation from unchecked roadmap items.
What changed
BoardRoadmapmodel (1:1 withBoard)BoardRoadmapTaskLinkmodel (roadmap_item_key->task_id)- [ ] item)BoardRoadmapTaskGeneratorservicePATCH /boards/:board_id/roadmapPOST /boards/:board_id/roadmap/generate_taskscurrent_user.boards.findValidation
bin/rails db:migratebin/rails test test/services/board_roadmap_task_generator_test.rb test/controllers/boards/roadmaps_controller_test.rbBoth passed with 0 failures and 0 errors.