Phase 989: add parity track module map + line audit (v0.8.956)

Non-breaking refactor — registry of 16 mesh stability UI parity modules
(phases 981–988) with 100-line audit and documented rail-hash exception.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-05 04:56:11 -04:00
co-authored by Cursor
parent 2ae5208ea4
commit aad0c3103f
2 changed files with 92 additions and 0 deletions
+5
View File
@@ -198,6 +198,11 @@ Application facade: one `PearcordPlatform` class that wires identity, database,
| `mesh-stability-ui-bandwidth-diagnostics-keys.js` | Bandwidth diagnostics field/embed part keys + snapshot builder |
| `mesh-stability-ui-sparse-ack-diagnostics-keys.js` | Sparse ACK diagnostics row/embed part keys + snapshot builder |
| `mesh-stability-ui-parity-track-index.js` | Mesh stability UI parity track phase registry 9811005 |
| `mesh-stability-ui-parity-track-module-map.js` | Parity track module map registry + 100-line audit |
**Mesh stability UI parity track module index (phases 981988):** `mesh-stability-ui-parity-track-module-map.js` — 16 modules (8 platform keys + 8 UI); line audit exception: `mesh-stability-ui-rail-hash.js`.
**Phase 989 (v0.8.956):** Mesh stability UI parity track module map doc + line audit — `mesh-stability-ui-parity-track-module-map.js`. Bundle: `npm run test:ci-phase989`.
**Phase 988 (v0.8.955):** Mesh stability UI sparse ACK diagnostics embed — `mesh-stability-ui-sparse-ack-diagnostics-keys.js` (2 row field + 2 embed parts); UI cursor list in `apps/pearcord/ui/mesh-stability-ui-sparse-ack-diagnostics.js`. Bundle: `npm run test:ci-phase988`.
@@ -0,0 +1,87 @@
'use strict'
const MESH_STABILITY_UI_MODULE_LINE_BUDGET = 100
const meshStabilityUiParityTrackModuleMap = [
{ file: 'mesh-stability-ui-parity-track-index.js', phase: 981, scope: 'platform', role: 'Parity track phase registry 9811005' },
{ file: 'mesh-stability-ui-rail-hash.js', phase: 981, scope: 'ui', role: 'View hash builders for seven mesh chrome kinds' },
{ file: 'mesh-stability-ui-topology-chrome-keys.js', phase: 982, scope: 'platform', role: 'Topology chrome field/action keys + snapshot' },
{ file: 'mesh-stability-ui-topology-chrome.js', phase: 982, scope: 'ui', role: 'Peer hint and settings stability copy formatters' },
{ file: 'mesh-stability-ui-refresh-predicate-keys.js', phase: 983, scope: 'platform', role: 'Refresh predicate key registry + snapshot' },
{ file: 'mesh-stability-ui-refresh-predicates.js', phase: 983, scope: 'ui', role: 'guild*NeedsRefresh predicate helpers' },
{ file: 'mesh-stability-ui-reconnect-chrome-keys.js', phase: 984, scope: 'platform', role: 'Reconnect chrome field/action keys + P2P badge formatter' },
{ file: 'mesh-stability-ui-reconnect-chrome.js', phase: 984, scope: 'ui', role: 'P2P badge apply helper' },
{ file: 'mesh-stability-ui-sync-chrome-chain-keys.js', phase: 985, scope: 'platform', role: 'Sync chrome chain step registry + handler map' },
{ file: 'mesh-stability-ui-sync-chrome-chain.js', phase: 985, scope: 'ui', role: 'Guild sync mode guard for sync chrome handlers' },
{ file: 'mesh-stability-ui-diagnostics-ipc-keys.js', phase: 986, scope: 'platform', role: 'Diagnostics panel button/IPC action keys' },
{ file: 'mesh-stability-ui-diagnostics-ipc.js', phase: 986, scope: 'ui', role: 'Diagnostics button HTML + export IPC wiring' },
{ file: 'mesh-stability-ui-bandwidth-diagnostics-keys.js', phase: 987, scope: 'platform', role: 'Bandwidth diagnostics field/embed part keys' },
{ file: 'mesh-stability-ui-bandwidth-diagnostics.js', phase: 987, scope: 'ui', role: 'Bandwidth sparkline/progress/hint embed' },
{ file: 'mesh-stability-ui-sparse-ack-diagnostics-keys.js', phase: 988, scope: 'platform', role: 'Sparse ACK diagnostics row/embed part keys' },
{ file: 'mesh-stability-ui-sparse-ack-diagnostics.js', phase: 988, scope: 'ui', role: 'Sparse ACK cursor list diagnostics embed' }
]
const meshStabilityUiModuleLineAuditExceptions = [
'mesh-stability-ui-rail-hash.js'
]
function listMeshStabilityUiParityTrackModuleMap () {
return meshStabilityUiParityTrackModuleMap.map((e) => ({ ...e }))
}
function listMeshStabilityUiModuleLineAuditExceptions () {
return meshStabilityUiModuleLineAuditExceptions.slice()
}
function countModuleLines (src) {
return String(src || '').split('\n').length
}
function resolveMeshStabilityUiModulePath (entry, platformDir, uiDir) {
if (entry.scope === 'ui') return `${uiDir}/${entry.file}`
return `${platformDir}/${entry.file}`
}
function runMeshStabilityUiModuleLineAudit (readFileSync, platformDir, uiDir) {
const modules = []
const overBudget = []
for (const entry of meshStabilityUiParityTrackModuleMap) {
const filePath = resolveMeshStabilityUiModulePath(entry, platformDir, uiDir)
const src = readFileSync(filePath, 'utf8')
const lines = countModuleLines(src)
const row = { ...entry, lines, withinBudget: lines <= MESH_STABILITY_UI_MODULE_LINE_BUDGET }
modules.push(row)
if (!row.withinBudget && !meshStabilityUiModuleLineAuditExceptions.includes(entry.file)) {
overBudget.push(row)
}
}
const exceptionRows = modules.filter((m) => meshStabilityUiModuleLineAuditExceptions.includes(m.file))
return {
lineBudget: MESH_STABILITY_UI_MODULE_LINE_BUDGET,
moduleCount: modules.length,
withinBudgetCount: modules.filter((m) => m.withinBudget).length,
exceptionCount: exceptionRows.length,
overBudget,
modules
}
}
function buildMeshStabilityUiModuleMapSnapshot () {
return {
lineBudget: MESH_STABILITY_UI_MODULE_LINE_BUDGET,
moduleCount: meshStabilityUiParityTrackModuleMap.length,
phases: [...new Set(meshStabilityUiParityTrackModuleMap.map((e) => e.phase))].sort((a, b) => a - b),
files: meshStabilityUiParityTrackModuleMap.map((e) => e.file),
exceptions: meshStabilityUiModuleLineAuditExceptions.slice()
}
}
module.exports = {
MESH_STABILITY_UI_MODULE_LINE_BUDGET,
meshStabilityUiParityTrackModuleMap,
meshStabilityUiModuleLineAuditExceptions,
listMeshStabilityUiParityTrackModuleMap,
listMeshStabilityUiModuleLineAuditExceptions,
runMeshStabilityUiModuleLineAudit,
buildMeshStabilityUiModuleMapSnapshot
}