Skip to content

Commit edf40c1

Browse files
atulmguptaCopilot
andcommitted
chore(R2d.108-132): refresh archmetrics baseline + ignore batch 10 AI carves in git-blame
Integrates the field-bag refactor (R2d.108) and 24 AI handler carves (R2d.109-132) into archmetrics baseline: * internal/api/aialert / aialerttune / aianomaly / aiautomation / aiautotripname / aibatthealth / aichargcurve / aichargdiag / aichatbot / aiclimate / aicostfcst / aidigest / aidrivecoach / aidrivesearch / airaghelp / airouteeff / aisearch / aismartcharge / aispeedprof / aitempimpact / aitirepress / aitripplanllm / aivampire / aiyir Adds two ADR-009 Exceptions rows for stranded test files in internal/api/ that support uncarved AI code (ai_test_helpers_test.go shared stub, ai_cost_forecast_forecaster_test.go adapter test). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent e6ca081 commit edf40c1

4 files changed

Lines changed: 869 additions & 159 deletions

File tree

.git-blame-ignore-revs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,3 +326,28 @@ baf64691b4e8cad2a383069a39340a2ecd5d7862 # refactor(R2d.103): carve internal/api
326326
c69adf5ec47b1a47a4103fa234e43d438fb5ae8b # refactor(R2d.105): carve internal/api/tirepressure subpackage
327327
38cd0b00e12c27f40f33afa6e65457cb3e6eb87b # refactor(R2d.106): carve internal/api/tripplanner subpackage
328328
c5af318a9a4db4e638889ac674bc4aaf1806a481 # refactor(R2d.107): carve internal/api/userpref subpackage
329+
97dc24e5360d8fc3e9739b5e3a98dda73507885e # refactor(R2d.108): convert mountAIRoutes to AIHandlers struct field-bag
330+
d41a13506ad42bf05df67a9696f6e1967d0d2635 # refactor(R2d.113): carve internal/api/aialert subpackage
331+
7c30afd7b5900a03799a8b6677fa6264b06cb107 # refactor(R2d.132): carve internal/api/aialerttune subpackage
332+
fc4e7561f9bd4f1c787576a1bec011c17556e616 # refactor(R2d.112): carve internal/api/aianomaly subpackage
333+
2e8ce59388a7302cc3eb4f8316902cb86d95bb28 # refactor(R2d.114): carve internal/api/aiautomation subpackage
334+
bb43cc383be948e73a8f9fbe802b567a54906ad6 # refactor(R2d.122): carve internal/api/aiautotripname subpackage
335+
f2e557f5437c5db28ed51f512c2a6ce2cc5f052f # refactor(R2d.125): carve internal/api/aibatthealth subpackage
336+
ece7930dda4b8b5d66c92c74bca75e3c89f4898b # refactor(R2d.126): carve internal/api/aichargcurve subpackage
337+
c76d0eb8ee77ac554de843cee788fe719215d7fe # refactor(R2d.117): carve internal/api/aichargdiag subpackage
338+
2360a5cb4dbab5c12c01165303263f42fc216e51 # refactor(R2d.109): carve internal/api/aichatbot subpackage
339+
e6ca081d5c46f6c70fa9b914d2eb3f78e73a6a10 # refactor(R2d.129): carve internal/api/aiclimate subpackage
340+
5ffb13aeaa99c55150ce8a633ddebf8465a5f756 # refactor(R2d.127): carve internal/api/aicostfcst subpackage
341+
0db6eb8b16aa09be3abd80941d4c5def6e745c3b # refactor(R2d.110): carve internal/api/aidigest subpackage
342+
6ed8d2ef76e7695dbdb0bbff10b2755dbd827121 # refactor(R2d.116): carve internal/api/aidrivecoach subpackage
343+
82bc5951cd0b2e4277a5c89739fb863dcffd8eb8 # refactor(R2d.119): carve internal/api/aidrivesearch subpackage
344+
5713e47b127799b1c146d68dbd313a8f3cda7541 # refactor(R2d.118): carve internal/api/airaghelp subpackage
345+
7547bfc3361ac6484fc4595ec857958727bc0592 # refactor(R2d.121): carve internal/api/airouteeff subpackage
346+
c59068d6ad21dcb5e745735fad06aa7727140985 # refactor(R2d.115): carve internal/api/aisearch subpackage
347+
050b02c4d11c2de52b5769aa6a0d799776e457e5 # refactor(R2d.124): carve internal/api/aismartcharge subpackage
348+
4cadb977e414902b693ff6a8a6df94924028a66e # refactor(R2d.120): carve internal/api/aispeedprof subpackage
349+
f2b7ff8c1123c125a9d6739335c0b8fe421bc76d # refactor(R2d.130): carve internal/api/aitempimpact subpackage
350+
26aa1bcb255e8f26d906eb76823fe6eaf4e72fb8 # refactor(R2d.131): carve internal/api/aitirepress subpackage
351+
b07f1211ba62b7d639cd30014bf0c90a46041fb2 # refactor(R2d.123): carve internal/api/aitripplanllm subpackage
352+
dfcfd2a1bc957876219f2ae796c54e6309586adc # refactor(R2d.128): carve internal/api/aivampire subpackage
353+
b8c4a690f0b59f4545ca8c7021efbb414c125264 # refactor(R2d.111): carve internal/api/aiyir subpackage

