Skip to content

Feat/mcp generic phases fresh - #122

Merged
operetz-rh merged 3 commits into
feat/mcp-compass-publishfrom
feat/mcp-generic-phases-fresh
Oct 27, 2026
Merged

operetz-rh merged 3 commits into
feat/mcp-compass-publishfrom
feat/mcp-generic-phases-fresh

Conversation

@operetz-rh

@operetz-rh operetz-rh commented Oct 26, 2026 •

Copy link
Copy Markdown

Summary

Implements the write side for MCP evaluation results — generalize Phase 1+2 evaluation logic to support arbitrary phases, then publish results to Compass SoundCheck. Completes the reporting pipeline from local evaluation to centralized Compass dashboard for team visibility.

Changes

  • abevalflow/mcp/eval_result.py — generic domain model supporting Phase 1/2/3+ with pluggable loaders
  • abevalflow/mcp/checks/compass_publish.py — Compass-specific publish logic with FactRef mappings and payload builders
  • scripts/mcp/runners/compass_publish.py — CLI runner with dry-run default (safety-first)
  • scripts/mcp/bootstrap_compass_track.py — one-time track/check provisioning script
  • pipeline/tasks/konflux/mcp-compass-publish.yaml — Tekton task for pipeline integration
  • tests/test_mcp_compass_publish.py — 35 unit tests covering generic loaders, payloads, publish flow
  • scripts/mcp/README.md — documented local/cluster flows, Compass integration, entry points

Test plan

  • pytest tests/test_mcp_compass_publish.py — 35 tests pass
  • pytest tests/test_mcp_phase1.py tests/test_mcp_phase2.py — 108 tests pass
  • Live validation on mock MCP server:
    • Phase 1 FAIL (0.75 grade) / Phase 2 PASS (1.0 grade, 4/10 checks)
    • Dry-run: 10 facts logged (no HTTP)
    • Live publish: all 10 facts → Compass (HTTP 200)
  • Generic phase support verified:
    • Loader accepts Phase 4, Phase 1a, Phase 1b (no hardcoding)
    • FactRef mappings warn on unknown phases, proceed safely

…lishing

(dry-run + live modes). Live consume tool-name/oauth facts from API.
@operetz-rh
operetz-rh marked this pull request as draft October 26, 2026 11:58
Refactors compass publish and bootstrap to support arbitrary phase counts,
not just hardcoded phase1/2/3. Enables Phase 4+ by configuration only.

Changes:
- eval_result.py: Add phase3 to PHASE_CHECK_NAMES/SOURCE_DEFAULTS. Fix
  overall_score to default None pass scores to 1.0 not 0.0.
- bootstrap_compass_track.py: Refactor to build checks/levels dynamically
  from PHASE_FACT_MAPS. Imports PHASE_FACT_MAPS instead of individual maps.
- compass_publish.py: Already generic (uses .phases.items()). Fix doc
  reference phase2_compass_checks → conformance_eval_compass_checks. Fix
  evaluated_at to use passed param instead of hardcoding datetime.now().
- tests/test_mcp_compass_publish.py: Remove phase1_gate import/test,
  update bootstrap test for 3 levels.

Tested live: 18 facts published to Compass staging (phase1/2/3 all present).
All unit tests pass (36 compass + 76 phase tests).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@operetz-rh
operetz-rh force-pushed the feat/mcp-generic-phases-fresh branch from 3e41aa4 to 8ad5811 Compare October 26, 2026 12:02
@operetz-rh
operetz-rh marked this pull request as ready for review October 27, 2026 16:30
- Updated all phase name references from phase1/2/3 to new naming
- Fixed runners to output correct phase names
- Updated PHASE_FACT_MAPS, PHASE_SUMMARY_FACTS with new keys
- Updated PHASE_CHECK_NAMES, PHASE_SOURCE_DEFAULTS
- Updated bootstrap track metadata and order
- Updated test fixtures and assertions
- Verified e2e: Phase 1 real scans, Phase 2 live probes, publish to Compass
- 36/36 tests pass, all code aligned

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@operetz-rh
operetz-rh merged commit cdeffc1 into feat/mcp-compass-publish Oct 27, 2026
2 checks passed
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