Deferred, non-urgent follow-up to finish Review scheduling performance profiling. The maintainer stopped the exhaustive offline capacity suite because it was taking too long and requested that the remaining profiling be tracked for later. This is not a request to restart it now, a functional implementation blocker, or authorization for production load/deployment/resource increases.
Related: T437673 covers improving Review page performance; this task is specifically the unfinished measurement/profiling work. UI correction is separate in T437775.
What was measured
The npp-scheduling implementation has a real reconciler and independent enrichment worker. python3 dev/run.py npp-verify combines functional recovery scenarios with an expensive HTTP/database-contention matrix: 30k/60k/100k synthetic members × 10 query families × 25 waves × 10 requests = 7,500 main HTTP requests, plus profiling and snapshot checks.
The matrix seeds synthetic article data and runs real bounded planning, claims, and simulated provider-failure/retry publications alongside web requests. It does NOT perform a full enrichment update, fetch live upstream data, or establish full-update throughput or the one-hour/daily freshness targets.
Partial results retained
- All ten HTTP query families completed at 30,000 members.
- Six completed at 60,000: default-all, combined filters, title, views, created, and reference need.
- Completed cohorts had no correctness failures; this is not a full integrated-suite pass.
- Default-query p95: 30k = 6.18s during writes / 6.09s postcommit; 60k = 14.72s / 14.02s. These miss the 2-second reference. Each reported cohort has 125 requests; actual-overlap and coordinated-concurrent summaries can describe the same requests and must not be added together.
- Synthetic 30k membership reconciliation took 15.15s, leaving the expected 15,001 members. No upstream calls were made by that measurement.
- The running suite and its remaining verification container were stopped. Cancellation is recorded, not treated as success.
Local detailed artifacts are in .cache/offline/acceptance/ (not guaranteed to survive on another checkout): capacity-stopped.json, http-samples.jsonl, http-summary.jsonl, http-overlap.jsonl, request-stages-*.jsonl, writer transaction/stage logs, resource/lifecycle logs, and reconciliation measurements. Prior invocations are under .cache/offline/acceptance-history/. The attached JSON preserves the completed cohort summaries, cancellation record, and reconciliation measurement independently of that local directory. See dev/README.md and .agents/npp-scheduling-plan.md for recorded context.
Remaining work
- Make the profiling workflow selective/resumable and explicitly bounded before another expensive run: select queue size/query family/cohort and retain completed evidence. Isolate harness failures with targeted checks rather than restarting already-passing recovery/setup and the whole matrix.
- Finish the 60k negative-weight, curves, age, and later-page families, then the 100k matrix and remaining snapshot/reconciliation/integrated checks. Reuse prior results only where code/configuration and workload remain comparable; otherwise explain why a rerun is needed.
- Use existing SQL/fetch/transfer, Python ranking/serialization, database contention, CPU/RSS, and web-worker measurements to identify the dominant costs and summarize misses honestly. Keep functional correctness and latency-reference results separate.
- If assessing full enrichment/update capacity, measure that as a separate, explicitly described representative acquisition workload: requests/latencies, cache reuse, changed revisions, new arrivals, daily refresh, retries/fairness, backlog, and Improve/Tone progress. Do not present the synthetic HTTP/retry matrix as that evidence. Live upstream load or increased allowances require separate maintainer approval.
- Publish a concise report with workload, environment/code version, completed and missing coverage, measurements, bottlenecks, and limitations. Preserve portable evidence and state whether any production capacity/freshness conclusions are actually supported.
Completion
Remaining profiling is completed in manageable chunks with a reproducible report, or its scope is explicitly revised with the maintainer. No silent reduction of workloads, repeated multi-hour blind reruns, or claim that a cancelled suite passed.
Filed with AI assistance at the maintainer’s request. Priority is Low for a future follow-up.