Daily edition

Oct 27, 2026

The edition exactly as it was published. Nothing here is re-selected on a later reading.

Oct 28, 20265 reads · 152 merged PRs screened

framework internals

vercel/next.js · #100739

Files changed →View PR ↗

Add a CLI for reviewing agent feedbackTypeScript · 256 + / 0 −

Introduces 9 new declarations in packages/next/src/cli/internal/agent-feedback.ts.

Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.

packages/next/src/cli/internal/agent-feedback.ts ↗ · 7 files

@@ -0,0 +1,243 @@+import type { ChildProcess, SpawnOptions } from 'child_process'+import { addAbortSignal, type Readable } from 'stream'++import spawn from 'next/dist/compiled/cross-spawn'+import { z } from 'next/dist/compiled/zod'++const AGENT_FEEDBACK_REVIEW_URL = 'https://nextjs.org/agent-feedback#report='+const MAX_AGENT_FEEDBACK_INPUT_BYTES = 16 * 1024+const AGENT_FEEDBACK_INPUT_TIMEOUT_MS = 5_000++type SpawnReviewForm = (+  command: string,+  args: string[],+  options: SpawnOptions+) => ChildProcess++type FeedbackInput = Readable & {+  isTTY?: boolean+}++export type NextFeedbackOptions = {+  dryRun?: boolean+}++const agentFeedbackReportFields = {+  triggerReason: z.enum([+    'unexpected-behavior',+    'documentation-mismatch',+    'misleading-error',+    'repeated-failed-approach',+    'non-obvious-workaround',+  ]),+  title: z.string().min(1).max(100),

systems design

kubernetes/kubernetes · #143111

Files changed →View PR ↗

Fix PDB controller to enqueue all affected budgets on pod changesGo · 64 + / 25 −

Introduces 3 new declarations in pkg/controller/disruption/disruption.go.

Adds new systems design rather than adjusting what was there. Tests changed with it, with code of their own.

pkg/controller/disruption/disruption.go ↗ · 2 files

@@ -533,18 +536,43 @@ func (dc *DisruptionController) addPod(logger klog.Logger, obj interface{}) { 	} } -func (dc *DisruptionController) updatePod(logger klog.Logger, _, cur interface{}) {-	pod := cur.(*v1.Pod)-	logger.V(4).Info("UpdatePod called on pod", "pod", klog.KObj(pod))-	pdb := dc.getPdbForPod(logger, pod)-	if pdb == nil {-		logger.V(4).Info("No matching PDB for pod", "pod", klog.KObj(pod))-	} else {-		logger.V(4).Info("updatePod -> PDB", "pod", klog.KObj(pod), "podDisruptionBudget", klog.KObj(pdb))+func (dc *DisruptionController) updatePod(logger klog.Logger, old, cur interface{}) {+	curPod := cur.(*v1.Pod)+	oldPod := old.(*v1.Pod)+	syncPdbs := map[string]*policy.PodDisruptionBudget{}++	logger.V(4).Info("UpdatePod called on pod", "pod", klog.KObj(curPod))++	if !reflect.DeepEqual(oldPod.Labels, curPod.Labels) {+		for _, pdb := range dc.getPdbsForPod(logger, oldPod) {+			key, err := controller.KeyFunc(pdb)+			if err != nil {+				logger.Error(err, "Couldn't get key for PodDisruptionBudget", "podDisruptionBudget", klog.KObj(pdb))+				continue+			}+			syncPdbs[key] = pdb+		}+	}+	curPdbs := dc.getPdbsForPod(logger, curPod)+	// Warn only for curPod. Old labels are no longer on the live pod.+	dc.warnMultiplePodDisruptionBudgets(logger, curPod, curPdbs)+	for _, pdb := range curPdbs {+		key, err := controller.KeyFunc(pdb)

core implementation

NVIDIA-NeMo/Speech · #16425

Files changed →View PR ↗

feat(core): add the PiecewiseLinear learning rate schedulerPython · 115 + / 2 −

Introduces 5 new declarations in nemo/core/optim/lr_scheduler.py.

Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.

nemo/core/optim/lr_scheduler.py ↗ · 6 files

@@ -713,6 +714,97 @@ def _get_lr(self, step):         return new_lrs  +class PiecewiseLinear(_LRScheduler):+    """Learning rate interpolated linearly between given values at given points of the training.++    ``boundaries`` are increasing positions in the training+    and ``values`` the learning-rate multipliers at those positions;+    between two boundaries the multiplier is interpolated linearly,+    before the first and after the last boundary it stays at the nearest value.+    Positions are optimizer steps, or fractions of ``max_steps`` with ``relative=True``,+    so that one configuration describes the schedule for any training length.+    The multipliers scale the learning rate of each parameter group;+    with ``lr: 1.0`` they are the learning rates.++    Example, a warmup over the first 45% of the training and a decay to the end:++    .. code-block:: yaml++        sched:+          name: PiecewiseLinear+          relative: true+          boundaries: [0.0, 0.45, 0.9, 1.0]+          values: [1e-5, 4e-3, 1e-5, 1e-6]++    Args:+        optimizer: the wrapped optimizer+        boundaries: increasing positions, in optimizer steps or (``relative``) in fractions of ``max_steps``+        values: learning-rate multiplier at each boundary, one per boundary+        relative: interpret ``boundaries`` as fractions of ``max_steps``+        max_steps: the number of optimizer steps of the training, a positive integer;+            required with ``relative`` and ignored otherwise;+            :func:`prepare_lr_scheduler` fills it in from the trainer or from ``sched.max_steps``

core implementation

huggingface/transformers · #49679

Files changed →View PR ↗

🚨 Separate EP logic into its own filePython · 606 + / 440 −

Introduces 53 new declarations in src/transformers/distributed/tensor_parallel.py.

Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.

src/transformers/distributed/tensor_parallel.py ↗ · 26 files

@@ -753,300 +645,29 @@ def transform_inputs_pre_forward(self, module, args, kwargs, mesh):         return (input_tensor / mesh.size(), *args[1:]), kwargs  -class EpRouterParallel(TensorParallelLayer):-    """Expert-parallel router: forward-only slicing of router outputs to local experts.--    Expects the router to return `(router_logits, router_scores, router_indices, *extra)`.-    `router_logits` and any trailing `extra` outputs are passed through unchanged.--    The gate runs replicated on every rank and emits global expert IDs and scores.-    Under EP each rank owns `num_experts // ep_size` experts, so this post-forward hook:--    - zeroes scores for non-local experts-    - remaps surviving global indices to local indices (`fmod` after masking non-local slots)-    - sets dropped slots to sentinel `num_local_experts` (skipped by grouped_gemm experts forward)--    Downstream `moe_tp_experts` allreduce-sums partial per-rank expert outputs.--    Example: 4 tokens, top_k=4, 128 experts, EP=8 → num_local_experts=16.--    Router output (identical on all ranks):-        router_indices:-            [ 52,  42, 119,  67],-            [102,  89,  61,  40],-            [ 82, 103,   4,  34],-            [ 93,  23, 109,  11]--    Owning rank (`index // 16`):-            [ 3,  2,  7,  4],-            [ 6,  5,  3,  2],-            [ 5,  6,  0,  2],-            [ 5,  1,  6,  0],-

core implementation

Nixtla/statsforecast · #1294

Files changed →View PR ↗

fix(arima): use the configured innovation distribution on every fit and refitPython · 67 + / 25 −

Introduces 2 new declarations in python/statsforecast/arima.py.

Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.

python/statsforecast/arima.py ↗ · 4 files

@@ -786,6 +789,26 @@ def arma_css_op(p, x, coef, mask, arma, ncxreg, xreg, narma):         # objective actually optimized, plus the tail appended to the arma params         # (empty for normal/laplace, which concentrate their scale out)         ml_obj = armafn if distribution == Distribution.NORMAL else armafn_laplace+        fixed_tail = None+        if fixed_dist is not None and distribution_n_extra_params(distribution):+            if not no_optim:+                raise ValueError("fixed_dist requires all coefficients to be fixed")+            fixed_tail = np.array(dist_tail_from_params(distribution, fixed_dist))++        def minimize_tail(obj, init_ext):+            if fixed_tail is None:+                return minimize(+                    obj,+                    init_ext,+                    args=ml_args,+                    method=optim_method,+                    tol=tol,+                    options=optim_control,+                )+            return OptimResult(+                True, 0, fixed_tail, obj(fixed_tail, *ml_args), np.array([])+            )+         dist_tail_fit = np.array([])         nu_t = None         sigma2_t = None

Read today’s edition →