mcp-efficiency-engine 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/autodocs-sync.yml +2 -15
- package/.github/workflows/release-npm.yml +111 -0
- package/FINAL_USAGE_GUIDE.md +56 -0
- package/README.md +133 -0
- package/autodocs/README.md +6 -0
- package/observability/metrics.md +33 -0
- package/observability/scoring-rubric.md +20 -0
- package/orchestrator/wiki/graph_consolidator.py +60 -1
- package/orchestrator/wiki/incremental_engine.py +23 -1
- package/orchestrator/wiki/plugin_manager.py +87 -22
- package/package.json +8 -2
- package/requirements.txt +1 -0
- package/scripts/intake/resolve-routing.py +124 -87
- package/scripts/intake/validate-database-routing.py +13 -4
- package/scripts/intake/validate-rag-routing.py +4 -3
- package/scripts/learning/learning-loop-report.py +28 -10
- package/scripts/ops/llm-token-probe.py +103 -39
- package/scripts/ops/telemetry-benchmark.py +184 -0
- package/scripts/wiki/compiler_main.py +108 -76
- package/scripts/wiki/providers/repo_content_provider.py +51 -0
- package/scripts/wiki/validator.py +40 -15
- package/telemetry/__init__.py +4 -0
- package/telemetry/bootstrap.py +47 -0
- package/telemetry/collector/engine.py +261 -0
- package/telemetry/config.json +20 -0
- package/telemetry/config.py +131 -0
- package/telemetry/context/propagation.py +85 -0
- package/telemetry/events/catalog.py +24 -0
- package/telemetry/events/factory.py +42 -0
- package/telemetry/exporters/base.py +16 -0
- package/telemetry/exporters/console/exporter.py +30 -0
- package/telemetry/exporters/json/exporter.py +34 -0
- package/telemetry/exporters/langsmith/exporter.py +415 -0
- package/telemetry/metrics/aggregator.py +60 -0
- package/telemetry/scoring/efficiency.py +68 -0
- package/telemetry/tracing/span.py +43 -0
- package/observability/evals/chat-token-usage-report.json +0 -64
- package/observability/evals/chat-token-usage-report.md +0 -33
- package/observability/evals/iteration-value-report.json +0 -76
- package/observability/evals/iteration-value-report.md +0 -39
- package/observability/evals/learning-loop-report.json +0 -268
- package/observability/evals/learning-loop-report.md +0 -37
- package/observability/evals/repo-intake-eval-cases.md +0 -23
- package/observability/evals/routing-eval-cases.json +0 -68
- package/observability/evals/routing-eval-cases.md +0 -25
- package/observability/evals/routing-eval-report.json +0 -72
- package/observability/logs/copilot-usage-ingest-report.json +0 -13
- package/observability/logs/iteration-metrics.jsonl +0 -75
- package/observability/logs/learning-feedback.jsonl +0 -152
- package/observability/logs/routing-decisions.jsonl +0 -333
- package/observability/logs/session/agent-pipeline-preflight-20260701-004146.log +0 -8
- package/observability/logs/session/agent-pipeline-preflight-20260701-005554.log +0 -8
- package/observability/logs/session/agent-pipeline-preflight-20260701-010351.log +0 -8
- package/observability/logs/session/agent-pipeline-preflight-20260704-145829.log +0 -8
- package/observability/logs/session/agent-pipeline-preflight-20260704-150021.log +0 -8
- package/observability/logs/session/agent-pipeline-preflight-20260704-154328.log +0 -8
- package/observability/logs/session/bye-20260629-221513.json +0 -39
- package/observability/logs/session/bye-20260629-221545.json +0 -59
- package/observability/logs/session/bye-20260629-222007.json +0 -52
- package/observability/logs/session/bye-20260629-222133.json +0 -59
- package/observability/logs/session/bye-20260629-222412.json +0 -45
- package/observability/logs/session/bye-20260629-223224.json +0 -52
- package/observability/logs/session/bye-20260629-224050.json +0 -59
- package/observability/logs/session/bye-20260630-105732.json +0 -24
- package/observability/logs/session/bye-20260630-211536.json +0 -87
- package/observability/logs/session/bye-20260630-223423.json +0 -87
- package/observability/logs/session/bye-20260630-232534.json +0 -87
- package/observability/logs/session/bye-20260701-003638.json +0 -126
- package/observability/logs/session/bye-20260701-003849.json +0 -126
- package/observability/logs/session/bye-20260701-004315.json +0 -138
- package/observability/logs/session/bye-20260701-004559.json +0 -76
- package/observability/logs/session/bye-20260701-005913.json +0 -138
- package/observability/logs/session/bye-20260701-010753.json +0 -138
- package/observability/logs/session/bye-20260703-194106.json +0 -24
- package/observability/logs/session/bye-20260703-233443.json +0 -76
- package/observability/logs/session/bye-20260703-233653.json +0 -76
- package/observability/logs/session/bye-20260704-150317.json +0 -152
- package/observability/logs/session/bye-20260704-150929.json +0 -75
- package/observability/logs/session/bye-20260704-151050.json +0 -75
- package/observability/logs/session/bye-20260705-115458.json +0 -165
- package/observability/logs/session/codegraph-status-20260701-004228.log +0 -39
- package/observability/logs/session/codegraph-status-20260701-004310.log +0 -39
- package/observability/logs/session/codegraph-status-20260701-005637.log +0 -39
- package/observability/logs/session/codegraph-status-20260701-005908.log +0 -39
- package/observability/logs/session/codegraph-status-20260701-010444.log +0 -39
- package/observability/logs/session/codegraph-status-20260701-010747.log +0 -39
- package/observability/logs/session/codegraph-status-20260704-150137.log +0 -26
- package/observability/logs/session/codegraph-status-20260704-150313.log +0 -28
- package/observability/logs/session/codegraph-status-20260704-154445.log +0 -26
- package/observability/logs/session/codegraph-status-20260705-115454.log +0 -27
- package/observability/logs/session/codegraph-sync-20260701-004211.log +0 -88
- package/observability/logs/session/codegraph-sync-20260701-004241.log +0 -82
- package/observability/logs/session/codegraph-sync-20260701-005620.log +0 -89
- package/observability/logs/session/codegraph-sync-20260701-005840.log +0 -88
- package/observability/logs/session/codegraph-sync-20260701-010419.log +0 -93
- package/observability/logs/session/codegraph-sync-20260701-010609.log +0 -90
- package/observability/logs/session/codegraph-sync-20260704-145856.log +0 -70
- package/observability/logs/session/codegraph-sync-20260704-150047.log +0 -53
- package/observability/logs/session/codegraph-sync-20260704-150204.log +0 -44
- package/observability/logs/session/codegraph-sync-20260704-154353.log +0 -26
- package/observability/logs/session/codegraph-sync-20260705-115337.log +0 -32
- package/observability/logs/session/hi-20260629-221459.json +0 -38
- package/observability/logs/session/hi-20260629-221945.json +0 -59
- package/observability/logs/session/hi-20260629-222108.json +0 -66
- package/observability/logs/session/hi-20260629-222352.json +0 -45
- package/observability/logs/session/hi-20260629-225719.json +0 -59
- package/observability/logs/session/hi-20260629-233722.json +0 -52
- package/observability/logs/session/hi-20260629-233913.json +0 -198
- package/observability/logs/session/hi-20260630-110156.json +0 -177
- package/observability/logs/session/hi-20260630-191243.json +0 -184
- package/observability/logs/session/hi-20260630-230050.json +0 -234
- package/observability/logs/session/hi-20260630-230523.json +0 -227
- package/observability/logs/session/hi-20260630-230855.json +0 -227
- package/observability/logs/session/hi-20260630-231638.json +0 -227
- package/observability/logs/session/hi-20260630-231756.json +0 -219
- package/observability/logs/session/hi-20260701-002842.json +0 -234
- package/observability/logs/session/hi-20260701-003458.json +0 -282
- package/observability/logs/session/hi-20260701-004233.json +0 -290
- package/observability/logs/session/hi-20260701-004554.json +0 -236
- package/observability/logs/session/hi-20260701-005641.json +0 -290
- package/observability/logs/session/hi-20260701-010450.json +0 -290
- package/observability/logs/session/hi-20260703-233854.json +0 -312
- package/observability/logs/session/hi-20260703-234448.json +0 -318
- package/observability/logs/session/hi-20260704-145907.json +0 -353
- package/observability/logs/session/hi-20260704-150141.json +0 -392
- package/observability/logs/session/hi-20260704-154448.json +0 -392
- package/observability/logs/session/iteration-value-refresh-20260701-004309.log +0 -3
- package/observability/logs/session/iteration-value-refresh-20260701-005907.log +0 -3
- package/observability/logs/session/iteration-value-refresh-20260701-010747.log +0 -3
- package/observability/logs/session/iteration-value-refresh-20260704-150312.log +0 -3
- package/observability/logs/session/iteration-value-refresh-20260705-115453.log +0 -3
- package/observability/logs/session/learning-loop-refresh-20260701-004309.log +0 -3
- package/observability/logs/session/learning-loop-refresh-20260701-005906.log +0 -3
- package/observability/logs/session/learning-loop-refresh-20260701-010745.log +0 -3
- package/observability/logs/session/learning-loop-refresh-20260704-150309.log +0 -3
- package/observability/logs/session/learning-loop-refresh-20260705-115450.log +0 -3
- package/observability/logs/session/project-notes-refresh-20260701-004227.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260701-004308.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260701-005636.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260701-005906.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260701-010443.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260701-010744.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260704-150133.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260704-150309.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260704-154442.log +0 -1
- package/observability/logs/session/project-notes-refresh-20260705-115449.log +0 -1
- package/observability/logs/session/repo-intake-20260701-004218.log +0 -6
- package/observability/logs/session/repo-intake-20260701-005626.log +0 -6
- package/observability/logs/session/repo-intake-20260701-010433.log +0 -6
- package/observability/logs/session/repo-intake-20260704-150053.log +0 -6
- package/observability/logs/session/repo-intake-20260704-154404.log +0 -6
- package/observability/logs/session/repo-intake-refresh-20260701-004247.log +0 -6
- package/observability/logs/session/repo-intake-refresh-20260701-005847.log +0 -6
- package/observability/logs/session/repo-intake-refresh-20260701-010615.log +0 -6
- package/observability/logs/session/repo-intake-refresh-20260704-150209.log +0 -6
- package/observability/logs/session/repo-intake-refresh-20260705-115342.log +0 -6
- package/observability/logs/session/repo-registry-validation-20260701-004234.log +0 -2
- package/observability/logs/session/repo-registry-validation-20260701-004556.log +0 -2
- package/observability/logs/session/repo-registry-validation-20260701-005833.log +0 -2
- package/observability/logs/session/repo-registry-validation-20260701-010601.log +0 -2
- package/observability/logs/session/repo-registry-validation-20260704-150155.log +0 -2
- package/observability/logs/session/repo-registry-validation-20260705-115323.log +0 -2
- package/observability/logs/session/repomix-refresh-20260701-003823.log +0 -4236
- package/observability/logs/session/repomix-refresh-20260701-004251.log +0 -4275
- package/observability/logs/session/repomix-refresh-20260701-005850.log +0 -4248
- package/observability/logs/session/repomix-refresh-20260701-010619.log +0 -6531
- package/observability/logs/session/repomix-refresh-20260704-150239.log +0 -652
- package/observability/logs/session/repomix-refresh-20260705-115419.log +0 -178
- package/observability/logs/session/routing-evals-20260701-004221.log +0 -2
- package/observability/logs/session/routing-evals-20260701-004235.log +0 -2
- package/observability/logs/session/routing-evals-20260701-005629.log +0 -2
- package/observability/logs/session/routing-evals-20260701-005834.log +0 -2
- package/observability/logs/session/routing-evals-20260701-010437.log +0 -2
- package/observability/logs/session/routing-evals-20260701-010603.log +0 -2
- package/observability/logs/session/routing-evals-20260704-150125.log +0 -2
- package/observability/logs/session/routing-evals-20260704-150157.log +0 -2
- package/observability/logs/session/routing-evals-20260704-154434.log +0 -2
- package/observability/logs/session/routing-evals-20260705-115327.log +0 -2
- package/observability/logs/session/sibling-discovery-refresh-20260701-004250.log +0 -3
- package/observability/logs/session/sibling-discovery-refresh-20260701-005850.log +0 -3
- package/observability/logs/session/sibling-discovery-refresh-20260701-010618.log +0 -3
- package/observability/logs/session/sibling-discovery-refresh-20260704-150238.log +0 -3
- package/observability/logs/session/sibling-discovery-refresh-20260705-115418.log +0 -3
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from datetime import datetime, timezone
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def utc_now() -> str:
|
|
9
|
+
return datetime.now(timezone.utc).isoformat()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class SpanRecord:
|
|
14
|
+
name: str
|
|
15
|
+
kind: str
|
|
16
|
+
span_id: str
|
|
17
|
+
parent_span_id: str | None
|
|
18
|
+
trace_id: str
|
|
19
|
+
execution_id: str
|
|
20
|
+
started_at: str
|
|
21
|
+
ended_at: str | None = None
|
|
22
|
+
duration_ms: float | None = None
|
|
23
|
+
status: str = "UNSET"
|
|
24
|
+
attributes: dict[str, Any] = field(default_factory=dict)
|
|
25
|
+
events: list[dict[str, Any]] = field(default_factory=list)
|
|
26
|
+
error: str | None = None
|
|
27
|
+
|
|
28
|
+
def add_event(self, name: str, attributes: dict[str, Any] | None = None) -> None:
|
|
29
|
+
self.events.append(
|
|
30
|
+
{
|
|
31
|
+
"name": name,
|
|
32
|
+
"timestamp": utc_now(),
|
|
33
|
+
"attributes": attributes or {},
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def end(self, *, status: str = "OK", error: str | None = None) -> None:
|
|
38
|
+
self.ended_at = utc_now()
|
|
39
|
+
self.status = status
|
|
40
|
+
self.error = error
|
|
41
|
+
start_dt = datetime.fromisoformat(self.started_at)
|
|
42
|
+
end_dt = datetime.fromisoformat(self.ended_at)
|
|
43
|
+
self.duration_ms = max(0.0, (end_dt - start_dt).total_seconds() * 1000.0)
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"timestamp": "2026-07-05T09:54:53.886533+00:00",
|
|
3
|
-
"source": "observability/logs/iteration-metrics.jsonl",
|
|
4
|
-
"filters": {
|
|
5
|
-
"source": "copilot-session",
|
|
6
|
-
"from": "",
|
|
7
|
-
"to": ""
|
|
8
|
-
},
|
|
9
|
-
"totals": {
|
|
10
|
-
"events": 36,
|
|
11
|
-
"input_tokens": 3893402,
|
|
12
|
-
"output_tokens": 126892,
|
|
13
|
-
"total_tokens": 4020294,
|
|
14
|
-
"copilot_credits": 816.9227
|
|
15
|
-
},
|
|
16
|
-
"breakdown": {
|
|
17
|
-
"model": {
|
|
18
|
-
"copilot/auto": {
|
|
19
|
-
"count": 36,
|
|
20
|
-
"input_tokens": 3893402,
|
|
21
|
-
"output_tokens": 126892,
|
|
22
|
-
"total_tokens": 4020294,
|
|
23
|
-
"copilot_credits": 816.9227
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"day": {
|
|
27
|
-
"2026-07-03": {
|
|
28
|
-
"count": 19,
|
|
29
|
-
"input_tokens": 2219137,
|
|
30
|
-
"output_tokens": 67846,
|
|
31
|
-
"total_tokens": 2286983,
|
|
32
|
-
"copilot_credits": 492.07088600000003
|
|
33
|
-
},
|
|
34
|
-
"2026-07-04": {
|
|
35
|
-
"count": 9,
|
|
36
|
-
"input_tokens": 876490,
|
|
37
|
-
"output_tokens": 21560,
|
|
38
|
-
"total_tokens": 898050,
|
|
39
|
-
"copilot_credits": 160.161499
|
|
40
|
-
},
|
|
41
|
-
"2026-07-05": {
|
|
42
|
-
"count": 8,
|
|
43
|
-
"input_tokens": 797775,
|
|
44
|
-
"output_tokens": 37486,
|
|
45
|
-
"total_tokens": 835261,
|
|
46
|
-
"copilot_credits": 164.690315
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"license": {
|
|
51
|
-
"plan": "business",
|
|
52
|
-
"seats": 1,
|
|
53
|
-
"included_credits_per_user_month": 19.0,
|
|
54
|
-
"included_credits_total_month": 19.0,
|
|
55
|
-
"official_plans_url": "https://github.com/features/copilot/plans?ref_cta=View+pricing+and+plans&ref_loc=hero&ref_page=%2Ffeatures_copilot_copilot_business&plans=business"
|
|
56
|
-
},
|
|
57
|
-
"budget": {
|
|
58
|
-
"used_copilot_credits": 816.9227,
|
|
59
|
-
"budget_utilization_rate": 42.995932,
|
|
60
|
-
"overage_credits": 797.9227,
|
|
61
|
-
"equivalent_seats_used": 42.995932,
|
|
62
|
-
"percent_of_one_seat": 4299.59
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Chat Token Usage Report
|
|
2
|
-
|
|
3
|
-
- timestamp: 2026-07-05T09:54:53.886533+00:00
|
|
4
|
-
- source: observability/logs/iteration-metrics.jsonl
|
|
5
|
-
- filter.source: copilot-session
|
|
6
|
-
- filter.from:
|
|
7
|
-
- filter.to:
|
|
8
|
-
- plan: business
|
|
9
|
-
- seats: 1
|
|
10
|
-
- official_plans_url: https://github.com/features/copilot/plans?ref_cta=View+pricing+and+plans&ref_loc=hero&ref_page=%2Ffeatures_copilot_copilot_business&plans=business
|
|
11
|
-
|
|
12
|
-
## Totals
|
|
13
|
-
|
|
14
|
-
- events: 36
|
|
15
|
-
- input_tokens: 3893402
|
|
16
|
-
- output_tokens: 126892
|
|
17
|
-
- total_tokens: 4020294
|
|
18
|
-
- copilot_credits: 816.9227
|
|
19
|
-
- included_credits_total_month: 19.0
|
|
20
|
-
- budget_utilization_rate: 42.995932
|
|
21
|
-
- overage_credits: 797.9227
|
|
22
|
-
- equivalent_seats_used: 42.995932
|
|
23
|
-
- percent_of_one_seat: 4299.59
|
|
24
|
-
|
|
25
|
-
## Breakdown by Model
|
|
26
|
-
|
|
27
|
-
- copilot/auto: count=36, input=3893402, output=126892, total=4020294, credits=816.9227
|
|
28
|
-
|
|
29
|
-
## Breakdown by Day
|
|
30
|
-
|
|
31
|
-
- 2026-07-03: count=19, input=2219137, output=67846, total=2286983, credits=492.070886
|
|
32
|
-
- 2026-07-04: count=9, input=876490, output=21560, total=898050, credits=160.161499
|
|
33
|
-
- 2026-07-05: count=8, input=797775, output=37486, total=835261, credits=164.690315
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"timestamp": "2026-07-05T09:54:54.568327+00:00",
|
|
3
|
-
"sources": {
|
|
4
|
-
"routing": "observability/logs/routing-decisions.jsonl",
|
|
5
|
-
"feedback": "observability/logs/learning-feedback.jsonl",
|
|
6
|
-
"metrics": "observability/logs/iteration-metrics.jsonl"
|
|
7
|
-
},
|
|
8
|
-
"totals": {
|
|
9
|
-
"events": 305,
|
|
10
|
-
"events_with_event_id": 247,
|
|
11
|
-
"metrics_covered": 7,
|
|
12
|
-
"feedback_confirmed": 101,
|
|
13
|
-
"confirmed_success": 101
|
|
14
|
-
},
|
|
15
|
-
"kpis": {
|
|
16
|
-
"metrics_coverage_rate": 0.0283,
|
|
17
|
-
"confirmed_feedback_rate": 0.4089,
|
|
18
|
-
"confirmed_success_rate": 1.0,
|
|
19
|
-
"total_tokens": 6474,
|
|
20
|
-
"total_cost_usd": 0.0542,
|
|
21
|
-
"tokens_per_confirmed_success": 64.1,
|
|
22
|
-
"cost_per_confirmed_success_usd": 0.000537
|
|
23
|
-
},
|
|
24
|
-
"breakdown": {
|
|
25
|
-
"tool_mode": {
|
|
26
|
-
"hybrid": {
|
|
27
|
-
"count": 2,
|
|
28
|
-
"tokens": 2400,
|
|
29
|
-
"cost_usd": 0.02
|
|
30
|
-
},
|
|
31
|
-
"local-only": {
|
|
32
|
-
"count": 4,
|
|
33
|
-
"tokens": 4044,
|
|
34
|
-
"cost_usd": 0.0342
|
|
35
|
-
},
|
|
36
|
-
"model-only": {
|
|
37
|
-
"count": 1,
|
|
38
|
-
"tokens": 30,
|
|
39
|
-
"cost_usd": 0.0
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
"model": {
|
|
43
|
-
"GPT-5.3-Codex": {
|
|
44
|
-
"count": 7,
|
|
45
|
-
"tokens": 6474,
|
|
46
|
-
"cost_usd": 0.054200000000000005
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
"engine": {
|
|
50
|
-
"Azure RAG Builder": {
|
|
51
|
-
"count": 1,
|
|
52
|
-
"tokens": 1200,
|
|
53
|
-
"cost_usd": 0.01
|
|
54
|
-
},
|
|
55
|
-
"CodeGraph": {
|
|
56
|
-
"count": 4,
|
|
57
|
-
"tokens": 2874,
|
|
58
|
-
"cost_usd": 0.0242
|
|
59
|
-
},
|
|
60
|
-
"GitNexus": {
|
|
61
|
-
"count": 1,
|
|
62
|
-
"tokens": 1200,
|
|
63
|
-
"cost_usd": 0.01
|
|
64
|
-
},
|
|
65
|
-
"Graphify": {
|
|
66
|
-
"count": 1,
|
|
67
|
-
"tokens": 1200,
|
|
68
|
-
"cost_usd": 0.01
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"assessment": {
|
|
73
|
-
"has_value_signal": true,
|
|
74
|
-
"notes": "Value signal available. Track trend, not one-point absolute values."
|
|
75
|
-
}
|
|
76
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Iteration Value Report
|
|
2
|
-
|
|
3
|
-
- timestamp: 2026-07-05T09:54:54.568327+00:00
|
|
4
|
-
- events: 305
|
|
5
|
-
- events_with_event_id: 247
|
|
6
|
-
- metrics_covered: 7
|
|
7
|
-
- feedback_confirmed: 101
|
|
8
|
-
- confirmed_success: 101
|
|
9
|
-
|
|
10
|
-
## KPI
|
|
11
|
-
|
|
12
|
-
- metrics_coverage_rate: 2.83%
|
|
13
|
-
- confirmed_feedback_rate: 40.89%
|
|
14
|
-
- confirmed_success_rate: 100.0%
|
|
15
|
-
- total_tokens: 6474
|
|
16
|
-
- total_cost_usd: 0.0542
|
|
17
|
-
- tokens_per_confirmed_success: 64.1
|
|
18
|
-
- cost_per_confirmed_success_usd: 0.000537
|
|
19
|
-
|
|
20
|
-
## Breakdown
|
|
21
|
-
|
|
22
|
-
### Tool mode
|
|
23
|
-
- hybrid: count=2, tokens=2400, cost_usd=0.02
|
|
24
|
-
- local-only: count=4, tokens=4044, cost_usd=0.0342
|
|
25
|
-
- model-only: count=1, tokens=30, cost_usd=0.0
|
|
26
|
-
|
|
27
|
-
### Model
|
|
28
|
-
- GPT-5.3-Codex: count=7, tokens=6474, cost_usd=0.0542
|
|
29
|
-
|
|
30
|
-
### Engine
|
|
31
|
-
- Azure RAG Builder: count=1, tokens=1200, cost_usd=0.01
|
|
32
|
-
- CodeGraph: count=4, tokens=2874, cost_usd=0.0242
|
|
33
|
-
- GitNexus: count=1, tokens=1200, cost_usd=0.01
|
|
34
|
-
- Graphify: count=1, tokens=1200, cost_usd=0.01
|
|
35
|
-
|
|
36
|
-
## Assessment
|
|
37
|
-
|
|
38
|
-
- has_value_signal: True
|
|
39
|
-
- notes: Value signal available. Track trend, not one-point absolute values.
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"timestamp": "2026-07-05T09:54:51.179894+00:00",
|
|
3
|
-
"source": "C:\\repo\\mcp-efficiency-engine\\observability\\logs\\routing-decisions.jsonl",
|
|
4
|
-
"feedback_source": "C:\\repo\\mcp-efficiency-engine\\observability\\logs\\learning-feedback.jsonl",
|
|
5
|
-
"total_events": 305,
|
|
6
|
-
"pending_events": 197,
|
|
7
|
-
"confirmed_events": 108,
|
|
8
|
-
"kpis": {
|
|
9
|
-
"fallback_rate": 0.1475,
|
|
10
|
-
"grounded_rate": 0.8492,
|
|
11
|
-
"success_rate": 1.0,
|
|
12
|
-
"confidence_avg": 0.945
|
|
13
|
-
},
|
|
14
|
-
"thresholds": {
|
|
15
|
-
"fallback_rate_max": 0.2,
|
|
16
|
-
"grounded_rate_min": 0.8,
|
|
17
|
-
"confidence_avg_min": 0.8
|
|
18
|
-
},
|
|
19
|
-
"health": {
|
|
20
|
-
"fallback_ok": true,
|
|
21
|
-
"grounded_ok": true,
|
|
22
|
-
"confidence_ok": true
|
|
23
|
-
},
|
|
24
|
-
"patterns": [
|
|
25
|
-
{
|
|
26
|
-
"pattern": "azure-rag+info",
|
|
27
|
-
"total": 4,
|
|
28
|
-
"fallback_rate": 0.0,
|
|
29
|
-
"grounded_rate": 1.0,
|
|
30
|
-
"pending_count": 4,
|
|
31
|
-
"confirmed_count": 0,
|
|
32
|
-
"success_rate": 0.0,
|
|
33
|
-
"confidence_avg": 0.0,
|
|
34
|
-
"engines": {
|
|
35
|
-
"Azure RAG Builder": 4
|
|
36
|
-
},
|
|
37
|
-
"agents": {
|
|
38
|
-
"rag-azure": 4
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"pattern": "azure-rag+knowledge-grounded",
|
|
43
|
-
"total": 52,
|
|
44
|
-
"fallback_rate": 0.0,
|
|
45
|
-
"grounded_rate": 1.0,
|
|
46
|
-
"pending_count": 38,
|
|
47
|
-
"confirmed_count": 14,
|
|
48
|
-
"success_rate": 1.0,
|
|
49
|
-
"confidence_avg": 0.946,
|
|
50
|
-
"engines": {
|
|
51
|
-
"Azure RAG Builder": 52
|
|
52
|
-
},
|
|
53
|
-
"agents": {
|
|
54
|
-
"rag-azure": 52
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"pattern": "backend+bug-fix",
|
|
59
|
-
"total": 12,
|
|
60
|
-
"fallback_rate": 0.0,
|
|
61
|
-
"grounded_rate": 1.0,
|
|
62
|
-
"pending_count": 0,
|
|
63
|
-
"confirmed_count": 12,
|
|
64
|
-
"success_rate": 1.0,
|
|
65
|
-
"confidence_avg": 0.95,
|
|
66
|
-
"engines": {
|
|
67
|
-
"CodeGraph": 12
|
|
68
|
-
},
|
|
69
|
-
"agents": {
|
|
70
|
-
"backend": 12
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"pattern": "dba+analysis",
|
|
75
|
-
"total": 51,
|
|
76
|
-
"fallback_rate": 0.0,
|
|
77
|
-
"grounded_rate": 1.0,
|
|
78
|
-
"pending_count": 37,
|
|
79
|
-
"confirmed_count": 14,
|
|
80
|
-
"success_rate": 1.0,
|
|
81
|
-
"confidence_avg": 0.946,
|
|
82
|
-
"engines": {
|
|
83
|
-
"Graphify": 51
|
|
84
|
-
},
|
|
85
|
-
"agents": {
|
|
86
|
-
"dba": 51
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"pattern": "dba+sql",
|
|
91
|
-
"total": 18,
|
|
92
|
-
"fallback_rate": 0.0,
|
|
93
|
-
"grounded_rate": 1.0,
|
|
94
|
-
"pending_count": 11,
|
|
95
|
-
"confirmed_count": 7,
|
|
96
|
-
"success_rate": 1.0,
|
|
97
|
-
"confidence_avg": 0.95,
|
|
98
|
-
"engines": {
|
|
99
|
-
"Graphify": 18
|
|
100
|
-
},
|
|
101
|
-
"agents": {
|
|
102
|
-
"dba": 18
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"pattern": "dev+bug-fix",
|
|
107
|
-
"total": 50,
|
|
108
|
-
"fallback_rate": 0.06,
|
|
109
|
-
"grounded_rate": 1.0,
|
|
110
|
-
"pending_count": 47,
|
|
111
|
-
"confirmed_count": 3,
|
|
112
|
-
"success_rate": 1.0,
|
|
113
|
-
"confidence_avg": 0.917,
|
|
114
|
-
"engines": {
|
|
115
|
-
"CodeGraph": 50
|
|
116
|
-
},
|
|
117
|
-
"agents": {
|
|
118
|
-
"backend": 50
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"pattern": "dev+info",
|
|
123
|
-
"total": 2,
|
|
124
|
-
"fallback_rate": 0.0,
|
|
125
|
-
"grounded_rate": 0.5,
|
|
126
|
-
"pending_count": 2,
|
|
127
|
-
"confirmed_count": 0,
|
|
128
|
-
"success_rate": 0.0,
|
|
129
|
-
"confidence_avg": 0.0,
|
|
130
|
-
"engines": {
|
|
131
|
-
"CodeGraph": 2
|
|
132
|
-
},
|
|
133
|
-
"agents": {
|
|
134
|
-
"backend": 2
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
"pattern": "frontend+bug-fix",
|
|
139
|
-
"total": 1,
|
|
140
|
-
"fallback_rate": 1.0,
|
|
141
|
-
"grounded_rate": 0.0,
|
|
142
|
-
"pending_count": 1,
|
|
143
|
-
"confirmed_count": 0,
|
|
144
|
-
"success_rate": 0.0,
|
|
145
|
-
"confidence_avg": 0.0,
|
|
146
|
-
"engines": {
|
|
147
|
-
"CodeGraph": 1
|
|
148
|
-
},
|
|
149
|
-
"agents": {
|
|
150
|
-
"frontend-agent": 1
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"pattern": "frontend+feature",
|
|
155
|
-
"total": 14,
|
|
156
|
-
"fallback_rate": 0.0,
|
|
157
|
-
"grounded_rate": 1.0,
|
|
158
|
-
"pending_count": 2,
|
|
159
|
-
"confirmed_count": 12,
|
|
160
|
-
"success_rate": 1.0,
|
|
161
|
-
"confidence_avg": 0.95,
|
|
162
|
-
"engines": {
|
|
163
|
-
"CodeGraph": 14
|
|
164
|
-
},
|
|
165
|
-
"agents": {
|
|
166
|
-
"frontend-agent": 14
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"pattern": "incremental-json-projection",
|
|
171
|
-
"total": 7,
|
|
172
|
-
"fallback_rate": 0.0,
|
|
173
|
-
"grounded_rate": 1.0,
|
|
174
|
-
"pending_count": 0,
|
|
175
|
-
"confirmed_count": 7,
|
|
176
|
-
"success_rate": 1.0,
|
|
177
|
-
"confidence_avg": 0.91,
|
|
178
|
-
"engines": {
|
|
179
|
-
"CodeGraph": 7
|
|
180
|
-
},
|
|
181
|
-
"agents": {
|
|
182
|
-
"autodocs-agent": 7
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
"pattern": "iot+architecture",
|
|
187
|
-
"total": 1,
|
|
188
|
-
"fallback_rate": 0.0,
|
|
189
|
-
"grounded_rate": 1.0,
|
|
190
|
-
"pending_count": 1,
|
|
191
|
-
"confirmed_count": 0,
|
|
192
|
-
"success_rate": 0.0,
|
|
193
|
-
"confidence_avg": 0.0,
|
|
194
|
-
"engines": {
|
|
195
|
-
"GitNexus/CodeGraph + Graphify": 1
|
|
196
|
-
},
|
|
197
|
-
"agents": {
|
|
198
|
-
"iot": 1
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
"pattern": "legacy+migration",
|
|
203
|
-
"total": 53,
|
|
204
|
-
"fallback_rate": 0.7358,
|
|
205
|
-
"grounded_rate": 0.3208,
|
|
206
|
-
"pending_count": 39,
|
|
207
|
-
"confirmed_count": 14,
|
|
208
|
-
"success_rate": 1.0,
|
|
209
|
-
"confidence_avg": 0.946,
|
|
210
|
-
"engines": {
|
|
211
|
-
"GitNexus": 53
|
|
212
|
-
},
|
|
213
|
-
"agents": {
|
|
214
|
-
"legacy": 53
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
"pattern": "rag+info",
|
|
219
|
-
"total": 21,
|
|
220
|
-
"fallback_rate": 0.0952,
|
|
221
|
-
"grounded_rate": 0.9048,
|
|
222
|
-
"pending_count": 8,
|
|
223
|
-
"confirmed_count": 13,
|
|
224
|
-
"success_rate": 1.0,
|
|
225
|
-
"confidence_avg": 0.95,
|
|
226
|
-
"engines": {
|
|
227
|
-
"CodeGraph": 1,
|
|
228
|
-
"Graphify": 20
|
|
229
|
-
},
|
|
230
|
-
"agents": {
|
|
231
|
-
"backend": 1,
|
|
232
|
-
"rag-local": 20
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
"pattern": "unknown-domain+info",
|
|
237
|
-
"total": 6,
|
|
238
|
-
"fallback_rate": 0.0,
|
|
239
|
-
"grounded_rate": 0.0,
|
|
240
|
-
"pending_count": 6,
|
|
241
|
-
"confirmed_count": 0,
|
|
242
|
-
"success_rate": 0.0,
|
|
243
|
-
"confidence_avg": 0.0,
|
|
244
|
-
"engines": {
|
|
245
|
-
"CodeGraph": 6
|
|
246
|
-
},
|
|
247
|
-
"agents": {
|
|
248
|
-
"backend": 6
|
|
249
|
-
}
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
"pattern": "ux-ui+review",
|
|
253
|
-
"total": 13,
|
|
254
|
-
"fallback_rate": 0.0,
|
|
255
|
-
"grounded_rate": 1.0,
|
|
256
|
-
"pending_count": 1,
|
|
257
|
-
"confirmed_count": 12,
|
|
258
|
-
"success_rate": 1.0,
|
|
259
|
-
"confidence_avg": 0.95,
|
|
260
|
-
"engines": {
|
|
261
|
-
"Graphify": 13
|
|
262
|
-
},
|
|
263
|
-
"agents": {
|
|
264
|
-
"ux-ui": 13
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
]
|
|
268
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Learning Loop Report
|
|
2
|
-
|
|
3
|
-
- timestamp: 2026-07-05T09:54:51.179894+00:00
|
|
4
|
-
- total_events: 305
|
|
5
|
-
- pending_events: 197
|
|
6
|
-
- confirmed_events: 108
|
|
7
|
-
|
|
8
|
-
## Global KPIs
|
|
9
|
-
|
|
10
|
-
- fallback_rate: 14.75%
|
|
11
|
-
- grounded_rate: 84.92%
|
|
12
|
-
- success_rate: 100.0%
|
|
13
|
-
- confidence_avg: 0.945
|
|
14
|
-
|
|
15
|
-
## Health
|
|
16
|
-
|
|
17
|
-
- fallback_ok: True
|
|
18
|
-
- grounded_ok: True
|
|
19
|
-
- confidence_ok: True
|
|
20
|
-
|
|
21
|
-
## Patterns
|
|
22
|
-
|
|
23
|
-
- azure-rag+info: total=4, pending=4, confirmed=0, fallback=0.0%, grounded=100.0%, confidence=0.0
|
|
24
|
-
- azure-rag+knowledge-grounded: total=52, pending=38, confirmed=14, fallback=0.0%, grounded=100.0%, confidence=0.946
|
|
25
|
-
- backend+bug-fix: total=12, pending=0, confirmed=12, fallback=0.0%, grounded=100.0%, confidence=0.95
|
|
26
|
-
- dba+analysis: total=51, pending=37, confirmed=14, fallback=0.0%, grounded=100.0%, confidence=0.946
|
|
27
|
-
- dba+sql: total=18, pending=11, confirmed=7, fallback=0.0%, grounded=100.0%, confidence=0.95
|
|
28
|
-
- dev+bug-fix: total=50, pending=47, confirmed=3, fallback=6.0%, grounded=100.0%, confidence=0.917
|
|
29
|
-
- dev+info: total=2, pending=2, confirmed=0, fallback=0.0%, grounded=50.0%, confidence=0.0
|
|
30
|
-
- frontend+bug-fix: total=1, pending=1, confirmed=0, fallback=100.0%, grounded=0.0%, confidence=0.0
|
|
31
|
-
- frontend+feature: total=14, pending=2, confirmed=12, fallback=0.0%, grounded=100.0%, confidence=0.95
|
|
32
|
-
- incremental-json-projection: total=7, pending=0, confirmed=7, fallback=0.0%, grounded=100.0%, confidence=0.91
|
|
33
|
-
- iot+architecture: total=1, pending=1, confirmed=0, fallback=0.0%, grounded=100.0%, confidence=0.0
|
|
34
|
-
- legacy+migration: total=53, pending=39, confirmed=14, fallback=73.58%, grounded=32.08%, confidence=0.946
|
|
35
|
-
- rag+info: total=21, pending=8, confirmed=13, fallback=9.52%, grounded=90.48%, confidence=0.95
|
|
36
|
-
- unknown-domain+info: total=6, pending=6, confirmed=0, fallback=0.0%, grounded=0.0%, confidence=0.0
|
|
37
|
-
- ux-ui+review: total=13, pending=1, confirmed=12, fallback=0.0%, grounded=100.0%, confidence=0.95
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Repo Intake Eval Cases
|
|
2
|
-
|
|
3
|
-
Casos minimos para validar que el intake registra capacidades y dominios esperados.
|
|
4
|
-
|
|
5
|
-
## Matriz base
|
|
6
|
-
|
|
7
|
-
1. `boostDBA` -> `domain=dba`, motor esperado `Graphify`.
|
|
8
|
-
1. `boost_azure_rag` -> `domain=azure-rag`, motor esperado `Azure RAG Builder`.
|
|
9
|
-
1. `boost_iot` -> `domain=iot`, agente esperado `iot`.
|
|
10
|
-
|
|
11
|
-
## Criterios de aprobacion
|
|
12
|
-
|
|
13
|
-
1. Repo aparece en `repo-registry/repos.yml` con `approval.status=approved`.
|
|
14
|
-
1. Se genera capability en `repo-intake/generated/v2/<slug>/<version>/capabilities/capability.json`.
|
|
15
|
-
1. No hay errores en `validate-repo-registry.ps1 -Strict`.
|
|
16
|
-
|
|
17
|
-
## Comandos
|
|
18
|
-
|
|
19
|
-
```powershell
|
|
20
|
-
pwsh -NoProfile -ExecutionPolicy Bypass -File .\scripts\intake\validate-repo-registry.ps1 -Strict
|
|
21
|
-
.\scripts\intake\run-repo-intake.ps1
|
|
22
|
-
```
|
|
23
|
-
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cases": [
|
|
3
|
-
{
|
|
4
|
-
"id": "case-login-bug",
|
|
5
|
-
"input": "Arregla bug de login",
|
|
6
|
-
"intent": "bug-fix",
|
|
7
|
-
"domain": "backend",
|
|
8
|
-
"source_type": "code",
|
|
9
|
-
"capability": "backend-coding"
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"id": "case-sla-grounding",
|
|
13
|
-
"input": "Necesito fuentes SLA reales",
|
|
14
|
-
"intent": "knowledge-grounded",
|
|
15
|
-
"domain": "azure-rag",
|
|
16
|
-
"source_type": "corporate-docs",
|
|
17
|
-
"capability": "azure-rag-enterprise"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"id": "case-dba-analysis",
|
|
21
|
-
"input": "Analiza schema SQL",
|
|
22
|
-
"intent": "analysis",
|
|
23
|
-
"domain": "dba",
|
|
24
|
-
"source_type": "technical-docs",
|
|
25
|
-
"capability": "database-analysis"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"id": "case-dba-sql-intent",
|
|
29
|
-
"input": "Analiza esquema SQL de la tabla de pedidos",
|
|
30
|
-
"intent": "sql",
|
|
31
|
-
"domain": "dba",
|
|
32
|
-
"source_type": "technical-docs",
|
|
33
|
-
"capability": "database-analysis"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"id": "case-legacy-migration",
|
|
37
|
-
"input": "Plan de migracion legacy",
|
|
38
|
-
"intent": "migration",
|
|
39
|
-
"domain": "legacy",
|
|
40
|
-
"source_type": "code",
|
|
41
|
-
"capability": "legacy-migration"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"id": "case-rag-tech-docs-local",
|
|
45
|
-
"input": "explica guia tecnica local",
|
|
46
|
-
"intent": "info",
|
|
47
|
-
"domain": "rag",
|
|
48
|
-
"source_type": "technical-docs",
|
|
49
|
-
"capability": "rag-knowledge"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"id": "case-frontend-feature",
|
|
53
|
-
"input": "Implementar nuevo componente de checkout",
|
|
54
|
-
"intent": "feature",
|
|
55
|
-
"domain": "frontend",
|
|
56
|
-
"source_type": "code",
|
|
57
|
-
"capability": "frontend-coding"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"id": "case-ux-ui-review",
|
|
61
|
-
"input": "Revisar consistencia y accesibilidad del design system",
|
|
62
|
-
"intent": "review",
|
|
63
|
-
"domain": "ux-ui",
|
|
64
|
-
"source_type": "technical-docs",
|
|
65
|
-
"capability": "ux-ui-governance"
|
|
66
|
-
}
|
|
67
|
-
]
|
|
68
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Routing Eval Cases
|
|
2
|
-
|
|
3
|
-
## Casos base
|
|
4
|
-
|
|
5
|
-
1. `bug login` -> `backend` + `CodeGraph` + Caveman `full`.
|
|
6
|
-
1. `SLA` -> `rag-azure` + `Azure RAG Builder` + `sources` no vacio.
|
|
7
|
-
1. `arquitectura` -> `rag-local`/`dba` segun dominio con `Graphify`.
|
|
8
|
-
1. `legacy migration` -> `legacy` + `GitNexus` + `hitl.required=true` cuando haya alto impacto/fallback.
|
|
9
|
-
|
|
10
|
-
## Suite ejecutable JSON-first
|
|
11
|
-
|
|
12
|
-
- `observability/evals/routing-eval-cases.json`
|
|
13
|
-
|
|
14
|
-
## Runner
|
|
15
|
-
|
|
16
|
-
```powershell
|
|
17
|
-
py -3 .\scripts\intake\run-routing-evals.py
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Criterios de pase
|
|
21
|
-
|
|
22
|
-
1. `cases_failed = 0`.
|
|
23
|
-
1. Coincidencia exacta de `agent` y `engine` por caso.
|
|
24
|
-
1. `prompt.exists = true` en todos los casos.
|
|
25
|
-
|