.github/ARCHITECTURE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1270,6 +1270,8 @@ it will be reverted on next review.
12701270
| 2026-05 | phase-46 SOTA batch | `slo_handler.go`<br>`dataquality_handler.go`<br>`synthetic_handler.go` | Live SLO board (`/admin/observability/slo`), data-quality scoring + lineage (`/admin/observability/data-quality`, `/admin/observability/lineage`), and synthetic monitoring (`/admin/observability/synthetic`). Each handler is a 30-50 LOC orchestrator over `internal/slo`, `internal/dataquality`, and `internal/synthetic` — the substantive logic + tests live in those packages. handler/v1 would require 3 mirror packages (`port/slo`, `app/slosvc`, etc.) per subsystem for zero behaviour; the freeze is meant to permit exactly this case. |
12711271
| 2026-05-28 | phase R2.0e (apperror carve) | `apperror_bridge_test.go` | Regression-test pin that asserts every parent `Err*` var still points at the canonical `apperror.Err*` after the catalog carve into `internal/api/apperror/`. MUST live in `package api` because it is the only context that can name both `internal/api.Err*` and `internal/api/apperror.Err*` together. README/static `arch_test.TestFrozenPackagesNoNewFiles` exempts `_test.go` files; the runtime `-compare` tool counts them, hence this explicit row. |
12721272
| 2026-05-28 | phase R2.0f (apibulk carve) | `bulk_helpers_bridge_test.go` | Regression-test pin that asserts the parent `MaxBulkIDs` const + `bulk*` type aliases + `errBulk*` var bridges + helper wrappers in `bulk_helpers.go` still delegate to the canonical `apibulk` symbols after the catalog carve into `internal/api/apibulk/`. Same rationale as the apperror bridge test above — MUST live in `package api` to name parent + subpkg symbols together. |
1273+
| 2026-05-28 | phase R2d.109 (aichatbot carve) | `ai_test_helpers_test.go` | Shared `stubGuardSettings` test helper used by the remaining `package api` AI handler tests (`ai_admin_handler`, `ai_internal_handler`, `ai_settings_validate_handler`, `ai_usage_handler`) that have NOT yet been carved. Extracted out of `aichatbot/handler_test.go` to avoid duplication across the still-in-api tests. Will be removed when the last in-api AI handler is carved. |
1274+
| 2026-05-28 | phase R2d.127 (aicostfcst carve) | `ai_cost_forecast_forecaster_test.go` | Tests the `NewAICostForecaster` production adapter constructor in `ai_cost_forecast_forecaster.go` (still in `package api` because it implements `forecast.CostForecaster` and is wired in `router.go`). Test asserts nil-DB panic + compile-time interface satisfaction; MUST live in `package api` to name the unexported adapter. Will move with the adapter when forecaster is carved. |
12731275

12741276
Future admin/observability handlers SHOULD follow the same pattern:
12751277
narrow interface in the handler file, concrete `*Repo` from

0 commit comments

Comments
 (0)