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>
6.1 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-14T02:34:25+0000 | Claude | 41ecbd1bc1122c87ee63fb47a732cebe8699a0e2 | refactor/ContentService | Umbraco-CMS | Phase 1 Publishing Pipeline Implementation |
|
in_progress | 2025-12-14 | Claude | implementation_strategy |
Handoff: Phase 1 Publishing Pipeline Implementation
Task(s)
Implementing Phase 1 of the ContentService publishing pipeline refactoring using subagent-driven development.
Plan Document: docs/plans/2025-12-13-phase-1-implementation-fixes.md
Task Status (11 total)
| Task | Description | Status |
|---|---|---|
| 1 | Update Phase 1 Design with ICultureImpactFactory Dependency | Completed |
| 2 | Document Pipeline Order Decision | Completed |
| 3 | Document PublishAction Enum Omission | Completed |
| 4 | Update IPublishingStrategy Interface | Completed |
| 5 | Implement PublishingStrategy with Repository | Completed (code review passed) |
| 6 | Create BatchValidationContext | Pending - next up |
| 7 | Implement PublishingValidator with Parallel Processing | Pending |
| 8 | Implement PublishingExecutor with Repository Batch Operations | Pending |
| 9 | Create Integration Tests Comparing Pipeline to Legacy | Pending |
| 10 | Update Benchmark to Use .NET 10.0 | Pending |
| 11 | Add ContentValidationResult with Factory Methods | Pending |
Current Phase: Task 6 is next
Critical References
- Implementation Plan:
docs/plans/2025-12-13-phase-1-implementation-fixes.md- The detailed implementation plan with code snippets for each task - Design Document:
docs/plans/2025-12-13-phase-1-publishing-pipeline-design.md- Phase 1 architectural design - Main Design:
docs/plans/2025-12-04-contentservice-refactoring-design.md- Overall ContentService refactoring design
Recent changes
f1401e8dd5: docs: add ICultureImpactFactory to Phase 1 validator dependenciesb7045649c9: docs: document pipeline order difference for branch publishingca448fd7c2: docs: document PublishAction enum omission in Phase 1a7b5f1d043: feat(core): add IPublishingStrategy interface4fc6c009da: test(perf): add PublishBranch performance baseline tests41ecbd1bc1: feat(core): implement PublishingStrategy with IDocumentRepository
Learnings
-
Implementation goes in Infrastructure, not Core: The plan specified implementation in
Umbraco.Core, butISqlContextdependency requires implementation inUmbraco.Infrastructure. Interface stays in Core, implementation goes to Infrastructure. -
InternalsVisibleTo required: Added
InternalsVisibleToforUmbraco.InfrastructureinUmbraco.Core.csprojso Infrastructure can access internal types likePublishingPlan. -
Baseline performance established: Legacy
PublishBranchperformance at 50 items = 62.7 items/sec. Target is 2x = 125+ items/sec. -
Test mocking pattern: For
VariesByCulture()extension method, mock the underlyingVariationsproperty onISimpleContentType, not the extension method directly. -
ContentType creation in tests: Don't use
ContentTypeBuilder. Use direct instantiation:new ContentType(ShortStringHelper, -1) { Alias = "...", Name = "...", Variations = ContentVariation.Nothing }
Artifacts
Created/Modified Files:
docs/plans/2025-12-13-phase-1-publishing-pipeline-design.md:87- Added ICultureImpactFactory dependencydocs/plans/2025-12-13-phase-1-publishing-pipeline-design.md:168- Added PublishAction omission notedocs/plans/2025-12-04-contentservice-refactoring-design.md:36- Added decision #10 for pipeline orderdocs/plans/2025-12-04-contentservice-refactoring-design.md:131-152- Updated Component Flow sectiondocs/plans/2025-12-14-phase-1-baseline-performance.md- Performance baseline documentsrc/Umbraco.Core/Services/Publishing/IPublishingStrategy.cs- Interface (27 lines)src/Umbraco.Infrastructure/Services/Publishing/PublishingStrategy.cs- Implementation (238 lines)src/Umbraco.Core/Umbraco.Core.csproj- Added InternalsVisibleTotests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/Publishing/PublishingStrategyTests.cs- Unit tests (159 lines)tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePublishBranchPerformanceTests.cs- Performance tests (121 lines)
Action Items & Next Steps
-
Resume from Task 6: Read the plan at
docs/plans/2025-12-13-phase-1-implementation-fixes.mdand continue with Task 6 (Create BatchValidationContext) -
Follow TDD pattern: For each task, write failing test first, then implementation, then verify tests pass, then commit
-
Use code review after implementation tasks: After Tasks 6, 7, 8 (the main implementation tasks), dispatch a code-reviewer subagent
-
Run performance tests after all tasks: Compare against baseline (62.7 items/sec target: 125+ items/sec)
-
Remaining tasks (6-11):
- Task 6: Create
BatchValidationContextrecord - Task 7: Implement
PublishingValidatorwith parallel processing - Task 8: Implement
PublishingExecutorwith repository batch operations - Task 9: Create integration tests comparing pipeline to legacy
- Task 10: Update benchmark to use .NET 10.0
- Task 11: Add
ContentValidationResultwith factory methods
- Task 6: Create
Other Notes
Skill in use: superpowers:subagent-driven-development - Dispatches fresh subagent per task with code review between tasks.
Baseline test command:
dotnet test tests/Umbraco.Tests.Integration \
--filter "FullyQualifiedName~ContentServicePublishBranchPerformanceTests" \
-v normal
Existing tests to verify (125 pass):
ContentServicePublishBranchTests: 20 testsContentPublishingServiceTests: 105 tests
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/