Adds IContentCrudService registration to UmbracoBuilder alongside IContentService. Both services are now resolvable from DI. Includes integration test verifying successful resolution. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
5.9 KiB
date, researcher, git_commit, branch, repository, topic, tags, status, last_updated, last_updated_by, type
| date | researcher | git_commit | branch | repository | topic | tags | status | last_updated | last_updated_by | type | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025-12-14T03:05:10+00:00 | Claude | c33cce455ca0daaaabaad586032e62c04a507d3c | refactor/ContentService | Umbraco-CMS | Phase 1 Publishing Pipeline Plan Merge Analysis |
|
in_progress | 2025-12-14 | Claude | implementation_strategy |
Handoff: Phase 1 Publishing Pipeline - Plan Merge Analysis
Task(s)
Analyzed two overlapping implementation plan documents to determine how to merge them and assessed current implementation progress.
Documents Analyzed
- Original Plan:
docs/plans/2025-12-13-phase-1-publishing-pipeline-implementation.md(17 tasks) - Fixes Plan:
docs/plans/2025-12-13-phase-1-implementation-fixes.md(11 tasks)
Key Finding
The "Fixes Plan" is authoritative - it corrects critical architectural issues in the original:
| Component | Original Plan | Fixes Plan |
|---|---|---|
| PublishingStrategy | IContentService.GetPagedDescendants |
IDocumentRepository.GetPage |
| PublishingExecutor | IContentService.Publish |
IDocumentRepository.Save |
| PublishingValidator | Sequential validation | Parallel.For + Environment.ProcessorCount |
| Benchmark | RuntimeMoniker.Net90 |
RuntimeMoniker.Net100 |
Implementation Status (Fixes Plan)
| Task | Description | Status |
|---|---|---|
| 1-3 | Documentation updates (ICultureImpactFactory, pipeline order, PublishAction) | Completed |
| 4 | IPublishingStrategy interface | Completed |
| 5 | PublishingStrategy with IDocumentRepository | Completed (code review passed) |
| 6 | BatchValidationContext | Completed |
| 7 | PublishingValidator with parallel processing | Completed (code review passed with fixes) |
| 8 | PublishingExecutor with IDocumentRepository | Pending |
| 9 | Integration tests | Pending |
| 10 | Benchmark RuntimeMoniker fix | Pending |
| 11 | ContentValidationResult (already done in Task 7) | Completed |
Critical References
- Fixes Plan (Authoritative):
docs/plans/2025-12-13-phase-1-implementation-fixes.md - Original Plan (Supplementary):
docs/plans/2025-12-13-phase-1-publishing-pipeline-implementation.md - Design Document:
docs/plans/2025-12-04-contentservice-refactoring-design.md
Recent changes
The previous handoff (2025-12-14_02-34-25_phase1-publishing-pipeline.md) documented commits through Task 5. Since then:
411cc4c595: feat(core): add BatchValidationContext record (Task 6)c33cce455c: feat(core): implement PublishingValidator with parallel processing (Task 7, amended with fixes)
Learnings
-
Fixes Plan supersedes Original Plan: The original plan had architectural issues (using IContentService instead of IDocumentRepository). Always use the fixes plan.
-
Missing pieces in Fixes Plan: The fixes plan doesn't include:
- Supporting types (PublishingOperation, SkippedContent, PublishingPlan) - these already exist from prior work
- DI registration (original Task 14)
- ContentPublishingService integration (original Task 15)
- IPublishingNotifier/PublishingNotifier (original Tasks 9-10)
-
Infrastructure vs Core: Components needing
ISqlContext(PublishingStrategy) must be inUmbraco.Infrastructure, notUmbraco.Core. This requiresInternalsVisibleToin Core.csproj. -
BatchValidationContext usage: The context is built but not fully utilized in PublishingValidator yet - it's infrastructure for future optimization when IPropertyValidationService is refactored.
Artifacts
Implementation files created (this session):
src/Umbraco.Core/Services/Publishing/BatchValidationContext.cssrc/Umbraco.Core/Services/Publishing/ContentValidationResult.cssrc/Umbraco.Core/Services/Publishing/IPublishingValidator.cssrc/Umbraco.Core/Services/Publishing/PublishingValidator.cstests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/Publishing/BatchValidationContextTests.cstests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/Publishing/PublishingValidatorTests.cs
Implementation files created (prior sessions):
src/Umbraco.Core/Services/Publishing/IPublishingStrategy.cssrc/Umbraco.Infrastructure/Services/Publishing/PublishingStrategy.cstests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/Publishing/PublishingStrategyTests.cs- Supporting types: PublishingOperation, SkippedContent, PublishingPlan (locations in
src/Umbraco.Core/Services/Publishing/)
Action Items & Next Steps
Option 1: Continue Fixes Plan Implementation (Remaining Tasks 8-10)
- Task 8: Implement PublishingExecutor with IDocumentRepository.Save
- Task 9: Create integration tests comparing pipeline to legacy
- Task 10: Update benchmark RuntimeMoniker to Net100
Option 2: Create Merged Plan Document
Combine both plans into a single authoritative document:
- Use fixes plan architecture (repository-based)
- Add missing pieces from original (DI registration, integration)
- Mark completed tasks
Option 3: Both
Create merged doc AND continue implementation.
Recommended
Option 3 - Create the merged plan for documentation clarity, then continue with Task 8 (PublishingExecutor).
Other Notes
Key directories:
- Pipeline types:
src/Umbraco.Core/Services/Publishing/ - Pipeline implementations:
src/Umbraco.Infrastructure/Services/Publishing/ - Unit tests:
tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/Publishing/ - Integration tests:
tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/
Skill in use: superpowers:subagent-driven-development - Dispatches fresh subagent per task with code review between tasks.
Performance target: Legacy PublishBranch at 50 items = 62.7 items/sec. Target is 2x = 125+ items/sec.
Previous handoff: thoughts/shared/handoffs/general/2025-12-14_02-34-25_phase1-publishing-pipeline.md