bcquality/tools/routing-seed.json
dayland 6ed56b95b7 R6 Tier-1: content-owned routing index generator + CI guard
Retire the orchestrator's hardcoded ~28-token signal catalog by compiling a
routing index from article front-matter. New tools/Build-RoutingIndex.ps1 scans
all knowledge layers and emits routing-index.json (signal-token -> domain +
backing articles), seeded from the migrated legacy catalog (routing-seed.json)
so recall is never below today. Optional per-article 'signals:' front-matter
(validator rule R24) is the authored precision path; domain-normalization
reconciles front-matter/orchestrator/feedback domain vocabularies.

Artifact is a runtime build (gitignored), orchestrator-facing only (not the
lean agent-replayed knowledge index). CI guard Test-RoutingIndex.ps1 asserts
determinism, seed recall floor, no orphaned signals, and normalization
completeness; wired into the index workflow.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-13 11:20:30 +01:00

63 lines
5.2 KiB
JSON

{
"$schema-note": "BCQuality routing SEED — content-owned migration of the signal catalog that used to live hardcoded in the PR-review orchestrator ($BcqSignalCatalog / $BcqObjectKindDomain in Invoke-CopilotPRReview.ps1). Build-RoutingIndex.ps1 ingests this seed FIRST so the compiled routing-index.json detects at least everything the legacy code catalog did (recall >= today), then enriches each signal with the articles that back it and adds article-declared signals on top. Over time, entries here migrate into per-article `signals:` front-matter and this seed shrinks. Domains use the orchestrator's TitleCase taxonomy (see domain-normalization).",
"version": 1,
"domain-normalization": {
"error-handling": "Error Handling",
"performance": "Performance",
"privacy": "Privacy",
"security": "Security",
"style": "Style",
"testing": "Testing",
"ui": "Accessibility",
"upgrade": "Upgrade",
"breaking-changes": "Breaking Changes",
"events": "Events",
"interfaces": "Interfaces",
"web-services": "Web Services",
"telemetry": "Privacy"
},
"object-kind-domain": {
"page": "Accessibility",
"pageextension": "Accessibility",
"pagecustomization": "Accessibility",
"profile": "Accessibility",
"report": "Performance",
"reportextension": "Performance",
"query": "Performance",
"permissionset": "Security",
"permissionsetextension": "Security",
"entitlement": "Security",
"interface": "Interfaces",
"xmlport": "Web Services"
},
"signals": [
{ "token": "FindSet", "pattern": "\\bFindSet\\b", "domain": "Performance" },
{ "token": "FindFirst", "pattern": "\\bFindFirst\\b", "domain": "Performance" },
{ "token": "FindLast", "pattern": "\\bFindLast\\b", "domain": "Performance" },
{ "token": "SetRange", "pattern": "\\bSetRange\\b", "domain": "Performance" },
{ "token": "SetFilter", "pattern": "\\bSetFilter\\b", "domain": "Performance" },
{ "token": "CalcFields", "pattern": "\\bCalcFields\\b", "domain": "Performance" },
{ "token": "CalcSums", "pattern": "\\bCalcSums\\b", "domain": "Performance" },
{ "token": "SetLoadFields", "pattern": "\\bSetLoadFields\\b", "domain": "Performance" },
{ "token": "SetAutoCalcFields", "pattern": "\\bSetAutoCalcFields\\b", "domain": "Performance" },
{ "token": "loop", "pattern": "\\brepeat\\b", "domain": "Performance" },
{ "token": "HttpClient", "pattern": "\\bHttpClient\\b", "domain": "Security" },
{ "token": "SecretText", "pattern": "\\bSecretText\\b", "domain": "Security" },
{ "token": "IsolatedStorage", "pattern": "\\bIsolatedStorage\\b", "domain": "Security" },
{ "token": "PermissionSet", "pattern": "\\bPermissionSet\\b|\\bPermissions\\s*=", "domain": "Security" },
{ "token": "Entitlement", "pattern": "\\bEntitlement\\b", "domain": "Security" },
{ "token": "DataClassification", "pattern": "\\bDataClassification\\b", "domain": "Privacy" },
{ "token": "Telemetry", "pattern": "\\bLogMessage\\b|\\bFeatureTelemetry\\b", "domain": "Privacy" },
{ "token": "Error", "pattern": "\\bError\\b|\\bFieldError\\b|\\bTestField\\b", "domain": "Error Handling" },
{ "token": "TryFunction", "pattern": "\\[TryFunction\\]", "domain": "Error Handling" },
{ "token": "Commit", "pattern": "\\bCommit\\b", "domain": "Error Handling" },
{ "token": "Caption", "pattern": "\\bCaption\\s*=", "domain": "Accessibility" },
{ "token": "ToolTip", "pattern": "\\bToolTip\\s*=", "domain": "Accessibility" },
{ "token": "ApplicationArea", "pattern": "\\bApplicationArea\\s*=", "domain": "Accessibility" },
{ "token": "Obsolete", "pattern": "\\bObsoleteState\\b|\\bObsoleteReason\\b|\\bObsoleteTag\\b", "domain": "Upgrade" },
{ "token": "UpgradeTag", "pattern": "\\bUpgradeTag\\b", "domain": "Upgrade" },
{ "token": "EventPublisher", "pattern": "\\[IntegrationEvent|\\[BusinessEvent", "domain": "Events" },
{ "token": "EventSubscriber", "pattern": "\\[EventSubscriber", "domain": "Events" },
{ "token": "ApiObject", "pattern": "PageType\\s*=\\s*API|\\bEntityName\\b|\\bEntitySetName\\b|\\bODataKeyFields\\b", "domain": "Web Services" }
]
}