/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:23: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:130: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:136: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:139: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:144: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:234: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:235: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:241: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:242: const stageKey = normStageKey(item.label); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:251: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:252: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:313: const items = state.runtimeStatus.runtime_snapshot || []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:314: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:317: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:318: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:322: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:324: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:326: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:327: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:329: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:330: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:331: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:335: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:342: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:343: return normStageKey(item.label) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:349: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:351: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:353: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:354: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:355: els.selectedStageDesc.textContent = "Completion based on all required items in this stage."; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:356: els.selectedStageTotal.textContent = rows.length + " required items"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:404: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:407: const subCounts = countStatuses(group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:412: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:413: '' + group.items.length + ' rows', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:417: ? donutMarkup(subCounts, "subcategory completion") /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:418: : missingDonutMarkup("subcategory completion"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:426: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:435: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:436: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:437: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:438: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:447: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:450: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:466: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114840:482: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:132: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:143: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:144: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:149: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:160: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:161: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:162: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:163: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:171: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:173: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:178: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:179: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:197: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:217: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:245: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:246: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:249: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:268: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:270: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:274: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:275: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:278: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:284: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:317: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped") /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:321: const hasItemRuntimeFail = result.some(function (row) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:322: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:325: if (hasMatrixFail && !hasItemRuntimeFail) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:327: row_kind: "item_runtime", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:329: subcategory: subcategory || "unmapped", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:336: evidence_source: "runtime_subcategoryRows_fail_overlay" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:405: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:408: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:413: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:423: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:582: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:598: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:602: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:604: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:605: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:606: const groups = groupBySubcategory(stageRows(stageKey)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:608: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:615: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:616: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:733: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:734: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:736: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:739: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:740: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:744: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:746: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:748: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:749: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:751: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:752: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:753: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:757: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:765: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:766: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:774: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:775: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:789: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:791: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:792: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:813: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:849: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:850: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:879: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:885: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:896: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:899: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:906: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:912: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:926: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:936: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:937: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:944: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:945: '

' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:955: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:958: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:990: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1021: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1076: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1077: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1091: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1100: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1106: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1107: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1109: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_matrix_purge_20260407_105807:1110: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:23: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:130: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:194: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:197: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:202: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:292: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:299: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:300: const stageKey = normStageKey(item.label); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:310: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:311: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:376: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:377: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:381: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:383: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:385: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:386: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:388: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:389: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:390: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:394: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:401: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:402: return normStageKey(item.label) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:408: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:463: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:466: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:473: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:487: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:508: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163606:529: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:125: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:137: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:142: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:153: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:154: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:155: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:156: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:164: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:171: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:172: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:190: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:220: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:221: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:249: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:253: items /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:259: items /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped") /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:296: const hasItemRuntimeFail = result.some(function (row) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:300: if (hasMatrixFail && !hasItemRuntimeFail) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:302: row_kind: "item_runtime", /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:304: subcategory: subcategory || "unmapped", /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:311: evidence_source: "runtime_subcategoryRows_fail_overlay" /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:380: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:383: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:388: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:536: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:552: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:556: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:558: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:559: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:568: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:569: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:700: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:705: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:706: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:710: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:712: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:714: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:715: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:717: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:718: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:719: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:723: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:731: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:732: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:740: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:779: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:814: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:844: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:850: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:861: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:871: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:877: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:891: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:903: row.item_id || "", /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:905: row.subcategory || "", /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:912: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items) /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:927: els.rowTable.innerHTML = '

MISSING runtime evidence

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:932: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:933: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:937: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:938: '

' + titleize(row.subcategory || "unmapped") + ' / ' + titleize(row.technology || "runtime") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:948: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:949: openJson(row.runtime_id || row.item_id || "runtime_row", row); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:952: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:986: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1017: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1072: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1074: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1088: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1097: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1103: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1104: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1106: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.broken_after_nav_patch_20260405_144740:1107: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:23: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:110: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:112: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:116: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:119: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:124: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:214: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:215: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:221: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:222: const stageKey = normStageKey(item.label); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:231: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:232: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:293: const items = state.runtimeStatus.runtime_snapshot || []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:294: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:297: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:298: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:302: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:304: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:306: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:307: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:309: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:310: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:311: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:315: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:322: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:323: return normStageKey(item.label) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:329: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:331: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:333: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:334: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:384: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:387: const subCounts = countStatuses(group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:392: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:393: '' + group.items.length + ' rows', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:396: const subRuntimeRows = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:408: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:417: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:418: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:419: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:420: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:429: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:432: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:448: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093703:464: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:126: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:138: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:143: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:154: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:155: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:156: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:157: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:165: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:172: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:173: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:191: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:239: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:240: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:268: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:272: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:278: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped") /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:315: const hasItemRuntimeFail = result.some(function (row) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:319: if (hasMatrixFail && !hasItemRuntimeFail) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:321: row_kind: "item_runtime", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:323: subcategory: subcategory || "unmapped", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:330: evidence_source: "runtime_subcategoryRows_fail_overlay" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:399: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:402: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:407: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:576: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:577: const items = (state.contentIndex.content_index || []) /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:578: .filter(function (item) { return !!item.stage_key; }) /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:585: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:586: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:594: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:595: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:703: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:704: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:706: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:709: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:710: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:714: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:716: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:718: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:719: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:721: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:722: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:723: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:727: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:735: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:736: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:744: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:745: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:759: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:761: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:762: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:783: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:819: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:820: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:849: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:855: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:866: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:869: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:876: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:882: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:896: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:906: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:907: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:914: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:915: '

' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:925: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:928: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:960: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:991: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1044: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1057: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1058: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1072: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1083: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1084: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1086: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.refactor_ui_20260409_081202:1087: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:125: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:137: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:142: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:153: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:154: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:155: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:156: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:164: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:171: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:172: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:184: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:185: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:210: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:213: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:219: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:298: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:301: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:306: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:458: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:474: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:478: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:480: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:481: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:485: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:492: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:493: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:627: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:628: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:632: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:634: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:636: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:637: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:639: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:640: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:641: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:645: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:653: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:654: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:660: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:683: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:719: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:749: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:755: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:766: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:774: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:779: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:793: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:802: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:803: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:804: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:805: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:814: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:817: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:881: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:936: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:938: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:952: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:961: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:968: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:970: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160922:971: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:125: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:137: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:142: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:153: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:154: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:155: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:156: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:164: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:171: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:172: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:190: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:220: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:221: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:249: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:253: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:259: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped") /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:296: const hasItemRuntimeFail = result.some(function (row) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:300: if (hasMatrixFail && !hasItemRuntimeFail) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:302: row_kind: "item_runtime", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:304: subcategory: subcategory || "unmapped", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:311: evidence_source: "runtime_subcategoryRows_fail_overlay" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:380: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:383: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:388: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items) || []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:558: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:574: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:578: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:580: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:581: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:582: const groups = groupBySubcategory(getRowsForStage(stageKey)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:584: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:591: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:592: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:722: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:723: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:725: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:728: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:729: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:733: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:735: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:737: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:738: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:740: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:741: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:742: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:746: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:754: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:755: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:763: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:764: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:778: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:780: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:781: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:802: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:837: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:838: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:867: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:873: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:884: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:887: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:894: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:900: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:914: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:924: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:925: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:932: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:933: '

' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:943: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:946: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:979: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1010: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1065: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1067: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1081: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1090: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1096: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1097: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1099: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_snapshot_boundary_20260405_164823:1100: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:125: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:137: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:142: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:153: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:154: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:155: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:156: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:164: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:171: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:172: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:184: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:185: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:203: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:267: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:270: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:275: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:427: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:443: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:447: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:449: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:450: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:454: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:461: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:462: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:592: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:593: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:596: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:597: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:601: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:603: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:605: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:606: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:608: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:609: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:610: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:614: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:622: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:623: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:629: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:630: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:635: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:637: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:638: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:652: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:688: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:689: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:718: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:724: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:735: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:738: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:745: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:759: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:768: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:769: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:770: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:771: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:780: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:783: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:816: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:847: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:902: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:904: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:918: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:927: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:933: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:934: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:936: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix2_20260403_032033:937: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:23: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:130: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:194: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:197: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:202: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:292: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:299: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:300: const stageKey = normStageKey(item.label); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:310: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:311: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:376: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:377: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:381: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:383: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:385: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:386: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:388: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:389: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:390: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:394: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:400: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:401: return normStageKey(item.label) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:407: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:434: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:437: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:444: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:458: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:467: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:468: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:469: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:470: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:479: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:482: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:509: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162550:530: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:126: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:138: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:143: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:154: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:155: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:156: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:157: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:165: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:172: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:173: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:191: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:239: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:240: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:268: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:272: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:278: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped") /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:315: const hasItemRuntimeFail = result.some(function (row) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:319: if (hasMatrixFail && !hasItemRuntimeFail) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:321: row_kind: "item_runtime", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:323: subcategory: subcategory || "unmapped", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:330: evidence_source: "runtime_subcategoryRows_fail_overlay" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:399: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:402: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:407: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:576: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:592: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:596: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:598: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:599: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:600: const groups = groupBySubcategory(stageRows(stageKey)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:602: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:609: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:610: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:727: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:728: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:733: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:734: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:738: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:740: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:742: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:743: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:745: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:746: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:747: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:751: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:759: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:760: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:768: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:769: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:807: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:843: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:844: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:873: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:879: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:890: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:900: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:906: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:920: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:930: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:931: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:938: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:939: '

' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:949: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:952: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1015: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1070: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1071: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1085: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1094: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1100: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1101: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1103: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_20260407_112808:1104: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:125: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:137: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:142: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:153: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:154: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:155: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:156: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:164: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:171: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:172: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:190: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:220: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:221: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:251: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:255: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:261: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:350: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:353: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:358: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:506: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:522: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:526: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:528: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:529: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:538: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:539: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:670: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:675: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:676: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:680: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:682: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:684: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:685: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:687: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:688: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:689: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:693: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:701: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:702: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:710: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:749: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:784: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:814: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:820: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:831: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:841: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:847: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:861: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:870: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:871: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:872: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:873: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:882: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:885: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:949: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1004: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1006: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1020: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1029: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1035: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1036: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1038: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_nav_real_20260404_134045:1039: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:23: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:130: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:194: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:197: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:202: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:292: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:299: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:300: const stageKey = normStageKey(item.label); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:310: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:311: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:376: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:377: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:381: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:383: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:385: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:386: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:388: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:389: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:390: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:394: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:402: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:403: return normStageKey(item.label) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:409: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:436: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:439: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:446: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:460: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:469: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:470: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:471: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:472: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:481: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:484: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:511: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_161436:532: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:27: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:114: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:115: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:118: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:127: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:128: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:131: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:146: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:148: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:210: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:213: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:218: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:330: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:331: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:337: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:338: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:342: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:349: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:350: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:413: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:414: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:417: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:418: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:422: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:424: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:426: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:427: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:429: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:430: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:431: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:435: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:443: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:444: return normStageKey(item.stage_key) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:450: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:451: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:456: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:458: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:459: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:473: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:509: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:510: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:539: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:545: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:556: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:559: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:566: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:580: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:589: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:590: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:591: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:592: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:601: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:604: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:637: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:668: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:723: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:744: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:749: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:750: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:752: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162514:753: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:24: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:131: function runtimeSubcategoryRows(stageKey, subcategory) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:133: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:195: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:198: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:203: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:315: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:316: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:322: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:323: const stageKey = normStageKey(item.label); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:333: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:334: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:394: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:395: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:398: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:399: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:403: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:405: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:407: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:408: '

Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:410: '' + safeUpper(item.overall_status) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:411: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:412: 'last run: ' + valueOrDash(item.last_run_at, "") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:416: openJson(item.runtime_id, item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:424: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:425: return normStageKey(item.label) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:431: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:433: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:435: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:436: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:487: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:490: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:497: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:511: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:520: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:521: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:522: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:523: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:532: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:535: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:568: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:599: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:654: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260328_205825:675: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:30: subcategoryGrid: document.getElementById("subcategory-grid"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:49: canonicalTree: null, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:125: function getContentItems() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:137: return state.canonicalTree.layer_tree.map(function (layer) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:142: phase_origin: [], /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:153: function getStageItemsForLayer(layerKey) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:154: return getContentItems() /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:155: .filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:156: return String(item.canonical_layer_key || "") === String(layerKey || ""); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:164: function contentStageKey(item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || "" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:171: const navItem = getContentItems().find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:172: return normStageKey(item.stage_key) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:190: return runtimeRowKind(row) === "item_runtime"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:220: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:221: return contentStageKey(item) === stageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : [] /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:249: const items = Array.isArray(canonicalItems) ? canonicalItems : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:253: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:259: items /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped") /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:296: const hasItemRuntimeFail = result.some(function (row) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:300: if (hasMatrixFail && !hasItemRuntimeFail) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:302: row_kind: "item_runtime", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:304: subcategory: subcategory || "unmapped", /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:311: evidence_source: "runtime_subcategoryRows_fail_overlay" /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:380: function groupBySubcategory(rows) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:383: const key = row.subcategory || "unmapped"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:388: return { subcategory: entry[0], items: entry[1] }; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:536: function renderNav() { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:552: 'L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:556: const items = getStageItemsForLayer(group.layer_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:558: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:559: const stageKey = normStageKey(item.stage_key); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:568: '' + item.label + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:569: 'Order ' + item.deployment_order + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:700: return runtimeRowVisibleInCards(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:705: if (!items.length) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:706: els.pipelineRuntimeBoard.innerHTML = '

No runtime rows

Status is MISSING.

'; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:710: items.forEach(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:712: div.className = "pipeline-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:714: '

' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:715: '

Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:717: '' + runtimeRowStatus(item) + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:718: '' + valueOrDash(item.progress_pct, "%") + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:719: 'counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:723: openJson(item.runtime_id || item.item_id || "runtime_row", item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:731: const navItem = (state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:732: return contentStageKey(item) === normalizedStageKey; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:740: const groups = groupBySubcategory(rows); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:779: renderAuthorityDocs(navItem); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:814: function renderAuthorityDocs(navItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : []; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:844: div.className = "doc-link-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:850: '' + (doc.phase || "phase-unmapped") + '' /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:861: els.subcategoryGrid.innerHTML = ""; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:871: : ((group.items && group.items.length) || 0); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:877: '

' + titleize(group.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:891: els.subcategoryGrid.appendChild(card); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:900: const item = document.createElement("div"); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:901: item.className = "row-item"; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:902: item.innerHTML = [ /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:903: '

' + row.matrix_id + ' / ' + titleize(row.subcategory) + '

', /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:912: item.addEventListener("click", function () { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:915: els.rowTable.appendChild(item); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:979: pipeline_runtime_items: runtimeBoardCount, /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1034: getJson("panel_canonical_tree.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1036: getJson("subcategory_pipelines.json"), /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1050: state.canonicalTree = core[4]; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1059: renderNav(); /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1066: return !!item.stage_key; /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1068: if (firstItem) { /home/yeff/public_html/devon/panel/assets/js/panel.js.bak.helper_safe_20260405_162249:1069: selectStage(normStageKey(firstItem.stage_key)); /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:47: const BUCKETS = [ /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:57: const BUCKET_LABELS = { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:67: state.openPhases = new Set(); /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:69: state.selectedCategory = null; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:70: state.selectedBucket = null; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:72: function phaseOfCategory(cat) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:75: if (!m) return normStageKey("phase-01"); /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:76: return normStageKey("phase-" + String(parseInt(m[0], 10)).padStart(2, "0")); /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:79: function categoriesForPhase(phaseId) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:81: const key = normStageKey(phaseId); /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:86: const docPhaseHit = docs.some(function (doc) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:87: return normStageKey(doc && doc.phase) === key; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:90: const badgeHit = phaseOfCategory(cat) === key; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:91: const match = docPhaseHit || badgeHit; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:102: function phaseStatusClass(phaseId) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:103: const roll = stageRollup(phaseId); /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:107: function renderCanonicalNav() { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:110: const phases = (state.hubIndex && Array.isArray(state.hubIndex.phases)) ? state.hubIndex.phases : []; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:111: if (!phases.length) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:112: els.stageNav.innerHTML = '
MISSING hub phases / hubIndex binding
'; /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:120: function renderBuckets(phaseId, catId) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:122: '
', /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:123: BUCKETS.map(function (bucket) { /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:125: '
', /home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:126: '