Skip to content

add workflow manifests for autofix, mind-growth, and factory pipelines#2

Closed
Esity wants to merge 687 commits intoOptum:mainfrom
LegionIO:feature/workflow-bundles
Closed

add workflow manifests for autofix, mind-growth, and factory pipelines#2
Esity wants to merge 687 commits intoOptum:mainfrom
LegionIO:feature/workflow-bundles

Conversation

@Esity
Copy link
Copy Markdown
Member

@Esity Esity commented Mar 30, 2026

Summary

  • Add 4 workflow YAML manifests to workflows/ directory:
    • autofix-pipeline.yml — log triage → GitHub diagnose → LLM fix → PR ship (3 relationships)
    • mind-growth-build.yml — scaffold → implement → test → validate → register with retry on test failure (5 relationships)
    • mind-growth-swarm-parallel-build.yml — swarm create → parallel build → complete (2 relationships)
    • factory-develop-codegen.yml — factory develop stage delegates to lex-codegen (1 relationship)
  • Update CHANGELOG with new manifest entries

Test plan

  • All 5 manifests validate via Legion::Workflow::Manifest (14 total relationships)
  • 13 workflow specs pass (0 failures)
  • Full suite: 3994 examples, 7 pre-existing failures (unrelated to this change)

Esity added 30 commits March 23, 2026 03:59
Esity added 28 commits March 28, 2026 12:58
- spec/integration/absorber_pipeline_spec.rb: 12-example end-to-end
  test covering PatternMatcher resolution, Dispatch routing, transport
  suppression in lite mode, absorber → Apollo.ingest, depth/cycle guards
- bump VERSION 1.6.24 → 1.6.25
- Register absorbers with Router for API discovery (A1)
- Remove Routes::Lex, Routes::Hooks, hook_registry, route_registry (A2-A4)
- Add hook-aware dispatch to LexDispatch: verify/route/transform (A5)
- Auto-generate transport message classes from runner definitions (C1)
- Add broker purge-topology CLI for old AMQP exchange cleanup (C2)
- Guard Gaia/Transport/RBAC routes for library self-registration (B1-B3)
- Add v3.0 LexDispatch specs replacing old lex_spec.rb
- Fix routes builder log message to v3.0 path format

3950 specs, 0 failures, 0 rubocop offenses
…on (fixes #53)

the 5 self-registering route guards in api.rb used defined?(Legion::Transport::Routes)
to skip fallback registration, but defined? fires at require time while routes only
mount during boot via register_library_routes. changed guards to check
router.library_names.include? which tracks actual registration. also moved the router
class method above the register calls so it is available at class load time.
NoMethodError: undefined method 'mount' for class
Legion::Extensions::Hooks::Base raised on boot when any extension
hook called mount (e.g. lex-microsoft_teams Hooks::Auth). The v3.0
hooks rewrite introduced new DSL methods (route_header, route_field,
verify_hmac, verify_token) but omitted the mount/mount_path pair.

Adds mount(path) class method and mount_path reader to Hooks::Base
matching the stub defined in extension hook specs.
…actor classes

Builders::Hooks#build_hook_list called hook_class.runner_class (a class-level
call) which fell through to Helpers::Base#runner_class — an actor-specific
helper that uses sub! to swap 'Actor' for 'Runners' in the class name. For
hook classes (e.g. Hooks::Negotiate), the string has no 'Actor' segment so
sub! returns nil, causing Kernel.const_get(nil) to raise TypeError.

Two fixes:
- hooks.rb: call runner_class on a hook instance (the correct method), then
  resolve the result — string names via const_defined?/const_get, Class objects
  directly, nil falls back to hook_class. Extracted to resolve_hook_runner
  private helper to keep build_hook_list within cyclomatic complexity limit.
- helpers/base.rb: change sub! to sub (non-destructive) as a defensive guard
  so runner_class never passes nil to const_get if called on a non-actor class.
The hooks format changed to require a `hooks` array wrapper with
`type: command` entries. Updated both detection (supports old + new
format via hook_commands helper) and installation to emit the new
format. Fixes the "hooks: Expected array" warning on session start.
Previously only accessible via `legionio ai knowledge`. Now also
available directly as `legionio knowledge` for convenience and
hook compatibility (knowledge capture hooks use the top-level path).
replace Dynamic message (requires function_id DB lookup) with direct
Exchange::Logging publish in POST /api/logs — fixes NoMethodError
undefined method 'values' for nil when function_id is absent

also add Connection.ensure_knowledge lazy loader and wire it into all
knowledge CLI require guards instead of raising a static error
swarm: fix #55 (auto-merged, 3/3 validators + Copilot clean)
swarm: fix #56 (auto-merged, 3/3 validators + Copilot clean)
swarm: fix #58 (auto-merged, 3/3 validators + Copilot clean)
@Esity
Copy link
Copy Markdown
Member Author

Esity commented Mar 30, 2026

opened against wrong org, recreating against LegionIO/LegionIO

@Esity Esity closed this Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant