',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:462: '
' + titleize(item.deployment_stage || "runtime") + ' / ' + titleize(item.technology || item.subcategory || "item") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:463: '
Kind: ' + titleize(item.row_kind || "runtime_row") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:466: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:500: function selectedPhaseObject() {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:501: 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:502: return phases.find(function (p) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:507: function selectedCategoryObject() {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:508: if (!state.selectedCategory) return null;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:511: return String(c.id || "") === String(state.selectedCategory);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:515: function renderCenterCategory(ph, cat) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:517: if (els.selectedStageName) els.selectedStageName.textContent = cat.title || ph.name || "Category";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:518: if (els.selectedStageDesc) els.selectedStageDesc.textContent = cat.sub || "Category view from canonical hub index.";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:519: if (els.selectedStageTotal) els.selectedStageTotal.innerHTML = ((cat.docs || []).length) + ' docs
in category';
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:520: if (els.selectedStageDonut) els.selectedStageDonut.innerHTML = donutMarkup(0, "category");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:524: return '
' + (doc.title || doc.label || doc.id || "item") + '' + (doc.type || "doc") + '';
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:529: function renderCenterBucket(ph, cat, bucket) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:530: if (els.selectedStageName) els.selectedStageName.textContent = (cat.title || ph.name || "Category") + " / " + titleize(bucket);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:531: if (els.selectedStageDesc) els.selectedStageDesc.textContent = "Bucket detail from canonical category documents.";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:533: if (els.selectedStageTotal) els.selectedStageTotal.innerHTML = docs.length + ' docs
in bucket view';
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:534: if (els.selectedStageDonut) els.selectedStageDonut.innerHTML = donutMarkup(0, titleize(bucket));
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:539: '
' + (doc.title || doc.label || doc.id || "item") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:548: const ph = selectedPhaseObject();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:549: const cat = selectedCategoryObject();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:553: if (cat && state.selectedBucket) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:554: renderCenterBucket(ph, cat, state.selectedBucket);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:559: renderCenterCategory(ph, cat);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:567: const items = ((state.contentIndex && state.contentIndex.content_index) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:568: const navItem = items.find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:569: return normStageKey(item.stage_key) === state.selectedStage;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:575: if (els.heroTitle) els.heroTitle.textContent = navItem ? navItem.label : titleize(state.selectedStage);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:580: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:583: els.selectedStageName.textContent = navItem ? navItem.label : titleize(state.selectedStage);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:633: getJsonOptional("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:651: renderCanonicalNav();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:656: const firstPhase = ((state.hubIndex && state.hubIndex.phases) || [])[0] || null;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:658: if (firstPhase) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:659: const firstPhaseKey = normStageKey(firstPhase.id || firstPhase.stage_key || "");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:660: state.openPhases = new Set([firstPhaseKey]);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:661: state.selectedStage = firstPhaseKey;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:662: renderCanonicalNav();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js:663: selectStage(firstPhaseKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:528: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:529: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:532: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:533: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:537: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:539: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:541: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:542: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:544: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:545: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:546: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:550: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:558: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:559: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:565: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:566: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:571: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:573: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:574: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:588: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:624: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:625: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:654: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:660: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:671: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:674: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:681: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:695: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:704: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:705: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:706: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:707: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:716: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:719: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:752: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:783: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:838: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:840: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:854: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:863: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:869: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:870: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:872: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_132530:873: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093658:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:190: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:193: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:200: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:214: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:219: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:220: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:226: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:228: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:230: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:231: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:258: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:259: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:260: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:261: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:270: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:273: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:299: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_181123:345: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:672: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:674: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:677: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:678: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:682: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:684: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:686: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:687: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:689: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:690: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:691: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:695: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:703: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:704: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:716: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:718: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:719: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:733: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:769: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:770: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:799: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:805: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:816: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:819: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:824: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:829: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:843: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:852: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:853: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:854: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:855: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:864: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:867: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:900: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:931: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:986: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:988: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:1002: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:1011: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:1017: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:1018: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:1020: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step5_selected_stage_20260403_173603:1021: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:567: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:583: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:587: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:589: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:590: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:591: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:593: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:600: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:601: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:731: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:732: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:734: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:737: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:738: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:742: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:744: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:746: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:747: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:749: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:750: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:751: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:755: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:763: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:764: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:772: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:773: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:787: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:789: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:790: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:811: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:847: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:848: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:877: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:883: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:894: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:897: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:904: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:910: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:924: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:934: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:935: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:942: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:943: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:953: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:956: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:988: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1019: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1074: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1076: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1090: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1099: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1105: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1106: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1108: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_pending_20260406_165048:1109: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243: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_160243:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243: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_160243:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_20260403_160243:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:558: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:574: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:578: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:580: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:581: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:582: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:584: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:591: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:592: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:722: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:723: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:725: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:728: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:729: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:733: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:735: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:737: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:738: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:740: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:741: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:742: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:746: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:754: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:755: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:763: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:764: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:778: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:780: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:781: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:802: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:838: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:839: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:868: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:874: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:885: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:888: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:895: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:901: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:915: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:925: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:926: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:933: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:934: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:944: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:947: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:980: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1011: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1066: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1068: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1082: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1091: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1097: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1098: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1100: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_all_smoke_autocalls_20260405_165322:1101: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_family_20260405_134057:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:558: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:574: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:578: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:580: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:581: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:582: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:584: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:591: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:592: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:722: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:723: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:725: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:728: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:729: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:733: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:735: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:737: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:738: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:740: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:741: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:742: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:746: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:754: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:755: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:763: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:764: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:778: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:780: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:781: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:802: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:838: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:839: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:868: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:874: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:885: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:888: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:895: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:901: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:915: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:925: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:926: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:933: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:934: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:944: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:947: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:980: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1011: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1066: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1068: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1082: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1091: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1097: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1098: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1100: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.kill_smoke_loop_20260405_165153:1101: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:190: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:193: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:200: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:214: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:235: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_170918:281: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:111: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:112: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:115: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:124: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:125: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:128: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:143: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:145: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:207: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:210: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:215: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:327: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:328: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:334: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:335: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:345: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:346: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:406: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:407: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:410: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:411: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:415: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:417: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:419: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:420: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:422: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:423: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:424: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:428: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:436: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:437: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:443: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:445: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:447: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:448: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:499: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:502: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:509: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:523: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:532: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:533: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:534: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:535: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:544: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:547: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:580: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:611: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:666: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:687: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:692: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:693: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:695: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150842:696: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:558: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:574: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:578: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:580: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:581: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:582: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:584: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:591: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:592: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:722: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:723: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:725: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:728: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:729: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:733: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:735: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:737: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:738: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:740: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:741: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:742: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:746: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:754: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:755: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:763: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:764: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:778: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:780: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:781: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:802: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:837: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:838: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:867: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:873: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:884: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:887: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:894: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:900: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:914: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:924: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:925: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:926: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:927: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:972: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1003: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1058: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1060: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1074: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1083: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1089: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1090: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1092: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_final_by_range_20260405_162954:1093: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434: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_fix2_20260407_113434:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1094: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1100: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1101: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1103: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_finalize_fix2_20260407_113434:1104: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:26: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:113: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:114: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:117: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:126: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:127: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:130: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:145: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:147: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:209: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:212: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:217: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:329: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:330: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:336: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:337: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:347: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:348: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:408: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:409: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:412: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:413: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:417: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:419: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:421: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:422: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:424: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:425: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:426: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:430: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:438: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:439: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:445: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:447: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:449: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:450: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:464: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:500: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:501: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:511: els.authorityDocList.innerHTML = '
No authority docs mappedMISSING
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:517: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:520: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:531: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:534: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:541: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:555: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:564: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:565: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:566: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:567: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:576: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:579: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:612: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:643: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:698: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:719: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:724: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:725: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:727: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_151518:728: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:183: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:186: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:191: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:280: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:281: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:287: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:288: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:296: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:297: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:358: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:359: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:362: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:363: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:367: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:369: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:371: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:372: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:374: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:375: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:376: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:380: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:387: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:388: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:394: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:396: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:398: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:399: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:449: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:452: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:459: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:473: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:482: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:483: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:484: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:485: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:494: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:497: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:513: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120843:529: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160847:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:204: runtimeRowKind(row) === "item_runtime"
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:205: || String((row && row.subcategory) || "").trim() === "container_runtime"
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:212: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:240: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:241: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:244: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:263: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:265: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:269: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:270: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:273: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:279: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:312: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:316: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:317: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:320: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:322: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:324: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:331: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:400: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:403: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:408: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:418: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:574: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:590: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:594: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:596: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:597: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:598: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:600: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:607: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:608: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:738: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:739: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:741: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:744: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:745: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:749: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:751: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:753: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:754: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:756: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:757: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:758: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:762: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:770: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:771: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:779: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:780: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:794: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:796: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:797: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:818: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:854: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:855: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:884: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:890: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:901: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:904: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:911: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:917: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:931: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:941: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:942: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:949: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:950: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:960: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:963: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:995: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1026: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1081: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1083: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1097: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1106: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1112: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1113: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1115: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore_20260406_192019:1116: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:971: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1002: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1082: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1083: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1085: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.select_stage_safe_20260407_224205:1086: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1021: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1031: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1037: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1038: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1040: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_20260404_191056:1041: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:183: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:186: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:191: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:281: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:282: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:288: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:289: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:298: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:299: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:360: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:361: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:364: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:365: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:369: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:371: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:373: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:374: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:376: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:377: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:378: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:382: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:389: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:390: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:396: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:398: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:400: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:401: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:451: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:454: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:461: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:475: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:484: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:485: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:486: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:487: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:496: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:499: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:515: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-120320:531: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_insert_line.20260326_114355.bak:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:903: row.item_id || "",
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:905: row.subcategory || "",
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:912: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items)
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:927: els.rowTable.innerHTML = '
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:932: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:933: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:937: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:938: '
' + titleize(row.subcategory || "unmapped") + ' / ' + titleize(row.technology || "runtime") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:948: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:949: openJson(row.runtime_id || row.item_id || "runtime_row", row);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:956: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:989: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1020: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1075: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1077: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1091: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1100: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1106: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1107: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1109: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.broken_20260405_141825:1110: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:26: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:113: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:114: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:117: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:126: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:127: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:130: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:145: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:147: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:209: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:212: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:217: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:329: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:330: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:336: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:337: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:347: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:348: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:408: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:409: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:412: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:413: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:417: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:419: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:421: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:422: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:424: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:425: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:426: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:430: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:438: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:439: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:445: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:447: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:449: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:450: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:464: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:500: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:501: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:521: els.authorityDocList.innerHTML = '
No authority docs mappedNo canonical authority source registered for this stage
MISSING';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:527: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:533: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:544: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:547: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:554: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:568: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:577: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:578: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:579: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:580: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:589: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:592: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:625: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:656: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:711: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:732: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:737: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:738: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:740: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_155940:741: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:575: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:591: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:595: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:597: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:598: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:599: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:601: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:608: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:609: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:739: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:740: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:742: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:745: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:746: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:750: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:752: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:754: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:755: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:757: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:758: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:759: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:763: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:771: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:772: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:780: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:781: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:795: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:797: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:798: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:819: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:855: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:856: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:885: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:891: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:902: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:905: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:912: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:918: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:932: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:942: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:943: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:950: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:951: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:961: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:964: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:996: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1027: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1082: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1084: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1098: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1107: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1113: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1114: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1116: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getRowsForStage_to_stageRows_20260405_170818:1117: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:421: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:437: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:441: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:443: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:444: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:448: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:455: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:456: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:586: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:587: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:590: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:591: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:595: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:597: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:599: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:600: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:602: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:603: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:604: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:608: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:616: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:617: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:623: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:624: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:629: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:631: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:632: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:646: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:682: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:683: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:712: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:718: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:729: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:732: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:739: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:753: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:762: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:763: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:764: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:765: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:774: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:777: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:810: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:841: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:896: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:898: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:912: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:921: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:927: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:928: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:930: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_fake_observed_donuts_20260402_202142:931: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:117: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:118: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:121: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:130: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:131: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:134: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:149: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:151: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:213: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:216: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:221: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:333: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:334: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:340: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:341: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:345: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:352: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:353: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:402: const items = (state.contentIndex && Array.isArray(state.contentIndex.content_index))
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:406: const unmapped = items.filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:407: return !(Array.isArray(item.authority_docs) && item.authority_docs.length > 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:410: const total = items.length;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:431: unmapped.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:434: btn.className = "canon-unmapped-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:435: btn.textContent = item.label || item.stage_key || "unmapped-stage";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:437: if (item.stage_key) selectStage(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:459: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:460: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:463: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:464: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:468: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:470: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:472: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:473: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:475: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:476: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:477: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:481: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:489: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:490: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:496: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:497: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:502: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:504: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:505: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:519: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:555: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:556: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:585: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:591: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:602: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:605: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:612: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:626: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:635: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:636: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:637: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:638: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:647: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:650: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:683: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:714: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:769: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:790: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:796: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:797: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:799: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.layer_runtime_split_20260331_214743:800: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247: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_mirror_phase1_20260404_131247:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1020: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1029: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1035: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1036: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1038: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_20260404_131247:1039: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:190: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:193: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:200: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:214: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:219: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:220: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:226: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:228: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:230: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:231: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:258: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:259: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:260: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:261: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:270: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:273: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:299: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_171858:345: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:567: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:583: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:587: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:589: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:590: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:591: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:593: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:600: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:601: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:731: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:732: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:734: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:737: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:738: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:742: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:744: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:746: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:747: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:749: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:750: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:751: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:755: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:763: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:764: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:772: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:773: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:787: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:789: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:790: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:811: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:847: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:848: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:877: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:883: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:894: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:897: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:904: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:910: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:924: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:934: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:935: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:942: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:943: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:953: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:956: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:988: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1019: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1074: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1076: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1090: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1099: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1105: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1106: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1108: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_global_project_progress_typo_20260406_161906:1109: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:436: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:439: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:446: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:460: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:469: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:470: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:471: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:472: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:481: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:484: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:511: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_162130:532: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:971: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1002: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1058: if(typeof renderNav === "function"){
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1086: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1087: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1101: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1112: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1113: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1115: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.recover_render_20260408_034351:1116: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.fix_20260325_191531.bak:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:537: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160029:558: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:293: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:294: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:300: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:301: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:311: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:312: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:382: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:384: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:386: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:387: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:389: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:390: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:391: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:395: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:403: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:404: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:410: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:412: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:414: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:415: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:466: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:469: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:476: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:490: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:499: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:500: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:501: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:502: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:511: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:514: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:541: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_fix.20260326_095220.bak:562: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:111: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:112: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:115: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:124: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:125: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:128: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:143: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:145: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:207: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:210: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:215: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:327: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:328: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:334: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:335: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:345: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:346: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:406: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:407: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:410: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:411: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:415: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:417: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:419: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:420: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:422: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:423: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:424: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:428: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:436: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:437: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:443: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:445: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:447: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:448: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:499: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:502: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:509: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:523: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:532: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:533: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:534: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:535: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:544: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:547: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:580: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:611: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:666: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:687: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:692: const firstItem = ((state.contentIndex.content_index || [])[0] || {});
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_141005:693: const first = firstItem.stage_key || "host_readiness";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:300: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:301: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:307: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:308: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:318: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:319: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:379: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:380: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:383: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:384: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:388: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:390: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:392: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:393: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:395: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:396: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:397: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:401: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:409: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:410: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:416: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:418: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:420: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:421: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:472: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:475: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:482: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:496: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:505: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:506: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:507: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:508: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:517: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:520: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:553: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:584: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:639: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_130515:660: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:26: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:113: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:114: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:117: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:126: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:127: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:130: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:145: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:147: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:209: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:212: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:217: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:329: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:330: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:336: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:337: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:347: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:348: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:408: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:409: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:412: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:413: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:417: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:419: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:421: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:422: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:424: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:425: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:426: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:430: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:438: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:439: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:445: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:446: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:451: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:453: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:454: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:468: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:504: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:505: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:525: els.authorityDocList.innerHTML = '
No authority docs mappedNo canonical authority source registered for this stage
MISSING';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:531: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:537: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:548: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:551: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:558: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:572: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:581: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:582: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:583: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:584: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:593: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:596: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:629: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:660: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:715: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:736: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:741: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:742: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:744: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_160314:745: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:117: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:118: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:121: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:130: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:131: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:134: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:149: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:151: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:213: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:216: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:221: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:333: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:334: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:340: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:341: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:345: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:352: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:353: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:402: const items = (state.contentIndex && Array.isArray(state.contentIndex.content_index))
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:406: const unmapped = items.filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:407: return !(Array.isArray(item.authority_docs) && item.authority_docs.length > 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:410: const total = items.length;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:431: unmapped.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:433: div.className = "canon-unmapped-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:434: div.textContent = item.label || item.stage_key || "unmapped-stage";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:455: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:456: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:459: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:460: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:464: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:466: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:468: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:469: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:471: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:472: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:473: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:477: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:485: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:486: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:492: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:493: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:498: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:500: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:501: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:515: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:551: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:552: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:581: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:587: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:598: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:601: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:608: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:622: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:631: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:632: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:633: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:634: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:643: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:646: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:679: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:710: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:765: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:786: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:792: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:793: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:795: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_164946:796: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:474: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:485: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_family_standard_20260403_034532:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:42: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:61: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:137: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:148: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:149: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:154: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:165: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:166: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:167: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:168: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:176: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:178: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:183: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:184: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:187: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:202: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:222: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:232: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:233: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:236: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:256: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:258: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:263: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:264: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:267: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:273: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:362: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:365: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:370: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:518: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:534: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:538: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:540: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:541: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:543: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:550: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:551: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:681: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:682: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:684: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:687: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:688: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:692: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:694: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:696: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:697: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:699: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:700: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:701: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:705: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:713: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:714: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:722: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:723: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:737: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:739: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:740: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:761: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:796: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:797: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:826: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:832: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:843: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:846: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:853: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:859: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:873: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:887: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:888: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:889: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:890: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:899: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:902: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:935: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:966: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1021: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1023: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1038: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1048: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1054: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1055: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1057: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_overlay_20260404_191211:1058: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:197: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:199: const items = ((state.contentIndex && state.contentIndex.content_index) || [])
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:200: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:207: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:208: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:215: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:216: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:267: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:269: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:272: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:273: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:276: els.pipelineRuntimeBoard.innerHTML = items.slice(0, 24).map(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:277: const status = runtimeStatusOf(item);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:279: '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:280: '
' + titleize(item.deployment_stage || "runtime") + ' / ' + titleize(item.technology || item.subcategory || "item") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:281: '
Kind: ' + titleize(item.row_kind || "runtime_row") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:284: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:319: const items = ((state.contentIndex && state.contentIndex.content_index) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:320: const navItem = items.find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:321: return normStageKey(item.stage_key) === state.selectedStage;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:327: if (els.heroTitle) els.heroTitle.textContent = navItem ? navItem.label : titleize(state.selectedStage);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:332: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:335: els.selectedStageName.textContent = navItem ? navItem.label : titleize(state.selectedStage);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:383: getJsonOptional("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:400: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:405: const firstItem = ((state.contentIndex && state.contentIndex.content_index) || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:406: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:409: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.pipeline_section_20260408_045050:410: selectStage(firstItem.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219: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_donut_regex_20260406_185219:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:572: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:588: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:592: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:594: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:595: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:596: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:598: 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_donut_regex_20260406_185219:605: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:606: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:736: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:737: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:739: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:742: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:743: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:747: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:749: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:751: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:752: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:754: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:755: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:756: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:760: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:768: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:769: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:777: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:778: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:792: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:794: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:795: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:816: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:852: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:853: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:882: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:888: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:899: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:902: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:909: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:915: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:929: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:939: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:940: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:947: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:948: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:958: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:961: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:993: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1024: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1079: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1081: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1095: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1104: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1110: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1111: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1113: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_regex_20260406_185219:1114: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_minimal_runtime_swap_20260405_145532:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:383: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:399: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:403: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:405: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:406: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:410: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:417: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:418: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:548: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:549: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:552: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:553: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:557: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:559: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:561: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:562: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:564: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:565: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:566: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:570: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:578: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:579: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:585: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:586: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:591: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:593: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:594: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:608: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:644: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:645: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:674: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:680: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:691: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:694: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:701: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:715: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:724: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:725: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:726: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:727: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:736: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:739: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:772: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:803: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:858: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:860: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:874: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:883: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:889: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:890: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:892: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_donut_revert_20260402_135806:893: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:971: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1002: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1082: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1083: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1085: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_20260408_033908:1086: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:971: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1002: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1082: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1083: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1085: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_231046:1086: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:383: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:399: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:403: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:405: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:406: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:410: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:417: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:418: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:548: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:549: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:552: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:553: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:557: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:559: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:561: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:562: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:564: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:565: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:566: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:570: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:578: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:579: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:585: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:586: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:591: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:593: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:594: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:608: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:644: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:645: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:674: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:680: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:691: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:694: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:701: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:715: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:724: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:725: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:726: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:727: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:736: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:739: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:772: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:803: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:858: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:860: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:874: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:883: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:889: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:890: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:892: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_missing_20260402_144534:893: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:672: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:674: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:677: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:678: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:682: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:684: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:686: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:687: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:689: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:690: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:691: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:695: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:703: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:704: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:714: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:715: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:719: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:721: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:722: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:723: els.selectedStageDesc.textContent = "Stage Completion % = PASS / total semantically eligible runtime items. Doc audit comes from mapped authority docs. Runtime audit comes only from emitted runtime evidence. MISSING, FAIL and RUNNING do not count as completed.";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:724: els.selectedStageTotal.innerHTML = opCounts.total + ' eligible runtime items
in contract';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:736: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:772: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:773: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:802: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:808: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:819: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:822: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:827: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:832: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:846: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:855: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:856: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:857: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:858: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:867: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:870: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:903: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:934: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:989: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:991: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:1005: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:1014: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:1020: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:1021: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:1023: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_20260403_173833:1024: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.before_restore_20260325_180102.bak:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:545: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:576: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:631: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_linefix.20260326_124337.bak:652: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:201: return runtimeRowKind(row) === "item_runtime"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:209: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:237: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:238: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:241: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:260: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:262: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:266: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:267: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:270: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:276: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:309: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:313: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:314: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:317: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:319: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:321: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:328: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:397: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:400: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:405: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:415: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:571: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:587: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:591: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:593: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:594: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:595: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:597: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:604: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:605: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:735: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:736: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:738: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:741: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:742: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:746: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:748: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:750: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:751: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:753: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:754: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:755: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:759: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:767: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:768: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:776: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:777: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:791: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:793: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:794: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:815: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:851: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:852: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:881: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:887: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:898: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:901: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:908: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:914: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:928: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:938: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:939: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:946: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:947: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:957: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:960: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:992: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1023: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1078: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1080: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1094: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1103: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1109: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1110: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1112: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_docker_runtime_eligibility_20260406_190255:1113: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:685: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:687: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:689: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:693: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:708: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:709: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:714: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:716: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:717: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:731: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:767: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:768: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:797: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:803: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:814: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:817: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:822: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:827: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:841: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:850: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:851: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:852: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:853: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:862: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:865: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:898: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:929: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:984: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:986: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:1000: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:1009: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:1015: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:1016: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:1018: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step4_pipeline_board_20260403_173439:1019: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:712: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:713: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:717: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:719: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:720: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:721: els.selectedStageDesc.textContent = "Stage Completion % = PASS / total semantically eligible runtime items. Doc audit comes from mapped authority docs. Runtime audit comes only from emitted runtime evidence. MISSING, FAIL and RUNNING do not count as completed.";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:722: els.selectedStageTotal.innerHTML = opCounts.total + ' eligible runtime items
in contract';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:734: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:770: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:771: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:800: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:806: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:817: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:820: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:825: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:830: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:844: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:853: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:854: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:855: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:856: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:865: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:868: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:901: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:932: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:987: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:989: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:1003: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:1012: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:1018: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:1019: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:1021: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_20260403_192916:1022: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:131: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:133: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:195: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:198: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:203: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:315: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:316: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:322: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:323: const stageKey = normStageKey(item.stage_key || item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:333: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:334: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:394: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:395: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:398: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:399: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:405: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:407: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:408: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:410: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:411: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:412: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:416: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:424: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:425: return normStageKey(item.stage_key || item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:431: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:433: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:435: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:436: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:487: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:490: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:497: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:511: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:520: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:521: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:522: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:523: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:532: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:535: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:568: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:599: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:654: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:675: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:680: const firstItem = ((state.contentIndex.content_index || [])[0] || {});
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_020905:681: const first = firstItem.stage_key || firstItem.label || "host_readiness";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:971: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1002: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1082: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1083: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1085: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_render_20260407_223344:1086: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:131: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:133: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:195: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:198: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:203: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:315: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:316: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:322: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:323: const stageKey = normStageKey(item.stage_key || item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:333: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:334: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:394: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:395: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:398: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:399: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:405: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:407: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:408: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:410: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:411: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:412: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:416: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:424: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:425: return normStageKey(item.stage_key || item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:431: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:433: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:435: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:436: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:487: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:490: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:497: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:511: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:520: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:521: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:522: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:523: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:532: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:535: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:568: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:599: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:654: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:675: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:680: const firstItem = ((state.contentIndex.content_index || [])[0] || {});
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260329_021259:681: const first = firstItem.stage_key || firstItem.label || "host_readiness";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:203: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:267: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:270: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:275: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:427: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:443: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:447: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:449: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:450: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:454: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:461: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:462: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:592: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:593: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:596: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:597: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:601: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:603: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:605: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:606: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:608: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:609: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:610: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:614: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:622: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:623: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:629: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:630: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:635: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:637: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:638: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:652: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:688: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:689: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:718: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:724: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:735: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:738: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:745: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:759: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:768: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:769: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:770: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:771: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:780: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:783: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:816: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:847: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:902: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:904: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:918: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:927: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:933: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:934: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:936: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_group_fix_20260403_033813:937: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:130: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:141: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:142: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:147: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:158: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:159: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:160: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:161: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:169: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:171: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:176: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:177: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:180: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:195: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:215: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:243: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:244: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:247: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:266: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:268: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:272: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:273: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:276: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:282: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:315: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:319: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:320: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:323: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:325: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:327: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:334: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:403: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:406: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:411: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:421: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:580: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:596: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:600: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:602: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:603: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:604: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:606: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:613: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:614: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:744: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:745: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:747: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:750: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:751: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:755: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:757: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:759: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:760: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:762: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:763: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:764: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:768: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:776: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:777: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:785: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:786: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:800: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:802: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:803: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:824: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:860: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:861: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:890: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:896: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:907: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:910: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:917: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:923: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:937: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:947: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:948: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:955: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:956: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:966: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:969: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1001: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1032: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1087: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1088: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1102: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1111: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1117: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1118: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1120: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_call_20260407_105524:1121: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:672: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:674: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:677: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:678: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:682: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:684: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:686: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:687: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:689: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:690: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:691: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:695: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:703: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:704: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:714: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:715: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:719: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:721: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:722: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:723: els.selectedStageDesc.textContent = "Stage Completion % = PASS / total semantically eligible runtime items. Doc audit comes from mapped authority docs. Runtime audit comes only from emitted runtime evidence. MISSING, FAIL and RUNNING do not count as completed.";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:724: els.selectedStageTotal.innerHTML = opCounts.total + ' eligible runtime items
in contract';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:736: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:772: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:773: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:802: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:808: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:819: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:822: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:827: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:832: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:846: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:855: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:856: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:857: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:858: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:867: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:870: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:903: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:934: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:989: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:991: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:1005: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:1014: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:1020: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:1021: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:1023: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step6_subcategories_20260403_173716:1024: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:111: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:112: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:115: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:124: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:125: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:128: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:143: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:145: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:207: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:210: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:215: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:327: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:328: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:334: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:335: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:345: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:346: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:406: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:407: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:410: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:411: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:415: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:417: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:419: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:420: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:422: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:423: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:424: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:428: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:436: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:437: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:443: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:445: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:447: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:448: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:499: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:502: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:509: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:523: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:532: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:533: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:534: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:535: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:544: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:547: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:580: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:611: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:666: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:687: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:692: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:693: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:695: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_150241:696: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:136: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:139: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:144: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:234: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:235: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:241: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:242: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:251: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:252: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:313: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:314: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:317: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:318: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:322: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:324: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:326: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:327: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:329: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:330: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:331: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:335: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:342: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:343: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:349: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:351: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:353: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:354: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532: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-115532:356: els.selectedStageTotal.textContent = rows.length + " required items";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:404: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:407: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:412: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:413: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:417: ? donutMarkup(subCounts, "subcategory completion")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:418: : missingDonutMarkup("subcategory completion");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:426: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:435: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:436: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:437: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:438: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:447: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:450: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:466: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-115532:482: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:982: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1013: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1068: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1069: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1083: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1093: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1094: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1096: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_selectedStageCard_20260407_224651:1097: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:510: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:526: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:530: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:532: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:533: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:537: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:544: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:545: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:675: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:676: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:679: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:680: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:684: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:686: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:688: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:689: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:691: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:692: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:693: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:697: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:705: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:706: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:712: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:713: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:718: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:720: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:721: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:735: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:771: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:772: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:801: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:807: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:818: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:821: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:826: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:831: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:845: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:854: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:855: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:856: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:857: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:866: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:869: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:902: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:933: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:988: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:990: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:1004: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:1013: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:1019: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:1020: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:1022: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_20260403_173028:1023: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:474: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605: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_linepatch_20260403_161605:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_linepatch_20260403_161605:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:572: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:588: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:592: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:594: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:595: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:596: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:598: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:605: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:606: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:736: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:737: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:739: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:742: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:743: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:747: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:749: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:751: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:752: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:754: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:755: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:756: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:760: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:768: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:769: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:777: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:778: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:792: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:794: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:795: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:816: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:852: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:853: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:882: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:888: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:899: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:902: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:909: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:915: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:929: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:939: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:940: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:947: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:948: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:958: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:961: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:993: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1024: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1079: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1081: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1095: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1104: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1110: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1111: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1113: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_full_rollback_20260406_192312:1114: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:575: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:591: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:595: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:597: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:598: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:599: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:601: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:608: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:609: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:739: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:740: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:742: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:745: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:746: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:750: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:752: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:754: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:755: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:757: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:758: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:759: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:763: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:771: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:772: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:780: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:781: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:795: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:797: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:798: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:819: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:855: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:856: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:885: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:891: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:902: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:905: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:912: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:918: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:932: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:942: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:943: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:950: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:951: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:961: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:964: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:996: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1027: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1082: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1084: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1098: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1107: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1113: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1114: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1116: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.repoint_contract_v2_20260407_095825:1117: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:557: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:573: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:577: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:579: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:580: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:581: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:583: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:590: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:591: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:721: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:722: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:724: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:727: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:728: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:732: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:734: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:736: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:737: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:739: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:740: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:741: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:745: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:753: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:754: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:762: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:763: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:777: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:779: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:780: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:801: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:837: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:838: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:867: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:873: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:884: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:887: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:894: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:900: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:914: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:924: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:925: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:932: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:933: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:943: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:946: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:978: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1009: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1064: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1066: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1080: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1089: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1095: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1096: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1098: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtimeRowStatus_and_snapshot_order_20260405_170611:1099: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:672: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:674: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:677: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:678: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:682: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:684: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:686: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:687: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:689: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:690: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:691: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:695: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:703: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:704: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:714: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:715: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:719: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:721: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:722: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:723: els.selectedStageDesc.textContent = "Stage Completion % = PASS / total semantically eligible runtime items. Doc audit comes from mapped authority docs. Runtime audit comes only from emitted runtime evidence. MISSING, FAIL and RUNNING do not count as completed.";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:724: els.selectedStageTotal.innerHTML = opCounts.total + ' eligible runtime items
in contract';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:736: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:772: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:773: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:802: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:808: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:819: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:822: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:827: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:832: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:846: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:855: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:856: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:857: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:858: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:867: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:870: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:903: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:934: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:989: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:991: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:1005: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:1014: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:1020: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:1021: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:1023: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step7_navcount_fix_20260403_174002:1024: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:136: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:139: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:144: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:234: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:235: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:241: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:242: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:251: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:252: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:313: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:314: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:317: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:318: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:322: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:324: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:326: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:327: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:329: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:330: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:331: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:335: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:342: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:343: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:349: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:351: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:353: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:354: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505: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-111505:356: els.selectedStageTotal.textContent = rows.length + " required items";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:404: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:407: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:412: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:413: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:417: ? donutMarkup(subCounts, "subcategory completion")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:418: : missingDonutMarkup("subcategory completion");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:426: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:435: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:436: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:437: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:438: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:447: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:450: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:466: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111505:482: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:526: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_135721:542: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853: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_final_20260403_162853:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_final_20260403_162853:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929: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_mirror_phase1_fix_20260404_131929:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1020: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1029: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1035: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1036: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1038: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hub_mirror_phase1_fix_20260404_131929:1039: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:300: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:301: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:307: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:308: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:318: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:319: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:379: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:380: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:383: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:384: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:388: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:390: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:392: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:393: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:395: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:396: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:397: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:401: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:409: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:410: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:416: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:418: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:420: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:421: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:472: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:475: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:482: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:496: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:505: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:506: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:507: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:508: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:517: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:520: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:553: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:584: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:639: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_124133:660: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:546: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:547: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:550: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:551: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:555: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:557: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:559: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:560: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:562: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:563: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:564: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:568: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:576: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:577: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:583: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:584: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:589: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:591: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:592: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:606: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:642: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:643: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:672: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:678: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:689: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:692: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:699: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:713: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:722: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:723: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:724: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:725: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:734: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:737: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:770: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:801: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:856: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:858: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:872: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:881: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:887: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:888: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:890: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.project_progress_from_devon_20260402_152041:891: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:528: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:529: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:532: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:533: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:537: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:539: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:541: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:542: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:544: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:545: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:546: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:550: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:558: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:559: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:565: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:566: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:571: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:573: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:574: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:588: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:624: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:625: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:654: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:660: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:671: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:674: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:681: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:695: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:704: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:705: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:706: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:707: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:716: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:719: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:752: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:783: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:838: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:840: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:854: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:863: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:869: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:870: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:872: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133922:873: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_family_swap_20260405_162124:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:528: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:529: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:532: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:533: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:537: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:539: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:541: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:542: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:544: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:545: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:546: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:550: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:558: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:559: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:565: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:566: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:571: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:573: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:574: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:588: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:624: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:625: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:654: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:660: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:671: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:674: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:681: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:695: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:704: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:705: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:706: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:707: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:716: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:719: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:752: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:783: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:838: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:840: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:854: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:863: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:869: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:870: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:872: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.required_steps_force_break_20260331_233336:873: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:592: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:602: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:727: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:751: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:769: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:844: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1095: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1096: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1098: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.clean_nav_replace_20260407_210512:1099: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:526: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152324:542: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:300: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:301: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:307: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:308: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:318: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:319: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:379: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:380: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:383: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:384: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:388: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:390: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:392: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:393: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:395: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:396: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:397: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:401: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:409: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:410: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:416: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:418: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:420: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:421: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:472: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:475: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:482: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:496: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:505: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:506: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:507: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:508: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:517: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:520: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:553: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:584: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:639: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_123609:660: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:136: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:139: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:144: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:234: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:235: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:241: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:242: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:251: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:252: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:313: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:314: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:317: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:318: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:322: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:324: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:326: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:327: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:329: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:330: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:331: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:335: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:342: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:343: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:349: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:351: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:353: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:354: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209: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-114209:356: els.selectedStageTotal.textContent = rows.length + " required items";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:404: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:407: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:412: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:413: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:417: ? donutMarkup(subCounts, "subcategory completion")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:418: : missingDonutMarkup("subcategory completion");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:426: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:435: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:436: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:437: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:438: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:447: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:450: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:466: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-114209:482: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:575: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:591: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:595: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:597: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:598: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:599: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:601: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:608: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:609: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:739: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:740: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:742: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:745: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:746: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:750: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:752: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:754: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:755: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:757: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:758: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:759: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:763: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:771: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:772: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:780: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:781: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:795: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:797: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:798: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:819: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:855: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:856: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:885: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:891: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:902: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:905: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:912: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:918: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:932: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:942: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:943: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:950: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:951: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:961: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:964: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:996: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1027: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1082: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1084: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1098: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1107: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1113: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1114: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1116: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.matrix_soft_disable_20260407_101438:1117: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.rollback_20260325_181248.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.rollback_20260325_181248.bak:144: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.rollback_20260325_181248.bak:190: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:709: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:710: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:712: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:715: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:716: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:720: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:722: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:724: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:725: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:727: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:728: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:729: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:733: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:741: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:742: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:750: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:751: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:765: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:767: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:768: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:789: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:825: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:826: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:855: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:861: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:872: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:875: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:882: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:888: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:902: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:912: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:913: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:920: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:921: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:931: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:934: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:966: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:997: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1052: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1053: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1067: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1077: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1078: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1080: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.active_state_20260407_221114:1081: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:572: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:588: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:592: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:594: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:595: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:596: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:598: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:605: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:606: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:736: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:737: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:739: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:742: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:743: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:747: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:749: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:751: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:752: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:754: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:755: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:756: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:760: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:768: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:769: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:777: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:778: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:792: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:794: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:795: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:816: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:852: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:853: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:882: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:888: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:899: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:902: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:909: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:915: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:929: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:939: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:940: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:947: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:948: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:958: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:961: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:993: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1024: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1079: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1081: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1095: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1104: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1110: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1111: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1113: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_markup_project_progress_20260406_172131:1114: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_runtime_family_20260405_145300:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:136: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:139: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:144: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:234: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:235: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:241: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:242: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:251: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:252: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:313: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:314: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:317: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:318: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:322: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:324: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:326: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:327: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:329: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:330: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:331: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:335: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:342: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:343: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:349: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:351: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:353: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:354: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245: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-111245:356: els.selectedStageTotal.textContent = rows.length + " required items";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:404: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:407: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:412: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:413: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:417: ? donutMarkup(subCounts, "subcategory completion")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:418: : missingDonutMarkup("subcategory completion");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:426: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:435: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:436: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:437: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:438: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:447: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:450: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:466: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-111245:482: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:539: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_hook.20260326_101748.bak:560: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:435: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:439: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:446: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:460: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:469: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:470: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:471: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:472: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:481: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:484: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:511: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163146:532: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:572: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:588: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:592: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:594: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:595: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:596: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:598: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:605: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:606: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:736: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:737: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:739: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:742: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:743: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:747: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:749: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:751: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:752: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:754: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:755: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:756: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:760: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:768: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:769: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:777: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:778: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:792: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:794: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:795: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:816: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:852: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:853: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:882: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:888: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:899: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:902: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:909: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:915: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:929: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:939: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:940: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:947: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:948: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:958: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:961: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:993: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1024: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1079: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1081: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1095: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1104: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1110: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1111: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1113: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_donut_pct_logic_20260406_172842:1114: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:712: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:713: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:715: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:718: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:719: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:723: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:725: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:727: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:728: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:730: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:731: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:732: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:736: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:744: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:745: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:753: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:754: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:768: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:770: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:771: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:792: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:828: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:829: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:858: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:864: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:875: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:878: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:885: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:891: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:905: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:915: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:916: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:923: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:924: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:934: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:937: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:969: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1000: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1053: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1066: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1067: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1081: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1092: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1093: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1095: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hardfix_20260408_035328:1096: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:567: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:583: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:587: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:589: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:590: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:591: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:593: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:600: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:601: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:731: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:732: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:734: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:737: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:738: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:742: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:744: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:746: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:747: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:749: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:750: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:751: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:755: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:763: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:764: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:772: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:773: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:787: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:789: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:790: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:811: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:847: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:848: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:877: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:883: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:894: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:897: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:904: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:910: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:924: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:934: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:935: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:942: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:943: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:953: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:956: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:988: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1019: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1074: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1076: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1090: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1099: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1105: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1106: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1108: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_donut_runtime_20260406_165903:1109: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:111: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:112: return normStageKey(item.stage_key || item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:115: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:124: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:125: return normStageKey(item.stage_key || item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:128: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:143: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:145: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:207: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:210: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:215: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:327: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:328: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:334: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:335: const stageKey = normStageKey(item.stage_key || item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:345: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:346: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:406: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:407: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:410: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:411: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:415: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:417: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:419: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:420: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:422: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:423: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:424: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:428: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:436: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:437: return normStageKey(item.stage_key || item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:443: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:445: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:447: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:448: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:499: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:502: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:509: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:523: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:532: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:533: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:534: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:535: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:544: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:547: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:580: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:611: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:666: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:687: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:692: const firstItem = ((state.contentIndex.content_index || [])[0] || {});
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_135015:693: const first = firstItem.stage_key || firstItem.label || "host_readiness";
/home/yeff/public_html/devon/panel/assets/js/panel.js:3:const BUCKETS = [
/home/yeff/public_html/devon/panel/assets/js/panel.js:13:const BUCKET_DESC = {
/home/yeff/public_html/devon/panel/assets/js/panel.js:24: phases: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js:27: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js:30: openPhases: new Set(),
/home/yeff/public_html/devon/panel/assets/js/panel.js:33: phaseId: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js:35: bucket: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js:39: subcategory: null
/home/yeff/public_html/devon/panel/assets/js/panel.js:45: const [hub, contentIndex, canonicalTree, componentContract, host, docker, runtime, progress] = await Promise.all([
/home/yeff/public_html/devon/panel/assets/js/panel.js:48: fetch('data/panel_canonical_tree.json').then(r => r.json()),
/home/yeff/public_html/devon/panel/assets/js/panel.js:55: G.phases = hub.phases || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js:58: G.canonicalTree = canonicalTree || null;
/home/yeff/public_html/devon/panel/assets/js/panel.js:61: renderTree();
/home/yeff/public_html/devon/panel/assets/js/panel.js:65: document.getElementById('dp-tree').innerHTML =
/home/yeff/public_html/devon/panel/assets/js/panel.js:66: '
Load error: ' + e.message + '
';
/home/yeff/public_html/devon/panel/assets/js/panel.js:70:function phaseOfCat(cat) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:72: if (!m) return 'phase-01';
/home/yeff/public_html/devon/panel/assets/js/panel.js:73: return 'phase-' + String(parseInt(m[0])).padStart(2, '0');
/home/yeff/public_html/devon/panel/assets/js/panel.js:76:function catsForPhase(phaseId) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:77: return G.cats.filter(c => phaseOfCat(c) === phaseId);
/home/yeff/public_html/devon/panel/assets/js/panel.js:85: const sections = (G.canonicalTree && G.canonicalTree.deployment_sections) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js:97: String(r.component || r.subcategory || r.label || '').toLowerCase().includes(String(cardId || '').toLowerCase())
/home/yeff/public_html/devon/panel/assets/js/panel.js:104:function countsForStage(phaseId) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:105: const rows = (G.data.runtime?.runtime_snapshot || []).filter(r => String(r.deployment_stage || '').toLowerCase() === String(phaseId || '').toLowerCase());
/home/yeff/public_html/devon/panel/assets/js/panel.js:115:/* ── TREE ─────────────────────────────────────────── */
/home/yeff/public_html/devon/panel/assets/js/panel.js:117:function renderTree() {
/home/yeff/public_html/devon/panel/assets/js/panel.js:120: html += '
Deployment Stages
';
/home/yeff/public_html/devon/panel/assets/js/panel.js:121: for (const ph of G.phases) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:122: const isOpen = G.openPhases.has(ph.id);
/home/yeff/public_html/devon/panel/assets/js/panel.js:123: const phActive = G.sel.phaseId === ph.id ? ' ph-active' : '';
/home/yeff/public_html/devon/panel/assets/js/panel.js:124: const num = ph.step.replace('Phase ', '');
/home/yeff/public_html/devon/panel/assets/js/panel.js:133: for (const cat of catsForPhase(ph.id)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:142: BUCKETS.forEach((bk) => {
/home/yeff/public_html/devon/panel/assets/js/panel.js:143: const bkActive = G.sel.catId === cat.id && G.sel.bucket === bk ? ' bk-active' : '';
/home/yeff/public_html/devon/panel/assets/js/panel.js:154: html += '
Content Index
';
/home/yeff/public_html/devon/panel/assets/js/panel.js:164: document.getElementById('dp-tree').innerHTML = html;
/home/yeff/public_html/devon/panel/assets/js/panel.js:165: bindTree();
/home/yeff/public_html/devon/panel/assets/js/panel.js:168:function bindTree() {
/home/yeff/public_html/devon/panel/assets/js/panel.js:172: const wasOpen = G.openPhases.has(id);
/home/yeff/public_html/devon/panel/assets/js/panel.js:173: G.openPhases = wasOpen ? new Set() : new Set([id]);
/home/yeff/public_html/devon/panel/assets/js/panel.js:177: G.sel.bucket = null;
/home/yeff/public_html/devon/panel/assets/js/panel.js:179: G.sel.phaseId = id;
/home/yeff/public_html/devon/panel/assets/js/panel.js:180: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js:188: G.sel.phaseId = el.dataset.ph;
/home/yeff/public_html/devon/panel/assets/js/panel.js:190: G.sel.bucket = null;
/home/yeff/public_html/devon/panel/assets/js/panel.js:191: G.openPhases = new Set([el.dataset.ph]);
/home/yeff/public_html/devon/panel/assets/js/panel.js:193: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js:200: G.sel.phaseId = el.dataset.ph;
/home/yeff/public_html/devon/panel/assets/js/panel.js:202: G.sel.bucket = el.dataset.bk;
/home/yeff/public_html/devon/panel/assets/js/panel.js:203: G.openPhases = new Set([el.dataset.ph]);
/home/yeff/public_html/devon/panel/assets/js/panel.js:205: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js:215: G.sel.subcategory = null;
/home/yeff/public_html/devon/panel/assets/js/panel.js:216: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js:230: el.innerHTML = renderSectionWorkspace(nav, sec);
/home/yeff/public_html/devon/panel/assets/js/panel.js:235: if (!G.sel.phaseId) { el.innerHTML = renderSummary(); return; }
/home/yeff/public_html/devon/panel/assets/js/panel.js:236: const ph = G.phases.find(p => p.id === G.sel.phaseId);
/home/yeff/public_html/devon/panel/assets/js/panel.js:237: if (!G.sel.catId) { el.innerHTML = renderPhaseOverview(ph); return; }
/home/yeff/public_html/devon/panel/assets/js/panel.js:239: if (!G.sel.bucket) { el.innerHTML = renderCatOverview(ph, cat); return; }
/home/yeff/public_html/devon/panel/assets/js/panel.js:240: el.innerHTML = renderBucketDetail(ph, cat, G.sel.bucket);
/home/yeff/public_html/devon/panel/assets/js/panel.js:252:
Select a phase in the tree to navigate. Canon leads. Runtime validates. UI renders.
/home/yeff/public_html/devon/panel/assets/js/panel.js:262:function renderPhaseOverview(ph) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:263: const cats = catsForPhase(ph.id);
/home/yeff/public_html/devon/panel/assets/js/panel.js:279: const bkCards = BUCKETS.map((bk, i) => `
/home/yeff/public_html/devon/panel/assets/js/panel.js:282:
${BUCKET_DESC[bk]}
/home/yeff/public_html/devon/panel/assets/js/panel.js:291:
Process Buckets
/home/yeff/public_html/devon/panel/assets/js/panel.js:298:function renderSectionWorkspace(nav, sec) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:305:
${st}
/home/yeff/public_html/devon/panel/assets/js/panel.js:318:
Workspace section driven by panel_content_index + panel_canonical_tree.
/home/yeff/public_html/devon/panel/assets/js/panel.js:330:
${cards || '
No cards registered for this section.
'}
/home/yeff/public_html/devon/panel/assets/js/panel.js:334:function renderBucketDetail(ph, cat, bucket) {
/home/yeff/public_html/devon/panel/assets/js/panel.js:335: const phIdx = G.phases.findIndex(p => p.id === ph.id);
/home/yeff/public_html/devon/panel/assets/js/panel.js:336: const bkIdx = BUCKETS.indexOf(bucket);
/home/yeff/public_html/devon/panel/assets/js/panel.js:338: const items = docs.map(doc => {
/home/yeff/public_html/devon/panel/assets/js/panel.js:340: const cls = st === 'PASS' ? 'item-ok' : st === 'FAIL' ? 'item-fail' : '';
/home/yeff/public_html/devon/panel/assets/js/panel.js:342: return `
/home/yeff/public_html/devon/panel/assets/js/panel.js:343:
${ico}
/home/yeff/public_html/devon/panel/assets/js/panel.js:344:
/home/yeff/public_html/devon/panel/assets/js/panel.js:345:
${doc.title}
/home/yeff/public_html/devon/panel/assets/js/panel.js:346:
${doc.role || ''}
/home/yeff/public_html/devon/panel/assets/js/panel.js:347:
${doc.path || ''}
/home/yeff/public_html/devon/panel/assets/js/panel.js:349:
${st}
/home/yeff/public_html/devon/panel/assets/js/panel.js:353: const phPct = Math.round((phIdx / G.phases.length) * 100);
/home/yeff/public_html/devon/panel/assets/js/panel.js:354: const bkPct = Math.round((bkIdx / BUCKETS.length) * 100);
/home/yeff/public_html/devon/panel/assets/js/panel.js:357:
${ph.step} / ${cat.title} / ${bucket}
/home/yeff/public_html/devon/panel/assets/js/panel.js:358:
${ph.step}${bucket}
/home/yeff/public_html/devon/panel/assets/js/panel.js:361:
${ph.step}/${cat.title}
/home/yeff/public_html/devon/panel/assets/js/panel.js:363:
${BUCKET_DESC[bucket]}
/home/yeff/public_html/devon/panel/assets/js/panel.js:367:
Phase ${phIdx + 1} of ${G.phases.length}
/home/yeff/public_html/devon/panel/assets/js/panel.js:372:
Bucket ${bkIdx + 1} of ${BUCKETS.length}
/home/yeff/public_html/devon/panel/assets/js/panel.js:374:
${bucket}
/home/yeff/public_html/devon/panel/assets/js/panel.js:377:
/home/yeff/public_html/devon/panel/assets/js/panel.js:378:
Authority Documents — ${cat.title}
/home/yeff/public_html/devon/panel/assets/js/panel.js:379: ${items || '
No documents registered for this category.
'}
/home/yeff/public_html/devon/panel/assets/js/panel.js:388: (r.label || r.subcategory || r.component || '').toLowerCase().includes(name)
/home/yeff/public_html/devon/panel/assets/js/panel.js:415: const ph10 = G.phases.find(p => p.id === 'phase-10');
/home/yeff/public_html/devon/panel/assets/js/panel.js:417: G.openPhases.add('phase-10');
/home/yeff/public_html/devon/panel/assets/js/panel.js:418: G.sel.phaseId = 'phase-10';
/home/yeff/public_html/devon/panel/assets/js/panel.js:419: G.sel.catId = null; G.sel.bucket = null;
/home/yeff/public_html/devon/panel/assets/js/panel.js:420: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js:442:/* ── CAT CARD CLICK (phase overview) ─────────────── */
/home/yeff/public_html/devon/panel/assets/js/panel.js:447: G.sel.phaseId = cc.dataset.ph;
/home/yeff/public_html/devon/panel/assets/js/panel.js:449: G.sel.bucket = null;
/home/yeff/public_html/devon/panel/assets/js/panel.js:450: G.openPhases.add(cc.dataset.ph);
/home/yeff/public_html/devon/panel/assets/js/panel.js:452: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js:456: G.sel.phaseId = bc.dataset.ph;
/home/yeff/public_html/devon/panel/assets/js/panel.js:458: G.sel.bucket = bc.dataset.bk;
/home/yeff/public_html/devon/panel/assets/js/panel.js:459: G.openPhases.add(bc.dataset.ph);
/home/yeff/public_html/devon/panel/assets/js/panel.js:461: renderTree(); renderDetail();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:546: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:547: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:550: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:551: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:555: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:557: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:559: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:560: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:562: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:563: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:564: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:568: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:576: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:577: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:583: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:584: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:589: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:591: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:592: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:606: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:642: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:643: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:672: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:678: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:689: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:692: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:699: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:713: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:722: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:723: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:724: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:725: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:734: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:737: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:770: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:801: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:856: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:858: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:872: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:881: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:887: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:888: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:890: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.donut_runtime_fix_20260402_135423:891: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoke_funcs.20260326_113905.bak:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:507: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_163427:528: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:510: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:526: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:530: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:532: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:533: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:537: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:544: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:545: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:675: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:676: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:679: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:680: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:684: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:686: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:688: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:689: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:691: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:692: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:693: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:697: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:705: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:706: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:712: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:713: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:718: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:720: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:721: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:735: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:771: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:772: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:801: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:807: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:818: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:821: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:826: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:831: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:845: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:854: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:855: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:856: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:857: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:866: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:869: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:902: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:933: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:988: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:990: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:1004: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:1013: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:1019: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:1020: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:1022: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_range_20260403_173336:1023: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:110: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:112: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:116: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:119: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:124: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:214: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:215: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:221: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:222: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:231: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:232: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:293: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:294: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:297: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:298: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:302: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:304: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:306: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:307: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:309: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:310: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:311: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:315: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:322: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:323: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:329: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:331: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:333: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:334: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:386: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:389: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:394: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:395: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:398: const subRuntimeRows = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:410: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:419: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:420: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:421: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:422: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:431: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:434: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:450: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092135:466: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:307: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:308: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:369: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:370: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:373: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:374: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:378: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:380: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:382: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:383: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:385: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:386: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:387: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:391: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:398: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:399: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:405: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:407: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:409: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:410: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:460: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:463: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:470: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:484: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:493: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:494: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:495: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:496: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:505: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:508: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:524: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-121117:540: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:839: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:844: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:858: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:867: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:868: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:869: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:870: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:879: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:882: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:915: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:946: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1001: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1003: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1017: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1026: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1032: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1033: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1035: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.subcards_na_fix_20260403_194832:1036: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:439: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:441: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:443: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:444: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:494: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:497: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:504: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:518: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:527: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:528: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:529: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:530: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:539: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:542: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:569: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160717:590: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:468: const items = (state.contentIndex && Array.isArray(state.contentIndex.content_index))
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:472: const unmapped = items.filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:473: return !(Array.isArray(item.authority_docs) && item.authority_docs.length > 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:476: const total = items.length;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:497: unmapped.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:500: btn.className = "canon-unmapped-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:501: btn.textContent = item.label || item.stage_key || "unmapped-stage";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:503: if (item.stage_key) selectStage(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:525: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:526: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:529: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:530: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:534: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:536: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:538: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:539: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:541: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:542: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:543: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:547: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:555: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:556: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:562: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:563: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:568: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:570: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:571: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:585: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:621: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:622: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:651: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:657: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:668: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:671: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:678: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:692: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:701: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:702: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:703: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:704: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:713: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:716: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:749: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:780: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:835: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:837: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:851: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:860: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:866: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:867: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:869: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_canon_coverage_20260331_220612:870: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:110: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:112: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:116: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:119: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:124: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:214: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:215: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:221: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:222: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:231: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:232: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:293: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:294: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:297: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:298: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:302: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:304: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:306: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:307: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:309: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:310: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:311: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:315: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:322: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:323: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:329: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:331: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:333: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:334: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:384: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:387: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:392: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:393: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:396: const subRuntimeRows = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:408: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:417: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:418: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:419: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:420: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:429: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:432: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:448: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-093421:464: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_family_runtime_ex_20260405_152654:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161051:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:537: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_155533:558: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:751: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932: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_step1_fix2_20260407_111932:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1094: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1100: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1101: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1103: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix2_20260407_111932:1104: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-103513:22: const navItems = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-103513:46: stageSequence.forEach((item) => {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-103513:48: li.textContent = item;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-103513:54: navItems.forEach(([label, order]) => {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:751: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423: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_step1_20260407_111423:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1094: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1100: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1101: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1103: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_20260407_111423:1104: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:575: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:591: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:595: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:597: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:598: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:599: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:601: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:608: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:609: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:739: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:740: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:742: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:745: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:746: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:750: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:752: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:754: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:755: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:757: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:758: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:759: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:763: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:771: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:772: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:780: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:781: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:795: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:797: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:798: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:819: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:855: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:856: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:885: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:891: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:902: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:905: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:912: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:918: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:932: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:942: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:943: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:950: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:951: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:961: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:964: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:996: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1027: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1082: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1084: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1098: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1107: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1113: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1114: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1116: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderGlobal_runtime_only_20260405_173025:1117: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1021: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1031: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1037: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1038: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1040: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.show_fail_20260404_190701:1041: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:526: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_151000:542: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:592: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:602: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:727: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:751: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:769: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:844: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1095: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1096: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1098: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_simplify_20260407_210109:1099: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:474: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554: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_ui_20260403_155554:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_ui_20260403_155554:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1020: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1029: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1035: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1036: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1038: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1039: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1164:// ===== PROPAGATE FAIL FROM MATRIX → ITEM_RUNTIME =====
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1171: const key = r.subcategory;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.canonical_runtimeSubcategoryRows_20260404_203313:1192: const subcat = (rows && rows[0] && rows[0].subcategory) || null;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:131: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:133: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:195: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:198: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:203: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:307: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:308: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:314: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:315: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:325: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:326: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:386: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:387: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:390: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:391: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:395: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:397: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:399: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:400: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:402: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:403: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:404: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:408: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:416: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:417: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:423: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:425: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:427: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:428: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:479: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:482: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:489: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:503: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:512: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:513: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:514: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:515: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:524: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:527: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:560: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:591: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:646: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260327_140445:667: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252: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_fix_20260403_162252:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.semantic_contract_ui_fix_20260403_162252:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:903: row.item_id || "",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:905: row.subcategory || "",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:912: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items)
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:927: els.rowTable.innerHTML = '
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:932: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:933: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:937: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:938: '
' + titleize(row.subcategory || "unmapped") + ' / ' + titleize(row.technology || "runtime") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:948: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:949: openJson(row.runtime_id || row.item_id || "runtime_row", row);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:986: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1017: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1072: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1074: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1088: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1097: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1103: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1104: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1106: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_helper_20260405_144356:1107: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:526: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_133010:542: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:291: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:292: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:298: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:299: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:309: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:310: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:371: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:400: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:401: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:407: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:409: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:411: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:412: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:462: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:465: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:472: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:486: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:495: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:496: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:497: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:498: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:507: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:510: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:526: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_152610:542: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:539: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100438.bak:560: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.full_runtime_family_20260405_135208:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:557: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:573: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:577: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:579: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:580: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:581: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:583: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:590: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:591: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:721: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:722: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:724: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:727: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:728: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:732: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:734: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:736: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:737: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:739: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:740: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:741: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:745: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:753: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:754: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:762: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:763: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:777: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:779: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:780: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:801: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:837: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:838: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:867: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:873: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:884: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:887: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:894: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:900: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:914: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:924: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:925: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:932: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:933: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:943: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:946: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:978: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1009: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1064: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1066: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1080: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1089: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1095: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1096: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1098: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_subcategories_snapshot_20260405_165434:1099: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:474: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:485: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_fix_20260403_035959:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:714: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:715: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:717: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:720: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:721: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:725: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:727: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:729: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:730: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:732: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:733: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:734: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:738: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:746: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:747: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:755: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:756: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:770: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:772: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:773: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:794: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:830: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:831: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:860: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:866: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:877: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:880: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:887: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:893: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:907: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:917: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:918: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:925: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:926: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:971: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1002: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1082: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1083: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1085: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_render_flow_20260407_232428:1086: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:127: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:138: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:139: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:144: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:155: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:156: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:157: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:158: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:166: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:168: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:173: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:174: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:177: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:192: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:212: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:240: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:241: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:244: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:263: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:265: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:269: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:270: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:273: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:279: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:312: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:316: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:317: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:320: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:322: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:324: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:331: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:400: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:403: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:408: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:418: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:577: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:593: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:597: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:599: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:600: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:601: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:603: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:610: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:611: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:741: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:742: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:744: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:747: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:748: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:752: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:754: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:756: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:757: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:759: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:760: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:761: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:765: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:773: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:774: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:782: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:783: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:797: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:799: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:800: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:821: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:857: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:858: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:887: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:893: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:904: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:907: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:914: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:920: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:934: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:944: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:945: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:952: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:953: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:963: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:966: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:998: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1029: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1084: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1086: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1100: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1109: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1115: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1116: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1118: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_rows_20260407_101931:1119: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:703: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:704: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:706: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:709: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:710: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:714: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:716: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:718: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:719: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:721: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:722: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:723: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:727: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:735: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:736: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:744: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:745: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:759: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:761: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:762: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:783: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:819: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:820: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:849: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:855: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:866: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:869: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:876: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:882: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:896: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:906: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:907: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:914: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:915: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:925: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:928: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:960: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:991: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1044: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1083: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1084: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1086: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.force_new_assets_20260408_040402:1087: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:134: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:145: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:146: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:151: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:162: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:163: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:164: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:165: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:173: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:175: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:180: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:181: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:184: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:199: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:219: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:247: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:248: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:251: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:270: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:272: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:276: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:277: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:280: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:286: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:319: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:323: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:324: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:327: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:329: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:331: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:338: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:407: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:410: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:415: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:425: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:584: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:600: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:604: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:606: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:607: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:608: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:610: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:617: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:618: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:735: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:736: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:738: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:741: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:742: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:746: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:748: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:750: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:751: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:753: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:754: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:755: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:759: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:767: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:768: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:776: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:777: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:791: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:793: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:794: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:815: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:851: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:852: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:881: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:887: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:898: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:901: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:908: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:914: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:928: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:938: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:939: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:946: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:947: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:957: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:960: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:992: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1023: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1078: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1079: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1093: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1102: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1108: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1109: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1111: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_getMatrixRows_canonical_20260407_105935:1112: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:27: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:114: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:115: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:118: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:127: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:128: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:131: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:146: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:148: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:210: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:213: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:218: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:330: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:331: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:337: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:338: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745: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_162745:349: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:350: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:413: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:414: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:417: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:418: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:422: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:424: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:426: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:427: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:429: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:430: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:431: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:435: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:443: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:444: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:450: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:451: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:456: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:458: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:459: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:473: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:509: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:510: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:539: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:545: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:556: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:559: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:566: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:580: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:589: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:590: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:591: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:592: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:601: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:604: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:637: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:668: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:723: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:744: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:749: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:750: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:752: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162745:753: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.final_safe_runtime_swap_20260405_145755:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:110: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:112: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:116: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:119: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:124: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:214: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:215: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:221: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:222: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:231: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:232: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:293: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:294: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:297: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:298: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:302: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:304: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:306: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:307: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:309: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:310: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:311: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:315: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:322: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:323: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:329: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:331: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:333: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:334: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:335: els.selectedStageDesc.textContent = "Completion based on all required items in this stage.";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:336: els.selectedStageTotal.textContent = rows.length + " required items";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:384: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:387: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:392: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:393: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:397: ? donutMarkup(subCounts, "subcategory completion")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:398: : missingDonutMarkup("subcategory completion");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:406: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:415: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:416: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:417: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:418: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:427: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:430: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:446: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-095241:462: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:577: const items = (state.contentIndex.content_index || [])
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:578: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:585: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:586: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:594: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:595: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:703: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:704: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:706: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:709: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:710: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:714: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:716: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:718: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:719: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:721: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:722: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:723: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:727: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:735: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:736: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:744: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:745: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:759: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:761: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:762: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:783: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:819: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:820: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:849: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:855: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:866: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:869: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:876: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:882: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:896: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:906: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:907: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:914: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:915: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:925: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:928: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:960: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:991: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1044: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1057: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1058: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1072: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1083: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1084: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1086: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.rebuild_minimal_20260408_043301:1087: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:346: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:349: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:354: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:685: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:687: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:689: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:693: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:708: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:709: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:714: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:716: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:717: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:731: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:767: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:768: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:797: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:803: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:814: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:817: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:822: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:827: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:841: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:850: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:851: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:852: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:853: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:862: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:865: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:898: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:929: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:984: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:986: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:1000: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:1009: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:1015: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:1016: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:1018: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_20260403_172401:1019: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:197: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:199: const items = ((state.contentIndex && state.contentIndex.content_index) || [])
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:200: .filter(function (item) { return !!item.stage_key; })
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:207: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:208: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:215: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:216: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:267: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:269: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:272: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:273: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:276: els.pipelineRuntimeBoard.innerHTML = items.slice(0, 24).map(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:277: const status = runtimeStatusOf(item);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:279: '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:280: '
' + titleize(item.deployment_stage || "runtime") + ' / ' + titleize(item.technology || item.subcategory || "item") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:281: '
Kind: ' + titleize(item.row_kind || "runtime_row") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:284: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:319: const items = ((state.contentIndex && state.contentIndex.content_index) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:320: const navItem = items.find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:321: return normStageKey(item.stage_key) === state.selectedStage;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:327: if (els.heroTitle) els.heroTitle.textContent = navItem ? navItem.label : titleize(state.selectedStage);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:332: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:335: els.selectedStageName.textContent = navItem ? navItem.label : titleize(state.selectedStage);
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:383: getJsonOptional("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:400: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:405: const firstItem = ((state.contentIndex && state.contentIndex.content_index) || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:406: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:409: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.runtime.fix.20260408_1.js.bak.layout_fix_20260408_044306:410: selectStage(firstItem.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:510: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:526: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:530: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:532: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:533: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:537: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:544: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:545: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:675: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:676: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:679: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:680: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:684: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:686: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:688: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:689: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:691: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:692: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:693: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:697: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:705: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:706: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:712: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:713: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:718: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:720: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:721: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:735: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:771: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:772: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:801: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:807: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:818: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:821: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:826: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:831: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:845: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:854: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:855: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:856: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:857: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:866: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:869: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:902: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:933: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:988: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:990: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:1004: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:1013: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:1019: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:1020: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:1022: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step3_render_global_fix_20260403_173147:1023: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:528: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:529: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:532: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:533: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:537: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:539: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:541: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:542: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:544: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:545: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:546: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:550: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:558: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:559: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:565: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:566: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:571: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:573: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:574: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:588: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:624: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:625: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:654: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:660: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:671: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:674: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:681: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:695: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:704: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:705: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:706: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:707: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:716: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:719: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:752: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:783: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:838: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:840: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:854: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:863: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:869: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:870: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:872: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133237:873: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:27: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:114: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:115: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:118: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:127: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:128: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:131: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:146: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:148: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:210: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:213: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:218: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:330: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:331: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:337: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:338: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258: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_162258:349: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:350: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:413: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:414: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:417: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:418: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:422: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:424: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:426: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:427: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:429: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:430: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:431: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:435: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:443: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:444: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:450: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:451: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:456: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:458: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:459: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:473: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:509: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:510: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:539: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:545: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:556: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:559: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:566: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:580: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:589: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:590: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:591: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:592: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:601: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:604: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:637: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:668: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:723: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:744: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:749: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:750: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:752: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_162258:753: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:277: function mappedRuntimeCountsForSubcategory(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:279: const subKey = normStageKey(subcategory || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:313: return observedRuntimeCounts(runtimeSubcategoryRows(stageKey, subcategory));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:322: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:325: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:330: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:482: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:498: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:502: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:504: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:505: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:507: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:514: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:515: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:645: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:646: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:649: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:650: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:654: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:656: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:658: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:659: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:661: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:662: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:663: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:667: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:675: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:676: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:682: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:683: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:688: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:690: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:691: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:705: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:741: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:742: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:771: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:777: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:788: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:791: const runtimeCounts = mappedRuntimeCountsForSubcategory(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:797: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:811: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:820: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:821: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:822: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:823: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:832: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:835: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:868: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:899: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:954: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:956: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:970: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:979: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:985: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:986: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:988: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.hide_fake_observed_groups_20260402_202451:989: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:712: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:713: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:717: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:719: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:720: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:721: els.selectedStageDesc.textContent = "Stage Completion % = PASS / total semantically eligible runtime items. Doc audit comes from mapped authority docs. Runtime audit comes only from emitted runtime evidence. MISSING, FAIL and RUNNING do not count as completed.";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:722: els.selectedStageTotal.innerHTML = opCounts.total + ' eligible runtime items
in contract';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:734: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:770: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:771: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:800: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:806: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:817: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:820: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:825: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:830: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:844: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:853: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:854: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:855: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:856: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:865: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:868: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:901: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:932: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:987: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:989: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:1003: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:1012: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:1018: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:1019: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:1021: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.stage_rollup_ui_fix_v2_20260403_193329:1022: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:474: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:485: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.universal_donut_standard_20260403_035544:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:558: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:574: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:578: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:580: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:581: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:582: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:584: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:591: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:592: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:722: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:723: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:725: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:728: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:729: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:733: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:735: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:737: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:738: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:740: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:741: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:742: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:746: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:754: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:755: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:763: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:764: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:778: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:780: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:781: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:802: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:837: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:838: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:867: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:873: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:884: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:887: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:894: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:900: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:914: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:924: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:925: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:926: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:927: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:972: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1003: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1058: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1060: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1074: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1083: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1089: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1090: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1092: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_runtime_finish_20260405_162656:1093: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:463: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:466: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:473: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:487: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:508: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164005:529: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_parser_runtime_swap_20260405_151353:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:24: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:111: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:112: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:115: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:124: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:125: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:128: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:143: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:145: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:207: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:210: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:215: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:327: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:328: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:334: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:335: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:345: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:346: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:406: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:407: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:410: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:411: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:415: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:417: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:419: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:420: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:422: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:423: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:424: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:428: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:436: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:437: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:443: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:445: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:447: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:448: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:499: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:502: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:509: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:523: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:532: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:533: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:534: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:535: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:544: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:547: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:580: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:611: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:666: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:687: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:692: const firstItem = ((state.contentIndex.content_index || [])[0] || {});
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_140348:693: const first = firstItem.stage_key || "host_readiness";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:184: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:185: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:188: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:203: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:205: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:210: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:213: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:219: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:298: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:301: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:306: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:458: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:474: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:478: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:480: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:481: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:485: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:492: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:493: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:623: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:624: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:627: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:628: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:632: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:634: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:636: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:637: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:639: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:640: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:641: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:645: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:653: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:654: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:660: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:661: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:666: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:668: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:669: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:683: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:719: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:720: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:749: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:755: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:766: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:769: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:774: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:779: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:793: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:802: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:803: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:804: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:805: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:814: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:817: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:850: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:881: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:936: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:938: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:952: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:961: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:967: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:968: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:970: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step1_semantic_runtime_20260403_172002:971: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:539: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.smoketest.20260326_100319.bak:560: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:117: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:118: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:121: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:130: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:131: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:134: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:149: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:151: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:213: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:216: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:221: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:333: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:334: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:340: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:341: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:345: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:352: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:353: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:402: const items = (state.contentIndex && Array.isArray(state.contentIndex.content_index))
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:406: const unmapped = items.filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:407: return !(Array.isArray(item.authority_docs) && item.authority_docs.length > 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:410: const total = items.length;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:431: unmapped.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:434: btn.className = "canon-unmapped-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:435: btn.textContent = item.label || item.stage_key || "unmapped-stage";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:437: if (item.stage_key) selectStage(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:459: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:460: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:463: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:464: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:468: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:470: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:472: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:473: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:475: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:476: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:477: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:481: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:489: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:490: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:496: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:497: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:502: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:504: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:505: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:519: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:555: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:556: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:585: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:591: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:602: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:605: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:612: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:626: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:635: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:636: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:637: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:638: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:647: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:650: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:683: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:714: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:769: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:790: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:796: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:797: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:799: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_173238:800: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:539: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.selectstage_linefix.20260326_102814.bak:560: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:42: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:61: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:137: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:148: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:149: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:154: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:165: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:166: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:167: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:168: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:176: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:178: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:183: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:184: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:187: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:202: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:222: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:232: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:233: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:236: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:256: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:258: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:263: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:264: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:267: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:273: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:362: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:365: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:370: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:518: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:534: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:538: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:540: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:541: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:543: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:550: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:551: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:681: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:682: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:684: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:687: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:688: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:692: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:694: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:696: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:697: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:699: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:700: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:701: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:705: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:713: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:714: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:722: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:723: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:737: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:739: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:740: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:761: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:796: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:797: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:826: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:832: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:843: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:846: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:853: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:859: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:873: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:887: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:888: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:889: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:890: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:899: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:902: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:935: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:966: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1021: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1023: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1038: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1048: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1054: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1055: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1057: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_overlay_safe_20260404_191532:1058: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:402: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:463: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:466: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:473: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:487: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:496: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:497: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:498: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:499: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:508: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:511: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:538: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_160514:559: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:190: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:193: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:200: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:214: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:235: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_165558:281: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:421: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:437: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:441: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:443: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:444: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:448: 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_fix_20260403_031537:455: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:456: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:586: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:587: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:590: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:591: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:595: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:597: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:599: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:600: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:602: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:603: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:604: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:608: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:616: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:617: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:623: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:624: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:629: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:631: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:632: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:646: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:682: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:683: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:712: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:718: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:729: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:732: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:739: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:753: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:762: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:763: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:764: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:765: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:774: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:777: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:810: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:841: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:896: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:898: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:912: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:921: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:927: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:928: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:930: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.target_section_fix_20260403_031537:931: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:176: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:243: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:592: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:602: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:727: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:751: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:769: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:844: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1095: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1096: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1098: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.safe_nav_replace_20260407_220532:1099: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:126: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:137: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:138: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:143: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:154: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:155: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:156: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:157: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:165: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:167: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:172: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:173: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:191: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:211: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:239: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:240: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:262: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:264: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:268: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:269: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:272: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:278: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:311: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:315: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:316: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:319: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:321: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:323: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:330: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:399: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:402: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:407: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:417: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:576: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:596: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:598: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:599: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:600: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:609: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:610: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:728: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:730: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:733: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:734: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:738: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:740: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:742: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:743: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:745: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:746: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:747: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:751: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:759: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:760: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:768: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:783: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:785: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:786: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:807: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:843: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621: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_step1_fix_20260407_111621:873: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:879: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:890: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:893: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:900: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:906: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:920: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:930: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:931: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:938: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:939: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:949: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:984: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1015: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1070: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1071: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1085: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1094: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1100: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1101: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1103: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.zone_shell_step1_fix_20260407_111621:1104: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:900: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:901: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:902: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:903: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:912: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:915: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:948: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:979: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1034: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1036: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1050: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1059: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1065: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1066: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1068: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.runtime_dedup_helper_20260405_161625:1069: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:504: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:505: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:508: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:509: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:513: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:515: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:517: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:518: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:520: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:521: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:522: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:526: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:534: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:535: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:541: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:542: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:547: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:549: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:550: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:564: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:600: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:601: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:630: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:636: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:647: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:650: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:657: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:671: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:680: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:681: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:682: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:683: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:692: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:695: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:728: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:759: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:814: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:816: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:830: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:839: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:845: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:846: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:848: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_empty_canon_card_20260331_220850:849: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713: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_donut_itemruntime_only_20260406_184713:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:572: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:588: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:592: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:594: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:595: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:596: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:598: 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_donut_itemruntime_only_20260406_184713:605: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:606: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:736: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:737: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:739: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:742: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:743: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:747: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:749: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:751: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:752: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:754: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:755: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:756: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:760: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:768: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:769: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:777: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:778: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:792: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:794: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:795: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:816: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:852: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:853: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:882: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:888: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:899: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:902: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:909: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:915: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:929: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:939: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:940: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:947: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:948: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:958: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:961: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:993: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1024: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1079: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1081: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1095: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1104: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1110: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1111: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1113: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_runtime_donut_itemruntime_only_20260406_184713:1114: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:299: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:300: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:306: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:307: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:317: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:318: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:378: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:379: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:382: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:383: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:387: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:389: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:391: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:392: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:394: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:395: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:396: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:400: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:408: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:409: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:415: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:417: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:419: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:420: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:471: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:474: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:481: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:495: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:504: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:505: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:506: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:507: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:516: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:519: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:552: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:583: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:638: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_smoke_sync.20260326_124728.bak:659: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:536: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:552: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:556: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:558: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:559: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:561: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:568: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:569: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:699: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:700: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:702: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:705: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:706: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:710: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:712: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:714: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:715: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:717: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:718: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:719: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:723: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:731: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:732: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:740: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:741: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:755: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:757: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:758: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:779: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:814: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:815: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:844: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:850: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:861: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:864: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:871: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:877: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:891: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:903: row.item_id || "",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:905: row.subcategory || "",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:912: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items)
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:927: els.rowTable.innerHTML = '
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:932: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:933: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:937: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:938: '
' + titleize(row.subcategory || "unmapped") + ' / ' + titleize(row.technology || "runtime") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:948: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:949: openJson(row.runtime_id || row.item_id || "runtime_row", row);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:952: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:986: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1017: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1072: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1074: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1088: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1097: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1103: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1104: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1106: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.nav_family_parity_20260405_144116:1107: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_layout_20260325_190940.bak:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1020: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1029: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1035: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1036: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1038: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.propagate_fail_20260404_191940:1039: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:293: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:294: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:300: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:301: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:311: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:312: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:382: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:384: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:386: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:387: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:389: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:390: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:391: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:395: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:403: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:404: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:410: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:412: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:414: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:415: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:466: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:469: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:476: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:490: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:499: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:500: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:501: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:502: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:511: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:514: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:541: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.restore_by_line.20260326_095440.bak:562: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_174514:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:165: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:166: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:169: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:178: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:179: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:182: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:197: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:199: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:261: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:264: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:269: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:381: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:397: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:401: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:403: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:404: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:408: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:415: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:416: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:528: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:529: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:532: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:533: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:537: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:539: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:541: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:542: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:544: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:545: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:546: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:550: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:558: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:559: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:565: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:566: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:571: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:573: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:574: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:588: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:624: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:625: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:654: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:660: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:671: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:674: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:681: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:695: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:704: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:705: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:706: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:707: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:716: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:719: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:752: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:783: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:838: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:840: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:854: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:863: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:869: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:870: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:872: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.security_runtime_render_20260402_133035:873: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:27: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:114: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:115: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:118: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:127: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:128: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:131: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:146: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:148: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:210: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:213: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:218: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:330: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:331: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:337: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:338: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:348: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:349: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:409: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:410: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:413: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:414: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:418: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:420: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:422: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:423: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:425: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:426: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:427: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:431: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:439: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:440: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:446: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:447: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:452: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:454: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:455: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:469: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:505: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:506: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:535: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:541: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:552: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:555: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:562: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:576: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:585: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:586: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:587: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:588: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:597: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:600: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:633: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:664: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:719: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:740: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:745: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:746: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:748: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_161202:749: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:190: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:193: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:200: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:214: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:235: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325_164655:256: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:381: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:383: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:385: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:386: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:388: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:389: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:390: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:394: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:402: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:403: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:409: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:411: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:413: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:414: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:465: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:468: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:475: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:489: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:498: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:499: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:500: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:501: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:510: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:513: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:540: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.pre_restore.20260325_172519:561: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:110: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:112: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:116: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:119: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:124: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:214: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:215: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:221: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:222: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:231: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:232: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:293: const items = state.runtimeStatus.runtime_snapshot || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:294: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:297: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:298: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:302: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:304: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:306: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:307: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:309: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:310: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:311: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:315: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:322: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:323: return normStageKey(item.label) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:329: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:331: els.heroTitle.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:333: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:334: els.selectedStageName.textContent = navItem ? navItem.label : titleize(stageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:384: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:387: const subCounts = countStatuses(group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:392: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:393: '
' + group.items.length + ' rows',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:396: const subRuntimeRows = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:408: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:417: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:418: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:419: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:420: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:429: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:432: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:448: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260325-092854:464: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:293: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:294: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:300: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:301: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:311: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:312: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:372: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:373: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:376: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:377: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:382: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:384: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:386: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:387: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:389: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:390: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:391: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:395: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:403: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:404: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:410: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:412: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:414: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:415: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:466: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:469: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:476: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:490: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:499: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:500: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:501: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:502: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:511: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:514: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:541: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260326_093750:562: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:204: runtimeRowKind(row) === "item_runtime"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:205: || String((row && row.subcategory) || "").trim() === "container_runtime"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:212: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:240: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:241: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:244: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:263: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:265: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:269: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:270: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:273: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:279: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:312: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:316: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:317: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:320: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:322: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:324: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:331: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:400: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:403: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:408: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:418: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:574: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:590: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:594: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:596: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:597: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:598: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:600: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:607: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:608: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:738: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:739: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:741: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:744: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:745: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:749: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:751: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:753: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:754: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:756: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:757: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:758: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:762: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:770: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:771: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:779: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:780: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:794: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:796: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:797: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:818: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:854: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:855: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:884: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:890: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:901: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:904: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:911: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:917: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:931: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:941: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:942: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:949: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:950: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:960: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:963: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:995: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1026: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1081: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1083: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1097: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1106: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1112: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1113: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1115: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_grouping_ui_20260406_191604:1116: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:350: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:353: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:358: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:531: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:538: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:539: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:669: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:670: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:685: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:687: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:689: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:693: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:710: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:711: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:725: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:727: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:728: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:749: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:784: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:785: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:814: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:820: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:831: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:834: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:841: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:847: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:861: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:870: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:871: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:872: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:873: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:882: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:885: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:918: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:949: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1004: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1006: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1020: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1029: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1035: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1036: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1038: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1039: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1164:// ===== PROPAGATE FAIL FROM MATRIX → ITEM_RUNTIME =====
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1171: const key = r.subcategory;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.inject_fail_runtime_20260404_192709:1192: const subcat = (rows && rows[0] && rows[0].subcategory) || null;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:244: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:246: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:251: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:252: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:255: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:261: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:346: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:349: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:354: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:506: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:522: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:526: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:528: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:529: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:533: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:540: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:541: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:671: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:672: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:675: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:676: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:680: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:682: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:684: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:685: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:687: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:688: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:689: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:693: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:701: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:702: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:708: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:709: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:714: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:716: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:717: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:731: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:767: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:768: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:797: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:803: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:814: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:817: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:822: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:827: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:841: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:850: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:851: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:852: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:853: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:862: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:865: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:898: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:929: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:984: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:986: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:1000: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:1009: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:1015: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:1016: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:1018: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.step2_observed_counts_fix_20260403_172722:1019: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:220: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:221: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:224: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:243: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:245: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:249: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:250: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:253: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:259: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:292: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:296: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:297: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:300: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:302: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:304: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:311: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:380: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:383: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:388: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:398: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:558: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:574: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:578: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:580: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:581: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:582: const groups = groupBySubcategory(getRowsForStage(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:584: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:591: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:592: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:722: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:723: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:725: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:728: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:729: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:733: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:735: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:737: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:738: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:740: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:741: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:742: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:746: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:754: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:755: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:763: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:764: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:778: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:780: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:781: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:802: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:837: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:838: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:867: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:873: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:884: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:887: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:894: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:900: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:914: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:924: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:925: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:926: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:927: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:936: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:939: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:972: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1003: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1058: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1060: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1074: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1083: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1089: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1090: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1092: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.renderrows_line_swap_20260405_162814:1093: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:37: function addListItem(node, text) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:74: addListItem(els.snapshotList, `Exported files: ${(manifest.export_set || []).length}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:75: addListItem(els.snapshotList, `Sync status: ${manifest.sync_status || "UNKNOWN"}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:76: addListItem(els.snapshotList, `Source hashes: ${Object.keys(manifest.source_hashes || {}).length}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:82: function renderNavigation(contentIndex) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:87: const items = contentIndex.content_index || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:88: els.stageCountPill.textContent = `${items.length} stages`;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:89: els.sequencePill.textContent = items.length ? "LIVE" : "EMPTY";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:90: els.sequencePill.className = items.length ? "pill pill-green" : "pill pill-amber";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:92: items.forEach((item) => {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:96: a.innerHTML = `
${item.label}${item.deployment_order}`;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:99: alert(`${item.label}\nSection: ${item.target_section}\nCards: ${(item.primary_card_ids || []).join(", ")}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:103: addListItem(els.stageList, `${item.deployment_order} — ${item.label}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:106: li.textContent = `${item.deployment_order} — ${item.label}`;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:116: addListItem(els.matrixStatusList, `Total rows: ${counts.total}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:117: addListItem(els.matrixStatusList, `PASS: ${counts.PASS || 0}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:118: addListItem(els.matrixStatusList, `FAIL: ${counts.FAIL || 0}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:119: addListItem(els.matrixStatusList, `MISSING: ${counts.MISSING || 0}`);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260323-104050:141: renderNavigation(contentIndex);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:29: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:116: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:117: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:120: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:129: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:130: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:133: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:148: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:150: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:212: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:215: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:220: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:332: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:333: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:339: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:340: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:344: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:351: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:352: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:401: const items = (state.contentIndex && Array.isArray(state.contentIndex.content_index))
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:405: const total = items.length;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:406: const mapped = items.filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:407: return Array.isArray(item.authority_docs) && item.authority_docs.length > 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:436: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:437: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:440: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:441: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:445: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:447: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:449: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:450: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:452: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:453: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:454: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:458: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:466: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:467: return normStageKey(item.stage_key) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:473: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:474: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:479: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:481: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:482: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:496: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:532: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:533: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:562: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:568: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:579: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:582: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:589: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:603: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:612: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:613: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:614: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:615: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:624: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:627: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:660: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:691: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:746: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:767: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:773: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:774: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:776: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.20260330_163830:777: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:545: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:576: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:631: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.viewer_fix.20260326_124117.bak:652: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:125: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:136: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:137: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:142: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:153: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:154: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:155: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:156: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:164: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:166: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:171: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:172: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:175: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:190: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:210: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:238: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:239: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:242: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:261: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:263: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:267: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:268: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:271: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:277: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:310: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:314: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:315: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:318: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:320: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:322: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:329: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:398: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:401: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:406: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:416: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:567: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:583: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:587: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:589: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:590: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:591: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:593: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:600: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:601: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:731: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:732: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:734: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:737: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:738: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:742: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:744: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:746: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:747: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:749: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:750: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:751: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:755: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:763: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:764: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:772: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:773: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:787: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:789: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:790: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:811: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:847: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:848: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:877: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:883: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:894: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:897: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:904: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:910: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:924: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:934: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:935: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:942: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:943: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:953: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:956: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:988: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1019: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1074: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1076: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1090: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1099: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1105: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1106: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1108: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.fix_project_completion_missing_gate_20260406_115455:1109: selectStage(normStageKey(firstItem.stage_key));
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:23: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:130: function runtimeSubcategoryRows(stageKey, subcategory) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:132: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:194: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:197: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:202: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:292: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:293: const items = (state.contentIndex.content_index || []).slice().sort(function (a, b) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:299: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:300: const stageKey = normStageKey(item.label);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:310: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:311: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:371: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:372: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:375: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:376: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:380: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:382: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:384: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:385: '
Current step: ' + (item.current_step ? titleize(item.current_step) : "—") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:387: '
' + safeUpper(item.overall_status) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:388: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:389: '
last run: ' + valueOrDash(item.last_run_at, "") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:393: openJson(item.runtime_id, item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:401: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:402: return normStageKey(item.label) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:408: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:410: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:412: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:413: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:464: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:467: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:474: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:488: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:497: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:498: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:499: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:500: '
' + row.matrix_id + ' / ' + titleize(row.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:509: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:512: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:545: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:576: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:631: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.tabs_smoke_rerun.20260326_123348.bak:652: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:30: subcategoryGrid: document.getElementById("subcategory-grid"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:49: canonicalTree: null,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:130: function getContentItems() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:141: if (state.canonicalTree && Array.isArray(state.canonicalTree.layer_tree)) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:142: return state.canonicalTree.layer_tree.map(function (layer) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:147: phase_origin: [],
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:158: function getStageItemsForLayer(layerKey) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:159: return getContentItems()
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:160: .filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:161: return String(item.canonical_layer_key || "") === String(layerKey || "");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:169: function contentStageKey(item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:171: (item && (item.stage_key || item.target_section || item.nav_id || "")) || ""
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:176: const navItem = getContentItems().find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:177: return normStageKey(item.stage_key) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:180: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:195: return runtimeRowKind(row) === "item_runtime";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:215: return normStageKey(row.deployment_stage || "") + ":" + normStageKey(row.subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:243: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:244: return contentStageKey(item) === stageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:247: (navItem && Array.isArray(navItem.stage_aliases)) ? navItem.stage_aliases.map(normStageKey) : []
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:266: function runtimeSubcategoryRows(stageKey, subcategory, canonicalItems, runtimeSnapshot) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:268: return String(row.subcategory || "unmapped") === String(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:272: const items = Array.isArray(canonicalItems) ? canonicalItems : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:273: const expectedUiGroup = normStageKey(stageKey || "") + ":" + normStageKey(subcategory || "unmapped");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:276: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:282: items
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:315: && String(row.subcategory || "unmapped") === String(subcategory || "unmapped")
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:319: const hasItemRuntimeFail = result.some(function (row) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:320: return runtimeRowKind(row) === "item_runtime" && safeUpper(row.status) === "FAIL";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:323: if (hasMatrixFail && !hasItemRuntimeFail) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:325: row_kind: "item_runtime",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:327: subcategory: subcategory || "unmapped",
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:334: evidence_source: "runtime_subcategoryRows_fail_overlay"
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:403: function groupBySubcategory(rows) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:406: const key = row.subcategory || "unmapped";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:411: return { subcategory: entry[0], items: entry[1] };
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:421: const rows = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot) || [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:580: function renderNav() {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:596: '
L' + String(group.installation_order || "—") + ' • ' + ((group.phase_origin || []).join(", ") || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:600: const items = getStageItemsForLayer(group.layer_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:602: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:603: const stageKey = normStageKey(item.stage_key);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:604: const groups = groupBySubcategory(stageRows(stageKey));
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:606: const authorityDocCount = Array.isArray(item.authority_docs) ? item.authority_docs.length : 0;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:613: '
' + item.label + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:614: '
Order ' + item.deployment_order + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:744: const items = ((state.runtimeStatus && state.runtimeStatus.runtime_snapshot) || []).filter(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:745: return runtimeRowVisibleInCards(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:747: els.pipelineRuntimeCount.textContent = items.length + " runtime rows";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:750: if (!items.length) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:751: els.pipelineRuntimeBoard.innerHTML = '
No runtime rows
Status is MISSING.
';
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:755: items.forEach(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:757: div.className = "pipeline-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:759: '
' + titleize(item.deployment_stage) + ' / ' + titleize(item.technology) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:760: '
Kind: ' + titleize(runtimeRowKind(item)) + ' • Group: ' + runtimeRowUiGroup(item) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:762: '
' + runtimeRowStatus(item) + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:763: '
' + valueOrDash(item.progress_pct, "%") + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:764: '
counts ' + (runtimeRowCountsTowardCompletion(item) ? 'yes' : 'no') + '',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:768: openJson(item.runtime_id || item.item_id || "runtime_row", item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:776: const navItem = (state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:777: return contentStageKey(item) === normalizedStageKey;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:785: const groups = groupBySubcategory(rows);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:786: const authorityDocs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:800: els.heroTitle.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:802: els.stageOrderBadge.textContent = navItem ? ("ORDER " + navItem.deployment_order) : "—";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:803: els.selectedStageName.textContent = navItem ? navItem.label : titleize(normalizedStageKey);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:824: renderAuthorityDocs(navItem);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:860: function renderAuthorityDocs(navItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:861: const docs = navItem && Array.isArray(navItem.authority_docs) ? navItem.authority_docs : [];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:890: div.className = "doc-link-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:896: '
' + (doc.phase || "phase-unmapped") + ''
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:907: els.subcategoryGrid.innerHTML = "";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:910: const runtimeGroup = runtimeSubcategoryRows(stageKey, group.subcategory, group.items, runtimeSnapshot);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:917: : ((group.items && group.items.length) || 0);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:923: '
' + titleize(group.subcategory) + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:937: els.subcategoryGrid.appendChild(card);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:947: const item = document.createElement("div");
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:948: item.className = "row-item";
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:955: item.innerHTML = [
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:956: '
' + (row.matrix_id || "runtime") + ' / ' + titleize(row.subcategory || "unmapped") + '
',
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:966: item.addEventListener("click", function () {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:969: els.rowTable.appendChild(item);
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1001: ? els.pipelineRuntimeBoard.querySelectorAll(".pipeline-item").length
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1032: pipeline_runtime_items: runtimeBoardCount,
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1087: getJson("panel_canonical_tree.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1089: getJson("subcategory_pipelines.json"),
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1103: state.canonicalTree = core[4];
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1112: renderNav();
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1118: const firstItem = ((state.contentIndex.content_index || []).find(function (item) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1119: return !!item.stage_key;
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1121: if (firstItem) {
/home/yeff/public_html/devon/panel/assets/js/panel.js.bak.remove_legacy_matrix_boot_20260407_103712:1122: selectStage(normStageKey(firstItem.stage_key));