feat(acms): implement pipeline Phase 2 components (Deduplicator, DepthResolver, Scorer, Packer) #1287

Merged
freemo merged 1 commits from feature/m5-pipeline-phase2 into master 2026-04-02 17:09:07 +00:00

1 Commits

Author SHA1 Message Date
freemo e83412b1b6 feat(acms): implement pipeline Phase 2 components
CI / lint (pull_request) Successful in 29s
CI / quality (pull_request) Failing after 10s
CI / typecheck (pull_request) Successful in 47s
CI / unit_tests (pull_request) Failing after 6s
CI / integration_tests (pull_request) Failing after 1s
CI / e2e_tests (pull_request) Failing after 1s
CI / build (pull_request) Failing after 1s
CI / coverage (pull_request) Failing after 1s
CI / helm (pull_request) Failing after 1s
CI / security (pull_request) Successful in 1m5s
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 54m59s
Add spec-aligned Protocol type aliases for all Phase 2 (Fragment Fusion)
pipeline component interfaces, aligning with docs/specification.md
§44794-44856 naming conventions:

- FragmentDeduplicatorProtocol (alias for FragmentDeduplicator)
- DetailDepthResolverProtocol (alias for DetailDepthResolver)
- FragmentScorerProtocol (alias for FragmentScorer)
- BudgetPackerProtocol (alias for BudgetPacker)
- FragmentOrdererProtocol (alias for FragmentOrderer)

The production implementations (ContentHashDeduplicator, MaxDepthResolver,
WeightedCompositeScorer, GreedyKnapsackPacker) in acms_phase2.py satisfy
all acceptance criteria:

- ContentHashDeduplicator: SHA-256 content hashing, retains highest-scored
  duplicate per (uko_node, content_hash) key
- MaxDepthResolver: Retains highest detail_depth per UKO node, with
  relevance tiebreaking at equal depths
- WeightedCompositeScorer: Configurable weighted composite (relevance=0.4,
  hierarchy=0.3, quality=0.2, recency=0.1), stores breakdown in metadata
- GreedyKnapsackPacker: Greedy knapsack with depth fallback [9,4,2,0],
  minimum fragment token threshold (10)

All components implement v1 Protocol signatures and are DI-injectable
into ACMSPipeline constructor. 31 BDD scenarios cover all components.

ISSUES CLOSED: #540
2026-04-02 08:49:53 +00:00