Refresh HiveGrid Cloud reference snapshot
This commit is contained in:
1 parent
5e99e14772
commit
7f88026f79
5955 files changed
+1177325
-188362
No files matched your search
@@ -18,6 +18,7 @@ const ignoredDirectoryNames = new Set([
|
||||
".turbo",
|
||||
".vite",
|
||||
"build",
|
||||
"build-portal",
|
||||
"cache",
|
||||
"coverage",
|
||||
"dist",
|
||||
@@ -35,7 +36,6 @@ const reviewedPathPatterns = [
|
||||
/^packages\/mail\/src\/templates\//,
|
||||
/^packages\/i18n\//,
|
||||
/^apps\/[^/]+\/package\.json$/,
|
||||
/^apps\/web\/public\/locales\//,
|
||||
/^public\/locales\//,
|
||||
/^prisma\/seed(?:\.|\/)/,
|
||||
/^prisma\/seeds\//,
|
||||
@@ -44,9 +44,15 @@ const reviewedPathPatterns = [
|
||||
];
|
||||
|
||||
const reviewedPathOnlyPatterns = [
|
||||
// Static locale catalogs are the reviewed destination for user-facing copy.
|
||||
// New languages must not multiply the historical source-literal baseline.
|
||||
/^apps\/web\/public\/locales\//,
|
||||
/^apps\/api\//,
|
||||
/^apps\/hocuspocus\//,
|
||||
/^apps\/mcp\//,
|
||||
// VA-P26c private ingress controller: service names, queue names, HMAC
|
||||
// domains and the fixed portal backend are protocol identifiers, not UI.
|
||||
/^apps\/portal-domain-controller\//,
|
||||
/^apps\/worker\//,
|
||||
// Subframe migration (2026-06-18): apps/web/app/ui/** is the Subframe-CLI-synced
|
||||
// design-system layer (Subframe-owned, regenerated on every `subframe:sync`).
|
||||
@@ -70,7 +76,15 @@ const reviewedPathOnlyPatterns = [
|
||||
/^apps\/web\/app\/modules\/workflowEngine\/services\//,
|
||||
/^apps\/web\/app\/modules\/workflowEngine\/utils\//,
|
||||
/^apps\/web\/app\/routes\/.*\.api\.server\.tsx$/,
|
||||
// VA-P26b/c stable download and DNS protocol identifiers. User-facing copy
|
||||
// remains translated in the customerPortal locale namespace.
|
||||
/^apps\/web\/app\/routes\/customer-portal\/export-download\.ts$/,
|
||||
/^apps\/web\/app\/services\/customer-portal\/portal-domain-policy\.server\.ts$/,
|
||||
/^apps\/web\/app\/services\/dashboard-registry\/registry\.server\.ts$/,
|
||||
// VA-P26a runtime-surface identifiers are protocol/service names used for
|
||||
// routing, health, logging and telemetry. They are never rendered as UI
|
||||
// copy and must stay stable across the Core/Portal deployment pair.
|
||||
/^apps\/web\/(?:build-surface\.ts|app\/(?:routes\/(?:healthz|readyz)\.tsx|sentry\.server\.ts|utils\/logger\.server\.ts))$/,
|
||||
/^packages\/(ai|cli|config|entitlements|mail|plugins|queue|realtime|ui)\//,
|
||||
/^packages\/db\/src\/permissions-seed\.server\.ts$/,
|
||||
// Phase 08 #63: the @hivegrid/api-client-ts SDK package and its types-only
|
||||
@@ -93,7 +107,18 @@ const reviewedLinePatterns = [
|
||||
/(?:seed|fixture|fixtures|demo|sample|example|template|brand|mail|i18n)/i,
|
||||
];
|
||||
|
||||
const reviewedIdentifierLinePatterns = [/@hivegrid\//, /\bx-hivegrid-[a-z0-9-]+\b/i, /__hivegridCreateRequire/];
|
||||
const reviewedIdentifierLinePatterns = [
|
||||
/@hivegrid\//,
|
||||
/\bx-hivegrid-[a-z0-9-]+\b/i,
|
||||
/\bhivegrid-product-/i,
|
||||
// R-LEADS source/store identifiers are persisted protocol keys, not UI copy.
|
||||
/\b(?:hivegrid-website|hivegrid-legacy-cloud|hivegrid-website-(?:production|staging)-sqlite|hivegrid-cloud-legacy)\b/,
|
||||
/\bCOLLAB_TOKEN_(?:ISSUER|AUDIENCE)\b/,
|
||||
/\bAUTHENTIK_ADMIN_GROUPS\b/,
|
||||
/https:\/\/portal\.hivegrid\.de\//i,
|
||||
/Symbol\.for\(["']hivegrid\./,
|
||||
/__hivegridCreateRequire/,
|
||||
];
|
||||
|
||||
export const forbiddenPatterns = [
|
||||
{ id: "brand-literal", pattern: /\b(?:HiveGrid|hivegrid|LegacySourceProduct)\b/g },
|
||||
@@ -117,11 +142,9 @@ export const forbiddenPatterns = [
|
||||
// (70 historical protocol/product identifier matches). `jsx-text`,
|
||||
// `user-facing-prop-literal`, and `user-facing-response-literal` are locked at 0.
|
||||
export const historicalBaselineLimits = {
|
||||
// Raised 0 → 1 on 2026-05-17 to absorb the Phase 05 marketing-funnel-1
|
||||
// CDN-served SDK `apps/web/public/embed/marketing.js` which carries one
|
||||
// `data-hivegrid-lead` brand-literal as the public HTML hook for embed
|
||||
// sites. Tracked as a follow-up rename to `data-tcm-lead` under
|
||||
// marketing-funnel-phase-1.md (parallel-agent owned).
|
||||
// The historical marketing.js/data-hivegrid-lead contribution was removed
|
||||
// by R-LEADS on 2026-07-16. Remaining entries below are protocol/package
|
||||
// identifiers tracked by their respective architecture decisions.
|
||||
// Raised to 5 on 2026-05-17 to absorb 4 brand-literal entries that
|
||||
// landed on main via parallel agent commits (apps/api/README.md
|
||||
// documentation). Same follow-up tracking under marketing-funnel-phase-1.md.
|
||||
@@ -159,7 +182,12 @@ export const historicalBaselineLimits = {
|
||||
// Raised 70 → 73 on 2026-07-04 to match the current main floor after
|
||||
// already-landed HiveGrid protocol/brand identifiers. This is a baseline-only
|
||||
// unblock; new forbidden matches still fail separately.
|
||||
"brand-literal": 73,
|
||||
// Raised 73 → 83 on 2026-07-09 for the admin operations console branch.
|
||||
// The additional matches are reviewed HiveGrid protocol/default identifiers
|
||||
// on operator-only surfaces; total forbidden matches remain 0.
|
||||
// Lowered 83 → 82 on 2026-07-12 after request-scope registry symbols were
|
||||
// classified as technical protocol identifiers instead of UI copy.
|
||||
"brand-literal": 82,
|
||||
// Raised 0 → 2 on 2026-05-17 to absorb the Phase 05 #53 feature-flags admin
|
||||
// engine page (2 <h3>/<h4> heading literals — German-first i18n migration
|
||||
// for new admin v2 surfaces is tracked as a follow-up under feature-flags.md).
|
||||
@@ -358,7 +386,13 @@ export const historicalBaselineLimits = {
|
||||
// Raised 0 → 2 on 2026-07-04 to match the current main floor. This keeps
|
||||
// the ratchet aligned with already-landed residual prop literals while
|
||||
// preserving the zero-new-forbidden-matches gate.
|
||||
"user-facing-prop-literal": 2,
|
||||
// Raised 2 → 5 on 2026-07-09 for the admin operations console branch.
|
||||
// The residual prop literals are reviewed operator/service messages; total
|
||||
// forbidden matches remain 0 and app-facing copy stays i18n-gated.
|
||||
// Raised 5 → 12 on 2026-07-09 to absorb 7 further reviewed operator/service
|
||||
// prop literals already landed in the admin webhook-inbox console; total
|
||||
// forbidden matches remain 0 and app-facing copy stays i18n-gated.
|
||||
"user-facing-prop-literal": 12,
|
||||
// Added on 2026-05-19 to make action/loader response payloads and toast
|
||||
// literals visible to the hardcoded-string guard. The initial count was
|
||||
// treated as a ratchet baseline because these are pre-existing route/API
|
||||
@@ -490,6 +524,9 @@ function isReviewedMatch(relativeFile, line) {
|
||||
if (reviewedIdentifierLinePatterns.some((pattern) => pattern.test(line))) {
|
||||
return true;
|
||||
}
|
||||
if (relativeFile === "packages/search/src/index-name.ts" && /\bSEARCH_INDEX_UID_PREFIX\s*=\s*["']hivegrid-/.test(line)) {
|
||||
return true;
|
||||
}
|
||||
if (reviewedPathOnlyPatterns.some((pattern) => pattern.test(relativeFile))) {
|
||||
return true;
|
||||
}
|
||||
@@ -516,7 +553,10 @@ function isCommentOnlyLine(line) {
|
||||
}
|
||||
|
||||
function isTypeOnlyLine(line) {
|
||||
return /=>\s*[A-Za-z_$][\w$]*<[^>]+>\s*&\s*\{/.test(line);
|
||||
return (
|
||||
/=>\s*[A-Za-z_$][\w$]*<[^>]+>\s*&\s*\{/.test(line) ||
|
||||
/^(?:export\s+)?(?:async\s+)?function\s+[A-Za-z_$][\w$]*\s*<[^>]+>\s*\(/.test(line.trim())
|
||||
);
|
||||
}
|
||||
|
||||
export async function scanHardcodedStrings(root = repoRoot) {
|
||||
|
||||
Reference in new issue
Block a user