function deprecationTimelineFigure(host) { ensureStyles(); var depX = 150; var remX = 360; var endX = 524; var lanes = [ {label: 'Roots', y: 84}, {label: 'Sampling', y: 112}, {label: 'Logging', y: 140} ]; var stillValid = [ 'roots/list (MRTR input request)', 'sampling/createMessage (MRTR)', 'logLevel + notifications/message' ]; var removed = [ 'logging/setLevel', 'notifications/roots/list_changed' ]; var parts = []; var i; parts.push(''); parts.push(''); parts.push(''); parts.push('Deprecated'); parts.push('Eligible for removal'); parts.push('2026-07-28'); parts.push('2027-07-28+'); for (i = 0; i < lanes.length; i++) { var y = lanes[i].y; parts.push('' + lanes[i].label + ''); parts.push(''); parts.push(''); parts.push(''); } parts.push(''); parts.push('Deprecated, still on the wire'); parts.push('Fully removed'); for (i = 0; i < stillValid.length; i++) { var sy = 196 + i * 20; parts.push(''); parts.push('' + stillValid[i] + ''); } for (i = 0; i < removed.length; i++) { var ry = 196 + i * 20; parts.push(''); parts.push('' + removed[i] + ''); } var shell = document.createElement('div'); shell.className = 'mf-shell'; shell.innerHTML = [ '
Deprecated, Not Removed roots, sampling, and logging keep answering through the removal window
', '
', '', '', parts.join(''), '', '
', '
Deprecated in 2026-07-28 starts a twelve month clock, not a deletion: roots, sampling, and logging keep their exact wire shape past the earliest-removal marker, while logging/setLevel and notifications/roots/list_changed are already gone, replaced by MRTR input requests and a per-request logLevel key.
' ].join(''); host.appendChild(shell); } // register as: mcpa-15-deprecation-timeline