Skip to content

Rewrite Readiness with Signal Engine#28

Merged
digitarald merged 4 commits intomainfrom
digitarald/bitter-swallow
Feb 19, 2026
Merged

Rewrite Readiness with Signal Engine#28
digitarald merged 4 commits intomainfrom
digitarald/bitter-swallow

Conversation

@digitarald
Copy link
Copy Markdown
Owner

@digitarald digitarald commented Feb 18, 2026

"Rewrite Readiness with Signal Engine" — Replace Primer's criteria-based readiness internals with the Azure fork's signal/detector/recommender engine.

9 Phases:

  1. Signal Engine Foundation — Core types (Signal, Recommendation, Policy, Detector, Recommender) + executePolicies() engine + PolicyContext implementation
  2. Repo Health Detectors — Convert 16 existing criteria into signal-emitting detectors (lint-config, typecheck-config, build-script, ci-config, test-script, etc.)
  3. AI Tooling Detectors — Port 5 Azure fork detectors with 40+ patterns across all AI tools (Copilot, Claude Code, Cursor, Windsurf, Cline, Roo Code, Aider, etc.)
  4. Recommenders — Port 5 recommenders (missing files, invalid files, settings, location, MCP)
  5. Default Policy & Bridge Layer — Wire it together; bridge maps signals → ReadinessCriterionResult[] for backward compat. Detailed signal→criterion mapping table defined.
  6. Policy System Adapter — Wrap PolicyConfig as Policy internally via wrapPolicyConfig() adapter
  7. Command & Output Updates--verbose, --include-personal flags, recommendations in console/JSON/HTML
  8. VS Code Extension Updates — Recommendations tree section, AI Tooling Score
  9. Tests — Engine, detector, recommender, bridge tests + update existing readiness tests

Key Design Rules:

  • Signals are observations, not verdicts (detectors never compute pass/fail)
  • PolicyContext includes RepoAnalysis (required for repo health detectors)
  • ReadinessReport type preserved with additive fields (signals[], recommendations[], score, grade)

@digitarald digitarald self-assigned this Feb 18, 2026
…t ordering

- isAllowedSystemAlias() now returns true on win32 since lstat already
  confirmed no symlinks; realpath differences are just 8.3/case normalization
- Fix import ordering in 7 files to satisfy import-x/order lint rule
@digitarald digitarald changed the title Digitarald/bitter swallow Rewrite Readiness with Signal Engine Feb 19, 2026
- Replace blanket isAllowedSystemAlias win32 return with ancestor lstat walk
  to correctly distinguish 8.3 normalization from real symlinks
- Fix policy loadPolicy catch to handle cross-realm errors (instanceof Error
  fails across vitest worker threads)
@digitarald digitarald merged commit 5bba153 into main Feb 19, 2026
8 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