Skip to content

feat: split LucaCore into sub-targets and introduce LucaFoundation#87

Merged
albertodebortoli merged 2 commits into
mainfrom
worktree-feature+pipeline-manager-targets
May 25, 2026
Merged

feat: split LucaCore into sub-targets and introduce LucaFoundation#87
albertodebortoli merged 2 commits into
mainfrom
worktree-feature+pipeline-manager-targets

Conversation

@albertodebortoli
Copy link
Copy Markdown
Member

@albertodebortoli albertodebortoli commented May 25, 2026

Description

This PR reorganises the Swift package into a cleaner multi-target hierarchy:

  • LucaFoundation (renamed from the original LucaCore): shared primitives — models (Spec, Tool, Skill, ChecksumAlgorithm), protocols (SpecLoading, SubprocessRunning, Printing), and utilities (SpecLoader, SubprocessRunner, Printer, Constants).
  • PipelineCore: all logic for the run command (pipeline loading, running, validation, parameter resolution).
  • ManagerCore: all logic for install/uninstall/manage tools and skills.
  • LucaCore (new umbrella): re-exports LucaFoundation, PipelineCore, and ManagerCore via @_exported import so LucaCLI and tests only need a single import LucaCore.
  • SpecFinder and SpecInitializer live in the new LucaCore since they are only consumed by CLI commands, not by ManagerCore internals.

No breaking changes to external consumers — LucaCore still exports everything.

Type of Change

  • Feature
  • Bug fix
  • Maintenance / Refactor
  • Documentation
  • CI / Tooling
  • Other (specify)

How Has This Been Tested?

  • swift build passes locally
  • swift test passes locally — 481 tests, all passing
  • Tested on macOS (arm64)

Checklist

  • Swift code builds locally (swift build)
  • Tests pass locally (swift test)
  • Code style / formatting respected
  • Documentation updated (README / comments)

Breaking Changes?

  • No

Additional Notes

The @_exported import pattern on the umbrella LucaCore means all consumers continue to use a single import LucaCore without change. Internally, PipelineCore and ManagerCore both import LucaFoundation.

@albertodebortoli albertodebortoli marked this pull request as draft May 25, 2026 22:52
@albertodebortoli albertodebortoli added the feature New feature or enhancement label May 25, 2026
@albertodebortoli albertodebortoli added this to the 0.19.0 milestone May 25, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@albertodebortoli albertodebortoli force-pushed the worktree-feature+pipeline-manager-targets branch from d7baf9e to 3c3c33d Compare May 25, 2026 23:12
- PipelineCore: pipeline/run command logic (Pipeline* models, PipelineLoader,
  PipelineRunner, PipelineValidator, ParameterResolver, TaskConditionEvaluator)
- ManagerCore: install/manage tools and skills (Installer, ToolInstaller,
  SkillInstaller, Downloader, ArchitectureValidator, BinaryFinder, SelfUpdater,
  and all related components)
- LucaCore: shared foundation (Spec, Tool, Skill, ChecksumAlgorithm, Printer,
  SpecLoader, SpecFinder, SpecInitializer, SubprocessRunner)
- SubprocessRunner made public and moved to LucaCore as shared utility
- FileManaging moved to ManagerCore; PipelineValidatorFileManaging stays in
  PipelineCore and FileManagerWrapper conforms to it directly
- All 481 tests pass
@albertodebortoli albertodebortoli force-pushed the worktree-feature+pipeline-manager-targets branch from 3c3c33d to 7acf8b8 Compare May 25, 2026 23:24
Rename the original LucaCore to LucaFoundation (shared primitives:
models, protocols, SpecLoader, SubprocessRunner, Printer, Constants).
Introduce a new LucaCore umbrella that re-exports LucaFoundation,
PipelineCore, and ManagerCore via @_exported import, so LucaCLI and
tests only need a single import LucaCore.

Move SpecFinder and SpecInitializer into the new LucaCore since they are
only consumed by CLI commands, not by ManagerCore internals.
@albertodebortoli albertodebortoli force-pushed the worktree-feature+pipeline-manager-targets branch 2 times, most recently from 69b33ad to 8c1c5b8 Compare May 25, 2026 23:29
@albertodebortoli albertodebortoli marked this pull request as ready for review May 25, 2026 23:38
@albertodebortoli albertodebortoli added refactoring Refactoring work and removed feature New feature or enhancement labels May 25, 2026
@albertodebortoli albertodebortoli merged commit 7e25b0f into main May 25, 2026
3 checks passed
@albertodebortoli albertodebortoli deleted the worktree-feature+pipeline-manager-targets branch May 25, 2026 23:39
@albertodebortoli albertodebortoli changed the title feat: split LucaCore into sub-targets and introduce LucaFoundation umbrella feat: split LucaCore into sub-targets and introduce LucaFoundation May 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactoring Refactoring work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant