{
  "title": "Four-Pillar Evaluator Spec v1",
  "version": 1,
  "mode": "observational-only",
  "canonicalInput": {
    "serviceRegistry": "/service-registry-v1.json",
    "note": "Registry entries marked inferred or needs-verification reduce evaluator confidence."
  },
  "pillars": [
    {
      "name": "OICP",
      "inputs": {
        "routes": ["/oicp/dashboard", "/oicp/api/health"],
        "healthEndpoints": ["/oicp/api/health"],
        "artifactSources": ["service-registry-v1.json", "runtime monitor references", "deploy evidence"],
        "githubEvidence": ["commits touching OICP surfaces, docs, and artifacts"],
        "dependencies": ["Caddy routing", "OICP container health", "deploy alignment"]
      }
    },
    {
      "name": "Real Estate",
      "inputs": {
        "routes": ["/real-estate.html"],
        "healthEndpoints": ["route reachability only in v1"],
        "artifactSources": ["real-estate artifacts", "portal outputs", "service-registry-v1.json"],
        "githubEvidence": ["commits, docs, and related artifacts"],
        "dependencies": ["static portal serving", "artifact freshness", "deploy alignment"]
      }
    },
    {
      "name": "Community Sandbox / Living Lab",
      "inputs": {
        "routes": ["/community-sandbox/", "/community-sandbox/api/health"],
        "healthEndpoints": ["/community-sandbox/api/health"],
        "artifactSources": ["service-registry-v1.json", "runtime monitor", "deploy proof"],
        "githubEvidence": ["commits affecting app, gateway links, and sandbox surfaces"],
        "dependencies": ["app container", "Caddy route correctness", "deploy alignment"]
      }
    },
    {
      "name": "Fractional CTO",
      "inputs": {
        "routes": ["/fractional-cto.html"],
        "healthEndpoints": ["route reachability in v1"],
        "artifactSources": ["docs", "content artifacts", "static page presence"],
        "githubEvidence": ["recent commits, docs, and page updates"],
        "dependencies": ["portal static serving", "artifact freshness where applicable"]
      }
    }
  ],
  "checks": [
    "reachability",
    "freshness",
    "completeness",
    "evidence presence",
    "deploy alignment",
    "known blockers"
  ],
  "statusClassifications": [
    "healthy",
    "degraded",
    "stale",
    "blocked",
    "needs-human-review"
  ],
  "outputs": {
    "required": [
      "json artifact",
      "markdown summary",
      "per-pillar status",
      "recommended next action",
      "escalation flag"
    ],
    "phase1Note": "Specified in v1, but not yet automated."
  },
  "escalationRules": {
    "doNothing": "healthy state with current evidence and no significant blocker",
    "flagForReview": "degraded or stale but still explainable",
    "generateRecommendation": "clear next best action exists without requiring system mutation",
    "escalateToHuman": "blocked state, contradictory evidence, or high-sensitivity issue requiring Luis",
    "escalateToExternalModel": "bounded analysis support only, not action authority"
  },
  "evidenceModel": [
    "Git commit history",
    "deployed routes responding correctly",
    "artifact freshness",
    "logs and webhook receipts",
    "structured evaluation outputs"
  ],
  "operatingRules": [
    "never break working system for evaluation",
    "prefer observability over automation",
    "separate evaluation from action",
    "all meaningful evaluations must produce artifacts",
    "all recommendations must be explainable",
    "no automated remediation in v1"
  ],
  "phaseRoadmap": [
    "Phase 1: Observation",
    "Phase 2: Evidence integration",
    "Phase 3: Assisted recommendations",
    "Phase 4: Guided automation"
  ],
  "confidenceRules": [
    "missing routes reduce confidence",
    "stale artifacts reduce confidence",
    "unproven deploy alignment reduces confidence",
    "registry entries marked inferred or needs-verification reduce confidence"
  ]
}
