From f2397c00ada41c1dedb1e51356cffc8597d22ed3 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Sat, 15 Aug 2026 02:35:47 -0700 Subject: [PATCH 01/18] Hide the Direction picker when a studio starts from the last cycle In last-cycle mode the venue's own taste is the direction, so the picker only invites a stale, misleading value - the studio is created with an open custom direction instead. The Venue picker stays: it is the one input the deep research cannot do without. Co-authored-by: Cursor --- loom/web_static/factory.html | 4 ++-- loom/web_static/factory.js | 29 +++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/loom/web_static/factory.html b/loom/web_static/factory.html index 8edda913..32550905 100644 --- a/loom/web_static/factory.html +++ b/loom/web_static/factory.html @@ -5,7 +5,7 @@ Paper Factory - + @@ -334,6 +334,6 @@

Skills

- + diff --git a/loom/web_static/factory.js b/loom/web_static/factory.js index ec2b4761..09dadf16 100644 --- a/loom/web_static/factory.js +++ b/loom/web_static/factory.js @@ -1479,6 +1479,7 @@ el('btn-new-studio').addEventListener('click', () => { if (cat.default_max_rounds) el('new-rounds').value = cat.default_max_rounds; } el('studio-modal-status').textContent = ''; + syncStudioModalMode(); el('studio-modal').hidden = false; el('new-title').focus(); }); @@ -1490,13 +1491,21 @@ el('new-title').addEventListener('keydown', (ev) => { el('new-direction').addEventListener('change', () => { el('new-custom-direction').hidden = el('new-direction').value !== 'custom'; }); +// Last-cycle studios take their direction from what the venue rewarded, so +// the Direction picker disappears in that mode; the Venue picker stays - it +// is the one input the deep research cannot do without. +function syncStudioModalMode() { + const mode = document.querySelector('input[name="new-mode"]:checked').value; + el('new-seed-label').textContent = mode === 'seed' + ? 'What the paper should be about' + : 'What the paper should be about (optional)'; + const venueMode = mode === 'venue'; + el('new-direction').closest('div').hidden = venueMode; + el('new-custom-direction').hidden = venueMode + || el('new-direction').value !== 'custom'; +} document.querySelectorAll('input[name="new-mode"]').forEach((radio) => { - radio.addEventListener('change', () => { - const seeded = document.querySelector('input[name="new-mode"]:checked').value === 'seed'; - el('new-seed-label').textContent = seeded - ? 'What the paper should be about' - : 'What the paper should be about (optional)'; - }); + radio.addEventListener('change', syncStudioModalMode); }); el('btn-studio-create').addEventListener('click', async () => { const title = el('new-title').value.trim(); @@ -1516,8 +1525,12 @@ el('btn-studio-create').addEventListener('click', async () => { method: 'POST', body: JSON.stringify({ title, kind: 'ar', agent: 'cursor', - ar_direction: direction, - ar_custom_direction: el('new-custom-direction').value.trim(), + // In last-cycle mode the hidden Direction picker must not leak its + // stale value into the studio: the direction IS the venue's taste. + ar_direction: venueKickoff ? 'custom' : direction, + ar_custom_direction: venueKickoff + ? 'Open direction: follow whatever this venue rewarded in its last completed cycle.' + : el('new-custom-direction').value.trim(), ar_venue: el('new-venue').value, ar_mode: venueKickoff ? 'auto' : mode, ar_seed_idea: seed, From 51fc475a5f17bdea4ea2389a05368439146cb24c Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Sat, 15 Aug 2026 02:38:43 -0700 Subject: [PATCH 02/18] Let the operator hand the last-cycle researcher its starting URL Last-cycle mode gains a venue-page field: the URL is stored on the studio (create body or the venue action can set/override it) and leads the deep research prompt as the crawl entry point - awards or accepted-papers page first, own web search only as fallback. Co-authored-by: Cursor --- loom/ar_task.py | 14 +++++++++++++- loom/web.py | 23 ++++++++++++++++++++++- loom/web_static/factory.html | 6 ++++-- loom/web_static/factory.js | 10 +++++++++- tests/test_venue_ideas.py | 25 +++++++++++++++++++++++++ 5 files changed, 73 insertions(+), 5 deletions(-) diff --git a/loom/ar_task.py b/loom/ar_task.py index 467174ee..76f7aea4 100644 --- a/loom/ar_task.py +++ b/loom/ar_task.py @@ -549,6 +549,7 @@ def new_studio_state( venue: str = DEFAULT_VENUE, mode: str = MODE_AUTO, seed_idea: str = "", + venue_url: str = "", max_rounds: Any = DEFAULT_MAX_ROUNDS, ) -> dict[str, Any]: d = (direction or "").strip().lower() @@ -583,6 +584,7 @@ def new_studio_state( "search_suggest_status": "idle", "search_suggest_error": "", "venue_report": {}, + "venue_url": venue_url.strip(), "venue_status": "idle", "venue_error": "", "venue_updated_at": "", @@ -1746,11 +1748,21 @@ def research_venue_cycle( """ venue = str(venue_entry(str(state.get("venue") or DEFAULT_VENUE)).get("label")) direction = direction_label(state) + venue_url = str(state.get("venue_url") or "").strip() + start_block = ( + ( + f"START HERE: the operator supplied this venue page - {venue_url}\n" + "Crawl it and the pages it links (awards, accepted papers, program)\n" + "before falling back to your own web search for anything missing.\n\n" + ) + if venue_url + else "Use your own web search. " + ) prompt = f"""You are surveying the most recent COMPLETED cycle of {venue} so a research studio can propose ideas that fit what this venue actually rewards. The studio's research direction is: {direction}. -Use your own web search. For the last completed edition of {venue}, find: +{start_block}For the last completed edition of {venue}, find: 1. the best paper / honorable mention winners; 2. papers highlighted as orals or award candidates (up to 12); 3. the hottest topics of that cycle - recurring themes across accepted papers, diff --git a/loom/web.py b/loom/web.py index 556bb4f9..b66c5acf 100644 --- a/loom/web.py +++ b/loom/web.py @@ -6168,9 +6168,21 @@ def _ar_action( "ok": False, "error": f"another Studio job is running: {busy[0]}", }, 409 + venue_url = str(body.get("url", "")).strip() + if venue_url and not venue_url.startswith(("http://", "https://")): + return { + "ok": False, + "error": "venue URL must be an http(s) address", + }, 400 meta = read_meta(root, slug) model = str(body.get("model", "")).strip() or _ar_headless_model(meta) - ar.update_ar_state(root, slug, venue_status="running", venue_error="") + changes: dict[str, Any] = { + "venue_status": "running", + "venue_error": "", + } + if venue_url: + changes["venue_url"] = venue_url + ar.update_ar_state(root, slug, **changes) _ar_run_async(_ar_venue_job, root, slug, model) return {"ok": True, "status": "running"}, 202 @@ -8493,12 +8505,21 @@ def do_POST(self) -> None: # noqa: N802 ) ar_state: dict[str, Any] | None = None if kind == ar.KIND_AR: + venue_url = str(body.get("ar_venue_url", "")).strip() + if venue_url and not venue_url.startswith(("http://", "https://")): + st, b, h = _json_bytes( + {"error": "venue URL must be an http(s) address"}, + 400, + ) + self._send(st, b, h) + return ar_state = ar.new_studio_state( direction=str(body.get("ar_direction", "")), custom_direction=str(body.get("ar_custom_direction", "")), venue=str(body.get("ar_venue", "")), mode=str(body.get("ar_mode", "")), seed_idea=str(body.get("ar_seed_idea", "")), + venue_url=venue_url, max_rounds=body.get("ar_max_rounds", ar.DEFAULT_MAX_ROUNDS), ) # AR asks for the paper's content, not a goal to interview diff --git a/loom/web_static/factory.html b/loom/web_static/factory.html index 32550905..35edcbd6 100644 --- a/loom/web_static/factory.html +++ b/loom/web_static/factory.html @@ -5,7 +5,7 @@ Paper Factory - + @@ -290,6 +290,8 @@

Start a studio

+ + @@ -334,6 +336,6 @@

Skills

- + diff --git a/loom/web_static/factory.js b/loom/web_static/factory.js index 09dadf16..0216f584 100644 --- a/loom/web_static/factory.js +++ b/loom/web_static/factory.js @@ -1503,6 +1503,8 @@ function syncStudioModalMode() { el('new-direction').closest('div').hidden = venueMode; el('new-custom-direction').hidden = venueMode || el('new-direction').value !== 'custom'; + el('new-venue-url-label').hidden = !venueMode; + el('new-venue-url').hidden = !venueMode; } document.querySelectorAll('input[name="new-mode"]').forEach((radio) => { radio.addEventListener('change', syncStudioModalMode); @@ -1519,6 +1521,11 @@ el('btn-studio-create').addEventListener('click', async () => { // runs the studio in auto mode, but the first job is the venue deep // research, and ideas chain from its report instead of an arXiv haul. const venueKickoff = mode === 'venue'; + const venueUrl = el('new-venue-url').value.trim(); + if (venueKickoff && venueUrl && !/^https?:\/\//.test(venueUrl)) { + status.textContent = 'The venue page must be an http(s) URL.'; + return; + } status.textContent = 'Creating…'; try { const { meta } = await api('/api/tasks', { @@ -1534,11 +1541,12 @@ el('btn-studio-create').addEventListener('click', async () => { ar_venue: el('new-venue').value, ar_mode: venueKickoff ? 'auto' : mode, ar_seed_idea: seed, + ar_venue_url: venueKickoff ? venueUrl : '', ar_max_rounds: Number(el('new-rounds').value || 10), }), }); el('studio-modal').hidden = true; - el('new-title').value = ''; el('new-seed').value = ''; + el('new-title').value = ''; el('new-seed').value = ''; el('new-venue-url').value = ''; openStudio(meta.slug); if (venueKickoff) { const started = await act(meta.slug, 'venue', {}, 'Venue research'); diff --git a/tests/test_venue_ideas.py b/tests/test_venue_ideas.py index e3d25451..227613f7 100644 --- a/tests/test_venue_ideas.py +++ b/tests/test_venue_ideas.py @@ -60,6 +60,31 @@ def test_normalize_venue_report_bounds_and_drops_empty_titles() -> None: assert len(report["summary"]) == 2000 +def test_operator_venue_url_leads_the_research_prompt(monkeypatch) -> None: + captured: dict[str, str] = {} + + def fake_run(prompt, model="", timeout=0, on_line=None): + captured["prompt"] = prompt + return {"ok": True, "text": _REPORT_JSON, "cost": 0.0} + + monkeypatch.setattr(ar, "_run_headless", fake_run) + + with_url = ar.new_studio_state( + direction="multimodal", + venue="wacv", + venue_url="https://wacv.example/awards ", + ) + assert with_url["venue_url"] == "https://wacv.example/awards" + assert ar.research_venue_cycle(with_url)["ok"] + assert "START HERE" in captured["prompt"] + assert "https://wacv.example/awards" in captured["prompt"] + + without_url = ar.new_studio_state(direction="multimodal", venue="wacv") + assert ar.research_venue_cycle(without_url)["ok"] + assert "START HERE" not in captured["prompt"] + assert "Use your own web search" in captured["prompt"] + + def test_research_venue_cycle_parses_fenced_report(monkeypatch) -> None: state = ar.new_studio_state(direction="multimodal", venue="wacv") monkeypatch.setattr( From ed5dfdeedba2b3237cf8306b29be0a8000932a7c Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Sat, 15 Aug 2026 02:44:49 -0700 Subject: [PATCH 03/18] Give last-cycle studios their own floor plan Studios created in last-cycle mode carry a venue_kickoff flag: the studio page drops the arXiv mining step entirely (steps renumber themselves), the subtitle says what is actually happening, plain Generate-ideas defaults to the venue report as its grounding, and its gating waits on the report instead of asking for a mining run that will never happen. Co-authored-by: Cursor --- loom/ar_task.py | 2 ++ loom/web.py | 9 ++++++++- loom/web_static/factory.html | 4 ++-- loom/web_static/factory.js | 30 +++++++++++++++++++++++------- tests/test_venue_ideas.py | 3 +++ 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/loom/ar_task.py b/loom/ar_task.py index 76f7aea4..4bb4174c 100644 --- a/loom/ar_task.py +++ b/loom/ar_task.py @@ -550,6 +550,7 @@ def new_studio_state( mode: str = MODE_AUTO, seed_idea: str = "", venue_url: str = "", + venue_kickoff: bool = False, max_rounds: Any = DEFAULT_MAX_ROUNDS, ) -> dict[str, Any]: d = (direction or "").strip().lower() @@ -585,6 +586,7 @@ def new_studio_state( "search_suggest_error": "", "venue_report": {}, "venue_url": venue_url.strip(), + "venue_kickoff": bool(venue_kickoff), "venue_status": "idle", "venue_error": "", "venue_updated_at": "", diff --git a/loom/web.py b/loom/web.py index b66c5acf..85cf8f9f 100644 --- a/loom/web.py +++ b/loom/web.py @@ -6207,7 +6207,13 @@ def _ar_action( return {"ok": True, "status": "running"}, 202 if str(state.get("venue_status")) == "running": return {"ok": False, "error": "venue research is still running"}, 409 - source = str(body.get("source", "")).strip() or ar.IDEA_SOURCE_PAPERS + source = str(body.get("source", "")).strip() or ( + # A last-cycle studio's natural grounding is its venue + # report; plain "Generate ideas" should not demand arXiv. + ar.IDEA_SOURCE_VENUE + if state.get("venue_kickoff") and state.get("venue_report") + else ar.IDEA_SOURCE_PAPERS + ) if source not in (ar.IDEA_SOURCE_PAPERS, ar.IDEA_SOURCE_VENUE): return {"ok": False, "error": "unknown idea source"}, 400 if source == ar.IDEA_SOURCE_VENUE and not state.get("venue_report"): @@ -8520,6 +8526,7 @@ def do_POST(self) -> None: # noqa: N802 mode=str(body.get("ar_mode", "")), seed_idea=str(body.get("ar_seed_idea", "")), venue_url=venue_url, + venue_kickoff=bool(body.get("ar_venue_kickoff")), max_rounds=body.get("ar_max_rounds", ar.DEFAULT_MAX_ROUNDS), ) # AR asks for the paper's content, not a goal to interview diff --git a/loom/web_static/factory.html b/loom/web_static/factory.html index 35edcbd6..c25b4ab3 100644 --- a/loom/web_static/factory.html +++ b/loom/web_static/factory.html @@ -5,7 +5,7 @@ Paper Factory - + @@ -336,6 +336,6 @@

Skills

- + diff --git a/loom/web_static/factory.js b/loom/web_static/factory.js index 0216f584..ba4e61f6 100644 --- a/loom/web_static/factory.js +++ b/loom/web_static/factory.js @@ -382,8 +382,10 @@ function renderStudio(d, state) { el('studio-title').textContent = d.title || S.slug; el('studio-eyebrow').textContent = `Studio · ${String(state.venue || '').toUpperCase()} · ${d.direction_label || ''}`; - el('studio-sub').textContent = state.seed_idea - || `Mining ${d.direction_label} and proposing ideas grounded in what it finds.`; + el('studio-sub').textContent = state.venue_kickoff + ? `Researching what ${String(state.venue || '').toUpperCase()} rewarded last cycle and proposing ideas from it.` + : (state.seed_idea + || `Mining ${d.direction_label} and proposing ideas grounded in what it finds.`); const logs = d.logs || {}; renderLog('papers-log', logs.papers, state.papers_status === 'running'); @@ -473,14 +475,17 @@ function renderSteps(state, papers, ideas) { const spawned = ideas.filter((i) => i.status === 'spawned').length; const running = (job) => state[`${job}_status`] === 'running'; // A studio seeded from your own idea can go straight to step 2; pointing - // "current" at mining would say the opposite. + // "current" at mining would say the opposite. A last-cycle studio never + // mines arXiv at all, so that step disappears entirely. const seeded = state.mode === 'seed'; + const venueStudio = Boolean(state.venue_kickoff); const steps = [ { id: 'mine', done: papers.length > 0, - optional: seeded, + optional: seeded || venueStudio, + hidden: venueStudio, state: seeded && !papers.length && !state.papers_status ? 'optional — this studio starts from your idea' : paperMiningState(state, papers), @@ -489,6 +494,7 @@ function renderSteps(state, papers, ideas) { id: 'ideas', done: ideas.length > 0, state: running('ideas') ? 'generating, a few minutes…' + : venueStudio && running('venue') ? 'waiting for the last-cycle report…' : ideas.length ? `${ideas.length} ideas` : (state.ideas_error || 'not run yet'), }, @@ -509,11 +515,16 @@ function renderSteps(state, papers, ideas) { steps.forEach((s, i) => { const node = document.querySelector(`.rf-step[data-step="${s.id}"]`); if (!node) return; + node.hidden = Boolean(s.hidden); node.classList.toggle('is-done', s.done); node.classList.toggle('is-current', i === current); const label = el(`step-${s.id}-state`); if (label) label.textContent = s.state; }); + // Renumber the visible steps so a hidden one leaves no gap behind. + document.querySelectorAll('.rf-step:not([hidden]) .rf-step__n').forEach( + (badge, i) => { badge.textContent = String(i + 1); }, + ); // A step whose input does not exist yet cannot run, so say so on the button // rather than letting it be pressed and answer with an error. @@ -532,11 +543,15 @@ function renderSteps(state, papers, ideas) { why: busy ? 'a Studio job is already running' : (!terms.length ? 'add or suggest search terms first' : 'select at least one arXiv category'), }); + const hasVenueReport = Object.keys(state.venue_report || {}).length > 0; setAction('btn-ideas', { - ok: !busy && (papers.length > 0 || state.mode === 'seed'), - why: busy ? 'a job is already running' : 'mine the field first, or start the studio from your own idea', + ok: !busy && ( + venueStudio ? hasVenueReport : (papers.length > 0 || state.mode === 'seed') + ), + why: busy ? 'a job is already running' + : venueStudio ? 'run the last-cycle research first' + : 'mine the field first, or start the studio from your own idea', }); - const hasVenueReport = Object.keys(state.venue_report || {}).length > 0; setAction('btn-ideas-venue', { ok: !busy, why: busy ? 'a job is already running' : '', @@ -1542,6 +1557,7 @@ el('btn-studio-create').addEventListener('click', async () => { ar_mode: venueKickoff ? 'auto' : mode, ar_seed_idea: seed, ar_venue_url: venueKickoff ? venueUrl : '', + ar_venue_kickoff: venueKickoff, ar_max_rounds: Number(el('new-rounds').value || 10), }), }); diff --git a/tests/test_venue_ideas.py b/tests/test_venue_ideas.py index 227613f7..d2c442fa 100644 --- a/tests/test_venue_ideas.py +++ b/tests/test_venue_ideas.py @@ -73,8 +73,11 @@ def fake_run(prompt, model="", timeout=0, on_line=None): direction="multimodal", venue="wacv", venue_url="https://wacv.example/awards ", + venue_kickoff=True, ) assert with_url["venue_url"] == "https://wacv.example/awards" + assert with_url["venue_kickoff"] is True + assert ar.new_studio_state(direction="multimodal")["venue_kickoff"] is False assert ar.research_venue_cycle(with_url)["ok"] assert "START HERE" in captured["prompt"] assert "https://wacv.example/awards" in captured["prompt"] From 14e545b1eeeb9cc478db412fd697a55ce8ce7dcb Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Sat, 15 Aug 2026 02:48:34 -0700 Subject: [PATCH 04/18] Make the operator's URL the venue authority, and chain ideas server-side A WSDM URL lost an argument with the dropdown's default ICLR: the agent dutifully surveyed the wrong conference and said so in its own summary. Now a supplied URL decides which venue gets researched - the catalog picker disappears in last-cycle mode and only ever chooses a paper template - and the research-then-ideas chain moved out of browser memory into the venue job itself, so a page reload can no longer strand a finished report without its ideas. Co-authored-by: Cursor --- loom/ar_task.py | 23 ++++++++++------ loom/web.py | 21 +++++++++++++-- loom/web_static/factory.html | 6 ++--- loom/web_static/factory.js | 51 ++++++++++++++---------------------- tests/test_venue_ideas.py | 34 ++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 44 deletions(-) diff --git a/loom/ar_task.py b/loom/ar_task.py index 4bb4174c..e6acb54a 100644 --- a/loom/ar_task.py +++ b/loom/ar_task.py @@ -1748,18 +1748,25 @@ def research_venue_cycle( web search: award pages, accepted-paper lists, and trend write-ups. The reply is normalized and bounded before it is trusted. """ - venue = str(venue_entry(str(state.get("venue") or DEFAULT_VENUE)).get("label")) direction = direction_label(state) venue_url = str(state.get("venue_url") or "").strip() - start_block = ( - ( + if venue_url: + # The operator's URL names the venue. The catalog dropdown only picks + # a paper TEMPLATE and must never override which venue gets surveyed + # (a WSDM URL once lost to the dropdown's default ICLR). + venue = f"the venue that owns {venue_url}" + start_block = ( f"START HERE: the operator supplied this venue page - {venue_url}\n" - "Crawl it and the pages it links (awards, accepted papers, program)\n" - "before falling back to your own web search for anything missing.\n\n" + "That page decides which venue you survey; identify the venue from\n" + "the page itself and say its name in the `cycle` field. Crawl it and\n" + "the pages it links (awards, accepted papers, program) before\n" + "falling back to your own web search for anything missing.\n\n" ) - if venue_url - else "Use your own web search. " - ) + else: + venue = str( + venue_entry(str(state.get("venue") or DEFAULT_VENUE)).get("label") + ) + start_block = "Use your own web search. " prompt = f"""You are surveying the most recent COMPLETED cycle of {venue} so a research studio can propose ideas that fit what this venue actually rewards. The studio's research direction is: {direction}. diff --git a/loom/web.py b/loom/web.py index 85cf8f9f..284f3a17 100644 --- a/loom/web.py +++ b/loom/web.py @@ -4722,10 +4722,15 @@ def _rebuttal_resume_delivery_watchers() -> int: def _ar_venue_job(root: Path, slug: str, model: str) -> None: - """Deep-research the venue's last completed cycle, then persist the report.""" + """Deep-research the venue's last completed cycle, then persist the report. + + Chaining lives here rather than in the browser: a page reload must not be + able to lose the "and then propose ideas from it" half of the kickoff. + """ state = ar.read_ar_state(root, slug) log = _ar_logger(root, slug, ar.JOB_VENUE) res = ar.research_venue_cycle(state, model=model, on_line=log) + chain = bool(state.get("venue_chain_ideas")) if res.get("ok"): ar.update_ar_state( root, @@ -4733,16 +4738,27 @@ def _ar_venue_job(root: Path, slug: str, model: str) -> None: venue_report=res.get("report") or {}, venue_status="done", venue_error="", + venue_chain_ideas=False, venue_updated_at=_iso_now(), cost_usd=round( float(state.get("cost_usd") or 0.0) + float(res.get("cost") or 0.0), 4 ), ) print(f"[ar] {slug}: venue-cycle report ready", flush=True) + if chain: + log("report ready - generating ideas from it") + ar.update_ar_state(root, slug, ideas_status="running", ideas_error="") + _ar_run_async( + _ar_ideas_job, root, slug, 6, model, ar.IDEA_SOURCE_VENUE + ) else: log(f"failed: {res.get('error')}") ar.update_ar_state( - root, slug, venue_status="error", venue_error=str(res.get("error") or "") + root, + slug, + venue_status="error", + venue_error=str(res.get("error") or ""), + venue_chain_ideas=False, ) print(f"[ar] {slug}: venue research failed - {res.get('error')}", flush=True) @@ -6179,6 +6195,7 @@ def _ar_action( changes: dict[str, Any] = { "venue_status": "running", "venue_error": "", + "venue_chain_ideas": bool(body.get("chain_ideas")), } if venue_url: changes["venue_url"] = venue_url diff --git a/loom/web_static/factory.html b/loom/web_static/factory.html index c25b4ab3..438d71d3 100644 --- a/loom/web_static/factory.html +++ b/loom/web_static/factory.html @@ -5,7 +5,7 @@ Paper Factory - + @@ -290,7 +290,7 @@

Start a studio

- + @@ -336,6 +336,6 @@

Skills

- + diff --git a/loom/web_static/factory.js b/loom/web_static/factory.js index ba4e61f6..e5d69120 100644 --- a/loom/web_static/factory.js +++ b/loom/web_static/factory.js @@ -19,7 +19,6 @@ const S = { busy: false, graphSel: '', // node the user clicked into, '' when nothing is graphHide: new Set(), // relations switched off in the legend - venueIdeasQueued: '', // studio slug waiting to turn its venue report into ideas pane: '', // tmux target of the open paper's author paneFollow: false, // whether to keep tailing it filePath: '', // where the file browser is, under work/ @@ -351,33 +350,18 @@ function paperMiningState(state, papers) { function venueResearchState(state) { const status = String(state.venue_status || ''); const report = state.venue_report || {}; - if (status === 'running') return 'deep-researching the venue\u2019s last cycle\u2026'; + if (status === 'running') { + return state.venue_chain_ideas + ? 'deep-researching the last cycle\u2026 ideas will follow automatically' + : 'deep-researching the venue\u2019s last cycle\u2026'; + } if (status === 'error') return `failed: ${state.venue_error || 'unknown error'}`; if (Object.keys(report).length) { - const queued = S.venueIdeasQueued === S.slug ? ' \u00b7 ideas queued next' : ''; - return `report ready: ${report.cycle || 'last cycle'}${queued}`; + return `report ready: ${report.cycle || 'last cycle'}`; } return 'not researched yet'; } -// The "ideas from last cycle" button is one press for the whole chain: run the -// venue research if the report is missing, then generate from it as soon as -// the report lands. The queued flag carries the slug so switching studios -// mid-research cannot fire ideas at the wrong one. -async function maybeQueueVenueIdeas(state) { - if (S.venueIdeasQueued !== S.slug) return; - const status = String(state.venue_status || ''); - if (status === 'running') return; - S.venueIdeasQueued = ''; - if (status !== 'done' || !Object.keys(state.venue_report || {}).length) return; - if (state.ideas_status === 'running') return; - await act(S.slug, 'ideas', { - count: Number(el('studio-count').value || 6), - source: 'venue', - }, 'Venue idea generation'); - loadTask(); -} - function renderStudio(d, state) { el('studio-title').textContent = d.title || S.slug; el('studio-eyebrow').textContent = @@ -392,7 +376,6 @@ function renderStudio(d, state) { renderLog('ideas-log', logs.ideas, state.ideas_status === 'running'); renderLog('venue-log', logs.venue, state.venue_status === 'running'); renderSearchSettings(d, state); - maybeQueueVenueIdeas(state); const papers = state.papers || []; const ideas = state.ideas || []; @@ -555,8 +538,8 @@ function renderSteps(state, papers, ideas) { setAction('btn-ideas-venue', { ok: !busy, why: busy ? 'a job is already running' : '', - label: running('venue') ? 'Researching last cycle…' - : S.venueIdeasQueued === S.slug ? 'Ideas queued…' + label: running('venue') + ? (state.venue_chain_ideas ? 'Researching… ideas will follow' : 'Researching last cycle…') : hasVenueReport ? 'Ideas from last cycle' : 'Research last cycle → ideas', }); const venueLabel = el('step-venue-state'); @@ -1371,8 +1354,7 @@ el('btn-ideas-venue').addEventListener('click', async () => { source: 'venue', }, 'Venue idea generation'); } else { - const d = await act(S.slug, 'venue', {}, 'Venue research'); - if (d) S.venueIdeasQueued = S.slug; + await act(S.slug, 'venue', { chain_ideas: true }, 'Venue research'); } loadTask(); }); @@ -1515,7 +1497,9 @@ function syncStudioModalMode() { ? 'What the paper should be about' : 'What the paper should be about (optional)'; const venueMode = mode === 'venue'; - el('new-direction').closest('div').hidden = venueMode; + // The URL names the venue in this mode, so both catalog pickers disappear: + // direction comes from what the venue rewarded, the venue from the page. + el('new-direction').closest('.rf-row').hidden = venueMode; el('new-custom-direction').hidden = venueMode || el('new-direction').value !== 'custom'; el('new-venue-url-label').hidden = !venueMode; @@ -1537,7 +1521,11 @@ el('btn-studio-create').addEventListener('click', async () => { // research, and ideas chain from its report instead of an arXiv haul. const venueKickoff = mode === 'venue'; const venueUrl = el('new-venue-url').value.trim(); - if (venueKickoff && venueUrl && !/^https?:\/\//.test(venueUrl)) { + if (venueKickoff && !venueUrl) { + status.textContent = 'Paste the venue page URL — it decides which venue gets researched.'; + return; + } + if (venueKickoff && !/^https?:\/\//.test(venueUrl)) { status.textContent = 'The venue page must be an http(s) URL.'; return; } @@ -1565,9 +1553,10 @@ el('btn-studio-create').addEventListener('click', async () => { el('new-title').value = ''; el('new-seed').value = ''; el('new-venue-url').value = ''; openStudio(meta.slug); if (venueKickoff) { - const started = await act(meta.slug, 'venue', {}, 'Venue research'); + const started = await act( + meta.slug, 'venue', { url: venueUrl, chain_ideas: true }, 'Venue research', + ); if (started) { - S.venueIdeasQueued = meta.slug; toast('Deep-researching the venue\u2019s last cycle \u2014 ideas will follow automatically.'); } loadTask(); diff --git a/tests/test_venue_ideas.py b/tests/test_venue_ideas.py index d2c442fa..c1d91342 100644 --- a/tests/test_venue_ideas.py +++ b/tests/test_venue_ideas.py @@ -180,6 +180,40 @@ def test_venue_job_persists_report_and_cost(tmp_path: Path, monkeypatch) -> None assert state["cost_usd"] == 0.5 +def test_venue_job_chains_idea_generation_server_side( + tmp_path: Path, monkeypatch +) -> None: + root, slug = _studio(tmp_path) + ar.update_ar_state( + root, slug, venue_status="running", venue_chain_ideas=True + ) + monkeypatch.setattr( + web.ar, + "research_venue_cycle", + lambda state, model="", on_line=None: { + "ok": True, + "report": ar.normalize_venue_report( + {"cycle": "WSDM 2026", "best_papers": [{"title": "Winner"}]} + ), + "cost": 0.1, + }, + ) + launched: list = [] + monkeypatch.setattr( + web, "_ar_run_async", lambda fn, *args: launched.append((fn, args)) + ) + + web._ar_venue_job(root, slug, "claude-test") + + state = ar.read_ar_state(root, slug) + assert state["venue_status"] == "done" + assert state["venue_chain_ideas"] is False + assert state["ideas_status"] == "running" + assert launched == [ + (web._ar_ideas_job, (root, slug, 6, "claude-test", ar.IDEA_SOURCE_VENUE)) + ] + + def test_venue_job_records_error(tmp_path: Path, monkeypatch) -> None: root, slug = _studio(tmp_path) ar.update_ar_state(root, slug, venue_status="running") From 2b4b398c5cce7b4dabdd9152bbf549da64edeb64 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Sun, 16 Aug 2026 21:09:00 -0700 Subject: [PATCH 05/18] Personalize venue studios and add direct GPU orchestration Add WACV-ready paper generation, automatic paper startup, personalized research notes, and an SSH-based GPU scout so factory runs stay aligned with venue requirements without relying on the broken Slurm queue. Co-authored-by: Cursor --- .../notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md | 22 + .../zhizhou/WSDM2026_BEST_ORAL_SUMMARY.md | 89 ++++ .../zhizhou/WSDM2026_TOPICS_VS_MY_STACK.md | 185 ++++++++ docs/notes/zhizhou/WSDM2027_PERSONAL_IDEAS.md | 228 +++++++++ docs/notes/zhizhou/my-google-scholar.pdf | Bin 0 -> 260603 bytes loom/ar_task.py | 26 + loom/skills/ar/GPU-RESOURCES.md | 106 +++-- loom/skills/ar/gpu-resource/README.md | 69 +++ loom/skills/ar/gpu-resource/gpu_scout.py | 217 +++++++++ loom/templates/paper/wacv/main.tex | 50 ++ loom/templates/paper/wacv/wacv.sty | 447 ++++++++++++++++++ loom/web.py | 36 ++ loom/web_static/factory.html | 4 +- loom/web_static/factory.js | 6 +- 14 files changed, 1436 insertions(+), 49 deletions(-) create mode 100644 docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md create mode 100644 docs/notes/zhizhou/WSDM2026_BEST_ORAL_SUMMARY.md create mode 100644 docs/notes/zhizhou/WSDM2026_TOPICS_VS_MY_STACK.md create mode 100644 docs/notes/zhizhou/WSDM2027_PERSONAL_IDEAS.md create mode 100644 docs/notes/zhizhou/my-google-scholar.pdf create mode 100644 loom/skills/ar/gpu-resource/README.md create mode 100644 loom/skills/ar/gpu-resource/gpu_scout.py create mode 100644 loom/templates/paper/wacv/main.tex create mode 100644 loom/templates/paper/wacv/wacv.sty diff --git a/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md b/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md new file mode 100644 index 00000000..0596d54d --- /dev/null +++ b/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md @@ -0,0 +1,22 @@ +# WACV / WSDM Paper Progress + +Updated: 2026-08-16 21:08 PDT + +| Venue | ID | Paper | Stage | Round | Latest score | Agent | Folder | +|---|---|---|---|---:|---:|---|---| +| WACV | wacv-fit-01 | 扩散得分平滑度驱动的开集测试时自适应 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-diffusion-score-smoothness-for-open-set-test-time-adaptation` | +| WACV | wacv-fit-02 | 得分统计量的扩散视频取证 | Author/reviewer loop | 6/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-score-statistic-forensics-for-diffusion-generated-video-detection` | +| WACV | wacv-fit-03 | 手术场景的开集识别与安全弃权 | Author/reviewer loop | 1/10 | — | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-open-set-recognition-with-safe-abstention-for-surgical-scene-understan` | +| WACV | wacv-fit-04 | 差分隐私的注视估计个性化 | Author/reviewer loop | 1/10 | — | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-differentially-private-personalization-for-gaze-estimation` | +| WACV | wacv-fit-08 | 检索记忆智能体的长程序化视频理解 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-retrieval-memory-agents-for-long-form-procedural-video-understanding` | +| WACV | wacv-fit-14 | 表示层攻击审计合成图像取证器 | Author/reviewer loop | 4/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-presentation-only-attacks-for-auditing-synthetic-image-forensics-detec` | +| WACV | wacv-fit-16 | 可验证奖励强化学习的视频异常因果推理 | Author/reviewer loop | 5/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-verifiable-reward-rl-for-causal-video-anomaly-reasoning` | +| WACV | wacv-fit-17 | 低秩几何可证保证的分布外检测 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-provable-low-rank-feature-geometry-for-out-of-distribution-detection` | +| WSDM | wsdm-02 | 没有预言机的风险敏感多样化:意图估计误差如何侵蚀最差情况保证 | Delivered | 6/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-risk-sensitive-diversification-without-an-oracle` | +| WSDM | wsdm-03 | Semantic ID 上生成式检索的计算极限 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-computational-limits-of-generative-retrieval-over-semantic` | +| WSDM | wsdm-04 | 判官读过答案吗:LLM 相关性判断中的知识截断污染 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-llm-knowledge-cutoff-contamination-in-llm-relevance-judgments` | +| WSDM | wsdm-05 | 一步就够:带可证明误差界的扩散推荐蒸馏 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-one-step-suffices-diffusion-recommendation-distillation-with-provable` | +| WSDM | wsdm-06 | 会偷看的分词器:Semantic ID 构建导致的生成式推荐测试集泄漏 | Author/reviewer loop | 3/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-tokenizers-that-peek-test-set-leakage-in-semantic-id-gener` | +| WSDM | wsdm-09 | 规模是必要的吗:协同过滤的模型容量下界 | Delivered | 6/10 | 5/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-is-scale-necessary-capacity-lower-bounds-for-collaborative-filtering` | +| WSDM | wsdm-11 | 当网页被 LLM 写满:点击相关性代理还成立吗 | Delivered | 5/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-llm-when-the-web-is-llm-written-auditing-click-signals-as-relevance-pr` | +| WSDM | wsdm-12 | 最多能压多小:推荐图压缩的样本复杂度下界 | Delivered | 8/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-how-small-can-you-go-sample-complexity-limits-of-graph-condensation-fo` | diff --git a/docs/notes/zhizhou/WSDM2026_BEST_ORAL_SUMMARY.md b/docs/notes/zhizhou/WSDM2026_BEST_ORAL_SUMMARY.md new file mode 100644 index 00000000..51632e39 --- /dev/null +++ b/docs/notes/zhizhou/WSDM2026_BEST_ORAL_SUMMARY.md @@ -0,0 +1,89 @@ +# WSDM 2026 获奖与代表性论文的共通点 + +> 数据来源:wsdm2027 studio 的 venue 深度调研报告(Claude agent 从你给的 +> WSDM 官网 URL 开始爬取),存于 `.RUD/wsdm2027/ar.json` 的 `venue_report`。 +> +> **可信度说明**:WSDM 2026(第 19 届,Boise, Idaho,2026 年 2 月,录取率约 +> 16%)**没有公开单独的 oral 名单**。官方可确认的只有 Best Paper 和 +> Runner-Up 两篇;下文"代表性论文"是该届被广泛引用/讨论的 accepted +> papers,oral 身份未经证实。投稿数在不同来源间有出入(799 vs 613)。 + +## 一、两篇获奖论文(官方认证) + +### Best Paper(唯一):Diversification as Risk Minimization + +- 早稻田大学 Rikiya Takehi(本科生一作)等,arXiv 2510.22681。 +- 用人话说:搜索结果多样化(diversification)研究了二十年,大家默认它能 + "照顾到小众意图"。这篇 paper 实测发现:**经典多样化算法对小众意图的保护 + 并不比不做多样化更好**——平均指标在涨,最差情况的用户体验没人管。 +- 他们提出 VRisk(衡量"最差意图"风险的指标)和 VRisker(带近似保证的贪心 + 重排器),把最差情况的失败率降低最多 33%,代价只是平均性能掉 ~2%。 + +### Best Paper Runner-Up:TemporalExpertNet + +- 天津大学 + 快手工业数据,ACM DOI 10.1145/3773966.3777956。 +- 用人话说:电商大促(618、黑五)期间用户转化行为会突变,常规 CVR 模型 + 在大促时失灵。这篇把模型拆成"稳定编码器 + 大促敏感专家"两部分,让平时 + 学到的知识在大促期间**跨时间复用**,而不是每次大促都从头学。 + +## 二、该届代表性论文(oral 身份未证实) + +| 论文 | 主题 | +| --- | --- | +| MMQ: Multimodal Mixture-of-Quantization | Semantic ID / 生成式推荐的物品 token 化 | +| Unlocking Scaling Law in Industrial RecSys (Alibaba, 7B) | 推荐系统的 scaling law,已部署 A/B | +| OneLoc (Kuaishou, ~21% GMV 提升) | 地理感知生成式推荐,已部署 | +| TableMind | SFT+RL 训练的表格推理工具智能体 | +| Dual Conditional Diffusion Models | 扩散模型做序列推荐(该届最大建模潮流,≥7 篇) | +| How Do LLM-Generated Texts Impact Term-Based Retrieval? | LLM 生成内容对检索器的偏置(发现词法模型无偏,神经检索器有偏) | +| Multi-view Graph Condensation via Tensor Decomposition | 图压缩 / GNN 训练效率 | + +## 三、共通点(核心结论) + +1. **"一篇理论 + 一篇工业"的双主线,正是整个 program 的缩影。** + Best Paper 是有近似保证的原理性 IR 工作,Runner-Up 是快手验证的工业系 + 统。WSDM 的口味不是二选一,而是两条腿都要硬。 + +2. **质疑"平均指标",关心最差情况。** Best Paper 的整个立论就是"社区优化 + 了二十年平均值,小众意图在静默失败"。这种 **审视既有共识/评测方式** + 的角度是该届最受奖励的姿态(LLM 判官可靠性、LLM 生成内容偏置这些自反 + 性主题同理)。 + +3. **简单方法 + 可证明保证,胜过复杂堆料。** VRisker 只是一个贪心重排器, + 但带近似保证;获奖靠的是问题定义的新颖和理论的干净,不是模型的大。 + +4. **真实部署与 A/B 证据是硬通货。** 快手(两篇)、阿里(7B 大用户模型)、 + Spotify(播客冷启动)都带线上数据。纯离线 benchmark 的工作在这届明显 + 弱势。 + +5. **分布偏移 / 时间维度是共同的敌人。** 大促偏移(Runner-Up)、冷启动 + (约 8 篇)、时间上的知识复用——"世界会变,模型怎么办"是贯穿获奖和热点 + 的底层问题。 + +6. **自反性主题崛起:一边用 LLM,一边审计 LLM。** LLM 生成文本污染检索 + 语料怎么办?LLM 相关性判官能不能替代人?这些"用 AI 研究 AI 带来的问 + 题"是该届新出现的成规模主题,且 keynotes(个性化是否只会强化习惯、 + 情绪操纵)也在同一方向上敲警钟。 + +一句话版本:**WSDM 2026 奖励的是"用干净的理论工具,去戳一个大家习以为常 +的假设,并且最好带真实系统的证据"。** + +## 四、为什么 swarm 生成的 idea 长那个样子 + +评委面板是拿着上面这份报告给 206 个候选打分的,所以最终 top 20 几乎全是 +"审计/复核/戳假设"式的标题——这正是该届 venue 的口味,但标题确实不说人话。 +翻译几个高分的: + +- **swarm-01 "Structure or Semantics?"**:Semantic ID 让生成式推荐变好, + 到底是因为它编码了语义,还是只是给了模型更好用的结构先验?拆开验证。 + (对应共通点 2 + 该届最热的 Semantic ID 主题) +- **swarm-02 "Is Source Bias Mismeasured?"**:大家说神经检索器偏爱 LLM + 生成文本,但这些 benchmark 的标签本身是怎么迁移的?审计测量方法。 + (对应共通点 6) +- **swarm-05 "Risk-Sensitive Diversification Without an Oracle"**:Best + Paper 的 VRisk 假设意图分布已知,真实系统里意图是估计出来的——估计误差 + 会不会把 worst-case 保证吃掉?(直接接着 Best Paper 的开放问题做) + +如果你想要更"正向建方法"而不是"审计别人"的 idea,可以调整生成器的 persona +配比重跑一轮 swarm,或者在报告的 gaps(个性化突破信息茧房、System-1/2 统 +一助手、情绪动态建模)里挑方向定向生成。 diff --git a/docs/notes/zhizhou/WSDM2026_TOPICS_VS_MY_STACK.md b/docs/notes/zhizhou/WSDM2026_TOPICS_VS_MY_STACK.md new file mode 100644 index 00000000..b8b8d41f --- /dev/null +++ b/docs/notes/zhizhou/WSDM2026_TOPICS_VS_MY_STACK.md @@ -0,0 +1,185 @@ +# WSDM 2026 火爆 Topic × 我的技术栈对照表 + +> 每个 topic 三段:**火爆证据**(该届实际发生了什么)、**我已有的** +> (哪些论文/技能直接对得上)、**要新学的**(写出这篇 paper 还缺什么)。 +> 末尾有推荐优先级。studio 里的 `fit-XX` 卡片编号标在各 topic 后面。 + +--- + +## Topic 1 · LLM 判官与 LLM 生成内容冲击 IR 评测(自反性主题) +对应卡片:fit-01 / fit-14 / fit-20 + +**火爆证据**:该届新出现的成规模主题。TRUE 框架(LLM 做相关性标注的 +可复现性)、threshold priming 效应、"LLM 生成文本对词法检索器无偏、 +对神经检索器有偏"等多篇;keynote 也在敲 LLM 污染评测生态的警钟。 + +**我已有的** +- "No Hidden Prompts! 改排版就能骗 AI 审稿人"——攻击 LLM 判官的完整 + 方法论,换个靶子(IR 相关性判官)几乎原样能用。 +- ICML25 desk-rejection 公平性分析——学术评审生态的数学建模经验。 +- LLM 文化偏差审计(urban perception 两篇)——大规模审计实验的操作经验。 + +**要新学的** +- IR 评测传统:TREC / Cranfield 范式、qrels 是怎么造出来的、 + 评测者间一致性统计(Cohen's kappa 一类)。约 1-2 周文献量。 +- 数据污染检测:n-gram 重叠、成员推断(membership inference)。 +- (做防御篇才需要)鲁棒统计聚合:trimmed mean / median-of-means + 在排序聚合上的版本、breakdown point 理论。 + +**判断**:你所有选项里不对称优势最大、上手最快的 topic。域知识薄、 +方法论你已经发过 paper。 + +--- + +## Topic 2 · 扩散模型做推荐(该届最大建模浪潮) +对应卡片:fit-02 / fit-05 / fit-07 / fit-12 / fit-19 + +**火爆证据**:≥7 篇 accepted full papers,覆盖序列推荐、下一篮预测、 +冷启动、知识感知推荐——accepted list 上最显眼的单一建模趋势。 + +**我已有的** +- 扩散/流的方法工具箱:high-order matching、one-step shortcut 蒸馏、 + NRFlow 噪声鲁棒、force matching、HOFAR。 +- 扩散理论:GMM 视角的 smoothness 分析(ICCV25)。 +- 条件控制:TokenCompose token 级监督、OmniControlNet 双阶段条件。 +- 这是你方法+理论双主场,迁移只是换数据域。 + +**要新学的** +- 序列推荐的标准实验体系:SASRec / BERT4Rec 基线,Amazon / + MovieLens / KuaiRand 数据集,leave-one-out 评测协议, + NDCG@K / Recall@K。约 1-2 周可上手。 +- 隐式反馈的坑:负采样策略、位置偏置、曝光偏置(社区有一套约定俗成 + 的争议和陷阱,踩错评测协议会被拒)。 +- 离散空间怎么扩散:item 是离散的,社区有 embedding 空间扩散 vs + 离散扩散两条路线,要读透已有 7 篇的选择。 + +**判断**:性价比第二高。浪最大(审稿人多、关注度高),你带着别人 +没有的蒸馏/鲁棒/理论工具进场。 + +--- + +## Topic 3 · 生成式推荐 / Semantic ID / Scaling Law(工业集群) +对应卡片:fit-03 / fit-04 / fit-09 / fit-15 + +**火爆证据**:阿里 7B 大用户模型(scaling law + 线上 A/B)、快手 +OneLoc(geo 生成推荐,21% GMV)、MMQ(多模态量化 tokenization)、 +CAT-ID² 等一串工业 paper。 + +**我已有的** +- AR/VAR/FlowAR 的表达力与细粒度复杂度分析(两篇)——直接对准 + "semantic ID 自回归解码"这个新架构做理论。 +- looped MLP 可编程性——做"模型规模必要性"下界。 +- HSR 稀疏注意力、近线性梯度近似——长序列用户模型的效率切口。 + +**要新学的** +- 生成式检索文献线:DSI → NCI → TIGER → MMQ 的演进和各自的坑。 +- Semantic ID 怎么造:RQ-VAE / 残差量化 / 多模态量化。 +- 工业推荐架构常识:召回-排序两段式、embedding 表、终身行为序列 + 建模(SIM/TWIN)。不需要真实工业数据也能做理论+公开数据验证, + 但叙事要懂行。 + +**判断**:理论切口是你的护城河(这个社区缺会证下界的人),但要花 +2-3 周啃工业文献才能讲对话。 + +--- + +## Topic 4 · LLM Agent + 工具使用 + RL +对应卡片:fit-06 / fit-10 / fit-17 + +**火爆证据**:TableMind(SFT+RL 表格推理 agent)、TOOL-CURE(课程 +RL 选工具)、CoDA(层次 RL agent)、LLM agent 刷分攻击推荐系统; +Industry Day keynote 全在讲 agentic。 + +**我已有的** +- RLVR 理论与实践:off-principals 分析(43 引用)、ISO 优化栈。 +- 多智能体:MEMO 记忆增强多轮博弈。 +- RL 训练的直觉和踩坑经验是现成的。 + +**要新学的** +- Agentic search/RAG 训练管线:Search-R1 一类的环境搭建、 + rollout 基建(这块工程量不小)。 +- 工具调用的数据构造与评测基准(HotpotQA、多跳 QA、工具链任务)。 +- 推荐系统安全文献(若走刷分攻防线:shilling attack 的经典设定)。 + +**判断**:能力对口,但工程基建成本是四个高优 topic 里最重的, +适合愿意搭环境的时候做。 + +--- + +## Topic 5 · 受限图学习:压缩 / 遗忘 / 对抗鲁棒 +对应卡片:fit-08 / fit-18 + +**火爆证据**:GCTD(张量分解图压缩)、离散域多面压缩、GNN 遗忘 +反演攻击、Forget-and-Explain 遗忘验证——一整簇。 + +**我已有的** +- DP-NTK(WACV25)——接"可认证遗忘"正合适(遗忘 ≈ 隐私的孪生问题)。 +- DPBloomFilter——隐私数据结构。 +- rank-1 矩阵感知样本复杂度——接"图压缩能压到多小"的下界问题。 + +**要新学的** +- **GNN 基础全套**:GCN / GAT / LightGCN、消息传递框架、图上的 + 评测协议。你的发表列表里没有图学习工作,这是真正要补的课 + (约 3-4 周)。 +- 图压缩方法线和遗忘的定义谱系(exact / approximate / certified)。 + +**判断**:理论接口漂亮,但 GNN 是从零学。适合作为第二梯队。 + +--- + +## Topic 6 · 可信 LLM:RAG 鲁棒、事实核查、引用归因 + +**火爆证据**:KnowFC / DagFC(知识冲突下的事实核查)、C²-Cite +(引用归因)、检索增强生成的抽取-生成对齐。 + +**我已有的** +- 审计方法论和理论功底可以泛化,但**没有直接对口的论文**——这是 + 六个热点里你接口最薄的。 + +**要新学的** +- RAG 全栈(检索器 + 生成器 + 知识冲突处理)、FEVER 线的事实核查 + 数据集、归因评测协议。基本等于进一个新领域。 + +**判断**:除非有特别想做的角度,否则不推荐从这里进。 + +--- + +## Topic 7 · 冷启动与工业转化建模(CVR) + +**火爆证据**:约 8 篇冷启动(bundle / app / podcast / 序列), +Best Paper Runner-Up(TemporalExpertNet,大促 CVR)也在这条线, +Spotify 案例研究——工业气息最重的主题。 + +**我已有的** +- RichSpace 的 embedding 插值思路可做冷启动数据增广;理论功底可 + 做 delayed feedback 建模。接口偏弱。 + +**要新学的** +- CTR/CVR 建模全套:特征工程、多任务学习、延迟转化、在线学习; + 外加大促业务理解。没有工业数据和线上 A/B,这个主题很难写出该届 + 获奖那种说服力。 + +**判断**:不推荐。你的比较优势在理论和生成模型,不在工业经验。 + +--- + +## Keynote 开放方向(可做故事加成,不建议单独立项) + +- **Worst-case 而非平均**(Best Paper 的精神):任何 topic 里加一层 + "最差情况分析"都会讨喜——你的理论功底正好干这个(fit-13/16 用了)。 +- 信息茧房突破(fit-19)、System-1/2 统一助手、情绪动态——故事好听, + 单独做风险高,适合当某个 idea 的动机段。 + +--- + +## 推荐优先级(综合"你的接口厚度 × 浪的大小 × 新学成本") + +| 优先级 | Topic | 接口厚度 | 新学成本 | 一句话 | +| --- | --- | --- | --- | --- | +| 1 | LLM 判官 / 评测审计 | 极厚(原样迁移) | 低(1-2 周) | 不对称优势最大 | +| 2 | 扩散推荐 | 厚(方法+理论) | 低(1-2 周) | 最大的浪,带工具进场 | +| 3 | Semantic ID / 生成式推荐 | 厚(理论切口) | 中(2-3 周) | 缺理论的社区,你是稀缺供给 | +| 4 | LLM Agent + RL | 中 | 高(基建重) | 对口但费工程 | +| 5 | 图压缩 / 遗忘 | 中(DP+复杂度) | 高(GNN 从零) | 第二梯队 | +| 6 | 可信 RAG | 薄 | 很高 | 不推荐进场 | +| 7 | 冷启动 / CVR | 薄 | 很高(要工业数据) | 不推荐 | diff --git a/docs/notes/zhizhou/WSDM2027_PERSONAL_IDEAS.md b/docs/notes/zhizhou/WSDM2027_PERSONAL_IDEAS.md new file mode 100644 index 00000000..8f0baaad --- /dev/null +++ b/docs/notes/zhizhou/WSDM2027_PERSONAL_IDEAS.md @@ -0,0 +1,228 @@ +# WSDM 2027 个人定制 Idea 池(20 个) + +> 生成逻辑:你的发表记录(`my-google-scholar.pdf`)× WSDM 2026 热点 +> (`WSDM2026_BEST_ORAL_SUMMARY.md`)。每个 idea 标注了三件事: +> **你的接口**(你哪篇工作/哪项技能接得上)、**要新学的**(这个 idea +> 里对你是新东西的部分)、**WSDM 对接点**。 +> 排序按"桥的牢固程度"(fit 分)降序,和 studio 里的卡片一一对应 +> (`fit-01` ~ `fit-20`)。 +> +> 你的能力圈速写:① 扩散/流生成模型的方法与理论(TokenCompose、 +> smoothness/GMM、high-order matching、NRFlow);② AR/VAR/FlowAR 的 +> 表达力与细粒度复杂度(VAR limits、FlowAR、looped MLP、HSR 稀疏注意 +> 力、近线性梯度);③ 差分隐私(DP-NTK、DPBloomFilter);④ RLVR 与 +> 多智能体(off-principals、ISO、MEMO);⑤ 评审生态审计(ICML25 +> desk-rejection 公平性、"No Hidden Prompts" 攻击 AI 评审);⑥ LLM +> 城市/文化偏差(UrbanAlign、culturally uneven perception)。 + +--- + +## 直接迁移带(你的方法 → 推荐/检索的新战场) + +### fit-01 · Presentation-Only Gaming of LLM Relevance Judges(0.95) +- **人话**:你证明过"只改排版不改内容就能骗过 AI 审稿人"。IR 社区正在 + 大规模用 LLM 当相关性判官(标注 qrels)。同样的攻击在这里成立吗—— + 一篇网页只靠改格式、加小标题、换措辞,能不能骗 LLM 判官给出更高相关 + 性?如果能,这就是"针对 LLM 判官的 SEO",整个评测生态都有问题。 +- **你的接口**:arXiv 2606.13044 的攻击方法论几乎原样可用。 +- **要新学的**:IR 评测体系(TREC qrels、Cranfield 范式)、WSDM26 的 + TRUE 框架和 priming-effect 论文。 +- **WSDM 对接点**:热点 E(LLM 判官重塑 IR 评测),该届自反性主题的 + 正中心。 + +### fit-02 · One-Step Diffusion Recommenders via High-Order Shortcut Distillation(0.92) +- **人话**:WSDM26 最大的建模潮流是扩散推荐(≥7 篇),但都要几十步采 + 样,线上根本部署不起。你做过 one-step shortcut diffusion 的高阶匹配 + 蒸馏——把它搬过来,把扩散推荐器蒸成一步出结果,延迟直接对齐工业上线 + 标准。 +- **你的接口**:High-order matching for one-step shortcut diffusion + (2502.00688)、HOFAR。 +- **要新学的**:序列推荐的标准 setup(SASRec/BERT4Rec 基线、 + Amazon/MovieLens 协议)、线上延迟预算怎么算。 +- **WSDM 对接点**:热点 A(扩散推荐)+ 工业口味(部署可行性)。 + +### fit-03 · Computational Limits of Generative Retrieval over Semantic IDs(0.90) +- **人话**:生成式检索/推荐把物品编成 semantic ID 序列,然后自回归解 + 码。你对 VAR/FlowAR 做过的"表达力 + 细粒度复杂度"分析,在这个新架构 + 上没人做过:什么条件下生成式检索能被证明匹配稠密检索?beam search + 在 ID 树上的复杂度下界是什么? +- **你的接口**:VAR computational limits (2501.04377)、FlowAR + expressivity (AISTATS26)。 +- **要新学的**:生成式检索这条线(DSI、NCI、TIGER、MMQ)。 +- **WSDM 对接点**:热点 B(semantic ID / 生成式推荐)。 + +### fit-04 · Provable Sparse Attention for Lifelong User-Behavior Sequences(0.88) +- **人话**:工业推荐要在十万级的用户终身行为序列上做注意力,现在的做 + 法(先检索再注意力,如 SIM/TWIN)没有理论保证、可能漏掉关键历史。 + 你的 HSR 稀疏注意力加速自带"可证明不漏"的结构——搬到终身序列建模, + 给出第一个带 recall 保证的长序列用户模型。 +- **你的接口**:HSR-enhanced sparse attention(CPAL25)。 +- **要新学的**:终身序列建模的工业方案与数据集。 +- **WSDM 对接点**:热点 B(大用户模型)+ 工业口味。 + +### fit-05 · Noise-Robust Diffusion Recommendation for Implicit Feedback(0.86) +- **人话**:推荐的训练信号是隐式反馈(点击),里面全是噪声:误点、位 + 置偏置、从众。你做过噪声鲁棒的生成建模(NRFlow 的高阶机制),把"标 + 签噪声下的扩散训练"搬到交互噪声下的扩散推荐,直接回答"扩散推荐器对 + 脏数据到底稳不稳"。 +- **你的接口**:NRFlow(UAI25)、force matching(CIKM25)。 +- **要新学的**:隐式反馈去偏那套文献(position bias、exposure bias)。 +- **WSDM 对接点**:热点 A + 工业数据现实。 + +### fit-06 · Do RL-Trained Search Agents Learn Off the Principals?(0.85) +- **人话**:现在流行用 RL 训练会搜索的 LLM agent(Search-R1 一类)。 + 你的 RLVR 理论说:RL 更新其实避开了主参数方向、走的是"偏离主成分" + 的路径。把这个分析工具对准搜索 agent:它们学到的是"怎么搜"的通用能 + 力,还是过拟合了训练用的那个检索器?换个检索器还行不行? +- **你的接口**:RLVR off-principals (2511.08567)、ISO (2607.19331)。 +- **要新学的**:agentic search/RAG 的训练管线和评测。 +- **WSDM 对接点**:热点 C(RL 训练的 LLM agent)。 + +### fit-07 · A Multimodality Criterion for When Diffusion Beats AR in Recommendation(0.84) +- **人话**:什么时候值得用扩散做推荐、什么时候自回归就够了?你的 + ICCV25 论文用高斯混合视角刻画了扩散模型的平滑性。用户偏好分布天然 + 是多峰混合(一个人同时喜欢好几类东西)——把你的分析搬过来,给出一个 + 可检验的判据:后验多峰性强到什么程度,扩散才开始赢。 +- **你的接口**:Smoothness of diffusion via Gaussian mixture(ICCV25)。 +- **要新学的**:推荐里的多兴趣建模文献(multi-interest retrieval)。 +- **WSDM 对接点**:热点 A 的"何时该用"元问题,评委最爱的戳假设角度。 + +### fit-08 · Certified Machine Unlearning for Recommenders via NTK Regression(0.82) +- **人话**:用户行使"被遗忘权"后,推荐模型真的忘了他吗?WSDM26 有一 + 簇图遗忘/遗忘验证的 paper,但基本是启发式。你的 DP-NTK 工作正好提供 + 了带证书的工具:在 NTK 回归视角下做可认证的推荐模型遗忘,给出"忘没 + 忘"的数学保证而不是经验检查。 +- **你的接口**:DP mechanisms in NTK regression(WACV25)。 +- **要新学的**:unlearning 的定义谱系和图遗忘验证(该届的 + Forget-and-Explain 等)。 +- **WSDM 对接点**:热点 F(图遗忘/可信)。 + +--- + +## 半迁移带(你带一半工具,另一半要新学) + +### fit-09 · Expressivity Lower Bounds: What User-Model Scale Is Actually Necessary?(0.80) +- **人话**:阿里的 7B 大用户模型宣称推荐有 scaling law。但没人问下界: + 协同过滤这个任务本身需要多大的模型才能表达?你的 looped-MLP"可编程 + 计算机"和表达力分析可以构造:什么规模以下必然表达不了某类用户-物品 + 结构。给 scaling 狂热泼一盆有定理的冷水。 +- **你的接口**:Looped ReLU MLPs(AISTATS25)、复杂度分析全家桶。 +- **要新学的**:推荐 scaling law 的实证结果与协同过滤的谱结构。 +- **WSDM 对接点**:热点 B(scaling law),戳假设角度。 + +### fit-10 · Multi-Agent LLM Shilling: Coordinated Attacks and Provable Detection(0.78) +- **人话**:WSDM26 已有"LLM agent 刷分攻击推荐系统"的 paper,但都是单 + agent。你做过多智能体记忆协作(MEMO):一群带记忆、会协调的 LLM + agent 能把刷分攻击做到多隐蔽?反过来,协调性本身是不是可检测的指纹? + 攻防两端都做。 +- **你的接口**:MEMO (2603.09022)、多智能体博弈经验。 +- **要新学的**:推荐系统安全/托攻击(shilling)的经典文献。 +- **WSDM 对接点**:热点 C(agent)× 可信推荐,该届已有先例文章。 +- **注意**:安全攻防题,写作要走"红队为了防御"的框架。 + +### fit-11 · Differentially Private Sketches for Streaming Recommendation Infrastructure(0.76) +- **人话**:工业推荐的底层全是流式频率结构:频控(frequency capping)、 + 去重、热门统计,而这些 sketch 会泄露用户行为。你做过 DPBloomFilter, + 往前推一步:一整套带 DP 保证的流式 sketch(Bloom/CountMin/HLL)用于 + 推荐基础设施,量化"隐私预算 vs 推荐质量"的真实代价。 +- **你的接口**:DPBloomFilter (2502.00693)。 +- **要新学的**:工业推荐的流式架构(谁在什么环节用什么 sketch)。 +- **WSDM 对接点**:工业口味 + 可信;WSDM 一直收系统向 paper。 + +### fit-12 · Controllable Diffusion Recommendation with Token-Level Supervision(0.75) +- **人话**:TokenCompose 用 token 级监督让文生图听话;ControlNet 加条 + 件控制。推荐这边的对应问题是"可控推荐":运营要保量、多样性要保底、 + 类目要平衡。把条件控制机制搬进扩散推荐器,让一个模型在推理时接受可 + 调的控制信号,而不是训练 N 个模型。 +- **你的接口**:TokenCompose(CVPR24)、OmniControlNet(CVPR24)。 +- **要新学的**:可控推荐/约束重排的业务设定。 +- **WSDM 对接点**:热点 A + 工业可用性。 + +### fit-13 · Exposure Fairness Under Submission Constraints: A Mechanism-Design View of Ranking(0.74) +- **人话**:你在 ICML25 用数学分析过"投稿限额政策对谁不公平"。同一套 + 机制设计+公平性数学,换个对象:平台的曝光分配政策(限流、频控、创作 + 者配额)对小创作者是否系统性不公平?给出可证明的机制设计改进。这也 + 接上了 Best Paper 的 worst-case 精神——平均曝光在涨,尾部创作者在死。 +- **你的接口**:Desk-rejection fairness(ICML25)的分析框架。 +- **要新学的**:创作者经济/曝光公平的文献(two-sided marketplace)。 +- **WSDM 对接点**:Best Paper 的风险敏感精神 × web 平台机制。 + +### fit-14 · Manipulation-Resistant LLM Judge Panels with Provable Breakdown Points(0.72) +- **人话**:fit-01 证明单个 LLM 判官可被排版攻击。防御端:怎么组一个 + 判官面板(多模型+聚合规则),使得"被操纵的判官不超过 k 个时,最终判 + 决可证明不变"?借鉴鲁棒统计的 breakdown point,把你攻击论文的对抗视 + 角转成防御设计。 +- **你的接口**:"No Hidden Prompts" 的攻击模型 + 理论功底。 +- **要新学的**:鲁棒统计聚合(trimmed mean、median-of-means 在排序上 + 的版本)。 +- **WSDM 对接点**:热点 E,攻防成对投稿的防御篇。 + +### fit-15 · Almost-Linear-Time Training for Billion-Parameter User Models(0.70) +- **人话**:推荐大模型(7B 用户模型)的训练成本是工业最痛的账单。你证 + 明过多层 transformer 梯度可以近线性时间近似。把这个理论结果落到用户 + 模型训练上做系统实现:什么近似精度下 A/B 指标不掉?第一个把"近似梯 + 度理论"带进推荐训练的工作。 +- **你的接口**:Almost-linear gradient (2408.13233)、async SGD。 +- **要新学的**:推荐训练 infra(embedding 表、流式训练)的工程现实。 +- **WSDM 对接点**:热点 B(scaling)× 工业效率。 + +--- + +## 探索带(你只带入场券,主体是新领域——想学新东西选这几个) + +### fit-16 · Worst-Case Regional Fairness Auditing of Geo-Aware Recommenders(0.68) +- **人话**:快手 OneLoc 用地理感知生成推荐拿了 21% GMV,但没人问:小 + 城市/少数族裔社区拿到的推荐质量是不是系统性更差?你有"LLM 城市感知 + 的文化不均"审计经验 + Best Paper 的 VRisk 最差情况度量——合起来做地 + 理维度的 worst-case 公平审计。 +- **你的接口**:Culturally uneven urban perception (2604.20048)、 + UrbanAlign。 +- **要新学的**:本地生活推荐的业务与数据。 +- **WSDM 对接点**:Best Paper 的 worst-case 精神 × 热点 B 的地理生成 + 推荐 × keynote 的社会关切。 + +### fit-17 · RLVR for Tool-Use Retrieval Agents: Verifiable Rewards from Retrieval Outcomes(0.66) +- **人话**:RLVR 火是因为奖励可验证(对/错)。检索恰好天然可验证:文 + 档里有没有答案、引用对不对。把你的 ISO 优化栈的经验搬到"检索工具使 + 用 agent"的 RL 训练上,设计一套以检索结果为可验证奖励的训练配方,对 + 比 TOOL-CURE 那类课程学习。 +- **你的接口**:ISO RLVR stack、RLVR 训练直觉。 +- **要新学的**:工具调用 agent 的数据构造与评测(这块对你基本全新)。 +- **WSDM 对接点**:热点 C 正中心。 + +### fit-18 · Sample-Complexity Limits of Graph Condensation for Recommendation(0.64) +- **人话**:图压缩(把大图缩成小图训练)在 WSDM26 是一簇热点,但全是 + "怎么压",没人回答"最多能压到多小"。你的 rank-1 矩阵感知样本复杂度 + 技术正好是这个问题的工具:保住协同过滤谱结构所需的最小交互数是多少? + 给这个热门方向立一块理论界碑。 +- **你的接口**:Rank-1 matrix sensing 样本复杂度。 +- **要新学的**:图压缩方法这条线(GCTD、离散域压缩)。 +- **WSDM 对接点**:热点 F,为方法潮流补理论下界(评委最吃这套)。 + +### fit-19 · Serendipity by Diffusion: Escaping Filter Bubbles with Controlled Noise(0.62) +- **人话**:Caverlee 的 keynote 问"个性化能不能带来真正的新发现而不是 + 强化旧习惯"。扩散模型天然有一个被忽视的旋钮:注入噪声的幅度控制探 + 索半径。做一个"意外但连贯"的推荐生成器——用噪声调度控制新颖度,用 + worst-case 意图覆盖评估(接 VRisk),回答信息茧房这个 keynote 级问题。 +- **你的接口**:扩散模型的噪声机制理解。 +- **要新学的**:serendipity/diversity 的评测传统(这块很成熟,坑也多)。 +- **WSDM 对接点**:keynote gap × 热点 A,故事性最强的一个。 + +### fit-20 · Knowledge-Cutoff Contamination in LLM Relevance Judgments(0.60) +- **人话**:LLM 判官的训练语料可能见过评测集的文档和查询——它给的"相 + 关性判断"到底是判断还是背诵?设计截断日期前后的对照实验,量化污染对 + qrels 质量的影响。这是 swarm-10 的题,但从你的"评审生态审计"视角切 + 入你完全能驾驭,且和 fit-01 共享实验基建。 +- **你的接口**:评测审计的方法论嗅觉(ICML25 + 攻击 AI 评审)。 +- **要新学的**:数据污染检测技术(n-gram 重叠、成员推断)。 +- **WSDM 对接点**:热点 E,和 fit-01/fit-14 构成一个投稿集群。 + +--- + +## 怎么用 + +- 20 张卡已写入 wsdm2027 studio(`fit-01` ~ `fit-20`,分数即上面的 + fit 值),原 swarm 池备份在 `.RUD/wsdm2027/swarm-pool.json`。 +- 建议的组团方式:**评测审计团**(fit-01/14/20,共享基建,你最有不对 + 称优势)、**扩散推荐团**(fit-02/05/07/12/19,蹭最大浪)、**理论界 + 碑团**(fit-03/09/18,你最难被抄袭的护城河)。 diff --git a/docs/notes/zhizhou/my-google-scholar.pdf b/docs/notes/zhizhou/my-google-scholar.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4811e61048f779516da49d633e6e506cf3ba0fbf GIT binary patch literal 260603 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

sGyGC(3;^>;n^|Q(+eh^7 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

wc=MUI)Bq4-u^F|h-^JeNg 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 bool: "page_limit": 9, "invitation": "colmweb.org/COLM/{year}/Conference/-/Submission", }, + { + "id": "wacv", + "label": "WACV", + "template": "wacv", + "aliases": [ + "WACV", + "IEEE/CVF Winter Conference on Applications of Computer Vision", + ], + "page_limit": 8, + # WACV uses CMT rather than OpenReview; keep this empty so Loom does + # not fabricate an invitation id. + "invitation": "", + }, ) VENUE_IDS = frozenset(v["id"] for v in VENUES) @@ -940,6 +953,7 @@ def review_note_path(project_root: Path, slug: str, n: int) -> Path: TOKEN_TITLE = "@@TITLE@@" TOKEN_RUNNING_TITLE = "@@RUNNING_TITLE@@" TOKEN_KEYWORDS = "@@KEYWORDS@@" +TOKEN_WACV_TRACK = "@@WACV_TRACK@@" def templates_paper_dir() -> Path: @@ -1019,8 +1033,19 @@ def seed_paper_skeleton( return False, f"failed to seed skeleton: {exc}" title = str((idea or {}).get("title") or "").strip() or "Untitled AR Submission" + # Personalized Studio cards are bilingual ("中文 — English"). The UI keeps + # both halves, but pdfLaTeX venue templates cannot typeset CJK safely + # without adding a different font stack. Seed the manuscript with the + # English publication title while preserving the bilingual title in state. + if " — " in title: + english_title = title.rsplit(" — ", 1)[-1].strip() + if english_title: + title = english_title keywords = str((idea or {}).get("metric") or "").strip() or "machine learning" running = title if len(title) <= 60 else title[:57].rstrip() + "..." + wacv_track = str((idea or {}).get("wacv_track") or "algorithms").strip().lower() + if wacv_track not in {"algorithms", "applications", "datasets"}: + wacv_track = "algorithms" main = dest / "main.tex" try: text = main.read_text(encoding="utf-8") @@ -1028,6 +1053,7 @@ def seed_paper_skeleton( text.replace(TOKEN_TITLE, _tex_escape(title)) .replace(TOKEN_RUNNING_TITLE, _tex_escape(running)) .replace(TOKEN_KEYWORDS, _tex_escape(keywords)) + .replace(TOKEN_WACV_TRACK, wacv_track) ) main.write_text(text, encoding="utf-8") except OSError as exc: diff --git a/loom/skills/ar/GPU-RESOURCES.md b/loom/skills/ar/GPU-RESOURCES.md index a17035fe..22a898e1 100644 --- a/loom/skills/ar/GPU-RESOURCES.md +++ b/loom/skills/ar/GPU-RESOURCES.md @@ -1,6 +1,6 @@ -# Compute resources — run every experiment on the GPU cluster +# Compute resources — run every experiment on a GPU compute node -The machine your pane runs on is a **slurm login node with NO GPU** and only 32 +The machine your pane runs on is a **login node with NO GPU** and only ~32 oversubscribed CPU cores. Model inference on it takes minutes per item where an H100 takes seconds. Running experiments locally is the single biggest cause of slow author rounds — a round that should take under an hour stretches to 8–19 @@ -8,58 +8,76 @@ hours on local CPU. **Rule: never run model inference or training on the login node.** Small aggregation/plotting scripts are fine locally; anything that loads model -weights goes to the cluster. +weights goes to a GPU compute node. -## Slurm (preferred) +## Do NOT use Slurm on this cluster -The `batch` partition has nodes with **8x NVIDIA H100 80GB** each (176 CPU -cores, ~1TB RAM per node). Queue wait is typically minutes. +Slurm here is unreliable: the queue backs up for hours and chained +`sbatch --dependency` jobs frequently wedge into `DependencyNeverSatisfied` and +never run, which hangs your round. **Do not use `sbatch`, `srun`, or any Slurm +command.** Ignore Slurm entirely and run directly on a compute node over SSH. -Interactive / one-off: +## Find a free GPU, then SSH to the node and run there + +A background scout refreshes a free-GPU inventory every ~60 seconds: ``` -srun --partition=batch --gres=gpu:1 --cpus-per-task=16 --mem=100G \ - --time=04:00:00 --job-name=- +/data/shared/zhizhousha/gpu-scout/free_gpus.txt # human/agent-facing table +/data/shared/zhizhousha/gpu-scout/free_gpus.json # same data, machine-readable ``` -Long or parallel lanes — write a script and submit with `sbatch` (same flags, -plus `--output=logs/%x-%j.out`), one job per lane; check with -`squeue -u $USER`. Free-GPU overview: `sinfo -p batch -O NodeList,Gres,GresUsed`. +"Free" means `nvidia-smi` memory.used < 2000 MiB on that GPU. Each node has 8× +H100 80GB (176 CPU cores, ~1 TB RAM). Workflow every time you need a GPU: + +1. **Read the inventory** (`cat /data/shared/zhizhousha/gpu-scout/free_gpus.txt`) + and pick a `node` + `gpu` index. For N parallel lanes, pick N different + `node:gpu` pairs. +2. **Re-verify right before launch** — the inventory can be up to a minute + stale and GPUs are shared, so confirm the exact GPU is still idle: + + ``` + ssh "nvidia-smi --query-gpu=index,memory.used --format=csv,noheader,nounits | awk -F', ' '\$1=={print \$2}'" + ``` + + If that prints a number ≥ ~2000, pick another `node:gpu` from the inventory. +3. **Launch on the node**, pinned to that GPU, detached, logging into your + worktree (which is on shared storage the node can see): -What carries over transparently: the shared filesystem. Your `work/` tree, the -HuggingFace cache (`research-factory/.cache/huggingface`), and your `.venv`s -are all on shared storage and visible from compute nodes — activate the same -venv inside the job. + ``` + ssh 'cd ; \ + CUDA_VISIBLE_DEVICES= setsid nohup ./.venv/bin/python train.py \ + > runs/.log 2>&1 & echo "PID $! on gpu "' + ``` +4. **Poll from your pane** by tailing the logfile (shared FS): `tail -n 40 + runs/.log`. Do **not** open a blocking wait; sleep-poll the log/output + files and move on to other work between checks. +5. **Clean up** when a lane finishes or you abandon it: `ssh "pkill -f + "` so you free the GPU for the next lane + and for other people. + +What carries over transparently: the **shared filesystem**. Your `work/` tree, +the HuggingFace cache (`research-factory/.cache/huggingface`), and your `.venv`s +are all on shared storage and visible from every compute node — activate the +same venv inside the SSH command. ## Migration guidance - **transformers-based runners**: the same script works on a GPU node with - `device_map="auto"` (or `.to("cuda")`). This is usually a one-line change. + `device_map="auto"` (or `.to("cuda")`). Usually a one-line change. - **llama.cpp / GGUF CPU servers**: on a GPU node, prefer serving the original - HF checkpoint with transformers or vLLM inside the job; GGUF quantizations - exist for CPU. If you must keep llama.cpp, use a CUDA build with `-ngl 999`. -- **Parity first**: before committing to GPU results, rerun one small batch - (greedy / temperature 0) and confirm it matches your CPU outputs; note any - numeric drift in the round summary rather than silently mixing backends. -- **Mid-experiment**: let a batch that is nearly done finish where it started; - submit all remaining chunks to the GPU. Never mix backends within one - reported table without saying so. -- **Record the recipe**: once a slurm invocation works for your codebase, write - it into your notes (README or scratch notes) so every later round reuses it - instead of rediscovering flags. - -## Defensive preflight in every GPU job - -Occasionally a leaked process squats a GPU outside slurm's accounting, and jobs -scheduled onto that GPU OOM at model load. Start every sbatch script with a -guard: query the assigned GPU's used memory (`nvidia-smi ---query-gpu=memory.used --format=csv,noheader`), and if it is already above -~20 GB, `scontrol requeue $SLURM_JOB_ID` and exit instead of loading the model. -This turns a night of OOM-failed jobs into a few cheap requeues. - -## If slurm is full - -`tscheduler` (`/data/shared/zhizhousha/workspace/loom-project/tscheduler`) can -locate free GPUs on Together's Kubernetes clusters: `scripts/radar.sh snapshot` -or `scripts/radar.sh find h100 8`. Slurm is simpler — reach for tscheduler only -when the batch partition has no capacity. + HF checkpoint with transformers or vLLM; if you must keep llama.cpp, use a + CUDA build with `-ngl 999`. +- **Parity first**: before trusting GPU results, rerun one small batch (greedy / + temperature 0) and confirm it matches your CPU outputs; note any numeric drift + in the round summary rather than silently mixing backends. +- **Record the recipe**: once an SSH launch works for your codebase, write the + exact command into your notes (README or scratch notes) so every later round + reuses it. Keep experiments modest and convergent — get real numbers for this + round first, widen the grid in later rounds. + +## Never squat a GPU + +Pin exactly one GPU per process with `CUDA_VISIBLE_DEVICES`, and kill your +process as soon as its lane is done. Do not hold GPUs idle "in reserve". The +inventory is shared with 7 sibling papers and other people — take what you use +and release it. diff --git a/loom/skills/ar/gpu-resource/README.md b/loom/skills/ar/gpu-resource/README.md new file mode 100644 index 00000000..79f105a9 --- /dev/null +++ b/loom/skills/ar/gpu-resource/README.md @@ -0,0 +1,69 @@ +# gpu-resource — free-GPU scout for direct-to-node experiments + +This cluster's Slurm scheduler is unreliable: queues back up for hours and +chained `sbatch --dependency` jobs frequently wedge into +`DependencyNeverSatisfied` and never run, which hangs AR author rounds. So AR +authors **bypass Slurm and run jobs directly on compute nodes over SSH**. The +piece that makes that safe is this scout: it continuously reports which +`node:gpu` pairs are actually idle. + +The agent-facing methodology (what an author does with the inventory) lives in +`../GPU-RESOURCES.md`, which is injected into every author prompt via +`ar_task.gpu_resources_block()`. This folder holds the **operator-side daemon** +that produces the inventory that skill tells authors to read. + +## What `gpu_scout.py` does + +Every `INTERVAL` seconds it: + +1. Lists reachable compute nodes (`sinfo`, skipping down/drain/etc.), or uses + `$GPU_SCOUT_NODES` if set. +2. SSHes each node in parallel and reads real `nvidia-smi` usage — it does **not** + trust Slurm's alloc/idle state, because a Slurm-"alloc" node often still has + idle GPUs. +3. Marks every GPU with `memory.used < THRESHOLD_MIB` (default 2000) as free. +4. Atomically republishes two files: + - `free_gpus.json` — machine-readable inventory + - `free_gpus.txt` — the table authors read (node → free gpu indices) + +## Inventory location (the contract) + +Default output dir: `/data/shared/zhizhousha/gpu-scout/` + +``` +/data/shared/zhizhousha/gpu-scout/free_gpus.txt +/data/shared/zhizhousha/gpu-scout/free_gpus.json +``` + +`../GPU-RESOURCES.md` points authors at exactly this path, so if you change +`GPU_SCOUT_OUT` you must update that skill too. + +## Running it + +```bash +# from the repo root, with the project venv +./.venv/bin/python loom/skills/ar/gpu-resource/gpu_scout.py # loop forever +./.venv/bin/python loom/skills/ar/gpu-resource/gpu_scout.py --once # one sweep +``` + +Run it once as a long-lived background daemon (one per operator/cluster) while +AR papers are training; the 8+ author panes all read the same published files. + +## Configuration (env vars) + +| var | default | meaning | +| --- | --- | --- | +| `GPU_SCOUT_OUT` | `/data/shared/zhizhousha/gpu-scout` | where to publish the inventory | +| `GPU_SCOUT_INTERVAL` | `60` | seconds between sweeps | +| `GPU_SCOUT_THRESHOLD` | `2000` | a GPU is "free" below this many MiB used | +| `GPU_SCOUT_SSH_TIMEOUT` | `12` | per-node SSH connect timeout (s) | +| `GPU_SCOUT_WORKERS` | `24` | parallel SSH probes | +| `GPU_SCOUT_NODES` | _(unset)_ | comma/space node list overriding `sinfo` | + +## Requirements + +- Passwordless SSH (BatchMode) from the login node to the compute nodes. +- `nvidia-smi` on each node; `sinfo` on the login node (only for discovery — + set `GPU_SCOUT_NODES` to skip Slurm entirely). +- The shared filesystem is visible on the compute nodes, so an author writes + outputs into its `work/` tree from the node and tails them from its pane. diff --git a/loom/skills/ar/gpu-resource/gpu_scout.py b/loom/skills/ar/gpu-resource/gpu_scout.py new file mode 100644 index 00000000..b03e7886 --- /dev/null +++ b/loom/skills/ar/gpu-resource/gpu_scout.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python3 +"""Free-GPU scout for the AR compute cluster. + +The cluster's Slurm scheduler is unreliable (queues back up for hours, chained +`sbatch --dependency` jobs wedge into ``DependencyNeverSatisfied`` and never +run). The AR authors therefore bypass Slurm and run jobs directly on compute +nodes over SSH. This scout is what tells them *which* node:gpu pairs are +actually idle: it SSHes every reachable node, reads real ``nvidia-smi`` usage, +and republishes a free-GPU inventory every ``INTERVAL`` seconds. + +Outputs (written atomically): + ``/free_gpus.json`` - machine-readable inventory + ``/free_gpus.txt`` - agent-facing table (this is what authors read) + +A GPU counts as free when its ``memory.used`` is below ``THRESHOLD_MIB``. + +Configuration (env vars, all optional): + GPU_SCOUT_OUT output directory (default /data/shared/zhizhousha/gpu-scout) + GPU_SCOUT_INTERVAL seconds per sweep (default 60) + GPU_SCOUT_THRESHOLD free cutoff MiB (default 2000) + GPU_SCOUT_SSH_TIMEOUT ssh connect secs (default 12) + GPU_SCOUT_WORKERS parallel probes (default 24) + GPU_SCOUT_NODES comma/space list to override sinfo discovery (optional) + +Run: python gpu_scout.py # loop forever + python gpu_scout.py --once # single sweep then exit (handy in tests) + +The agent-facing methodology lives in ``../GPU-RESOURCES.md``; keep the inventory +path here in sync with the path documented there. +""" +from __future__ import annotations + +import json +import os +import subprocess +import sys +import time +from concurrent.futures import ThreadPoolExecutor, as_completed +from datetime import datetime, timezone +from pathlib import Path + +OUT_DIR = Path(os.environ.get("GPU_SCOUT_OUT", "/data/shared/zhizhousha/gpu-scout")) +INTERVAL = int(os.environ.get("GPU_SCOUT_INTERVAL", "60")) +THRESHOLD_MIB = int(os.environ.get("GPU_SCOUT_THRESHOLD", "2000")) +SSH_TIMEOUT = int(os.environ.get("GPU_SCOUT_SSH_TIMEOUT", "12")) +MAX_WORKERS = int(os.environ.get("GPU_SCOUT_WORKERS", "24")) + +# Slurm node states we skip because the box is unreachable/unusable, not because +# it is busy - a busy ("alloc") node can still expose an idle GPU, and the whole +# point of this scout is to find those. +SKIP_STATE_PREFIXES = ("down", "drain", "drng", "fail", "maint", "boot", "unk", "pow") + + +def _json_path() -> Path: + return OUT_DIR / "free_gpus.json" + + +def _txt_path() -> Path: + return OUT_DIR / "free_gpus.txt" + + +def candidate_nodes() -> list[str]: + """Reachable compute nodes, from $GPU_SCOUT_NODES or ``sinfo``.""" + override = os.environ.get("GPU_SCOUT_NODES", "").replace(",", " ").split() + if override: + return sorted(set(override)) + try: + out = subprocess.run( + ["sinfo", "-h", "-N", "-o", "%N|%t"], + capture_output=True, text=True, timeout=20, + ).stdout + except (OSError, subprocess.TimeoutExpired): + return [] + nodes: dict[str, str] = {} + for line in out.splitlines(): + if "|" not in line: + continue + name, state = line.split("|", 1) + name = name.strip() + state = state.strip().lower().rstrip("*~#$+") + if not name: + continue + prev = nodes.get(name) + skip = state.startswith(SKIP_STATE_PREFIXES) + if prev is None or (prev.startswith(SKIP_STATE_PREFIXES) and not skip): + nodes[name] = state + return [n for n, s in nodes.items() if not s.startswith(SKIP_STATE_PREFIXES)] + + +def probe(node: str) -> tuple[str, list[dict] | None]: + """Return (node, GPU dicts) or (node, None) if the node is unreachable.""" + try: + res = subprocess.run( + [ + "ssh", "-o", "BatchMode=yes", "-o", "StrictHostKeyChecking=no", + "-o", f"ConnectTimeout={SSH_TIMEOUT}", node, + "nvidia-smi --query-gpu=index,memory.used,memory.total," + "utilization.gpu --format=csv,noheader,nounits", + ], + capture_output=True, text=True, timeout=SSH_TIMEOUT + 6, + ) + except (OSError, subprocess.TimeoutExpired): + return node, None + if res.returncode != 0: + return node, None + gpus: list[dict] = [] + for line in res.stdout.splitlines(): + parts = [p.strip() for p in line.split(",")] + if len(parts) < 4: + continue + try: + gpus.append({ + "gpu": int(parts[0]), + "mem_used_mib": int(parts[1]), + "mem_total_mib": int(parts[2]), + "util": int(parts[3]), + }) + except ValueError: + continue + return node, gpus + + +def sweep() -> dict: + nodes = candidate_nodes() + free: list[dict] = [] + by_node: dict[str, list[int]] = {} + unreachable: list[str] = [] + scanned = 0 + with ThreadPoolExecutor(max_workers=MAX_WORKERS) as ex: + futs = {ex.submit(probe, n): n for n in nodes} + for fut in as_completed(futs): + node, gpus = fut.result() + if gpus is None: + unreachable.append(node) + continue + scanned += 1 + idle = [] + for g in gpus: + if g["mem_used_mib"] < THRESHOLD_MIB: + idle.append(g["gpu"]) + free.append({ + "node": node, "gpu": g["gpu"], + "mem_used_mib": g["mem_used_mib"], "util": g["util"], + }) + if idle: + by_node[node] = sorted(idle) + free.sort(key=lambda d: (d["node"], d["gpu"])) + return { + "updated": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), + "threshold_mib": THRESHOLD_MIB, + "total_free": len(free), + "nodes_scanned": scanned, + "nodes_with_free": len(by_node), + "nodes_unreachable": sorted(unreachable), + "by_node": dict(sorted(by_node.items())), + "free_gpus": free, + } + + +def publish(inv: dict) -> None: + OUT_DIR.mkdir(parents=True, exist_ok=True) + tmp = _json_path().with_suffix(".json.tmp") + tmp.write_text(json.dumps(inv, indent=1), encoding="utf-8") + tmp.replace(_json_path()) + + lines = [ + f"# FREE GPU INVENTORY (updated {inv['updated']})", + f"# free = nvidia-smi memory.used < {inv['threshold_mib']} MiB. " + f"{inv['total_free']} free GPU(s) across {inv['nodes_with_free']} node(s).", + "# HOW TO USE: pick a node:gpu below, then run your job directly on it, e.g.", + "# ssh 'cd ; CUDA_VISIBLE_DEVICES= setsid nohup \\", + "# ./.venv/bin/python train.py > runs/.log 2>&1 &'", + "# Do NOT use sbatch/srun/Slurm. Re-run nvidia-smi on the node to confirm the", + "# GPU is still idle right before you launch (someone else may have grabbed it).", + "", + ] + for node, gpus in inv["by_node"].items(): + lines.append(f"{node}\tgpu {','.join(str(g) for g in gpus)}") + if not inv["by_node"]: + lines.append("(no free GPUs right now - wait and re-read this file)") + lines.append("") + lines.append( + f"TOTAL free: {inv['total_free']} GPU(s) on {inv['nodes_with_free']} node(s)" + ) + tmp = _txt_path().with_suffix(".txt.tmp") + tmp.write_text("\n".join(lines) + "\n", encoding="utf-8") + tmp.replace(_txt_path()) + + +def main() -> None: + once = "--once" in sys.argv[1:] + print( + f"[gpu-scout] publishing to {_txt_path()} " + f"{'once' if once else f'every {INTERVAL}s'}", + flush=True, + ) + while True: + t0 = time.time() + try: + inv = sweep() + publish(inv) + print( + f"[gpu-scout {inv['updated']}] free={inv['total_free']} " + f"nodes_with_free={inv['nodes_with_free']} " + f"scanned={inv['nodes_scanned']} " + f"unreachable={len(inv['nodes_unreachable'])}", + flush=True, + ) + except Exception as exc: # noqa: BLE001 - service loop must not die + print(f"[gpu-scout] sweep error: {exc}", flush=True) + if once: + return + time.sleep(max(5, INTERVAL - int(time.time() - t0))) + + +if __name__ == "__main__": + main() diff --git a/loom/templates/paper/wacv/main.tex b/loom/templates/paper/wacv/main.tex new file mode 100644 index 00000000..6a175d42 --- /dev/null +++ b/loom/templates/paper/wacv/main.tex @@ -0,0 +1,50 @@ +% WACV 2027 submission skeleton generated by Loom's AR pipeline. +% The style is vendored from the complete WACV 2027 template used by the +% claude-paper repository. + +\documentclass[10pt,twocolumn,letterpaper]{article} + +% Authors may switch algorithms to applications or datasets when the paper's +% contribution warrants it. Keep review mode until camera ready. +\usepackage[review,@@WACV_TRACK@@]{wacv} + +\usepackage{graphicx} +\usepackage{booktabs} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{microtype} +\definecolor{wacvblue}{rgb}{0.21,0.49,0.74} +\usepackage[pagebackref,breaklinks,colorlinks,allcolors=wacvblue]{hyperref} + +\input{ar_macros.tex} + +\def\wacvPaperID{0000} +\def\confName{WACV} +\def\confYear{2027} + +\title{@@TITLE@@} +\author{Anonymous WACV submission\\Paper ID \wacvPaperID} + +\begin{document} +\maketitle + +\begin{abstract} +\input{sections/00_abstract} +\end{abstract} + +\input{sections/01_introduction} +\input{sections/02_related_work} +\input{sections/03_method} +\input{sections/04_experiments} +\input{sections/05_conclusion} + +{\small +\bibliographystyle{plainnat} +\bibliography{main} +} + +\clearpage +\appendix +\input{sections/06_appendix} + +\end{document} diff --git a/loom/templates/paper/wacv/wacv.sty b/loom/templates/paper/wacv/wacv.sty new file mode 100644 index 00000000..99856b89 --- /dev/null +++ b/loom/templates/paper/wacv/wacv.sty @@ -0,0 +1,447 @@ +% WACV 2027 style, adapted from the official ICCV 2025 / WACV 2025 author kits. +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{wacv}[2027 LaTeX class for IEEE WACV] + +\RequirePackage{times} +\RequirePackage{xspace} +\RequirePackage[dvipsnames]{xcolor} +\RequirePackage{graphicx} +\RequirePackage{amsmath} +\RequirePackage{amssymb} +\RequirePackage{booktabs} +\RequirePackage[numbers,sort&compress]{natbib} +\setlength{\bibsep}{1pt plus 1pt minus 1pt} + +\RequirePackage{silence} +\hbadness=10000 \vbadness=10000 \vfuzz=30pt \hfuzz=30pt +\WarningFilter{latexfont}{Font shape declaration} +\WarningFilter{latex}{Font shape} +\WarningFilter[rebuttal]{latex}{No \author given} +\RequirePackage{etoolbox} + +\RequirePackage[format=plain,labelformat=simple,labelsep=period,font=small,compatibility=false]{caption} +\RequirePackage[font=footnotesize,skip=3pt,subrefformat=parens]{subcaption} + +\newtoggle{wacvfinal} +\newtoggle{wacvrebuttal} +\newtoggle{wacvpagenumbers} +\newtoggle{wacvalgorithms} +\newtoggle{wacvapplications} +\newtoggle{wacvdatasets} +\toggletrue{wacvfinal} +\togglefalse{wacvrebuttal} +\togglefalse{wacvpagenumbers} +\togglefalse{wacvalgorithms} +\togglefalse{wacvapplications} +\togglefalse{wacvdatasets} +\DeclareOption{review}{\togglefalse{wacvfinal}\toggletrue{wacvpagenumbers}} +\DeclareOption{rebuttal}{\togglefalse{wacvfinal}\toggletrue{wacvrebuttal}} +\DeclareOption{pagenumbers}{\toggletrue{wacvpagenumbers}} +\DeclareOption{applications}{\toggletrue{wacvapplications}} +\DeclareOption{algorithms}{\toggletrue{wacvalgorithms}} +\DeclareOption{datasets}{\toggletrue{wacvdatasets}} +\DeclareOption*{\PackageWarning{wacv}{Unknown option `\CurrentOption'}} +\ProcessOptions\relax + +\iftoggle{wacvrebuttal}{\ActivateWarningFilters[rebuttal]}{} + +\RequirePackage[hyphens]{url} +\Urlmuskip=0mu plus 1mu\relax + +% Inlined everyshi support. +\newcommand{\@EveryShipout@Hook}{} +\newcommand{\@EveryShipout@AtNextHook}{} +\newcommand*{\EveryShipout}[1]{\g@addto@macro\@EveryShipout@Hook{#1}} +\newcommand*{\AtNextShipout}[1]{\g@addto@macro\@EveryShipout@AtNextHook{#1}} +\newcommand{\@EveryShipout@Shipout}{% + \afterassignment\@EveryShipout@Test + \global\setbox\@cclv=% +} +\newcommand{\@EveryShipout@Test}{% + \ifvoid\@cclv\relax + \aftergroup\@EveryShipout@Output + \else + \@EveryShipout@Output + \fi +} +\newcommand{\@EveryShipout@Output}{% + \@EveryShipout@Hook + \@EveryShipout@AtNextHook + \gdef\@EveryShipout@AtNextHook{}% + \@EveryShipout@Org@Shipout\box\@cclv +} +\newcommand{\@EveryShipout@Org@Shipout}{} +\newcommand*{\@EveryShipout@Init}{% + \message{ABD: EveryShipout initializing macros}% + \let\@EveryShipout@Org@Shipout\shipout + \let\shipout\@EveryShipout@Shipout +} +\AtBeginDocument{\@EveryShipout@Init} + +% Inlined simplified eso-pic support. +\newcommand\LenToUnit[1]{#1\@gobble} +\newcommand\AtPageUpperLeft[1]{% + \begingroup + \@tempdima=0pt\relax\@tempdimb=\ESO@yoffsetI\relax + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}% + \endgroup +} +\newcommand\AtPageLowerLeft[1]{\AtPageUpperLeft{% + \put(0,\LenToUnit{-\paperheight}){#1}}} +\newcommand\AtPageCenter[1]{\AtPageUpperLeft{% + \put(\LenToUnit{.5\paperwidth},\LenToUnit{-.5\paperheight}){#1}}% +} +\newcommand\AtTextUpperLeft[1]{% + \begingroup + \setlength\@tempdima{1in}% + \ifodd\c@page + \advance\@tempdima\oddsidemargin + \else + \advance\@tempdima\evensidemargin + \fi + \@tempdimb=\ESO@yoffsetI\relax\advance\@tempdimb-1in\relax + \advance\@tempdimb-\topmargin + \advance\@tempdimb-\headheight\advance\@tempdimb-\headsep + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}% + \endgroup +} +\newcommand\AtTextLowerLeft[1]{\AtTextUpperLeft{% + \put(0,\LenToUnit{-\textheight}){#1}}} +\newcommand\AtTextCenter[1]{\AtTextUpperLeft{% + \put(\LenToUnit{.5\textwidth},\LenToUnit{-.5\textheight}){#1}}} +\newcommand{\ESO@HookI}{} +\newcommand{\ESO@HookII}{} +\newcommand{\ESO@HookIII}{} +\newcommand{\AddToShipoutPicture}{% + \@ifstar{\g@addto@macro\ESO@HookII}{\g@addto@macro\ESO@HookI}} +\newcommand{\ClearShipoutPicture}{\global\let\ESO@HookI\@empty} +\newcommand\ESO@isMEMOIR[1]{} +\@ifclassloaded{memoir}{\renewcommand\ESO@isMEMOIR[1]{#1}}{} +\newcommand{\@ShipoutPicture}{% + \bgroup + \@tempswafalse + \ifx\ESO@HookI\@empty\else\@tempswatrue\fi + \ifx\ESO@HookII\@empty\else\@tempswatrue\fi + \ifx\ESO@HookIII\@empty\else\@tempswatrue\fi + \if@tempswa + \@tempdima=1in\@tempdimb=-\@tempdima + \advance\@tempdimb\ESO@yoffsetI + \ESO@isMEMOIR{% + \advance\@tempdima\trimedge + \advance\@tempdima\paperwidth + \advance\@tempdima-\stockwidth + \if@twoside\ifodd\c@page\else + \advance\@tempdima-2\trimedge + \advance\@tempdima-\paperwidth + \advance\@tempdima\stockwidth + \fi\fi + \advance\@tempdimb\trimtop}% + \unitlength=1pt + \global\setbox\@cclv\vbox{% + \vbox{\let\protect\relax + \pictur@(0,0)(\strip@pt\@tempdima,\strip@pt\@tempdimb)% + \ESO@HookIII\ESO@HookI\ESO@HookII + \global\let\ESO@HookII\@empty + \endpicture}% + \nointerlineskip + \box\@cclv}% + \fi + \egroup +} +\EveryShipout{\@ShipoutPicture} +\RequirePackage{keyval} +\newif\ifESO@dvips\ESO@dvipsfalse +\newif\ifESO@texcoord\ESO@texcoordfalse + +\AtBeginDocument{% + \IfFileExists{color.sty}{% + \RequirePackage{color} + \let\ESO@color=\color\let\ESO@colorbox=\colorbox + \let\ESO@fcolorbox=\fcolorbox + }{} + \@ifundefined{Gin@driver}{}{% + \ifx\Gin@driver\@empty\else + \filename@parse{\Gin@driver}\def\reserved@a{dvips}% + \ifx\filename@base\reserved@a\ESO@dvipstrue\fi + \fi + }% + \ifx\pdfoutput\undefined\else + \ifx\pdfoutput\relax\else + \ifcase\pdfoutput\else + \ESO@dvipsfalse + \fi + \fi + \fi +} +\ifESO@texcoord + \def\ESO@yoffsetI{0pt}\def\ESO@yoffsetII{-\paperheight} +\else + \def\ESO@yoffsetI{\paperheight}\def\ESO@yoffsetII{0pt} +\fi + +\typeout{WACV 8.5 x 11-Inch Proceedings Style `wacv.sty'.} + +\font\wacvtenhv=phvb at 8pt +\font\elvbf=ptmb scaled 1100 +\font\tenbf=ptmb scaled 1000 + +\setlength{\textheight}{8.875in} +\setlength{\textwidth}{6.875in} +\setlength{\columnsep}{0.3125in} +\setlength{\topmargin}{0in} +\setlength{\headheight}{0in} +\setlength{\headsep}{0in} +\setlength{\parindent}{1pc} +\setlength{\oddsidemargin}{-0.1875in} +\setlength{\evensidemargin}{-0.1875in} + +\iftoggle{wacvpagenumbers}{}{\pagestyle{empty}} + +\AtBeginDocument{% + \@ifclassloaded{article}{}{% + \PackageError{wacv}{Package only meant to be used with document class `article'}% + {Change document class to `article'.} + } + \@ifclasswith{article}{10pt}{}{% + \PackageWarningNoLine{wacv}{WACV requires 10-point fonts} + } + \@ifclasswith{article}{twocolumn}{}{% + \PackageWarningNoLine{wacv}{WACV requires a two-column layout} + } + \@ifclasswith{article}{letterpaper}{}{% + \PackageWarningNoLine{wacv}{WACV requires letter paper} + } + \iftoggle{wacvfinal}{% + \@ifpackageloaded{hyperref}{}{% + \PackageWarningNoLine{wacv}{Package hyperref is recommended} + } + }{% + \@ifpackageloaded{hyperref}{% + \@ifpackagewith{hyperref}{pagebackref}{}{% + \PackageWarningNoLine{wacv}{Use hyperref with pagebackref in review mode} + } + }{% + \PackageWarningNoLine{wacv}{Package hyperref is recommended} + } + } +} + +\def\@maketitle{% + \newpage + \null + \iftoggle{wacvrebuttal}{\vspace*{-.3in}}{\vskip .375in} + \begin{center} + \iftoggle{wacvrebuttal}{{\large\bf\@title\par}}{{\Large\bf\@title\par}} + \iftoggle{wacvrebuttal}{\vspace*{-22pt}}{\vspace*{24pt}}{% + \large + \lineskip .5em + \begin{tabular}[t]{c} + \iftoggle{wacvfinal}{% + \@author + }{% + \iftoggle{wacvrebuttal}{}{% + \iftoggle{wacvalgorithms}{% + Anonymous \confName {\color[rgb]{.9,.1,.1}\fbox{Algorithms Track}} submission + }{% + \iftoggle{wacvapplications}{% + Anonymous \confName {\color[rgb]{.3,.6,.3}\fbox{Applications Track}} submission + }{% + \iftoggle{wacvdatasets}{% + Anonymous \confName {\color[rgb]{.3,.3,.6}\fbox{Datasets Track}} submission + }{% + \textbf{ERROR: select algorithms, applications, or datasets} + } + } + }\\ + \vspace*{1pt}\\ + Paper ID \wacvPaperID + } + } + \end{tabular} + \par + } + \vskip .5em + \vspace*{12pt} + \end{center} +} + +\def\abstract{% + \iftoggle{wacvpagenumbers}{}{\thispagestyle{empty}} + \centerline{\large\bf Abstract}% + \vspace*{12pt}\noindent + \it\ignorespaces +} +\def\endabstract{\vspace*{12pt}} + +\def\affiliation#1{\gdef\@affiliation{#1}} +\gdef\@affiliation{} + +\def\wacvsection{\@startsection{section}{1}{\z@}% + {-10pt plus -2pt minus -2pt}{7pt}{\large\bf}} +\def\wacvssect#1{\wacvsection*{#1}} +\def\wacvsect#1{\wacvsection{\texorpdfstring{\hskip -1em.~}{}#1}} +\def\section{\@ifstar\wacvssect\wacvsect} + +\def\wacvsubsection{\@startsection{subsection}{2}{\z@}% + {-8pt plus -2pt minus -2pt}{5pt}{\elvbf}} +\def\wacvssubsect#1{\wacvsubsection*{#1}} +\def\wacvsubsect#1{\wacvsubsection{\texorpdfstring{\hskip -1em.~}{}#1}} +\def\subsection{\@ifstar\wacvssubsect\wacvsubsect} + +\def\wacvsubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-6pt plus -2pt minus -2pt}{3pt}{\tenbf}} +\def\wacvssubsubsect#1{\wacvsubsubsection*{#1}} +\def\wacvsubsubsect#1{\wacvsubsubsection{\texorpdfstring{\hskip -1em.~}{}#1}} +\def\subsubsection{\@ifstar\wacvssubsubsect\wacvsubsubsect} + +\iftoggle{wacvfinal}{% + \makeatletter + \providecommand{\@LN}[2]{} + \makeatother +}{% + \makeatletter + \newbox\wacvrulerbox + \newcount\wacvrulercount + \newdimen\wacvruleroffset + \newdimen\cv@lineheight + \newdimen\cv@boxheight + \newbox\cv@tmpbox + \newcount\cv@refno + \newcount\cv@tot + \newcount\cv@tmpc@ + \newcount\cv@tmpc + \def\fillzeros[#1]#2{% + \cv@tmpc@=#2\relax + \ifnum\cv@tmpc@<0 \cv@tmpc@=-\cv@tmpc@\fi + \cv@tmpc=1 + \loop + \ifnum\cv@tmpc@<10 + \else + \divide\cv@tmpc@ by 10 + \advance\cv@tmpc by 1 + \fi + \ifnum\cv@tmpc@=10 \cv@tmpc@=11\fi + \ifnum\cv@tmpc@>10 + \repeat + \ifnum#2<0 \advance\cv@tmpc1 -\fi + \loop + \ifnum\cv@tmpc<#1 0\advance\cv@tmpc1\fi + \ifnum\cv@tmpc<#1 + \repeat + \cv@tmpc@=#2\relax + \ifnum\cv@tmpc@<0 \cv@tmpc@=-\cv@tmpc@\fi + \the\cv@tmpc@ + } + \makeatother + + \RequirePackage[switch,mathlines]{lineno} + \renewcommand\linenumberfont{% + \wacvtenhv + \iftoggle{wacvalgorithms}{\color[rgb]{.9,.1,.1}}{% + \iftoggle{wacvdatasets}{\color[rgb]{.3,.3,.6}}{\color[rgb]{.3,.6,.3}}}} + \renewcommand\thelinenumber{\fillzeros[3]{\arabic{linenumber}}} + \setlength{\linenumbersep}{.75cm} + \RequirePackage{etoolbox} + + \newcommand*\linenomathpatch[1]{% + \expandafter\pretocmd\csname #1\endcsname{\linenomath}{}{}% + \expandafter\pretocmd\csname #1*\endcsname{\linenomath}{}{}% + \expandafter\apptocmd\csname end#1\endcsname{\endlinenomath}{}{}% + \expandafter\apptocmd\csname end#1*\endcsname{\endlinenomath}{}{}% + } + \newcommand*\linenomathpatchAMS[1]{% + \expandafter\pretocmd\csname #1\endcsname{\linenomathAMS}{}{}% + \expandafter\pretocmd\csname #1*\endcsname{\linenomathAMS}{}{}% + \expandafter\apptocmd\csname end#1\endcsname{\endlinenomath}{}{}% + \expandafter\apptocmd\csname end#1*\endcsname{\endlinenomath}{}{}% + } + \expandafter\ifx\linenomath\linenomathWithnumbers + \let\linenomathAMS\linenomathWithnumbers + \patchcmd\linenomathAMS{\advance\postdisplaypenalty\linenopenalty}{}{}{} + \else + \let\linenomathAMS\linenomathNonumbers + \fi + \linenumbers + \AtBeginDocument{% + \linenomathpatch{equation}% + \linenomathpatchAMS{gather}% + \linenomathpatchAMS{multline}% + \linenomathpatchAMS{align}% + \linenomathpatchAMS{alignat}% + \linenomathpatchAMS{flalign}% + } + + \def\wacvruler#1{% + \makevruler[12pt][#1][1][3][0.993\textheight]\usebox{\wacvrulerbox}} + \AddToShipoutPicture{% + \iftoggle{wacvalgorithms}{\color[rgb]{.9,.1,.1}}{% + \iftoggle{wacvdatasets}{\color[rgb]{.3,.3,.6}}{\color[rgb]{.3,.6,.3}}} + \def\pid{\parbox{1in}{\begin{center}\bf\sf + {\small\confName}\\\small\#\wacvPaperID\end{center}}} + \AtTextUpperLeft{% + \put(\LenToUnit{-65pt},\LenToUnit{45pt}){\pid} + \put(\LenToUnit{\textwidth-12pt},\LenToUnit{45pt}){\pid} + } + \AtTextUpperLeft{% + \put(0,\LenToUnit{1cm}){\parbox{\textwidth}{\centering\wacvtenhv + \confName~\confYear~Submission \#\wacvPaperID. + \iftoggle{wacvalgorithms}{\fbox{Algorithms Track.}}{% + \iftoggle{wacvapplications}{\fbox{Applications Track.}}{% + \iftoggle{wacvdatasets}{\fbox{Datasets Track.}}{}}} + CONFIDENTIAL REVIEW COPY. DO NOT DISTRIBUTE.}}} + } + } +} + +\renewcommand{\textfraction}{0.01} +\renewcommand{\floatpagefraction}{0.99} +\renewcommand{\topfraction}{0.99} +\renewcommand{\bottomfraction}{0.99} +\renewcommand{\dblfloatpagefraction}{0.99} +\renewcommand{\dbltopfraction}{0.99} +\setcounter{totalnumber}{99} +\setcounter{topnumber}{99} +\setcounter{bottomnumber}{99} + +\makeatletter +\DeclareRobustCommand\onedot{\futurelet\@let@token\@onedot} +\def\@onedot{\ifx\@let@token.\else.\null\fi\xspace} +\def\eg{\emph{e.g}\onedot} +\def\Eg{\emph{E.g}\onedot} +\def\ie{\emph{i.e}\onedot} +\def\Ie{\emph{I.e}\onedot} +\def\cf{\emph{cf}\onedot} +\def\Cf{\emph{Cf}\onedot} +\def\etc{\emph{etc}\onedot} +\def\vs{\emph{vs}\onedot} +\def\wrt{w.r.t\onedot} +\def\dof{d.o.f\onedot} +\def\iid{i.i.d\onedot} +\def\wolog{w.l.o.g\onedot} +\def\etal{\emph{et al}\onedot} +\makeatother + +\let\titleold\title +\renewcommand{\title}[1]{\titleold{#1}\newcommand{\thetitle}{#1}} +\def\maketitlesupplementary{% + \newpage + \twocolumn[ + \centering + \Large + \textbf{\thetitle}\\ + \vspace{0.5em}Supplementary Material\\ + \vspace{1.0em} + ] +} + +\AtEndPreamble{% + \usepackage[capitalize]{cleveref} + \crefname{section}{Sec.}{Secs.} + \Crefname{section}{Section}{Sections} + \Crefname{table}{Table}{Tables} + \crefname{table}{Tab.}{Tabs.} +} + +\RequirePackage[shortlabels,inline]{enumitem} +\setlist[itemize]{noitemsep,leftmargin=*,topsep=0em} +\setlist[enumerate]{noitemsep,leftmargin=*,topsep=0em} diff --git a/loom/web.py b/loom/web.py index 284f3a17..a79e4116 100644 --- a/loom/web.py +++ b/loom/web.py @@ -6266,8 +6266,44 @@ def _ar_action( if not idea_ids: return {"ok": False, "error": "select at least one idea"}, 400 spawned, errors = _ar_spawn_children(root, slug, state, idea_ids) + # Spawning used to stop at the draft gate and wait for a manual + # "Start the draft" per paper. Operators want a studio's picks to + # begin writing immediately, so kick off each freshly spawned + # paper's author loop here (same seed + start the draft action + # runs). Papers that fail to start are reported, not fatal. + started: list[str] = [] + for item in spawned: + child = str(item.get("slug") or "") + if not child: + continue + try: + cstate = ar.read_ar_state(root, child) + paper_dir = ar.paper_root(root, child) + if not (paper_dir / "main.tex").is_file(): + ok_seed, msg_seed = ar.seed_paper_skeleton( + paper_dir, + str(cstate.get("venue") or ar.DEFAULT_VENUE), + cstate.get("idea"), + ) + if ok_seed: + ar.update_ar_state( + root, child, paper_dir=str(paper_dir) + ) + else: + errors.append(f"{child}: {msg_seed}") + continue + res = ar_manager.start(root, project_id, child) + if res.get("ok"): + started.append(child) + else: + errors.append( + f"{child}: {res.get('error') or 'failed to start'}" + ) + except Exception as exc: # noqa: BLE001 + errors.append(f"{child}: autostart failed: {exc}") payload = self._ar_payload(root, project_id, slug) payload["spawned"] = spawned + payload["started"] = started payload["errors"] = errors return payload, 200 diff --git a/loom/web_static/factory.html b/loom/web_static/factory.html index 438d71d3..be804e53 100644 --- a/loom/web_static/factory.html +++ b/loom/web_static/factory.html @@ -5,7 +5,7 @@ Paper Factory - + @@ -336,6 +336,6 @@

Skills

- + diff --git a/loom/web_static/factory.js b/loom/web_static/factory.js index e5d69120..590fb0f7 100644 --- a/loom/web_static/factory.js +++ b/loom/web_static/factory.js @@ -429,9 +429,9 @@ function renderStudioLists(papers, ideas) { ${Number(idea.score || 0).toFixed(2)}
- ${idea.hypothesis ? `

Hypothesis. ${esc(idea.hypothesis)}

` : ''} - ${idea.novelty ? `

New because. ${esc(idea.novelty)}

` : ''} - ${idea.metric ? `

Metric. ${esc(idea.metric)}

` : ''} + ${idea.hypothesis ? `

假设。 ${esc(idea.hypothesis)}

` : ''} + ${idea.novelty ? `

新意。 ${esc(idea.novelty)}

` : ''} + ${idea.metric ? `

指标。 ${esc(idea.metric)}

` : ''} ${edges ? `
${edges}
` : ''} ${spawned && idea.child_slug ? `

Open the paper →

` : ''}
From cbb85d22b9909ab789ef107cf1397c19b9778b01 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Mon, 17 Aug 2026 00:59:05 -0700 Subject: [PATCH 06/18] Document GPU Scout workflow and add project status snapshot Co-Authored-By: Claude Fable 5 --- docs/AUTO_RESEARCH_SYSTEM_DESIGN.md | 82 +++++++++++++++++-- .../notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md | 18 ++-- 2 files changed, 85 insertions(+), 15 deletions(-) diff --git a/docs/AUTO_RESEARCH_SYSTEM_DESIGN.md b/docs/AUTO_RESEARCH_SYSTEM_DESIGN.md index 3a3674d0..66f1b9de 100644 --- a/docs/AUTO_RESEARCH_SYSTEM_DESIGN.md +++ b/docs/AUTO_RESEARCH_SYSTEM_DESIGN.md @@ -19,7 +19,7 @@ flowchart TB subgraph LOOP["② Paper 工作台(每篇论文一个回合制状态机)"] direction TB - AUTHOR["Author Agent(Claude, tmux)
做实验(slurm GPU) + 写 LaTeX"] + AUTHOR["Author Agent(Cursor, tmux)
SSH 空闲 H100 做实验 + 写 LaTeX"] READY{"Readiness Gate
确定性检查"} PANEL["Reviewer Panel
三模型读编译后 PDF
最低分定档"] STOP{"停止条件
达标 / 满轮 / 平台期"} @@ -60,7 +60,7 @@ flowchart TB I1["tmux Agent 池
+ Web 实时面板"] I2["Web UI / API
:8766 + 公网隧道"] I3["Hot Restart
不断任务换代码"] - I4["slurm H100 集群"] + I4["GPU Scout
轮询空闲 H100 + SSH 直跑"] end SPAWN --> DG["🧑 Draft Human Gate
批准骨架稿"] --> LOOP @@ -105,9 +105,11 @@ flowchart TB 每一轮(round N)内部的固定节拍: -1. **Author Agent**(Claude,常驻 tmux,工作在自己的 worktree)收到本轮 Prompt: +1. **Author Agent**(Cursor Agent,当前默认 `gpt-5.6-sol-max-fast`,常驻 tmux, + 工作在自己的 worktree)收到本轮 Prompt: 上一轮的评审报告 + 方法论技能(AR-AUTHOR)+ 图片技能菜单 + GPU 集群使用规范。 - 它做实验(提交 slurm GPU 任务)、改论文、重编译,最后写 `author.md` 作为完成信号。 + 它做实验(读取 GPU Scout 后直接 SSH 到空闲 H100)、改论文、重编译, + 最后写 `author.md` 作为完成信号。 2. **Readiness Gate(确定性代码)**:编译必须干净;不允许任何 `\ARnum`/TODO/`??` 占位; 各章节实质完整;page-one 总览图必须存在;所有被引用的图文件存在;引用无悬空。 不合格 → 列出失败清单原样打回 Author,本轮重做,不消耗评审。 @@ -128,7 +130,8 @@ flowchart TB - `AR-STUDIO.md` / `AR-AUTHOR.md` / `AR-REVIEWER.md`:三种角色的完整方法论; - `figures/teaser-figure-1..4`、`results-figure-1..2`、`checkbib`:画图与查引用的具体做法 (从纯代码矢量图到 AI 生成再到混合方案,多风格可选,作者按需取用); -- `GPU-RESOURCES.md`:集群使用规范(禁止登录节点跑模型、sbatch 模板、防 GPU 被占的 requeue 守卫); +- `GPU-RESOURCES.md`:集群使用规范(禁止登录节点跑模型;读取 GPU Scout 的实时空闲清单, + 直接 SSH 到 compute node 并用 `CUDA_VISIBLE_DEVICES` 启动作业); - `paper-rebuttal/SKILL.md`、`paper-rebuttal-delivery/SKILL.md`:rebuttal 起草与终稿交付的方法论。 ## 5. 模块四:Rebuttal Factory(两级结构 + 双人工 Gate) @@ -167,7 +170,9 @@ flowchart TB Agent 无感知; - **监控循环**:`delivery_monitor.py` 等看门狗把"Agent 完成 → 校验 → 验收 → 喂回失败报告"的 节拍自动化,出结果或卡死才通知人; -- **slurm H100 集群**:实验全部走 sbatch;登录节点只做聚合和画图。 +- **GPU Scout + H100 集群**:守护进程每分钟 SSH 各 compute node 读取真实 + `nvidia-smi`,发布空闲 `node:gpu` 清单;Agent 不走不可靠的 Slurm 排队, + 而是二次确认显存后直接 SSH 启动作业。登录节点只做聚合和画图。 --- @@ -206,3 +211,68 @@ Web/编排 loom/web.py 论文实例 /.RUD//{ar.json, rounds/, work/manuscript/main.pdf} Rebuttal 实例 /rebuttal-output/{state.json, responses/, delivery/attempts//deliverables/} ``` + +--- + +## 10. 对外项目介绍与当前状态(2026-08-17) + +### 10.1 可以怎样向另一个团队介绍 + +**Loom Auto Research** 是一个面向长周期科研任务的 Agent 编排系统。它不是让一个 +聊天模型一次性“写论文”,而是把科研过程拆成可恢复、可审计的状态机: + +1. 从会议往届获奖论文、oral、热点和研究者已有能力中生成可证伪的选题; +2. 每个选题孵化为隔离的代码与 LaTeX 工作区,由长期运行的 Cursor Agent 做实验和写作; +3. Python Readiness Gate 先拦截编译错误、占位符、缺图和虚假完成; +4. GPT、Claude、Grok 三个独立 reviewer 只读编译后的 PDF,按最低分推动下一轮修改; +5. 稳定后进入 Delivered;投稿后还可进入 Rebuttal Factory,生成回复、修订稿和提交 bundle。 + +项目的核心技术价值在于: + +- **可靠的长周期 Agent orchestration**:任务跨小时/天运行,进程、服务或会话重启后可从磁盘状态恢复; +- **确定性控制 + 模型创造力**:状态转换、门禁、页数、哈希和完成条件由代码控制,模型只负责研究内容; +- **跨模型 eval**:执行者与评审者隔离,三个模型只看最终 PDF,避免作者自评; +- **真实计算闭环**:Agent 自己写实验代码,GPU Scout 分配实际空闲 H100,结果再写回论文; +- **artifact-level verification**:批准绑定 PDF/文本哈希,任何修改都会令旧批准失效; +- **human-in-the-loop**:系统可以全自动运行,但保留关键 Gate 和实时 tmux 面板供人检查或介入。 + +### 10.2 当前实现和实跑规模 + +| 项目状态 | 当前情况 | +|---|---| +| 产品形态 | Research Factory、Paper 工作台、Rebuttal Factory、Web UI/API、实时 tmux 面板 | +| 会议支持 | ICLR、NeurIPS、ICML、COLM、WACV;WACV 支持 Algorithms/Applications/Datasets track | +| 当前实验 | 同时运行 8 篇 WACV 2027 + 8 篇 WSDM 2027 paper | +| 当前结果 | 截至本次快照,4/16 已 Delivered;其余处于第 1–7 轮 Author/Reviewer 循环 | +| 实时状态 | `docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md` 每分钟按实际状态更新 | +| Rebuttal 验证 | 已在两篇 WACV rebuttal package 上跑通修订稿、一页回复、supplement、重编译和三模型图片验收 | +| 运行基础设施 | 16 个长期 Agent pane、两套 autopilot、GPU Scout、可热重启的 8766 Web 服务 | + +这仍是一个研究原型,而不是“科研已被完全自动化”的结论。目前最重要的下一步是: +系统化比较自动生成论文与人工基线的科学质量、减少 agent 过度扩展实验范围、提高 reviewer +评分与人类专家评分的一致性,并把当前针对单个研究者的能力画像产品化为可复用 profile。 + +### 10.3 可以直接发送的英文消息草稿 + +> Hi [Name] — I wanted to ask whether there might be an opportunity to intern +> with your team during the fall semester. +> +> I have been building **Loom Auto Research**, an agentic system for long-horizon +> research workflows. It turns a venue and research direction into concrete +> hypotheses, runs real experiments on GPUs, writes and compiles papers, and +> iterates through an independent GPT/Claude/Grok PDF-review panel. A +> deterministic state machine controls readiness checks, recovery, human gates, +> and artifact hashes, so the system can run for days without treating an LLM's +> claim of completion as ground truth. I also built a related rebuttal pipeline +> that produces revised papers, one-page responses, supplements, and validated +> submission artifacts. +> +> In the current evaluation, Loom is running 16 concurrent WACV/WSDM research +> projects; four have reached the Delivered stage and the rest are progressing +> through automated author/reviewer rounds. The project has given me hands-on +> experience with reliable agent orchestration, long-horizon task recovery, +> multi-model evaluation, GPU execution, and human-in-the-loop system design. +> +> I think this work may overlap with your team's interests in [team area]. Would +> you be open to a short conversation about whether I could join your team as a +> fall intern? I would be happy to share a demo and the system design. diff --git a/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md b/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md index 0596d54d..6f4efb84 100644 --- a/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md +++ b/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md @@ -1,21 +1,21 @@ # WACV / WSDM Paper Progress -Updated: 2026-08-16 21:08 PDT +Updated: 2026-08-17 00:37 PDT | Venue | ID | Paper | Stage | Round | Latest score | Agent | Folder | |---|---|---|---|---:|---:|---|---| -| WACV | wacv-fit-01 | 扩散得分平滑度驱动的开集测试时自适应 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-diffusion-score-smoothness-for-open-set-test-time-adaptation` | -| WACV | wacv-fit-02 | 得分统计量的扩散视频取证 | Author/reviewer loop | 6/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-score-statistic-forensics-for-diffusion-generated-video-detection` | +| WACV | wacv-fit-01 | 扩散得分平滑度驱动的开集测试时自适应 | Author/reviewer loop | 6/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-diffusion-score-smoothness-for-open-set-test-time-adaptation` | +| WACV | wacv-fit-02 | 得分统计量的扩散视频取证 | Delivered | 7/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-score-statistic-forensics-for-diffusion-generated-video-detection` | | WACV | wacv-fit-03 | 手术场景的开集识别与安全弃权 | Author/reviewer loop | 1/10 | — | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-open-set-recognition-with-safe-abstention-for-surgical-scene-understan` | | WACV | wacv-fit-04 | 差分隐私的注视估计个性化 | Author/reviewer loop | 1/10 | — | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-differentially-private-personalization-for-gaze-estimation` | -| WACV | wacv-fit-08 | 检索记忆智能体的长程序化视频理解 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-retrieval-memory-agents-for-long-form-procedural-video-understanding` | -| WACV | wacv-fit-14 | 表示层攻击审计合成图像取证器 | Author/reviewer loop | 4/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-presentation-only-attacks-for-auditing-synthetic-image-forensics-detec` | -| WACV | wacv-fit-16 | 可验证奖励强化学习的视频异常因果推理 | Author/reviewer loop | 5/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-verifiable-reward-rl-for-causal-video-anomaly-reasoning` | -| WACV | wacv-fit-17 | 低秩几何可证保证的分布外检测 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-provable-low-rank-feature-geometry-for-out-of-distribution-detection` | +| WACV | wacv-fit-08 | 检索记忆智能体的长程序化视频理解 | Author/reviewer loop | 7/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-retrieval-memory-agents-for-long-form-procedural-video-understanding` | +| WACV | wacv-fit-14 | 表示层攻击审计合成图像取证器 | Author/reviewer loop | 7/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-presentation-only-attacks-for-auditing-synthetic-image-forensics-detec` | +| WACV | wacv-fit-16 | 可验证奖励强化学习的视频异常因果推理 | Author/reviewer loop | 7/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-verifiable-reward-rl-for-causal-video-anomaly-reasoning` | +| WACV | wacv-fit-17 | 低秩几何可证保证的分布外检测 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-provable-low-rank-feature-geometry-for-out-of-distribution-detection` | | WSDM | wsdm-02 | 没有预言机的风险敏感多样化:意图估计误差如何侵蚀最差情况保证 | Delivered | 6/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-risk-sensitive-diversification-without-an-oracle` | -| WSDM | wsdm-03 | Semantic ID 上生成式检索的计算极限 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-computational-limits-of-generative-retrieval-over-semantic` | +| WSDM | wsdm-03 | Semantic ID 上生成式检索的计算极限 | Author/reviewer loop | 7/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-computational-limits-of-generative-retrieval-over-semantic` | | WSDM | wsdm-04 | 判官读过答案吗:LLM 相关性判断中的知识截断污染 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-llm-knowledge-cutoff-contamination-in-llm-relevance-judgments` | -| WSDM | wsdm-05 | 一步就够:带可证明误差界的扩散推荐蒸馏 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-one-step-suffices-diffusion-recommendation-distillation-with-provable` | +| WSDM | wsdm-05 | 一步就够:带可证明误差界的扩散推荐蒸馏 | Author/reviewer loop | 6/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-one-step-suffices-diffusion-recommendation-distillation-with-provable` | | WSDM | wsdm-06 | 会偷看的分词器:Semantic ID 构建导致的生成式推荐测试集泄漏 | Author/reviewer loop | 3/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-tokenizers-that-peek-test-set-leakage-in-semantic-id-gener` | | WSDM | wsdm-09 | 规模是必要的吗:协同过滤的模型容量下界 | Delivered | 6/10 | 5/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-is-scale-necessary-capacity-lower-bounds-for-collaborative-filtering` | | WSDM | wsdm-11 | 当网页被 LLM 写满:点击相关性代理还成立吗 | Delivered | 5/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-llm-when-the-web-is-llm-written-auditing-click-signals-as-relevance-pr` | From 9bd0fccb2f1745c78dd516d82fcf2074fa3186a0 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Mon, 17 Aug 2026 01:01:01 -0700 Subject: [PATCH 07/18] Ignore .RUD, pytest and ruff caches Co-Authored-By: Claude Fable 5 --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bd8ad4a4..2409084c 100755 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,8 @@ K8S.md # Machine-local Kernel Lab cluster profiles live under ~/.config/loom and must # never be copied into this repository. -/loom/kernel_hub/env.*.local \ No newline at end of file +/loom/kernel_hub/env.*.local +# Local runtime state and tool caches +.RUD/ +.pytest_cache/ +.ruff_cache/ From 65fa625d7084736119a0533e7b3798c94ac50682 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Mon, 17 Aug 2026 23:53:23 -0700 Subject: [PATCH 08/18] Add WSDM CMT registration reference Co-authored-by: Cursor --- .../WSDM2027_CMT_READY_TITLES_ABSTRACTS.md | 246 ++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 docs/notes/zhizhou/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md diff --git a/docs/notes/zhizhou/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md b/docs/notes/zhizhou/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md new file mode 100644 index 00000000..72cf5f46 --- /dev/null +++ b/docs/notes/zhizhou/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md @@ -0,0 +1,246 @@ +# WSDM 2027 CMT: Titles and Abstracts + +Updated from all eight current WSDM manuscripts on August 17, 2026. Every paper +now has a plain-text, copy-paste-ready title and abstract below. Papers 1--7 are +delivered. Paper 8 (`wsdm-06`) is still in Round 3, so its title is ready but +its abstract is a current snapshot that should be refreshed after delivery. + +These are concise CMT versions rather than raw LaTeX: commands have been +removed and each abstract retains the central claims and key quantitative +results. The review sections are internal automated-review results, not +official WSDM reviews; do not paste them into CMT. + +## 1. wsdm-02 + +### Title + +Risk-Sensitive Diversification Without an Oracle: Valid Certificates Need Not Identify Better Rankings + +### Subject Areas + +- **Primary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Web Search → Query analysis and query processing +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Does a valid robust tail-risk certificate identify a better diversified ranking when the intent prior is estimated? Not necessarily. For finite-intent VRisk, fixed-ranking L1 error ε changes risk by at most min{1, ε/(2β)}, sharply, while a standard count radius can collapse robust CVaR to minimax. Even with a perfectly estimated prior and valid coverage, the resulting saturated minimizer and upper-bound gate can incur regret arbitrarily close to one. This separates certificate validity from decision usefulness. + +A frozen-proposal audit across retrieval and recommendation benchmarks supports the distinction. Exact same-prior comparison accepts 17.9% of proposals in the primary NTCIR synthetic-prior experiment, while the evaluated real-estimator settings certify no intervention and matched robust-versus-minimax effects are mostly negligible. Validity, informativeness, and decision benefit are therefore distinct properties. + +### Latest Automated Review + +Round 6 panel score: **4/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 4/10 | 3/4 | 2/4 | 2/4 | Weak reject | + +## 2. wsdm-05 + +### Title + +When Does One Step Suffice? A Four-Gate Audit of Diffusion Recommendation Distillation + +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +A one-call deployment claim bundles four different statements: the teacher is competent, iterative sampling helps, the student preserves the teacher, and the result has serving value. We introduce a four-gate audit that tests these claims separately and scopes every decision to a checkpoint and protocol. + +Using a common full-catalog harness over MovieLens-1M and Steam, together with a native Amazon Beauty DiffuRec reproduction, we compare diffusion teachers, iterative sampling, one-pass controls, and endpoint regression under matched evaluation. Utility-tuned SASRec outperforms the audited teachers in all 16 metric-level comparisons, and DDIM-1 outperforms the multi-step endpoint in 15 of 16; the remaining comparison is inconclusive. Endpoint regression sometimes preserves aggregate utility under simultaneous noninferiority tests, yet exact teacher top-10 set identity never exceeds 20.5%. The contribution is a falsifiable deployment contract and checkpoint-level evidence, not a broad claim that one step or many steps universally wins. + +### Latest Automated Review + +Round 6 panel score: **4/10 · soundness 2/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | +| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | + +## 3. wsdm-09 + +### Title + +Information Before Scale: Sample and Rank Frontiers for Walsh Collaborative Filtering + +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Empirical recommender scaling curves do not distinguish insufficient output rank from insufficient information to identify a user's latent preference. We separate these resources on a synthetic Walsh collaborative-filtering family. For a revealed user-Walsh assignment, we derive an exact finite minimax rank rule. We then withhold that assignment while keeping the same signed permutation of the Walsh table. + +Although the posterior now couples users through perfect matchings, we derive its exact finite conditional frontier and show that removing the assignment raises the fixed-accuracy sample scale from constant to logarithmic. Under binary-symmetric label noise, consistency has the sharp first-order threshold NpCq = log2 N, where Cq = 1 - h2(q). On matched sparse transcripts at N = 128, a validation-selected rank-N/2 matrix-factorization model reaches risk 0.964 against the 0.568 information frontier, exposing a substantial gap between optimization and information limits. These are architecture-relative results for a public Walsh dictionary, not an industrial scaling law. + +### Latest Automated Review + +Round 6 panel score: **5/10 · soundness 2/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 6/10 | 3/4 | 3/4 | 3/4 | Weak accept | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | + +## 4. wsdm-11 + +### Title + +Query-Term Repetition Repels LLM Selectors from Weak Result Cards: A Controlled Audit + +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search user behavior and log analysis; Search user interfaces and interaction +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Web Search → Query analysis and query processing +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Implicit feedback is useful only when selection remains aligned with landing-page relevance. We audit one proposed surface intervention for deterministic LLM selectors: replacing generic metadata with repeated query terms in weak result cards. In paired result-card displays, lower-relevance cards contain either one copy or repeated copies of the same query terms, while answer content, landing page, judgment, card length, unique term set, topic, rank schedule, and all higher-relevance cards remain fixed. + +Across four confirmatory selectors, repetition reduces false-choice rates by 2.3–6.2 percentage points, with Holm-adjusted p < .001 in every case. A short warning about repeated query words produces no detectable interaction with this effect and therefore does not explain an earlier hardened-prompt contrast. Exact frequency does not explain an earlier synthetic same-query effect that also changed topic and plausibility. We make no human-click claim, and we treat an earlier answer-rewrite audit without independent regrades as conditional evidence only. + +### Latest Automated Review + +Round 5 panel score: **4/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 2/4 | 2/4 | Weak reject | +| Cursor Grok 4.5 | 4/10 | 3/4 | 3/4 | 2/4 | Weak reject | + +## 5. wsdm-12 + +### Title + +How Small Can You Go? Spectral Bounds for Recommendation Subsets + +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Large-scale graph analysis +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +How many original-identity interactions are necessary—and how many are actually sufficient—to preserve a collaborative-filtering propagation subspace? We separate these questions. For a source graph's rank-r normalized-biadjacency frame, every unweighted edge subset incurs joint projector loss at least the source leverage mass outside its retained user and item coordinates. Requiring an identifiable cutoff adds a component-multiplicity floor. The combined floor is asymptotically attainable on a block-complete family. + +Real recommendation graphs are different. We audit three public graphs at ranks 2, 4, and 8. At rank eight, the necessary floors retain at most 2.1% of edges, while the first observed identifiable witnesses require at least 33%. A connectivity-preserving construction also remains far above the floor. The theorem therefore rules out ultra-small subsets but does not predict the attainable projector-collapse budget on these graphs. We report a lower-to-upper interval rather than call the necessary floor tight. The result applies to unweighted same-identity subsets, not synthetic identities, reweighted sparsifiers, arbitrary finite codes, or ranking utility. + +### Latest Automated Review + +Round 8 panel score: **4/10 · soundness 2/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | + +## 6. wsdm-03 + +### Title + +Computational Limits of Finite-Beam Generative Retrieval with Semantic IDs + +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search +- **Secondary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis + +### Abstract + +Semantic-ID retrieval replaces corpus-wide scoring with autoregressive trie search, mixing representation and search error. For canonical Gibbs distillation, we separate them exactly: every dense score vector has a unique positive trie-local factorization with the same exhaustive leaf order, while prefix log-mass equals best-descendant score plus log effective multiplicity. This yields an exact margin-mass boundary. For every fixed alphabet K and width b, an injective N = bK + 1 family makes all widths through b lose the unique optimum. The limit is conditional on this calibration, not universal over learned trees. + +We then jointly train item tables, history GRUs, and rank-32 local decoders under bitwise-matched initialization. On Amazon Beauty with 12,101 items, five seeds, and 1,024 users, canonical exhaustive retrieval retains 67.35% teacher top-10 overlap, but width 10 preserves only 53.29% of its own exact top-10 set. Rank-preserving τ/2 sharpening raises this to 83.32% while retaining 67.03% exhaustive teacher overlap; exact max-node training and direct scoring reach 95.82%. Task intervals overlap, so the evidence establishes a finite-search mechanism and fidelity interventions, not a recommendation gain, production prevalence, or superiority over ANN, lookahead, or retention methods. + +### Latest Automated Review + +Round 10 panel score: **5/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 2/4 | 3/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | + +## 7. wsdm-04 + +### Title + +Did the Judge See the Answer? A Crossed Dose–Response Audit of LLM Relevance Judgments + +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency +- **Secondary:** Foundation Models and Agentic Systems → LLMs and multimodal foundation models for web tasks + +### Abstract + +If relevance labels leak into an LLM judge, improved agreement can arise from learning passage-grade bindings or merely from absorbing a topic's label marginal. Held-out passages alone do not separate these mechanisms. We run a second-collection replication on all 50 TREC-COVID topics, constructing every train and held-out set to contain three grades. True-label exposure is compared with two zero-match wrong-label cycles that preserve the same passages and grade histogram. Two disjoint splits, two derangements, three optimizer seeds, and four fixed open judges yield 3,600 training trajectories, each measured after 5, 10, 20, and 40 updates. + +At the prespecified 40-update endpoint, the held-out true-minus-wrong probability-weighted agreement contrast is 0.078 (95% CI [0.061, 0.094], p < 0.0001). The contrast grows from 0.011 at five updates to 0.078 at forty, with a log-dose slope of 0.022 [0.017, 0.027]. All four unadjusted model-specific intervals exclude zero, but effects range from 0.007 for SmolLM2-1.7B to 0.121 for Qwen2.5-7B, and the model-by-condition interaction is significant. These results establish dose-dependent passage-binding susceptibility under controlled LoRA exposure, not natural pretraining contamination, benchmark membership, or a system-ranking consequence. + +### Latest Automated Review + +Round 7 panel score: **5/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | + +## 8. wsdm-06 + +### Title + +Tokenizers That Peek: Test-Set Leakage in Semantic-ID Generative Recommendation + +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Semantic IDs replace atomic item labels with learned token sequences, making the tokenizer part of a recommender's fitted state. If its collaborative features consume held-out interactions, test labels can alter item-to-code assignments even when generator training remains clean. We isolate this channel under a global timeline: examples, targets, candidates, architecture, and seed are paired, and only tokenizer interaction scope changes. + +Under equal-budget validation tuning, peeking raises Recall@10 by 0.589 percentage points (95% paired-seed interval [0.535, 0.642]) across three Amazon categories, two interaction-aware paths, and 15 seeds; this is 25.1% of clean performance. The content control changes by exactly 0.000, while a non-discretized Continuous-SVD control has an even larger positive gap, so the channel does not require tokenization. Removing scored target edges in all six cells leaves a macro interval spanning zero. The target component exceeds the pooled matched-removal null, but not its 90%-target-overlap stratum; the evidence supports overlap sensitivity, not exact-edge uniqueness. An immutable audit additionally finds one documented test-selected collaborative-feature path whose shipped tensor lineage is unresolved; we do not infer impact on a published score or prevalence. + +### Latest Automated Review + +Round 2 panel score: **5/10 · soundness 3/4 · weak reject**. Round 3 is still running, so this score and abstract are provisional. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 3/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | From 52e40ba544f180670f38d7e9373fbe4ace473daa Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Mon, 17 Aug 2026 23:55:46 -0700 Subject: [PATCH 09/18] Add latest delivered WSDM CMT reference Co-authored-by: Cursor --- .../WSDM2027_LATEST_3_DELIVERED_CMT_READY.md | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 docs/notes/zhizhou/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md diff --git a/docs/notes/zhizhou/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md b/docs/notes/zhizhou/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md new file mode 100644 index 00000000..3ff726ab --- /dev/null +++ b/docs/notes/zhizhou/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md @@ -0,0 +1,105 @@ +# WSDM 2027 CMT: Latest Three Delivered Papers + +This file contains the three most recently delivered WSDM papers as of +August 17, 2026, 23:54 PDT, ordered by final approval time. Titles and +abstracts are plain-text, copy-paste-ready CMT versions. Subject areas are +suggested selections. Automated reviews are internal only and should not be +pasted into CMT. + +## 1. wsdm-05 + +**Delivered:** August 17, 2026, 17:02 PDT +**Final round:** 6 + +### Title + +When Does One Step Suffice? A Four-Gate Audit of Diffusion Recommendation Distillation + +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +A one-call deployment claim bundles four different statements: the teacher is competent, iterative sampling helps, the student preserves the teacher, and the result has serving value. We introduce a four-gate audit that tests these claims separately and scopes every decision to a checkpoint and protocol. + +Using a common full-catalog harness over MovieLens-1M and Steam, together with a native Amazon Beauty DiffuRec reproduction, we compare diffusion teachers, iterative sampling, one-pass controls, and endpoint regression under matched evaluation. Utility-tuned SASRec outperforms the audited teachers in all 16 metric-level comparisons, and DDIM-1 outperforms the multi-step endpoint in 15 of 16; the remaining comparison is inconclusive. Endpoint regression sometimes preserves aggregate utility under simultaneous noninferiority tests, yet exact teacher top-10 set identity never exceeds 20.5%. The contribution is a falsifiable deployment contract and checkpoint-level evidence, not a broad claim that one step or many steps universally wins. + +### Latest Automated Review + +Round 6 panel score: **4/10 · soundness 2/4 · weak reject**. The panel score is the lowest reviewer rating. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | +| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | + +## 2. wsdm-03 + +**Delivered:** August 17, 2026, 22:02 PDT +**Final round:** 10 + +### Title + +Computational Limits of Finite-Beam Generative Retrieval with Semantic IDs + +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search +- **Secondary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis + +### Abstract + +Semantic-ID retrieval replaces corpus-wide scoring with autoregressive trie search, mixing representation and search error. For canonical Gibbs distillation, we separate them exactly: every dense score vector has a unique positive trie-local factorization with the same exhaustive leaf order, while prefix log-mass equals best-descendant score plus log effective multiplicity. This yields an exact margin-mass boundary. For every fixed alphabet K and width b, an injective N = bK + 1 family makes all widths through b lose the unique optimum. The limit is conditional on this calibration, not universal over learned trees. + +We then jointly train item tables, history GRUs, and rank-32 local decoders under bitwise-matched initialization. On Amazon Beauty with 12,101 items, five seeds, and 1,024 users, canonical exhaustive retrieval retains 67.35% teacher top-10 overlap, but width 10 preserves only 53.29% of its own exact top-10 set. Rank-preserving τ/2 sharpening raises this to 83.32% while retaining 67.03% exhaustive teacher overlap; exact max-node training and direct scoring reach 95.82%. Task intervals overlap, so the evidence establishes a finite-search mechanism and fidelity interventions, not a recommendation gain, production prevalence, or superiority over ANN, lookahead, or retention methods. + +### Latest Automated Review + +Round 10 panel score: **5/10 · soundness 3/4 · weak reject**. The panel score is the lowest reviewer rating. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 2/4 | 3/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | + +## 3. wsdm-04 + +**Delivered:** August 17, 2026, 22:28 PDT +**Final round:** 7 + +### Title + +Did the Judge See the Answer? A Crossed Dose–Response Audit of LLM Relevance Judgments + +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency +- **Secondary:** Foundation Models and Agentic Systems → LLMs and multimodal foundation models for web tasks + +### Abstract + +If relevance labels leak into an LLM judge, improved agreement can arise from learning passage-grade bindings or merely from absorbing a topic's label marginal. Held-out passages alone do not separate these mechanisms. We run a second-collection replication on all 50 TREC-COVID topics, constructing every train and held-out set to contain three grades. True-label exposure is compared with two zero-match wrong-label cycles that preserve the same passages and grade histogram. Two disjoint splits, two derangements, three optimizer seeds, and four fixed open judges yield 3,600 training trajectories, each measured after 5, 10, 20, and 40 updates. + +At the prespecified 40-update endpoint, the held-out true-minus-wrong probability-weighted agreement contrast is 0.078 (95% CI [0.061, 0.094], p < 0.0001). The contrast grows from 0.011 at five updates to 0.078 at forty, with a log-dose slope of 0.022 [0.017, 0.027]. All four unadjusted model-specific intervals exclude zero, but effects range from 0.007 for SmolLM2-1.7B to 0.121 for Qwen2.5-7B, and the model-by-condition interaction is significant. These results establish dose-dependent passage-binding susceptibility under controlled LoRA exposure, not natural pretraining contamination, benchmark membership, or a system-ranking consequence. + +### Latest Automated Review + +Round 7 panel score: **5/10 · soundness 3/4 · weak reject**. The panel score is the lowest reviewer rating. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | From 24f8306b8d80a04bc7e1b970a78aa00e4ca14cab Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Mon, 17 Aug 2026 23:58:31 -0700 Subject: [PATCH 10/18] Move latest WSDM CMT reference to venue notes Co-authored-by: Cursor --- .../WSDM2027_LATEST_3_DELIVERED_CMT_READY.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/notes/{zhizhou => wsdm2027}/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md (100%) diff --git a/docs/notes/zhizhou/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md b/docs/notes/wsdm2027/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md similarity index 100% rename from docs/notes/zhizhou/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md rename to docs/notes/wsdm2027/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md From 8d2fe1833bc2ba4d2df0c3a1d9d0cbef5af436e2 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Tue, 18 Aug 2026 00:01:55 -0700 Subject: [PATCH 11/18] Move complete WSDM CMT reference to venue notes Co-authored-by: Cursor --- .../{zhizhou => wsdm2027}/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/notes/{zhizhou => wsdm2027}/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md (100%) diff --git a/docs/notes/zhizhou/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md b/docs/notes/wsdm2027/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md similarity index 100% rename from docs/notes/zhizhou/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md rename to docs/notes/wsdm2027/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md From 359fd919363b1f954db1942814da2f70fc035e3d Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Tue, 18 Aug 2026 00:12:24 -0700 Subject: [PATCH 12/18] Document WSDM paper portfolio recommendations Co-authored-by: Cursor --- .../WSDM2027_8_PAPER_SELECTION_GUIDE.md | 395 ++++++++++++++++++ .../WSDM2027_DEPRIORITIZED_3_PAPERS.md | 134 ++++++ .../wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md | 159 +++++++ 3 files changed, 688 insertions(+) create mode 100644 docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md create mode 100644 docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md create mode 100644 docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md diff --git a/docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md b/docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md new file mode 100644 index 00000000..5377ca03 --- /dev/null +++ b/docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md @@ -0,0 +1,395 @@ +# WSDM 2027 八篇论文选择指南 + +更新时间:2026-08-18(PDT) + +## 这份文档怎么用 + +目标是从八篇论文中选出五篇优先投稿、三篇暂不优先。本文不替最终决策者 +直接勾选 5/3,而是说明每篇论文在做什么、最强卖点、最可能的拒稿原因, +以及哪些补充证据会改变判断。 + +需要特别注意: + +- 下文引用的是内部自动评审,不是 WSDM 官方评审。 +- 自动评审采用通用顶会式严格标准,不能只看最低分决定去留。 +- `wsdm-06` 仍在 Round 3,当前判断是暂定的;其 P5-CID 补跑可能显著改变 + 论文质量判断。 +- “质量好”不等于结果为正。严谨、重要且结论清楚的负结果也可能是好论文。 +- 真正需要判断的是:核心结论是否可信、贡献是否足够新、是否适合 WSDM、 + 以及剩余问题能否在投稿前修复。 + +## 八篇论文快速地图 + +| ID | 一句话内容 | 当前最强点 | 当前最大风险 | 内部面板 | +|---|---|---|---|---| +| `wsdm-02` | 研究估计意图先验时,稳健风险证书为何可能有效却不能选出更好的排序 | 数学严谨,负结果和匹配控制诚实 | 中心反例可能过于直接,真实估计器场景全部弃权 | 4/10,soundness 3/4 | +| `wsdm-05` | 用四道门审计扩散推荐器是否值得蒸馏成一步模型 | 全目录、九种子、延迟与多种控制都较完整 | 主要结论依赖自建 teacher;统计协议还有冲突 | 4/10,soundness 2/4 | +| `wsdm-09` | 在 Walsh 协同过滤模型中分离“输出秩不足”和“身份信息不足” | 匹配耦合 converse 和有限样本理论有技术内容 | 高度合成;经验 headline 与中心理论模型没有完全对齐 | 5/10,soundness 2/4 | +| `wsdm-11` | 测试弱结果卡重复查询词是否诱导 LLM selector 误选 | 配对设计、轮换和多重校正较规范 | 重复词与删除 filler 混杂,载体人工且贡献较窄 | 4/10,soundness 3/4 | +| `wsdm-12` | 给出保留推荐图谱子空间所需原始边数的谱下界 | 问题定义精确,定理和适用边界清楚 | 下界很松,上界只是弱启发式 witness,尚未逼近真正最优值 | 4/10,soundness 2/4 | +| `wsdm-03` | 解释 semantic-ID 生成检索中有限 beam 如何丢失模型自己的精确排序 | 理论与机制实验对应较好,主题非常契合 WSDM | 最坏情形是构造的;缺标准 Transformer 与 PAG/PRO 对照 | 5/10,soundness 3/4 | +| `wsdm-04` | 审计 LLM judge 接触 relevance label 后是否学习 passage-grade binding | 50 topics 的全交叉、直方图保持负控制很扎实 | 40-step 增长部分来自错误标签伤害,尚不能说明自然污染 | 5/10,soundness 3/4 | +| `wsdm-06` | 审计 semantic-ID tokenizer 使用测试期交互造成的指标泄漏 | clean/peek 配对干净,主题及时且实际风险明确 | 终稿未完成;已完成证据主要来自简化 tokenizer+GRU | 5/10,soundness 3/4(Round 2,暂定) | + +## 1. `wsdm-02` + +### 它在做什么 + +论文研究风险敏感搜索多样化中的一个基本问题:意图先验不是 oracle 给定, +而是从数据中估计时,一个统计上有效的 robust-CVaR/VRisk 证书,是否真的 +能帮助系统选择更好的 ranking。 + +核心结论是:不一定。论文给出先验误差对风险的精确敏感度界,说明常见 +置信半径会使 robust CVaR 退化成 minimax,并构造“证书覆盖正确、但决策 +后悔接近 1”的例子。实验审计 NTCIR、TREC、MIMICS 和 MovieLens,真实 +估计器设置基本都选择弃权。 + +### 为什么可能值得选 + +- 理论定义、证明和 claim boundary 比较严谨。 +- 能明确区分“证书有效”“目标优化正确”和“决策有用”三个概念。 +- 匹配 minimax control 和负结果披露较诚实。 +- 对 Web Search、diversification 和评测方法有直接 WSDM 契合度。 + +### 为什么可能不选 + +- 中心 near-unit-regret 构造依赖饱和后目标退化为 minimax;评审认为它可能 + 只是已知 robust-CVaR collapse 加一个简单两排序例子,新增理论量有限。 +- 最强反例使用边界先验,尚未证明 full-support 且经过实际校准半径时仍有 + 同样强的 separation。 +- 真实估计器场景没有一次成功干预;论文更像“该方法为什么不工作”的诊断, + 而不是可用的新决策方法。 + +### 选择它时应接受的定位 + +把它当作一篇理论化的负结果/评测审计论文,而不是一种能提升搜索效果的新 +算法。若你的组合需要一篇严谨的 search diversification theory paper, +它有价值;若你优先要明显的实证收益或工具可用性,它的风险较高。 + +## 2. `wsdm-05` + +### 它在做什么 + +论文提出扩散推荐器一步部署的“四道门”: + +1. 多步 teacher 本身是否足够强; +2. 多步采样是否真的优于一步 DDIM; +3. 一步 student 是否保留 teacher; +4. 质量和延迟合起来是否有部署价值。 + +在 MovieLens-1M 和 Steam 的 common harness 上,SASRec 在全部主要比较中 +优于 audited teachers,DDIM-1 也几乎总是优于多步 endpoint。Endpoint +regression 有时保留平均指标,但 top-10 set identity 最高只有 20.5%。 + +### 为什么可能值得选 + +- 问题实用,推荐系统和高效生成模型都符合 WSDM。 +- 全目录评测、九个 held-out seeds、训练曲线、延迟和参数匹配控制较完整。 +- 将 teacher competence、iterative benefit、fidelity 和 serving value + 分开是一个清楚、可复用的审计框架。 +- 论文没有把不利结果包装成算法胜利。 + +### 为什么可能不选 + +- 最关键的负结果来自自建 DiffuRec-style/DreamRec-style checkpoints, + 不一定代表官方实现或现代加速推荐器。 +- 原生复现只覆盖 Amazon Beauty;TA-Rec port 失败,FlowRec/CDRec 没有成为 + 有效主对照。 +- 正文中 96-test family 与附录 20-test family 的描述冲突;5,000 bootstrap + 对极端 Bonferroni quantile 也可能不足。 +- 论文没有展示任何一个真实系统完整通过四道门,贡献更像 checklist 加 + checkpoint-specific negative evidence。 + +### 选择它时应接受的定位 + +把它当作“如何审计扩散推荐部署 claim”的方法论文,而不是一步蒸馏算法。 +若无法在投稿前消除统计协议冲突并补强官方 checkpoint 外部验证,拒稿风险 +会主要集中在 external validity。 + +## 3. `wsdm-09` + +### 它在做什么 + +论文用一个公开 Walsh 字典构造协同过滤问题,区分两个资源: + +- 模型输出的 rank/capacity; +- 识别用户对应哪个 latent signature 所需的信息量。 + +当 user-to-row assignment 已知时,固定精度只需常数量级样本;隐藏同一个 +assignment 后,样本阈值上升到对数级。论文给出有限样本 frontier、 +matching-coupled posterior 和带噪声的一阶阈值,并比较一个训练得到的矩阵 +分解模型与信息论 frontier。 + +### 为什么可能值得选 + +- 匹配约束只改变有限样本、不移动一阶阈值的 converse 是较清楚的新技术点。 +- 有 exact finite rules、渐近结果和可计算审计,理论包比较完整。 +- “先判断信息是否足够,再讨论模型 scale”是一个容易传播的观点。 +- 论文对合成范围和非工业 scaling law 的限制写得较诚实。 + +### 为什么可能不选 + +- noisy revealed frontier 与主风险定义之间存在不完全一致,属于需要优先 + 修正的 correctness 问题。 +- 摘要中的 `0.964 vs 0.568` MF gap 来自 product-address benchmark, + 不是中心 hidden signed-permutation 模型。 +- MF 最多只训练 400 updates,甚至差于 observed-zero+SVD,无法排除只是 + under-optimization。 +- 所有核心证据都在特殊 Walsh 家族中,尚未展示如何在真实推荐数据上运行 + “information before scale”诊断。 + +### 选择它时应接受的定位 + +这是一篇偏理论、偏合成模型的论文。若组合需要理论多样性,它比纯经验审计 +更独特;若你要求真实数据上的直接决策价值,则必须对其外推保持保守。 + +## 4. `wsdm-11` + +### 它在做什么 + +论文测试一个具体 display intervention:在低相关结果卡的固定 metadata +区域重复查询词,是否会让 deterministic LLM selector 更容易误选该卡片。 +在 ANTIQUE 的 493 个 paired slates 和四个 confirmatory models 上,重复 +反而使误选率下降 2.3--6.2 个百分点;一句 warning 没有改变这个效果。 + +### 为什么可能值得选 + +- 配对卡片、完整 rank rotation、固定高相关卡和多重校正使主比较较干净。 +- 四个 selector 方向基本一致,统计结果容易解释。 +- 明确不声称 human clicks,也主动降级了没有独立 regrade 的 rewrite 结果。 +- 主题属于 LLM search interaction/evaluation,WSDM fit 很直接。 + +### 为什么可能不选 + +- “重复查询词”同时替换掉 generic filler,改变了流畅度、词汇多样性和 + spamminess;当前实验不能把效果归因于 frequency 本身。 +- 只报告差值,没有完整 arm-level absolute false-choice rates。 +- 只有一个人工 carrier、一个 repetition intensity 和一个 benchmark。 +- 结果是“明显 stuffing cue 会被模型惩罚”,可能被认为贡献窄且不意外。 +- warning 实验没有在原来真正产生 lure 的 treatment 上交叉,不能解释旧结果。 + +### 选择它时应接受的定位 + +这是八篇里最窄的 controlled behavior audit 之一。优点是容易读、结论清楚; +缺点是机制混杂和贡献广度很难仅靠改写解决,通常需要新的 factorial control。 + +## 5. `wsdm-12` + +### 它在做什么 + +论文研究:为了保持推荐图 normalized biadjacency 的 rank-\(r\) projector, +一个 unweighted、same-identity edge subset 至少需要保留多少原始边。 + +论文把 leverage support 下界和 component-multiplicity/identifiability 下界 +结合起来,并在 block-complete 图家族上给出接近可达的构造。在三个真实推荐 +图上,理论 floor 很低,但目前找到的可识别 witness 需要多得多的边。 + +### 为什么可能值得选 + +- access model、谱目标和不覆盖的 channel 定义得很清楚。 +- 定理与 block-complete 构造组成完整、可检查的理论结果。 +- 实验不隐藏 nonidentifiable checkpoints、非单调 crossing 或不利结果。 +- 推荐图压缩和图谱分析与 WSDM 有合理契合。 + +### 为什么可能不选 + +- 理论 floor 忽略真实边可实现性和 projector orientation,实际很松。 +- “上界”只来自 generic heuristics;论文自己定义的 greedies 和直接优化 + \(L_{\mathrm{sub}}\) 的搜索没有进入主 crossing audit。 +- 因此目前的 10--100 倍 gap 不能说明真正 optimum 离 floor 很远,只能说明 + 已测试 heuristics 较弱。 +- 结论依赖单一 \(\tau=0.25\) 和 \(10^{-3}\) identifiability threshold, + 缺少 sensitivity。 + +### 选择它时应接受的定位 + +把它当作一个 valid exclusion lower bound,而不是已经解决“图能压到多小”。 +如果无法补强直接优化 witness 或 feasibility-aware floor,标题问题与实际 +回答之间会存在明显落差。 + +## 6. `wsdm-03` + +### 它在做什么 + +论文研究 semantic-ID generative retrieval 中的有限 beam search error。 +它先证明任何 dense score 都能被 canonical trie factorization 精确表示; +但 prefix 的 log-mass 等于最佳后代分数加 effective multiplicity,因此有限 +beam 可能丢掉真实最优叶子。论文给出固定 alphabet 下需要线性 beam width +的构造,并在 MovieLens 和 Amazon Beauty 上测试 sharpening、max-node +training/scoring 等干预。 + +### 为什么可能值得选 + +- 将 representation error 与 search error 精确分开,问题定义清楚。 +- margin--multiplicity boundary 和 exact beam threshold 可检查、可解释。 +- Amazon 实验采用 matched initialization/minibatches、多个 seeds 和 + training-by-scoring factorial,机制验证较系统。 +- `53.29% -> 83.32%/95.82%` 的 self-fidelity 改善是清楚、容易传播的结果。 +- Semantic ID、generative retrieval、beam search 都是很强的 WSDM 主题。 + +### 为什么可能不选 + +- 线性 beam lower bound 是 adversarial trie 的 existence result,尚未证明 + 学到的 RQ trees 经常接近该 hard regime。 +- 实验主体是 GRU/local edge decoder;T5 control 很弱,不能代表标准 + Transformer generative retriever。 +- 没有 PAG/PRO 等最近的 lookahead/retention baseline。 +- task utility intervals 重叠;主要收益是模型对自己 exhaustive ranking 的 + fidelity,而不是推荐质量。 +- 标题中的“computational limits”可能比证据覆盖范围更广。 + +### 选择它时应接受的定位 + +它最适合被定位为“存在性理论 + learned-tree mechanism + fidelity +interventions”,而不是普遍的生成检索 lower bound。若你重视主题热度、理论 +与实验闭环,它值得重点阅读;若你要求最终任务收益,则需降低优先级。 + +## 7. `wsdm-04` + +### 它在做什么 + +论文测试 LLM relevance judge 在接触 passage-grade pairs 后,是否学习了 +具体 passage-grade binding,而不只是 topic 的 grade marginal。 + +实验覆盖全部 50 个 TREC-COVID topics,每个 topic 的 train/held-out 都含 +三档 grade;true labels 与保持同一 passage 和 grade histogram 的 zero-match +wrong-label cycles 对比,并完整交叉两种 split、两种 derangement、三个 seeds、 +四个模型和四个训练剂量,共 3,600 条训练 trajectory。 + +### 为什么可能值得选 + +- histogram-preserving negative control 直接处理了最重要的 marginal confound。 +- 全交叉设计、剂量轨迹、manipulation checks 和模型异质性报告比较完整。 +- 所有四个 model-specific intervals 都为正,主结果不是单个模型偶然现象。 +- LLM judge、IR evaluation、benchmark contamination 都高度符合 WSDM。 +- 对“不是自然预训练污染、不是 ranking utility”的边界说明很诚实。 + +### 为什么可能不选 + +- 40-update true-minus-wrong 增长很大一部分来自 wrong-label arm 变坏; + true arm 在 20 updates 后并未继续上升,不能简单称为“正确 binding 随剂量 + 单调增强”。 +- 没有 correctly labeled cross-topic control,不能排除一般 relevance-task + fine-tuning,而非 topic-specific passage binding。 +- 只有一个 biomedical collection、一种 raw prompt、一套 LoRA 配置和四个 + 小模型。 +- 不能据此诊断自然 pretraining contamination,也没有证明会改变 system ranking。 +- 相对 controlled memorization 既有工作,新增点主要是 IR-specific control + refinement,novelty 可能被认为增量式。 + +### 选择它时应接受的定位 + +应以“controlled relevance-label exposure audit”投稿,而不是声称发现真实 +benchmark contamination。论文设计强于其外部结论;是否选择主要取决于你 +是否看重 evaluation methodology 本身。 + +## 8. `wsdm-06`(暂定) + +### 它在做什么 + +论文审计 semantic-ID recommender 的 tokenizer fitting scope。如果协同特征 +使用了 cutoff 之后的交互,测试期信息会进入 item codes,即使 generator 的 +训练数据本身保持干净,也可能抬高最终指标。 + +已完成的 Round 2 在三个 Amazon categories、两个 interaction-aware paths +和 15 seeds 上做 clean/peek 配对;训练 histories、targets、candidates、 +architecture 和 seed 都固定,只改变 tokenizer interaction scope。内容型 +tokenizer 是精确的零变化控制。 + +### 为什么可能值得选 + +- 威胁模型具体、现实,且切中 semantic-ID recommendation 热点。 +- clean/peek paired intervention 的识别逻辑比跨模型比较更强。 +- 15 seeds、full-catalog evaluation、content-only negative control 和多种 + baseline sensitivity 提供了较扎实的窄结论。 +- 论文没有把 release provenance 不明直接说成已发生泄漏。 +- 如果当前 P5-CID released-stack 补跑成功,会直接解决评审最核心的 + external-validity 质疑。 + +### 为什么可能不选 + +- 当前终稿尚未完成,Round 3 的 released-stack 实验结果未知。 +- Round 2 的正结果主要来自 residual k-means tokenizer 加小型 GRU,尚不能 + 代表 TIGER/P5/LETTER 类真实 stack。 +- 已审计的四个 release 中没有一个被证明存在污染,实际 prevalence 未建立。 +- target-edge localization 不完整,随机移除约一半会碰到 targets,只有一个 + cell 在有限 null 的最小 p 值处显著。 +- user-level inference 还面临所有用户共同拟合同一 tokenizer 所产生的依赖。 + +### 选择它时应接受的定位 + +在 Round 3 完成前,不应把它与七篇 delivered papers 当作同等成熟的候选。 +若 P5-CID clean/peek replication 成功、结果稳定且终稿收紧 claim,它的上限 +很高;若补跑为 null、失败或无法在 deadline 前整理完成,应显著提高风险权重。 + +## 建议怎样自己完成 5/3 选择 + +### 第一步:先做 hard-veto,而不是先看平均分 + +每篇先回答三个问题: + +1. 核心结论有没有未解决的 correctness/identification 问题? +2. 最大贡献是否需要全新大实验才能成立? +3. 在投稿截止前,是否能把最可能的拒稿理由写清或修掉? + +若任意一项答案是“问题严重且无法按时修复”,优先进入三篇暂不投稿候选。 + +### 第二步:按下面权重自己打 1--5 分 + +\[ +\text{总分} +=0.30\times\text{核心可信度} ++0.25\times\text{贡献新颖性} ++0.20\times\text{WSDM 契合度} ++0.15\times\text{证据与外部有效性} ++0.10\times\text{投稿前可修复性}. +\] + +| ID | 核心可信度 1--5 | 新颖性 1--5 | WSDM fit 1--5 | 外部有效性 1--5 | 可修复性 1--5 | 加权总分 | 最终选择 | +|---|---:|---:|---:|---:|---:|---:|---| +| `wsdm-02` | | | | | | | | +| `wsdm-05` | | | | | | | | +| `wsdm-09` | | | | | | | | +| `wsdm-11` | | | | | | | | +| `wsdm-12` | | | | | | | | +| `wsdm-03` | | | | | | | | +| `wsdm-04` | | | | | | | | +| `wsdm-06` | | | | | | | | + +### 第三步:在同类论文中做 head-to-head + +不要只按八篇总排序,还应做以下直接比较: + +- **Semantic ID:** `wsdm-03`(search mechanism)对 `wsdm-06` + (evaluation leakage)。前者已交付、理论闭环更完整;后者现实问题更强, + 但仍在等待关键 released-stack 结果。 +- **LLM/IR audit:** `wsdm-04`(label-binding exposure)对 `wsdm-11` + (query-term repetition)。前者设计更重、更广;后者更简单易读,但机制 + 混杂和贡献宽度风险更高。 +- **推荐理论:** `wsdm-09`(information frontier)对 `wsdm-12` + (spectral subset floor)。前者技术新意可能更强但更合成;后者问题更直接, + 但当前 lower-to-witness gap 不够有信息量。 +- **负结果审计:** `wsdm-02`(robust ranking certificate)对 `wsdm-05` + (diffusion deployment gates)。前者理论更干净但 novelty/actionability + 受质疑;后者实验更大,但 official-system external validity 和统计协议风险更高。 + +### 第四步:不要在 `wsdm-06` 完成前锁定最后一个名额 + +`wsdm-06` 的 P5-CID clean/peek 补跑是八篇中最可能改变相对排序的单项结果。 +建议先确定四个稳定候选和两个明确高风险候选,最后一个优先名额与最后一个 +淘汰名额在该结果和终稿审计完成后再定。 + +## 最后检查清单 + +最终选择五篇前,对每篇勾选: + +- [ ] 一句话贡献能在 20 秒内讲清楚。 +- [ ] 摘要 headline 与真正被实验/定理识别的 estimand 一致。 +- [ ] 最强 reviewer concern 在正文中有直接答案,而不只是 limitation。 +- [ ] 主结果不是来自未完成、performance-gated 或弱 baseline 的比较。 +- [ ] 与已有工作的差异不是只靠措辞,而有 theorem、control 或新 evidence。 +- [ ] WSDM audience 能清楚理解它与 search/mining/recommendation 的关系。 +- [ ] 论文在截止前可以达到模板、页数、匿名性和 artifact 完整要求。 + +满足项最少的三篇,才应进入“暂不优先”;不要简单把内部面板最低分的三篇 +直接淘汰。 diff --git a/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md b/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md new file mode 100644 index 00000000..edb3e353 --- /dev/null +++ b/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md @@ -0,0 +1,134 @@ +# WSDM 2027:当前建议暂不优先的三篇论文 + +更新时间:2026-08-18(PDT) + +## 结论 + +在必须从八篇中只保留五篇的约束下,我建议当前暂不优先: + +1. `wsdm-05` +2. `wsdm-11` +3. `wsdm-12` + +“暂不优先”表示它们相对于另外五篇具有更难在投稿前消除的核心风险,不表示 +研究工作没有价值,也不表示内部自动评分就是最终结论。 + +## 1. `wsdm-05` + +### Title + +When Does One Step Suffice? A Four-Gate Audit of Diffusion Recommendation Distillation + +### 论文在做什么 + +论文用 teacher competence、iterative benefit、one-call fidelity 和 serving +value 四道门,审计扩散推荐器是否值得蒸馏成一步模型。实验发现 audited +teachers 普遍不如 SASRec 和 DDIM-1;endpoint regression 有时保留平均指标, +但无法复制 teacher 的具体 top-10 lists。 + +### 为什么当前暂不优先 + +- 主要负结论来自 common-harness 的 DiffuRec-style/DreamRec-style teachers, + 不是经过验证的官方 checkpoints,容易被认为是 reimplementation artifact。 +- 原生 DiffuRec 只在 Amazon Beauty 上复现;现代 one-step 方法没有形成有效 + 的主对照。 +- 主文的 96-test family 与附录 20-test family 相互冲突,直接影响论文最重视 + 的 simultaneous decision counts。 +- 5,000 bootstrap resamples 对 96-test Bonferroni 极端 quantiles 可能不足。 +- 论文没有展示任何真实系统完整通过四道门,最终贡献主要是审计 checklist + 和 checkpoint-specific negatives。 + +### 什么情况可以重新进入五篇 + +- 明确并修复 20/96-test protocol 冲突,重新生成稳定的 simultaneous intervals; +- 在官方/原生 DiffuRec、DreamRec 或 TA-Rec 类系统上完成至少一个可验证审计; +- 证明主要 Gate 1/2 结论不是弱 teacher search 或 harness instability 造成的。 + +### 替补顺序 + +如果 `wsdm-06` Round 3 不能完成或其 released-stack 结果使中心 claim 不再成立, +`wsdm-05` 是当前三篇中的第一替补,因为其问题重要、实验投入大,而且部分统计 +问题仍可通过重新分析修复。 + +## 2. `wsdm-11` + +### Title + +Query-Term Repetition Repels LLM Selectors from Weak Result Cards: A Controlled Audit + +### 论文在做什么 + +论文在 ANTIQUE 的弱结果卡中增加查询词重复,测试 deterministic LLM selector +是否更容易误选。四个模型上观察到的结果方向相反:重复使误选率下降 +2.3--6.2 个百分点。 + +### 为什么当前暂不优先 + +- 核心 treatment 同时用重复查询词替换 generic fillers,改变了 fluency、 + lexical diversity 和 spamminess,尚未识别纯 frequency effect。 +- 只有一个人工 carrier、一个 repetition intensity 和一个 benchmark。 +- 没有完整报告每个 arm 的 absolute false-choice rates,实际效应大小难判断。 +- Warning 没有与原来真正产生 lure 的 same-query treatment 交叉,因此无法 + 支持对旧 hardened-prompt 结果的解释。 +- 在去掉未经独立 regrade 的 rewrite 结果后,剩余贡献是一项较窄且可能被认为 + 不意外的 synthetic display-cue negative finding。 + +### 什么情况可以重新进入五篇 + +- 增加 filler-preserving、non-query repetition 和多剂量 factorial controls; +- 报告所有模型与条件的 absolute arm levels; +- 在自然 snippets 或第二个 collection 上复现; +- 将 warning 与原 same-query lure treatment 直接交叉。 + +### 当前判断 + +三篇暂不优先论文中,它最需要新的实验才能解决核心 identification 与贡献宽度 +问题,单靠改写难以显著降低风险。 + +## 3. `wsdm-12` + +### Title + +How Small Can You Go? Spectral Bounds for Recommendation Subsets + +### 论文在做什么 + +论文给出 unweighted、same-identity recommendation graph edge subset 保持 +rank-\(r\) normalized-biadjacency projector 时必须保留的边数下界,并在真实 +图上比较该 floor 与启发式找到的 first identifiable witnesses。 + +### 为什么当前暂不优先 + +- 理论 floor 独立选择 user/item leverage support,忽略真实边可实现性和 + projector orientation,因此在真实图上非常松。 +- 主实验没有运行论文自己定义的 attainability greedies,也没有直接优化 + \(L_{\mathrm{sub}}\) 的 local search 或 exact/certified optimizer。 +- 所谓 lower-to-upper interval 的 upper endpoint 只是若干 generic heuristics + 的最好结果,并不能有意义地 bracket 真正 optimum。 +- 所有核心比例依赖单一 \(\tau=0.25\) 与 \(10^{-3}\) identifiability threshold, + 缺少敏感性分析。 +- 定理本身可能正确,但当前实证没有回答标题中的“实际能压到多小”。 + +### 什么情况可以重新进入五篇 + +- 将 RANK-\(r\)-COVER-GREEDY、DEGREE-LOSS-GREEDY 和直接 projector-loss + optimization 纳入同一 crossing audit; +- 在小图上给出 exact 或 certified optimum; +- 构造 feasibility-aware lower bound,限制为图中实际存在的边; +- 报告多组 \(\tau\) 和 identifiability threshold 下的完整曲线。 + +### 当前判断 + +它有一项定义清楚的理论下界,但论文当前最显眼的 10--100 倍 gap 更可能说明 +floor 和 tested heuristics 都不够强,而不是揭示真实 graph-subset complexity。 + +## 三篇的相对顺序 + +若只能从这三篇中恢复一篇: + +1. 首先重新考虑 `wsdm-05`,前提是 `wsdm-06` 条件推荐失败,且统计协议能够修复; +2. 其次考虑 `wsdm-12`,前提是能快速补上真正的 attainability attack; +3. 最后考虑 `wsdm-11`,因为它的核心混杂和贡献宽度都依赖新的 factorial/ + cross-collection experiments。 + +完整的八篇比较依据见 `WSDM2027_8_PAPER_SELECTION_GUIDE.md`。 diff --git a/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md b/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md new file mode 100644 index 00000000..66d6feda --- /dev/null +++ b/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md @@ -0,0 +1,159 @@ +# WSDM 2027:建议优先的五篇论文 + +更新时间:2026-08-18(PDT) + +## 结论 + +基于核心结论可信度、贡献新颖性、WSDM 契合度、证据完整性和当前投稿风险, +我建议优先保留以下五篇: + +1. `wsdm-03` +2. `wsdm-04` +3. `wsdm-06`(有条件推荐,Round 3 尚未交付) +4. `wsdm-09` +5. `wsdm-02` + +该选择针对“当前八篇中相对更值得投入投稿资源的五篇”,不是对录用概率的 +保证。内部自动评审不是 WSDM 官方评审,也不能单独作为去留依据。 + +## 1. `wsdm-03` + +### Title + +Computational Limits of Finite-Beam Generative Retrieval with Semantic IDs + +### 为什么优先 + +- Semantic ID、generative retrieval 和 beam search 都是非常直接的 WSDM 主题。 +- 论文把 representation error 与 finite-search error 精确分开,核心 + margin--multiplicity 机制清楚。 +- 理论、构造和 Amazon/MovieLens 机制实验形成了相对完整的闭环。 +- Sharpening 与 max-node 干预把 width-10 self-fidelity 从 53.29% 提升到 + 83.32%/95.82%,结果明确且容易解释。 +- 最新三位内部 reviewer 给出 5/6/5,最低 soundness 为 3/4。 + +### 投稿前必须处理 + +- 把“computational limits”严格限定为 canonical calibration 下的存在性和 + 机制结果,不要暗示 learned RQ trees 普遍需要线性 beam。 +- 明确 task utility 没有显著改善,主贡献是 search fidelity。 +- 尽可能补充 PAG/PRO 对照;若来不及,必须清楚解释缺失。 +- 收紧主文篇幅并修复标题/正文中比证据更宽的表述。 + +## 2. `wsdm-04` + +### Title + +Did the Judge See the Answer? A Crossed Dose–Response Audit of LLM Relevance Judgments + +### 为什么优先 + +- 50 个 TREC-COVID topics、两种 split、两种 derangement、三个 seeds、 + 四个模型和四个剂量组成了较强的全交叉设计。 +- Histogram-preserving zero-match wrong-label control 直接处理了 + topic-grade marginal 这个关键混杂。 +- Manipulation checks、arm decomposition 和 model heterogeneity 都有报告, + 证据链比一般 LLM judge audit 更完整。 +- LLM relevance judgment 与 IR evaluation 对 WSDM 高度相关。 +- 最新三位内部 reviewer 给出 5/6/5,最低 soundness 为 3/4。 + +### 投稿前必须处理 + +- 不要把 rising true-minus-wrong curve 写成正确 binding 单调增强;40-step + 增长有相当部分来自 wrong-label arm 变坏。 +- 将 true-vs-unadapted 与 wrong-vs-unadapted 分解放到核心结果中。 +- 明确 controlled LoRA susceptibility 不能诊断自然 pretraining contamination。 +- 若可行,增加 correctly labeled cross-topic control;否则将其列为最核心的 + 未识别替代解释。 + +## 3. `wsdm-06`(有条件推荐) + +### Title + +Tokenizers That Peek: Test-Set Leakage in Semantic-ID Generative Recommendation + +### 为什么优先 + +- Tokenizer fitting scope 是 semantic-ID recommendation 中具体、及时且容易 + 被社区忽略的泄漏面。 +- Clean/peek paired intervention 固定 histories、targets、candidates、 + architecture 和 seed,只改变 tokenizer interaction scope,识别逻辑清楚。 +- 三个 Amazon categories、两个 interaction-aware paths、15 seeds 和 + content-only exact-zero control 提供了可信的窄结论。 +- 主题同时覆盖 recommender systems、generative retrieval 和 evaluation + leakage,WSDM 契合度很高。 +- Round 2 三位内部 reviewer 给出 5/6/5,最低 soundness 为 3/4。 + +### 推荐条件 + +该论文目前仍在 Round 3,尚未交付。只有满足以下条件时才保留在五篇中: + +- P5-CID clean/peek released-stack 补跑完整结束; +- 不丢失 seed、不用不透明恢复值,结果和 provenance 可复核; +- 无论结果为正、为 null 或方向变化,终稿都按实际结果收紧 claim; +- PDF、摘要、评审分数和 CMT 材料在交付后同步更新。 + +### 如果条件不满足 + +若 Round 3 未按时完成、实验失败且无法形成可解释结果,或 released-stack +结果推翻当前中心 claim,则将 `wsdm-05` 作为第一替补重新比较。 + +## 4. `wsdm-09` + +### Title + +Information Before Scale: Sample and Rank Frontiers for Walsh Collaborative Filtering + +### 为什么优先 + +- Matching-coupled converse 和隐藏 assignment 的 logarithmic information + threshold 是八篇中较独特的理论贡献。 +- Exact finite rules、渐近结果和可计算审计使理论包具有一定完整性。 +- “先判断身份信息是否足够,再解释模型 scaling”是清晰、有传播性的观点。 +- 与另外几篇 audit papers 相比,它为五篇组合提供理论多样性。 +- 最新三位内部 reviewer 给出 6/6/5。 + +### 投稿前必须处理 + +- 统一 noisy revealed frontier 与主 clean-target risk 的定义。 +- 摘要中的 `0.964 vs 0.568` 必须明确属于 product-address benchmark,不能把它 + 当作 hidden signed-permutation 中心理论的直接实证。 +- 降低对弱 MF baseline 的依赖;至少补训练收敛证据,避免 400-update + under-optimization 成为替代解释。 +- 将外推限制在 dictionary-style synthetic family,不要包装成普遍工业 + recommendation scaling law。 + +## 5. `wsdm-02` + +### Title + +Risk-Sensitive Diversification Without an Oracle: Valid Certificates Need Not Identify Better Rankings + +### 为什么优先 + +- 理论定义和证明整体较严谨,最低 reviewer soundness 为 3/4。 +- 论文清楚区分 certificate validity、optimization 与 decision usefulness。 +- Matched minimax control、coverage diagnostics 和不利/弃权结果都有披露。 +- Search diversification、risk-sensitive ranking 和 evaluation methodology + 与 WSDM Web Search track 直接相关。 +- 与 `wsdm-05`、`wsdm-11`、`wsdm-12` 相比,当前中心结论的正确性风险较低。 + +### 投稿前必须处理 + +- 正面回应中心 regret construction 是否只是已知 robust-CVaR collapse 加 + 简单两排序例子;必须更清楚地界定新增理论。 +- 不要用 synthetic-prior acceptance 暗示真实 estimator 下方法有实用收益。 +- 将真实场景“全部不认证干预”明确作为主要发现,而不是附带 limitation。 +- 若无法补 full-support/calibrated-radius separation,应主动缩小 theorem claim。 + +## 五篇之间的资源优先级 + +若修改时间有限,建议按以下顺序投入: + +1. 完成并审计 `wsdm-06` Round 3,决定其推荐条件是否成立; +2. 修正 `wsdm-09` 的风险定义和 empirical-headline 对齐; +3. 收紧 `wsdm-04` 的 arm-decomposed dose claim; +4. 收紧 `wsdm-03` 的存在性范围和缺失 baseline 表述; +5. 重写 `wsdm-02` 的 novelty boundary 与 real-estimator headline。 + +完整的八篇比较依据见 `WSDM2027_8_PAPER_SELECTION_GUIDE.md`。 From de85c319ff68f523981a712ebd0cd78b711b8aad Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Tue, 18 Aug 2026 00:15:55 -0700 Subject: [PATCH 13/18] Consolidate WSDM registration materials by priority Co-authored-by: Cursor --- .../WSDM2027_8_PAPER_SELECTION_GUIDE.md | 395 ------------------ .../WSDM2027_CMT_READY_TITLES_ABSTRACTS.md | 246 ----------- .../WSDM2027_DEPRIORITIZED_3_PAPERS.md | 162 ++++--- .../WSDM2027_LATEST_3_DELIVERED_CMT_READY.md | 105 ----- .../wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md | 241 ++++++----- 5 files changed, 214 insertions(+), 935 deletions(-) delete mode 100644 docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md delete mode 100644 docs/notes/wsdm2027/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md delete mode 100644 docs/notes/wsdm2027/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md diff --git a/docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md b/docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md deleted file mode 100644 index 5377ca03..00000000 --- a/docs/notes/wsdm2027/WSDM2027_8_PAPER_SELECTION_GUIDE.md +++ /dev/null @@ -1,395 +0,0 @@ -# WSDM 2027 八篇论文选择指南 - -更新时间:2026-08-18(PDT) - -## 这份文档怎么用 - -目标是从八篇论文中选出五篇优先投稿、三篇暂不优先。本文不替最终决策者 -直接勾选 5/3,而是说明每篇论文在做什么、最强卖点、最可能的拒稿原因, -以及哪些补充证据会改变判断。 - -需要特别注意: - -- 下文引用的是内部自动评审,不是 WSDM 官方评审。 -- 自动评审采用通用顶会式严格标准,不能只看最低分决定去留。 -- `wsdm-06` 仍在 Round 3,当前判断是暂定的;其 P5-CID 补跑可能显著改变 - 论文质量判断。 -- “质量好”不等于结果为正。严谨、重要且结论清楚的负结果也可能是好论文。 -- 真正需要判断的是:核心结论是否可信、贡献是否足够新、是否适合 WSDM、 - 以及剩余问题能否在投稿前修复。 - -## 八篇论文快速地图 - -| ID | 一句话内容 | 当前最强点 | 当前最大风险 | 内部面板 | -|---|---|---|---|---| -| `wsdm-02` | 研究估计意图先验时,稳健风险证书为何可能有效却不能选出更好的排序 | 数学严谨,负结果和匹配控制诚实 | 中心反例可能过于直接,真实估计器场景全部弃权 | 4/10,soundness 3/4 | -| `wsdm-05` | 用四道门审计扩散推荐器是否值得蒸馏成一步模型 | 全目录、九种子、延迟与多种控制都较完整 | 主要结论依赖自建 teacher;统计协议还有冲突 | 4/10,soundness 2/4 | -| `wsdm-09` | 在 Walsh 协同过滤模型中分离“输出秩不足”和“身份信息不足” | 匹配耦合 converse 和有限样本理论有技术内容 | 高度合成;经验 headline 与中心理论模型没有完全对齐 | 5/10,soundness 2/4 | -| `wsdm-11` | 测试弱结果卡重复查询词是否诱导 LLM selector 误选 | 配对设计、轮换和多重校正较规范 | 重复词与删除 filler 混杂,载体人工且贡献较窄 | 4/10,soundness 3/4 | -| `wsdm-12` | 给出保留推荐图谱子空间所需原始边数的谱下界 | 问题定义精确,定理和适用边界清楚 | 下界很松,上界只是弱启发式 witness,尚未逼近真正最优值 | 4/10,soundness 2/4 | -| `wsdm-03` | 解释 semantic-ID 生成检索中有限 beam 如何丢失模型自己的精确排序 | 理论与机制实验对应较好,主题非常契合 WSDM | 最坏情形是构造的;缺标准 Transformer 与 PAG/PRO 对照 | 5/10,soundness 3/4 | -| `wsdm-04` | 审计 LLM judge 接触 relevance label 后是否学习 passage-grade binding | 50 topics 的全交叉、直方图保持负控制很扎实 | 40-step 增长部分来自错误标签伤害,尚不能说明自然污染 | 5/10,soundness 3/4 | -| `wsdm-06` | 审计 semantic-ID tokenizer 使用测试期交互造成的指标泄漏 | clean/peek 配对干净,主题及时且实际风险明确 | 终稿未完成;已完成证据主要来自简化 tokenizer+GRU | 5/10,soundness 3/4(Round 2,暂定) | - -## 1. `wsdm-02` - -### 它在做什么 - -论文研究风险敏感搜索多样化中的一个基本问题:意图先验不是 oracle 给定, -而是从数据中估计时,一个统计上有效的 robust-CVaR/VRisk 证书,是否真的 -能帮助系统选择更好的 ranking。 - -核心结论是:不一定。论文给出先验误差对风险的精确敏感度界,说明常见 -置信半径会使 robust CVaR 退化成 minimax,并构造“证书覆盖正确、但决策 -后悔接近 1”的例子。实验审计 NTCIR、TREC、MIMICS 和 MovieLens,真实 -估计器设置基本都选择弃权。 - -### 为什么可能值得选 - -- 理论定义、证明和 claim boundary 比较严谨。 -- 能明确区分“证书有效”“目标优化正确”和“决策有用”三个概念。 -- 匹配 minimax control 和负结果披露较诚实。 -- 对 Web Search、diversification 和评测方法有直接 WSDM 契合度。 - -### 为什么可能不选 - -- 中心 near-unit-regret 构造依赖饱和后目标退化为 minimax;评审认为它可能 - 只是已知 robust-CVaR collapse 加一个简单两排序例子,新增理论量有限。 -- 最强反例使用边界先验,尚未证明 full-support 且经过实际校准半径时仍有 - 同样强的 separation。 -- 真实估计器场景没有一次成功干预;论文更像“该方法为什么不工作”的诊断, - 而不是可用的新决策方法。 - -### 选择它时应接受的定位 - -把它当作一篇理论化的负结果/评测审计论文,而不是一种能提升搜索效果的新 -算法。若你的组合需要一篇严谨的 search diversification theory paper, -它有价值;若你优先要明显的实证收益或工具可用性,它的风险较高。 - -## 2. `wsdm-05` - -### 它在做什么 - -论文提出扩散推荐器一步部署的“四道门”: - -1. 多步 teacher 本身是否足够强; -2. 多步采样是否真的优于一步 DDIM; -3. 一步 student 是否保留 teacher; -4. 质量和延迟合起来是否有部署价值。 - -在 MovieLens-1M 和 Steam 的 common harness 上,SASRec 在全部主要比较中 -优于 audited teachers,DDIM-1 也几乎总是优于多步 endpoint。Endpoint -regression 有时保留平均指标,但 top-10 set identity 最高只有 20.5%。 - -### 为什么可能值得选 - -- 问题实用,推荐系统和高效生成模型都符合 WSDM。 -- 全目录评测、九个 held-out seeds、训练曲线、延迟和参数匹配控制较完整。 -- 将 teacher competence、iterative benefit、fidelity 和 serving value - 分开是一个清楚、可复用的审计框架。 -- 论文没有把不利结果包装成算法胜利。 - -### 为什么可能不选 - -- 最关键的负结果来自自建 DiffuRec-style/DreamRec-style checkpoints, - 不一定代表官方实现或现代加速推荐器。 -- 原生复现只覆盖 Amazon Beauty;TA-Rec port 失败,FlowRec/CDRec 没有成为 - 有效主对照。 -- 正文中 96-test family 与附录 20-test family 的描述冲突;5,000 bootstrap - 对极端 Bonferroni quantile 也可能不足。 -- 论文没有展示任何一个真实系统完整通过四道门,贡献更像 checklist 加 - checkpoint-specific negative evidence。 - -### 选择它时应接受的定位 - -把它当作“如何审计扩散推荐部署 claim”的方法论文,而不是一步蒸馏算法。 -若无法在投稿前消除统计协议冲突并补强官方 checkpoint 外部验证,拒稿风险 -会主要集中在 external validity。 - -## 3. `wsdm-09` - -### 它在做什么 - -论文用一个公开 Walsh 字典构造协同过滤问题,区分两个资源: - -- 模型输出的 rank/capacity; -- 识别用户对应哪个 latent signature 所需的信息量。 - -当 user-to-row assignment 已知时,固定精度只需常数量级样本;隐藏同一个 -assignment 后,样本阈值上升到对数级。论文给出有限样本 frontier、 -matching-coupled posterior 和带噪声的一阶阈值,并比较一个训练得到的矩阵 -分解模型与信息论 frontier。 - -### 为什么可能值得选 - -- 匹配约束只改变有限样本、不移动一阶阈值的 converse 是较清楚的新技术点。 -- 有 exact finite rules、渐近结果和可计算审计,理论包比较完整。 -- “先判断信息是否足够,再讨论模型 scale”是一个容易传播的观点。 -- 论文对合成范围和非工业 scaling law 的限制写得较诚实。 - -### 为什么可能不选 - -- noisy revealed frontier 与主风险定义之间存在不完全一致,属于需要优先 - 修正的 correctness 问题。 -- 摘要中的 `0.964 vs 0.568` MF gap 来自 product-address benchmark, - 不是中心 hidden signed-permutation 模型。 -- MF 最多只训练 400 updates,甚至差于 observed-zero+SVD,无法排除只是 - under-optimization。 -- 所有核心证据都在特殊 Walsh 家族中,尚未展示如何在真实推荐数据上运行 - “information before scale”诊断。 - -### 选择它时应接受的定位 - -这是一篇偏理论、偏合成模型的论文。若组合需要理论多样性,它比纯经验审计 -更独特;若你要求真实数据上的直接决策价值,则必须对其外推保持保守。 - -## 4. `wsdm-11` - -### 它在做什么 - -论文测试一个具体 display intervention:在低相关结果卡的固定 metadata -区域重复查询词,是否会让 deterministic LLM selector 更容易误选该卡片。 -在 ANTIQUE 的 493 个 paired slates 和四个 confirmatory models 上,重复 -反而使误选率下降 2.3--6.2 个百分点;一句 warning 没有改变这个效果。 - -### 为什么可能值得选 - -- 配对卡片、完整 rank rotation、固定高相关卡和多重校正使主比较较干净。 -- 四个 selector 方向基本一致,统计结果容易解释。 -- 明确不声称 human clicks,也主动降级了没有独立 regrade 的 rewrite 结果。 -- 主题属于 LLM search interaction/evaluation,WSDM fit 很直接。 - -### 为什么可能不选 - -- “重复查询词”同时替换掉 generic filler,改变了流畅度、词汇多样性和 - spamminess;当前实验不能把效果归因于 frequency 本身。 -- 只报告差值,没有完整 arm-level absolute false-choice rates。 -- 只有一个人工 carrier、一个 repetition intensity 和一个 benchmark。 -- 结果是“明显 stuffing cue 会被模型惩罚”,可能被认为贡献窄且不意外。 -- warning 实验没有在原来真正产生 lure 的 treatment 上交叉,不能解释旧结果。 - -### 选择它时应接受的定位 - -这是八篇里最窄的 controlled behavior audit 之一。优点是容易读、结论清楚; -缺点是机制混杂和贡献广度很难仅靠改写解决,通常需要新的 factorial control。 - -## 5. `wsdm-12` - -### 它在做什么 - -论文研究:为了保持推荐图 normalized biadjacency 的 rank-\(r\) projector, -一个 unweighted、same-identity edge subset 至少需要保留多少原始边。 - -论文把 leverage support 下界和 component-multiplicity/identifiability 下界 -结合起来,并在 block-complete 图家族上给出接近可达的构造。在三个真实推荐 -图上,理论 floor 很低,但目前找到的可识别 witness 需要多得多的边。 - -### 为什么可能值得选 - -- access model、谱目标和不覆盖的 channel 定义得很清楚。 -- 定理与 block-complete 构造组成完整、可检查的理论结果。 -- 实验不隐藏 nonidentifiable checkpoints、非单调 crossing 或不利结果。 -- 推荐图压缩和图谱分析与 WSDM 有合理契合。 - -### 为什么可能不选 - -- 理论 floor 忽略真实边可实现性和 projector orientation,实际很松。 -- “上界”只来自 generic heuristics;论文自己定义的 greedies 和直接优化 - \(L_{\mathrm{sub}}\) 的搜索没有进入主 crossing audit。 -- 因此目前的 10--100 倍 gap 不能说明真正 optimum 离 floor 很远,只能说明 - 已测试 heuristics 较弱。 -- 结论依赖单一 \(\tau=0.25\) 和 \(10^{-3}\) identifiability threshold, - 缺少 sensitivity。 - -### 选择它时应接受的定位 - -把它当作一个 valid exclusion lower bound,而不是已经解决“图能压到多小”。 -如果无法补强直接优化 witness 或 feasibility-aware floor,标题问题与实际 -回答之间会存在明显落差。 - -## 6. `wsdm-03` - -### 它在做什么 - -论文研究 semantic-ID generative retrieval 中的有限 beam search error。 -它先证明任何 dense score 都能被 canonical trie factorization 精确表示; -但 prefix 的 log-mass 等于最佳后代分数加 effective multiplicity,因此有限 -beam 可能丢掉真实最优叶子。论文给出固定 alphabet 下需要线性 beam width -的构造,并在 MovieLens 和 Amazon Beauty 上测试 sharpening、max-node -training/scoring 等干预。 - -### 为什么可能值得选 - -- 将 representation error 与 search error 精确分开,问题定义清楚。 -- margin--multiplicity boundary 和 exact beam threshold 可检查、可解释。 -- Amazon 实验采用 matched initialization/minibatches、多个 seeds 和 - training-by-scoring factorial,机制验证较系统。 -- `53.29% -> 83.32%/95.82%` 的 self-fidelity 改善是清楚、容易传播的结果。 -- Semantic ID、generative retrieval、beam search 都是很强的 WSDM 主题。 - -### 为什么可能不选 - -- 线性 beam lower bound 是 adversarial trie 的 existence result,尚未证明 - 学到的 RQ trees 经常接近该 hard regime。 -- 实验主体是 GRU/local edge decoder;T5 control 很弱,不能代表标准 - Transformer generative retriever。 -- 没有 PAG/PRO 等最近的 lookahead/retention baseline。 -- task utility intervals 重叠;主要收益是模型对自己 exhaustive ranking 的 - fidelity,而不是推荐质量。 -- 标题中的“computational limits”可能比证据覆盖范围更广。 - -### 选择它时应接受的定位 - -它最适合被定位为“存在性理论 + learned-tree mechanism + fidelity -interventions”,而不是普遍的生成检索 lower bound。若你重视主题热度、理论 -与实验闭环,它值得重点阅读;若你要求最终任务收益,则需降低优先级。 - -## 7. `wsdm-04` - -### 它在做什么 - -论文测试 LLM relevance judge 在接触 passage-grade pairs 后,是否学习了 -具体 passage-grade binding,而不只是 topic 的 grade marginal。 - -实验覆盖全部 50 个 TREC-COVID topics,每个 topic 的 train/held-out 都含 -三档 grade;true labels 与保持同一 passage 和 grade histogram 的 zero-match -wrong-label cycles 对比,并完整交叉两种 split、两种 derangement、三个 seeds、 -四个模型和四个训练剂量,共 3,600 条训练 trajectory。 - -### 为什么可能值得选 - -- histogram-preserving negative control 直接处理了最重要的 marginal confound。 -- 全交叉设计、剂量轨迹、manipulation checks 和模型异质性报告比较完整。 -- 所有四个 model-specific intervals 都为正,主结果不是单个模型偶然现象。 -- LLM judge、IR evaluation、benchmark contamination 都高度符合 WSDM。 -- 对“不是自然预训练污染、不是 ranking utility”的边界说明很诚实。 - -### 为什么可能不选 - -- 40-update true-minus-wrong 增长很大一部分来自 wrong-label arm 变坏; - true arm 在 20 updates 后并未继续上升,不能简单称为“正确 binding 随剂量 - 单调增强”。 -- 没有 correctly labeled cross-topic control,不能排除一般 relevance-task - fine-tuning,而非 topic-specific passage binding。 -- 只有一个 biomedical collection、一种 raw prompt、一套 LoRA 配置和四个 - 小模型。 -- 不能据此诊断自然 pretraining contamination,也没有证明会改变 system ranking。 -- 相对 controlled memorization 既有工作,新增点主要是 IR-specific control - refinement,novelty 可能被认为增量式。 - -### 选择它时应接受的定位 - -应以“controlled relevance-label exposure audit”投稿,而不是声称发现真实 -benchmark contamination。论文设计强于其外部结论;是否选择主要取决于你 -是否看重 evaluation methodology 本身。 - -## 8. `wsdm-06`(暂定) - -### 它在做什么 - -论文审计 semantic-ID recommender 的 tokenizer fitting scope。如果协同特征 -使用了 cutoff 之后的交互,测试期信息会进入 item codes,即使 generator 的 -训练数据本身保持干净,也可能抬高最终指标。 - -已完成的 Round 2 在三个 Amazon categories、两个 interaction-aware paths -和 15 seeds 上做 clean/peek 配对;训练 histories、targets、candidates、 -architecture 和 seed 都固定,只改变 tokenizer interaction scope。内容型 -tokenizer 是精确的零变化控制。 - -### 为什么可能值得选 - -- 威胁模型具体、现实,且切中 semantic-ID recommendation 热点。 -- clean/peek paired intervention 的识别逻辑比跨模型比较更强。 -- 15 seeds、full-catalog evaluation、content-only negative control 和多种 - baseline sensitivity 提供了较扎实的窄结论。 -- 论文没有把 release provenance 不明直接说成已发生泄漏。 -- 如果当前 P5-CID released-stack 补跑成功,会直接解决评审最核心的 - external-validity 质疑。 - -### 为什么可能不选 - -- 当前终稿尚未完成,Round 3 的 released-stack 实验结果未知。 -- Round 2 的正结果主要来自 residual k-means tokenizer 加小型 GRU,尚不能 - 代表 TIGER/P5/LETTER 类真实 stack。 -- 已审计的四个 release 中没有一个被证明存在污染,实际 prevalence 未建立。 -- target-edge localization 不完整,随机移除约一半会碰到 targets,只有一个 - cell 在有限 null 的最小 p 值处显著。 -- user-level inference 还面临所有用户共同拟合同一 tokenizer 所产生的依赖。 - -### 选择它时应接受的定位 - -在 Round 3 完成前,不应把它与七篇 delivered papers 当作同等成熟的候选。 -若 P5-CID clean/peek replication 成功、结果稳定且终稿收紧 claim,它的上限 -很高;若补跑为 null、失败或无法在 deadline 前整理完成,应显著提高风险权重。 - -## 建议怎样自己完成 5/3 选择 - -### 第一步:先做 hard-veto,而不是先看平均分 - -每篇先回答三个问题: - -1. 核心结论有没有未解决的 correctness/identification 问题? -2. 最大贡献是否需要全新大实验才能成立? -3. 在投稿截止前,是否能把最可能的拒稿理由写清或修掉? - -若任意一项答案是“问题严重且无法按时修复”,优先进入三篇暂不投稿候选。 - -### 第二步:按下面权重自己打 1--5 分 - -\[ -\text{总分} -=0.30\times\text{核心可信度} -+0.25\times\text{贡献新颖性} -+0.20\times\text{WSDM 契合度} -+0.15\times\text{证据与外部有效性} -+0.10\times\text{投稿前可修复性}. -\] - -| ID | 核心可信度 1--5 | 新颖性 1--5 | WSDM fit 1--5 | 外部有效性 1--5 | 可修复性 1--5 | 加权总分 | 最终选择 | -|---|---:|---:|---:|---:|---:|---:|---| -| `wsdm-02` | | | | | | | | -| `wsdm-05` | | | | | | | | -| `wsdm-09` | | | | | | | | -| `wsdm-11` | | | | | | | | -| `wsdm-12` | | | | | | | | -| `wsdm-03` | | | | | | | | -| `wsdm-04` | | | | | | | | -| `wsdm-06` | | | | | | | | - -### 第三步:在同类论文中做 head-to-head - -不要只按八篇总排序,还应做以下直接比较: - -- **Semantic ID:** `wsdm-03`(search mechanism)对 `wsdm-06` - (evaluation leakage)。前者已交付、理论闭环更完整;后者现实问题更强, - 但仍在等待关键 released-stack 结果。 -- **LLM/IR audit:** `wsdm-04`(label-binding exposure)对 `wsdm-11` - (query-term repetition)。前者设计更重、更广;后者更简单易读,但机制 - 混杂和贡献宽度风险更高。 -- **推荐理论:** `wsdm-09`(information frontier)对 `wsdm-12` - (spectral subset floor)。前者技术新意可能更强但更合成;后者问题更直接, - 但当前 lower-to-witness gap 不够有信息量。 -- **负结果审计:** `wsdm-02`(robust ranking certificate)对 `wsdm-05` - (diffusion deployment gates)。前者理论更干净但 novelty/actionability - 受质疑;后者实验更大,但 official-system external validity 和统计协议风险更高。 - -### 第四步:不要在 `wsdm-06` 完成前锁定最后一个名额 - -`wsdm-06` 的 P5-CID clean/peek 补跑是八篇中最可能改变相对排序的单项结果。 -建议先确定四个稳定候选和两个明确高风险候选,最后一个优先名额与最后一个 -淘汰名额在该结果和终稿审计完成后再定。 - -## 最后检查清单 - -最终选择五篇前,对每篇勾选: - -- [ ] 一句话贡献能在 20 秒内讲清楚。 -- [ ] 摘要 headline 与真正被实验/定理识别的 estimand 一致。 -- [ ] 最强 reviewer concern 在正文中有直接答案,而不只是 limitation。 -- [ ] 主结果不是来自未完成、performance-gated 或弱 baseline 的比较。 -- [ ] 与已有工作的差异不是只靠措辞,而有 theorem、control 或新 evidence。 -- [ ] WSDM audience 能清楚理解它与 search/mining/recommendation 的关系。 -- [ ] 论文在截止前可以达到模板、页数、匿名性和 artifact 完整要求。 - -满足项最少的三篇,才应进入“暂不优先”;不要简单把内部面板最低分的三篇 -直接淘汰。 diff --git a/docs/notes/wsdm2027/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md b/docs/notes/wsdm2027/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md deleted file mode 100644 index 72cf5f46..00000000 --- a/docs/notes/wsdm2027/WSDM2027_CMT_READY_TITLES_ABSTRACTS.md +++ /dev/null @@ -1,246 +0,0 @@ -# WSDM 2027 CMT: Titles and Abstracts - -Updated from all eight current WSDM manuscripts on August 17, 2026. Every paper -now has a plain-text, copy-paste-ready title and abstract below. Papers 1--7 are -delivered. Paper 8 (`wsdm-06`) is still in Round 3, so its title is ready but -its abstract is a current snapshot that should be refreshed after delivery. - -These are concise CMT versions rather than raw LaTeX: commands have been -removed and each abstract retains the central claims and key quantitative -results. The review sections are internal automated-review results, not -official WSDM reviews; do not paste them into CMT. - -## 1. wsdm-02 - -### Title - -Risk-Sensitive Diversification Without an Oracle: Valid Certificates Need Not Identify Better Rankings - -### Subject Areas - -- **Primary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Web Search → Query analysis and query processing -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -Does a valid robust tail-risk certificate identify a better diversified ranking when the intent prior is estimated? Not necessarily. For finite-intent VRisk, fixed-ranking L1 error ε changes risk by at most min{1, ε/(2β)}, sharply, while a standard count radius can collapse robust CVaR to minimax. Even with a perfectly estimated prior and valid coverage, the resulting saturated minimizer and upper-bound gate can incur regret arbitrarily close to one. This separates certificate validity from decision usefulness. - -A frozen-proposal audit across retrieval and recommendation benchmarks supports the distinction. Exact same-prior comparison accepts 17.9% of proposals in the primary NTCIR synthetic-prior experiment, while the evaluated real-estimator settings certify no intervention and matched robust-versus-minimax effects are mostly negligible. Validity, informativeness, and decision benefit are therefore distinct properties. - -### Latest Automated Review - -Round 6 panel score: **4/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | -| Cursor Grok 4.5 | 4/10 | 3/4 | 2/4 | 2/4 | Weak reject | - -## 2. wsdm-05 - -### Title - -When Does One Step Suffice? A Four-Gate Audit of Diffusion Recommendation Distillation - -### Subject Areas - -- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -A one-call deployment claim bundles four different statements: the teacher is competent, iterative sampling helps, the student preserves the teacher, and the result has serving value. We introduce a four-gate audit that tests these claims separately and scopes every decision to a checkpoint and protocol. - -Using a common full-catalog harness over MovieLens-1M and Steam, together with a native Amazon Beauty DiffuRec reproduction, we compare diffusion teachers, iterative sampling, one-pass controls, and endpoint regression under matched evaluation. Utility-tuned SASRec outperforms the audited teachers in all 16 metric-level comparisons, and DDIM-1 outperforms the multi-step endpoint in 15 of 16; the remaining comparison is inconclusive. Endpoint regression sometimes preserves aggregate utility under simultaneous noninferiority tests, yet exact teacher top-10 set identity never exceeds 20.5%. The contribution is a falsifiable deployment contract and checkpoint-level evidence, not a broad claim that one step or many steps universally wins. - -### Latest Automated Review - -Round 6 panel score: **4/10 · soundness 2/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | -| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | - -## 3. wsdm-09 - -### Title - -Information Before Scale: Sample and Rank Frontiers for Walsh Collaborative Filtering - -### Subject Areas - -- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -Empirical recommender scaling curves do not distinguish insufficient output rank from insufficient information to identify a user's latent preference. We separate these resources on a synthetic Walsh collaborative-filtering family. For a revealed user-Walsh assignment, we derive an exact finite minimax rank rule. We then withhold that assignment while keeping the same signed permutation of the Walsh table. - -Although the posterior now couples users through perfect matchings, we derive its exact finite conditional frontier and show that removing the assignment raises the fixed-accuracy sample scale from constant to logarithmic. Under binary-symmetric label noise, consistency has the sharp first-order threshold NpCq = log2 N, where Cq = 1 - h2(q). On matched sparse transcripts at N = 128, a validation-selected rank-N/2 matrix-factorization model reaches risk 0.964 against the 0.568 information frontier, exposing a substantial gap between optimization and information limits. These are architecture-relative results for a public Walsh dictionary, not an industrial scaling law. - -### Latest Automated Review - -Round 6 panel score: **5/10 · soundness 2/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 6/10 | 3/4 | 3/4 | 3/4 | Weak accept | -| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | -| Cursor Grok 4.5 | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | - -## 4. wsdm-11 - -### Title - -Query-Term Repetition Repels LLM Selectors from Weak Result Cards: A Controlled Audit - -### Subject Areas - -- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining -- **Secondary:** Web Search → Search user behavior and log analysis; Search user interfaces and interaction -- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models -- **Secondary:** Web Search → Query analysis and query processing -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -Implicit feedback is useful only when selection remains aligned with landing-page relevance. We audit one proposed surface intervention for deterministic LLM selectors: replacing generic metadata with repeated query terms in weak result cards. In paired result-card displays, lower-relevance cards contain either one copy or repeated copies of the same query terms, while answer content, landing page, judgment, card length, unique term set, topic, rank schedule, and all higher-relevance cards remain fixed. - -Across four confirmatory selectors, repetition reduces false-choice rates by 2.3–6.2 percentage points, with Holm-adjusted p < .001 in every case. A short warning about repeated query words produces no detectable interaction with this effect and therefore does not explain an earlier hardened-prompt contrast. Exact frequency does not explain an earlier synthetic same-query effect that also changed topic and plausibility. We make no human-click claim, and we treat an earlier answer-rewrite audit without independent regrades as conditional evidence only. - -### Latest Automated Review - -Round 5 panel score: **4/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 5/10 | 3/4 | 2/4 | 2/4 | Weak reject | -| Cursor Grok 4.5 | 4/10 | 3/4 | 3/4 | 2/4 | Weak reject | - -## 5. wsdm-12 - -### Title - -How Small Can You Go? Spectral Bounds for Recommendation Subsets - -### Subject Areas - -- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Web Mining and Content Analysis → Large-scale graph analysis -- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -How many original-identity interactions are necessary—and how many are actually sufficient—to preserve a collaborative-filtering propagation subspace? We separate these questions. For a source graph's rank-r normalized-biadjacency frame, every unweighted edge subset incurs joint projector loss at least the source leverage mass outside its retained user and item coordinates. Requiring an identifiable cutoff adds a component-multiplicity floor. The combined floor is asymptotically attainable on a block-complete family. - -Real recommendation graphs are different. We audit three public graphs at ranks 2, 4, and 8. At rank eight, the necessary floors retain at most 2.1% of edges, while the first observed identifiable witnesses require at least 33%. A connectivity-preserving construction also remains far above the floor. The theorem therefore rules out ultra-small subsets but does not predict the attainable projector-collapse budget on these graphs. We report a lower-to-upper interval rather than call the necessary floor tight. The result applies to unweighted same-identity subsets, not synthetic identities, reweighted sparsifiers, arbitrary finite codes, or ranking utility. - -### Latest Automated Review - -Round 8 panel score: **4/10 · soundness 2/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | - -## 6. wsdm-03 - -### Title - -Computational Limits of Finite-Beam Generative Retrieval with Semantic IDs - -### Subject Areas - -- **Primary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models -- **Secondary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search -- **Secondary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis - -### Abstract - -Semantic-ID retrieval replaces corpus-wide scoring with autoregressive trie search, mixing representation and search error. For canonical Gibbs distillation, we separate them exactly: every dense score vector has a unique positive trie-local factorization with the same exhaustive leaf order, while prefix log-mass equals best-descendant score plus log effective multiplicity. This yields an exact margin-mass boundary. For every fixed alphabet K and width b, an injective N = bK + 1 family makes all widths through b lose the unique optimum. The limit is conditional on this calibration, not universal over learned trees. - -We then jointly train item tables, history GRUs, and rank-32 local decoders under bitwise-matched initialization. On Amazon Beauty with 12,101 items, five seeds, and 1,024 users, canonical exhaustive retrieval retains 67.35% teacher top-10 overlap, but width 10 preserves only 53.29% of its own exact top-10 set. Rank-preserving τ/2 sharpening raises this to 83.32% while retaining 67.03% exhaustive teacher overlap; exact max-node training and direct scoring reach 95.82%. Task intervals overlap, so the evidence establishes a finite-search mechanism and fidelity interventions, not a recommendation gain, production prevalence, or superiority over ANN, lookahead, or retention methods. - -### Latest Automated Review - -Round 10 panel score: **5/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 2/4 | 3/4 | Weak accept | -| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | - -## 7. wsdm-04 - -### Title - -Did the Judge See the Answer? A Crossed Dose–Response Audit of LLM Relevance Judgments - -### Subject Areas - -- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency -- **Secondary:** Foundation Models and Agentic Systems → LLMs and multimodal foundation models for web tasks - -### Abstract - -If relevance labels leak into an LLM judge, improved agreement can arise from learning passage-grade bindings or merely from absorbing a topic's label marginal. Held-out passages alone do not separate these mechanisms. We run a second-collection replication on all 50 TREC-COVID topics, constructing every train and held-out set to contain three grades. True-label exposure is compared with two zero-match wrong-label cycles that preserve the same passages and grade histogram. Two disjoint splits, two derangements, three optimizer seeds, and four fixed open judges yield 3,600 training trajectories, each measured after 5, 10, 20, and 40 updates. - -At the prespecified 40-update endpoint, the held-out true-minus-wrong probability-weighted agreement contrast is 0.078 (95% CI [0.061, 0.094], p < 0.0001). The contrast grows from 0.011 at five updates to 0.078 at forty, with a log-dose slope of 0.022 [0.017, 0.027]. All four unadjusted model-specific intervals exclude zero, but effects range from 0.007 for SmolLM2-1.7B to 0.121 for Qwen2.5-7B, and the model-by-condition interaction is significant. These results establish dose-dependent passage-binding susceptibility under controlled LoRA exposure, not natural pretraining contamination, benchmark membership, or a system-ranking consequence. - -### Latest Automated Review - -Round 7 panel score: **5/10 · soundness 3/4 · weak reject**. The panel uses the lowest reviewer rating as its decision score. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | -| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | - -## 8. wsdm-06 - -### Title - -Tokenizers That Peek: Test-Set Leakage in Semantic-ID Generative Recommendation - -### Subject Areas - -- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models -- **Secondary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -Semantic IDs replace atomic item labels with learned token sequences, making the tokenizer part of a recommender's fitted state. If its collaborative features consume held-out interactions, test labels can alter item-to-code assignments even when generator training remains clean. We isolate this channel under a global timeline: examples, targets, candidates, architecture, and seed are paired, and only tokenizer interaction scope changes. - -Under equal-budget validation tuning, peeking raises Recall@10 by 0.589 percentage points (95% paired-seed interval [0.535, 0.642]) across three Amazon categories, two interaction-aware paths, and 15 seeds; this is 25.1% of clean performance. The content control changes by exactly 0.000, while a non-discretized Continuous-SVD control has an even larger positive gap, so the channel does not require tokenization. Removing scored target edges in all six cells leaves a macro interval spanning zero. The target component exceeds the pooled matched-removal null, but not its 90%-target-overlap stratum; the evidence supports overlap sensitivity, not exact-edge uniqueness. An immutable audit additionally finds one documented test-selected collaborative-feature path whose shipped tensor lineage is unresolved; we do not infer impact on a published score or prevalence. - -### Latest Automated Review - -Round 2 panel score: **5/10 · soundness 3/4 · weak reject**. Round 3 is still running, so this score and abstract are provisional. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 3/4 | Weak accept | -| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | diff --git a/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md b/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md index edb3e353..39e724f8 100644 --- a/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md +++ b/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md @@ -1,134 +1,122 @@ -# WSDM 2027:当前建议暂不优先的三篇论文 +# WSDM 2027 CMT Registration: Remaining Three Papers -更新时间:2026-08-18(PDT) +This file contains the three papers currently not recommended for priority +submission. The titles, abstracts, and subject areas are plain-text, +copy-paste-ready CMT registration fields if these papers are registered. -## 结论 +- Enter authors, conflicts, and other administrative metadata separately. +- Internal automated reviews are included only for selection context; do not + paste them into CMT. -在必须从八篇中只保留五篇的约束下,我建议当前暂不优先: +## Registration Summary -1. `wsdm-05` -2. `wsdm-11` -3. `wsdm-12` +| ID | Status | Final round | Primary subject area | +|---|---|---:|---| +| `wsdm-05` | Delivered | 6 | Web Mining and Content Analysis → Web recommender systems and algorithms | +| `wsdm-11` | Delivered | 5 | Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining | +| `wsdm-12` | Delivered | 8 | Web Mining and Content Analysis → Web recommender systems and algorithms | -“暂不优先”表示它们相对于另外五篇具有更难在投稿前消除的核心风险,不表示 -研究工作没有价值,也不表示内部自动评分就是最终结论。 +## 1. wsdm-05 -## 1. `wsdm-05` +**Status:** Delivered, Round 6 ### Title When Does One Step Suffice? A Four-Gate Audit of Diffusion Recommendation Distillation -### 论文在做什么 +### Subject Areas -论文用 teacher competence、iterative benefit、one-call fidelity 和 serving -value 四道门,审计扩散推荐器是否值得蒸馏成一步模型。实验发现 audited -teachers 普遍不如 SASRec 和 DDIM-1;endpoint regression 有时保留平均指标, -但无法复制 teacher 的具体 top-10 lists。 +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency -### 为什么当前暂不优先 +### Abstract -- 主要负结论来自 common-harness 的 DiffuRec-style/DreamRec-style teachers, - 不是经过验证的官方 checkpoints,容易被认为是 reimplementation artifact。 -- 原生 DiffuRec 只在 Amazon Beauty 上复现;现代 one-step 方法没有形成有效 - 的主对照。 -- 主文的 96-test family 与附录 20-test family 相互冲突,直接影响论文最重视 - 的 simultaneous decision counts。 -- 5,000 bootstrap resamples 对 96-test Bonferroni 极端 quantiles 可能不足。 -- 论文没有展示任何真实系统完整通过四道门,最终贡献主要是审计 checklist - 和 checkpoint-specific negatives。 +A one-call deployment claim bundles four different statements: the teacher is competent, iterative sampling helps, the student preserves the teacher, and the result has serving value. We introduce a four-gate audit that tests these claims separately and scopes every decision to a checkpoint and protocol. -### 什么情况可以重新进入五篇 +Using a common full-catalog harness over MovieLens-1M and Steam, together with a native Amazon Beauty DiffuRec reproduction, we compare diffusion teachers, iterative sampling, one-pass controls, and endpoint regression under matched evaluation. Utility-tuned SASRec outperforms the audited teachers in all 16 metric-level comparisons, and DDIM-1 outperforms the multi-step endpoint in 15 of 16; the remaining comparison is inconclusive. Endpoint regression sometimes preserves aggregate utility under simultaneous noninferiority tests, yet exact teacher top-10 set identity never exceeds 20.5%. The contribution is a falsifiable deployment contract and checkpoint-level evidence, not a broad claim that one step or many steps universally wins. -- 明确并修复 20/96-test protocol 冲突,重新生成稳定的 simultaneous intervals; -- 在官方/原生 DiffuRec、DreamRec 或 TA-Rec 类系统上完成至少一个可验证审计; -- 证明主要 Gate 1/2 结论不是弱 teacher search 或 harness instability 造成的。 +### Internal Automated Review — Do Not Paste into CMT -### 替补顺序 +Round 6 panel score: **4/10 · soundness 2/4 · weak reject**. -如果 `wsdm-06` Round 3 不能完成或其 released-stack 结果使中心 claim 不再成立, -`wsdm-05` 是当前三篇中的第一替补,因为其问题重要、实验投入大,而且部分统计 -问题仍可通过重新分析修复。 +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | +| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | -## 2. `wsdm-11` +## 2. wsdm-11 + +**Status:** Delivered, Round 5 ### Title Query-Term Repetition Repels LLM Selectors from Weak Result Cards: A Controlled Audit -### 论文在做什么 +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search user behavior and log analysis; Search user interfaces and interaction +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Web Search → Query analysis and query processing +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency -论文在 ANTIQUE 的弱结果卡中增加查询词重复,测试 deterministic LLM selector -是否更容易误选。四个模型上观察到的结果方向相反:重复使误选率下降 -2.3--6.2 个百分点。 +### Abstract -### 为什么当前暂不优先 +Implicit feedback is useful only when selection remains aligned with landing-page relevance. We audit one proposed surface intervention for deterministic LLM selectors: replacing generic metadata with repeated query terms in weak result cards. In paired result-card displays, lower-relevance cards contain either one copy or repeated copies of the same query terms, while answer content, landing page, judgment, card length, unique term set, topic, rank schedule, and all higher-relevance cards remain fixed. -- 核心 treatment 同时用重复查询词替换 generic fillers,改变了 fluency、 - lexical diversity 和 spamminess,尚未识别纯 frequency effect。 -- 只有一个人工 carrier、一个 repetition intensity 和一个 benchmark。 -- 没有完整报告每个 arm 的 absolute false-choice rates,实际效应大小难判断。 -- Warning 没有与原来真正产生 lure 的 same-query treatment 交叉,因此无法 - 支持对旧 hardened-prompt 结果的解释。 -- 在去掉未经独立 regrade 的 rewrite 结果后,剩余贡献是一项较窄且可能被认为 - 不意外的 synthetic display-cue negative finding。 +Across four confirmatory selectors, repetition reduces false-choice rates by 2.3–6.2 percentage points, with Holm-adjusted p < .001 in every case. A short warning about repeated query words produces no detectable interaction with this effect and therefore does not explain an earlier hardened-prompt contrast. Exact frequency does not explain an earlier synthetic same-query effect that also changed topic and plausibility. We make no human-click claim, and we treat an earlier answer-rewrite audit without independent regrades as conditional evidence only. -### 什么情况可以重新进入五篇 +### Internal Automated Review — Do Not Paste into CMT -- 增加 filler-preserving、non-query repetition 和多剂量 factorial controls; -- 报告所有模型与条件的 absolute arm levels; -- 在自然 snippets 或第二个 collection 上复现; -- 将 warning 与原 same-query lure treatment 直接交叉。 +Round 5 panel score: **4/10 · soundness 3/4 · weak reject**. -### 当前判断 +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 2/4 | 2/4 | Weak reject | +| Cursor Grok 4.5 | 4/10 | 3/4 | 3/4 | 2/4 | Weak reject | -三篇暂不优先论文中,它最需要新的实验才能解决核心 identification 与贡献宽度 -问题,单靠改写难以显著降低风险。 +## 3. wsdm-12 -## 3. `wsdm-12` +**Status:** Delivered, Round 8 ### Title How Small Can You Go? Spectral Bounds for Recommendation Subsets -### 论文在做什么 - -论文给出 unweighted、same-identity recommendation graph edge subset 保持 -rank-\(r\) normalized-biadjacency projector 时必须保留的边数下界,并在真实 -图上比较该 floor 与启发式找到的 first identifiable witnesses。 +### Subject Areas -### 为什么当前暂不优先 +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Large-scale graph analysis +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency -- 理论 floor 独立选择 user/item leverage support,忽略真实边可实现性和 - projector orientation,因此在真实图上非常松。 -- 主实验没有运行论文自己定义的 attainability greedies,也没有直接优化 - \(L_{\mathrm{sub}}\) 的 local search 或 exact/certified optimizer。 -- 所谓 lower-to-upper interval 的 upper endpoint 只是若干 generic heuristics - 的最好结果,并不能有意义地 bracket 真正 optimum。 -- 所有核心比例依赖单一 \(\tau=0.25\) 与 \(10^{-3}\) identifiability threshold, - 缺少敏感性分析。 -- 定理本身可能正确,但当前实证没有回答标题中的“实际能压到多小”。 +### Abstract -### 什么情况可以重新进入五篇 +How many original-identity interactions are necessary—and how many are actually sufficient—to preserve a collaborative-filtering propagation subspace? We separate these questions. For a source graph's rank-r normalized-biadjacency frame, every unweighted edge subset incurs joint projector loss at least the source leverage mass outside its retained user and item coordinates. Requiring an identifiable cutoff adds a component-multiplicity floor. The combined floor is asymptotically attainable on a block-complete family. -- 将 RANK-\(r\)-COVER-GREEDY、DEGREE-LOSS-GREEDY 和直接 projector-loss - optimization 纳入同一 crossing audit; -- 在小图上给出 exact 或 certified optimum; -- 构造 feasibility-aware lower bound,限制为图中实际存在的边; -- 报告多组 \(\tau\) 和 identifiability threshold 下的完整曲线。 +Real recommendation graphs are different. We audit three public graphs at ranks 2, 4, and 8. At rank eight, the necessary floors retain at most 2.1% of edges, while the first observed identifiable witnesses require at least 33%. A connectivity-preserving construction also remains far above the floor. The theorem therefore rules out ultra-small subsets but does not predict the attainable projector-collapse budget on these graphs. We report a lower-to-upper interval rather than call the necessary floor tight. The result applies to unweighted same-identity subsets, not synthetic identities, reweighted sparsifiers, arbitrary finite codes, or ranking utility. -### 当前判断 +### Internal Automated Review — Do Not Paste into CMT -它有一项定义清楚的理论下界,但论文当前最显眼的 10--100 倍 gap 更可能说明 -floor 和 tested heuristics 都不够强,而不是揭示真实 graph-subset complexity。 +Round 8 panel score: **4/10 · soundness 2/4 · weak reject**. -## 三篇的相对顺序 +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | -若只能从这三篇中恢复一篇: +## CMT Registration Checklist -1. 首先重新考虑 `wsdm-05`,前提是 `wsdm-06` 条件推荐失败,且统计协议能够修复; -2. 其次考虑 `wsdm-12`,前提是能快速补上真正的 attainability attack; -3. 最后考虑 `wsdm-11`,因为它的核心混杂和贡献宽度都依赖新的 factorial/ - cross-collection experiments。 +For each paper: -完整的八篇比较依据见 `WSDM2027_8_PAPER_SELECTION_GUIDE.md`。 +- Copy the title exactly from the `Title` field. +- Copy both abstract paragraphs into the CMT abstract field. +- Select the listed primary subject area first, then the suggested secondary + areas that CMT permits. +- Enter authors, affiliations, conflicts, and contact information separately. +- Do not paste the internal automated-review section into CMT. diff --git a/docs/notes/wsdm2027/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md b/docs/notes/wsdm2027/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md deleted file mode 100644 index 3ff726ab..00000000 --- a/docs/notes/wsdm2027/WSDM2027_LATEST_3_DELIVERED_CMT_READY.md +++ /dev/null @@ -1,105 +0,0 @@ -# WSDM 2027 CMT: Latest Three Delivered Papers - -This file contains the three most recently delivered WSDM papers as of -August 17, 2026, 23:54 PDT, ordered by final approval time. Titles and -abstracts are plain-text, copy-paste-ready CMT versions. Subject areas are -suggested selections. Automated reviews are internal only and should not be -pasted into CMT. - -## 1. wsdm-05 - -**Delivered:** August 17, 2026, 17:02 PDT -**Final round:** 6 - -### Title - -When Does One Step Suffice? A Four-Gate Audit of Diffusion Recommendation Distillation - -### Subject Areas - -- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -A one-call deployment claim bundles four different statements: the teacher is competent, iterative sampling helps, the student preserves the teacher, and the result has serving value. We introduce a four-gate audit that tests these claims separately and scopes every decision to a checkpoint and protocol. - -Using a common full-catalog harness over MovieLens-1M and Steam, together with a native Amazon Beauty DiffuRec reproduction, we compare diffusion teachers, iterative sampling, one-pass controls, and endpoint regression under matched evaluation. Utility-tuned SASRec outperforms the audited teachers in all 16 metric-level comparisons, and DDIM-1 outperforms the multi-step endpoint in 15 of 16; the remaining comparison is inconclusive. Endpoint regression sometimes preserves aggregate utility under simultaneous noninferiority tests, yet exact teacher top-10 set identity never exceeds 20.5%. The contribution is a falsifiable deployment contract and checkpoint-level evidence, not a broad claim that one step or many steps universally wins. - -### Latest Automated Review - -Round 6 panel score: **4/10 · soundness 2/4 · weak reject**. The panel score is the lowest reviewer rating. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | -| Cursor Grok 4.5 | 4/10 | 2/4 | 2/4 | 2/4 | Weak reject | - -## 2. wsdm-03 - -**Delivered:** August 17, 2026, 22:02 PDT -**Final round:** 10 - -### Title - -Computational Limits of Finite-Beam Generative Retrieval with Semantic IDs - -### Subject Areas - -- **Primary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models -- **Secondary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search -- **Secondary:** Web Mining and Content Analysis → Web recommender systems and algorithms -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis - -### Abstract - -Semantic-ID retrieval replaces corpus-wide scoring with autoregressive trie search, mixing representation and search error. For canonical Gibbs distillation, we separate them exactly: every dense score vector has a unique positive trie-local factorization with the same exhaustive leaf order, while prefix log-mass equals best-descendant score plus log effective multiplicity. This yields an exact margin-mass boundary. For every fixed alphabet K and width b, an injective N = bK + 1 family makes all widths through b lose the unique optimum. The limit is conditional on this calibration, not universal over learned trees. - -We then jointly train item tables, history GRUs, and rank-32 local decoders under bitwise-matched initialization. On Amazon Beauty with 12,101 items, five seeds, and 1,024 users, canonical exhaustive retrieval retains 67.35% teacher top-10 overlap, but width 10 preserves only 53.29% of its own exact top-10 set. Rank-preserving τ/2 sharpening raises this to 83.32% while retaining 67.03% exhaustive teacher overlap; exact max-node training and direct scoring reach 95.82%. Task intervals overlap, so the evidence establishes a finite-search mechanism and fidelity interventions, not a recommendation gain, production prevalence, or superiority over ANN, lookahead, or retention methods. - -### Latest Automated Review - -Round 10 panel score: **5/10 · soundness 3/4 · weak reject**. The panel score is the lowest reviewer rating. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 2/4 | 3/4 | Weak accept | -| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | - -## 3. wsdm-04 - -**Delivered:** August 17, 2026, 22:28 PDT -**Final round:** 7 - -### Title - -Did the Judge See the Answer? A Crossed Dose–Response Audit of LLM Relevance Judgments - -### Subject Areas - -- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency -- **Secondary:** Foundation Models and Agentic Systems → LLMs and multimodal foundation models for web tasks - -### Abstract - -If relevance labels leak into an LLM judge, improved agreement can arise from learning passage-grade bindings or merely from absorbing a topic's label marginal. Held-out passages alone do not separate these mechanisms. We run a second-collection replication on all 50 TREC-COVID topics, constructing every train and held-out set to contain three grades. True-label exposure is compared with two zero-match wrong-label cycles that preserve the same passages and grade histogram. Two disjoint splits, two derangements, three optimizer seeds, and four fixed open judges yield 3,600 training trajectories, each measured after 5, 10, 20, and 40 updates. - -At the prespecified 40-update endpoint, the held-out true-minus-wrong probability-weighted agreement contrast is 0.078 (95% CI [0.061, 0.094], p < 0.0001). The contrast grows from 0.011 at five updates to 0.078 at forty, with a log-dose slope of 0.022 [0.017, 0.027]. All four unadjusted model-specific intervals exclude zero, but effects range from 0.007 for SmolLM2-1.7B to 0.121 for Qwen2.5-7B, and the model-by-condition interaction is significant. These results establish dose-dependent passage-binding susceptibility under controlled LoRA exposure, not natural pretraining contamination, benchmark membership, or a system-ranking consequence. - -### Latest Automated Review - -Round 7 panel score: **5/10 · soundness 3/4 · weak reject**. The panel score is the lowest reviewer rating. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | -| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | diff --git a/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md b/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md index 66d6feda..560e85de 100644 --- a/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md +++ b/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md @@ -1,159 +1,196 @@ -# WSDM 2027:建议优先的五篇论文 +# WSDM 2027 CMT Registration: Recommended Five Papers -更新时间:2026-08-18(PDT) +This file contains the five papers currently recommended for priority +submission. The titles, abstracts, and subject areas are plain-text, +copy-paste-ready CMT registration fields. -## 结论 +- Enter authors, conflicts, and other administrative metadata separately. +- Internal automated reviews are included only for selection context; do not + paste them into CMT. +- `wsdm-06` is still in Round 3. Its title is ready, but its abstract and review + must be refreshed after delivery. -基于核心结论可信度、贡献新颖性、WSDM 契合度、证据完整性和当前投稿风险, -我建议优先保留以下五篇: +## Registration Summary -1. `wsdm-03` -2. `wsdm-04` -3. `wsdm-06`(有条件推荐,Round 3 尚未交付) -4. `wsdm-09` -5. `wsdm-02` +| ID | Status | Final/current round | Primary subject area | +|---|---|---:|---| +| `wsdm-03` | Delivered | 10 | Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models | +| `wsdm-04` | Delivered | 7 | Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining | +| `wsdm-06` | In progress; abstract provisional | 3 | Web Mining and Content Analysis → Web recommender systems and algorithms | +| `wsdm-09` | Delivered | 6 | Web Mining and Content Analysis → Web recommender systems and algorithms | +| `wsdm-02` | Delivered | 6 | Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search | -该选择针对“当前八篇中相对更值得投入投稿资源的五篇”,不是对录用概率的 -保证。内部自动评审不是 WSDM 官方评审,也不能单独作为去留依据。 +## 1. wsdm-03 -## 1. `wsdm-03` +**Status:** Delivered, Round 10 ### Title Computational Limits of Finite-Beam Generative Retrieval with Semantic IDs -### 为什么优先 +### Subject Areas -- Semantic ID、generative retrieval 和 beam search 都是非常直接的 WSDM 主题。 -- 论文把 representation error 与 finite-search error 精确分开,核心 - margin--multiplicity 机制清楚。 -- 理论、构造和 Amazon/MovieLens 机制实验形成了相对完整的闭环。 -- Sharpening 与 max-node 干预把 width-10 self-fidelity 从 53.29% 提升到 - 83.32%/95.82%,结果明确且容易解释。 -- 最新三位内部 reviewer 给出 5/6/5,最低 soundness 为 3/4。 +- **Primary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search +- **Secondary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis -### 投稿前必须处理 +### Abstract -- 把“computational limits”严格限定为 canonical calibration 下的存在性和 - 机制结果,不要暗示 learned RQ trees 普遍需要线性 beam。 -- 明确 task utility 没有显著改善,主贡献是 search fidelity。 -- 尽可能补充 PAG/PRO 对照;若来不及,必须清楚解释缺失。 -- 收紧主文篇幅并修复标题/正文中比证据更宽的表述。 +Semantic-ID retrieval replaces corpus-wide scoring with autoregressive trie search, mixing representation and search error. For canonical Gibbs distillation, we separate them exactly: every dense score vector has a unique positive trie-local factorization with the same exhaustive leaf order, while prefix log-mass equals best-descendant score plus log effective multiplicity. This yields an exact margin-mass boundary. For every fixed alphabet K and width b, an injective N = bK + 1 family makes all widths through b lose the unique optimum. The limit is conditional on this calibration, not universal over learned trees. -## 2. `wsdm-04` +We then jointly train item tables, history GRUs, and rank-32 local decoders under bitwise-matched initialization. On Amazon Beauty with 12,101 items, five seeds, and 1,024 users, canonical exhaustive retrieval retains 67.35% teacher top-10 overlap, but width 10 preserves only 53.29% of its own exact top-10 set. Rank-preserving τ/2 sharpening raises this to 83.32% while retaining 67.03% exhaustive teacher overlap; exact max-node training and direct scoring reach 95.82%. Task intervals overlap, so the evidence establishes a finite-search mechanism and fidelity interventions, not a recommendation gain, production prevalence, or superiority over ANN, lookahead, or retention methods. + +### Internal Automated Review — Do Not Paste into CMT + +Round 10 panel score: **5/10 · soundness 3/4 · weak reject**. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 2/4 | 3/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | + +## 2. wsdm-04 + +**Status:** Delivered, Round 7 ### Title Did the Judge See the Answer? A Crossed Dose–Response Audit of LLM Relevance Judgments -### 为什么优先 +### Subject Areas + +- **Primary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency +- **Secondary:** Foundation Models and Agentic Systems → LLMs and multimodal foundation models for web tasks -- 50 个 TREC-COVID topics、两种 split、两种 derangement、三个 seeds、 - 四个模型和四个剂量组成了较强的全交叉设计。 -- Histogram-preserving zero-match wrong-label control 直接处理了 - topic-grade marginal 这个关键混杂。 -- Manipulation checks、arm decomposition 和 model heterogeneity 都有报告, - 证据链比一般 LLM judge audit 更完整。 -- LLM relevance judgment 与 IR evaluation 对 WSDM 高度相关。 -- 最新三位内部 reviewer 给出 5/6/5,最低 soundness 为 3/4。 +### Abstract -### 投稿前必须处理 +If relevance labels leak into an LLM judge, improved agreement can arise from learning passage-grade bindings or merely from absorbing a topic's label marginal. Held-out passages alone do not separate these mechanisms. We run a second-collection replication on all 50 TREC-COVID topics, constructing every train and held-out set to contain three grades. True-label exposure is compared with two zero-match wrong-label cycles that preserve the same passages and grade histogram. Two disjoint splits, two derangements, three optimizer seeds, and four fixed open judges yield 3,600 training trajectories, each measured after 5, 10, 20, and 40 updates. -- 不要把 rising true-minus-wrong curve 写成正确 binding 单调增强;40-step - 增长有相当部分来自 wrong-label arm 变坏。 -- 将 true-vs-unadapted 与 wrong-vs-unadapted 分解放到核心结果中。 -- 明确 controlled LoRA susceptibility 不能诊断自然 pretraining contamination。 -- 若可行,增加 correctly labeled cross-topic control;否则将其列为最核心的 - 未识别替代解释。 +At the prespecified 40-update endpoint, the held-out true-minus-wrong probability-weighted agreement contrast is 0.078 (95% CI [0.061, 0.094], p < 0.0001). The contrast grows from 0.011 at five updates to 0.078 at forty, with a log-dose slope of 0.022 [0.017, 0.027]. All four unadjusted model-specific intervals exclude zero, but effects range from 0.007 for SmolLM2-1.7B to 0.121 for Qwen2.5-7B, and the model-by-condition interaction is significant. These results establish dose-dependent passage-binding susceptibility under controlled LoRA exposure, not natural pretraining contamination, benchmark membership, or a system-ranking consequence. -## 3. `wsdm-06`(有条件推荐) +### Internal Automated Review — Do Not Paste into CMT + +Round 7 panel score: **5/10 · soundness 3/4 · weak reject**. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | + +## 3. wsdm-06 + +**Status:** Round 3 in progress. The abstract and review below are provisional. ### Title Tokenizers That Peek: Test-Set Leakage in Semantic-ID Generative Recommendation -### 为什么优先 +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models +- **Secondary:** Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency -- Tokenizer fitting scope 是 semantic-ID recommendation 中具体、及时且容易 - 被社区忽略的泄漏面。 -- Clean/peek paired intervention 固定 histories、targets、candidates、 - architecture 和 seed,只改变 tokenizer interaction scope,识别逻辑清楚。 -- 三个 Amazon categories、两个 interaction-aware paths、15 seeds 和 - content-only exact-zero control 提供了可信的窄结论。 -- 主题同时覆盖 recommender systems、generative retrieval 和 evaluation - leakage,WSDM 契合度很高。 -- Round 2 三位内部 reviewer 给出 5/6/5,最低 soundness 为 3/4。 +### Abstract -### 推荐条件 +Semantic IDs replace atomic item labels with learned token sequences, making the tokenizer part of a recommender's fitted state. If its collaborative features consume held-out interactions, test labels can alter item-to-code assignments even when generator training remains clean. We isolate this channel under a global timeline: examples, targets, candidates, architecture, and seed are paired, and only tokenizer interaction scope changes. -该论文目前仍在 Round 3,尚未交付。只有满足以下条件时才保留在五篇中: +Under equal-budget validation tuning, peeking raises Recall@10 by 0.589 percentage points (95% paired-seed interval [0.535, 0.642]) across three Amazon categories, two interaction-aware paths, and 15 seeds; this is 25.1% of clean performance. The content control changes by exactly 0.000, while a non-discretized Continuous-SVD control has an even larger positive gap, so the channel does not require tokenization. Removing scored target edges in all six cells leaves a macro interval spanning zero. The target component exceeds the pooled matched-removal null, but not its 90%-target-overlap stratum; the evidence supports overlap sensitivity, not exact-edge uniqueness. An immutable audit additionally finds one documented test-selected collaborative-feature path whose shipped tensor lineage is unresolved; we do not infer impact on a published score or prevalence. -- P5-CID clean/peek released-stack 补跑完整结束; -- 不丢失 seed、不用不透明恢复值,结果和 provenance 可复核; -- 无论结果为正、为 null 或方向变化,终稿都按实际结果收紧 claim; -- PDF、摘要、评审分数和 CMT 材料在交付后同步更新。 +### Internal Automated Review — Do Not Paste into CMT -### 如果条件不满足 +Round 2 panel score: **5/10 · soundness 3/4 · weak reject**. Round 3 is still +running, so this score is provisional. -若 Round 3 未按时完成、实验失败且无法形成可解释结果,或 released-stack -结果推翻当前中心 claim,则将 `wsdm-05` 作为第一替补重新比较。 +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 3/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | -## 4. `wsdm-09` +### Registration Action Required + +After `wsdm-06` is delivered, refresh its abstract, round, status, and automated +review before finalizing CMT registration. + +## 4. wsdm-09 + +**Status:** Delivered, Round 6 ### Title Information Before Scale: Sample and Rank Frontiers for Walsh Collaborative Filtering -### 为什么优先 +### Subject Areas + +- **Primary:** Web Mining and Content Analysis → Web recommender systems and algorithms +- **Secondary:** Web Mining and Content Analysis → Scalable algorithms for mining web data, opinion mining and sentiment analysis +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Empirical recommender scaling curves do not distinguish insufficient output rank from insufficient information to identify a user's latent preference. We separate these resources on a synthetic Walsh collaborative-filtering family. For a revealed user-Walsh assignment, we derive an exact finite minimax rank rule. We then withhold that assignment while keeping the same signed permutation of the Walsh table. -- Matching-coupled converse 和隐藏 assignment 的 logarithmic information - threshold 是八篇中较独特的理论贡献。 -- Exact finite rules、渐近结果和可计算审计使理论包具有一定完整性。 -- “先判断身份信息是否足够,再解释模型 scaling”是清晰、有传播性的观点。 -- 与另外几篇 audit papers 相比,它为五篇组合提供理论多样性。 -- 最新三位内部 reviewer 给出 6/6/5。 +Although the posterior now couples users through perfect matchings, we derive its exact finite conditional frontier and show that removing the assignment raises the fixed-accuracy sample scale from constant to logarithmic. Under binary-symmetric label noise, consistency has the sharp first-order threshold NpCq = log2 N, where Cq = 1 - h2(q). On matched sparse transcripts at N = 128, a validation-selected rank-N/2 matrix-factorization model reaches risk 0.964 against the 0.568 information frontier, exposing a substantial gap between optimization and information limits. These are architecture-relative results for a public Walsh dictionary, not an industrial scaling law. -### 投稿前必须处理 +### Internal Automated Review — Do Not Paste into CMT -- 统一 noisy revealed frontier 与主 clean-target risk 的定义。 -- 摘要中的 `0.964 vs 0.568` 必须明确属于 product-address benchmark,不能把它 - 当作 hidden signed-permutation 中心理论的直接实证。 -- 降低对弱 MF baseline 的依赖;至少补训练收敛证据,避免 400-update - under-optimization 成为替代解释。 -- 将外推限制在 dictionary-style synthetic family,不要包装成普遍工业 - recommendation scaling law。 +Round 6 panel score: **5/10 · soundness 2/4 · weak reject**. -## 5. `wsdm-02` +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 6/10 | 3/4 | 3/4 | 3/4 | Weak accept | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | + +## 5. wsdm-02 + +**Status:** Delivered, Round 6 ### Title Risk-Sensitive Diversification Without an Oracle: Valid Certificates Need Not Identify Better Rankings -### 为什么优先 +### Subject Areas + +- **Primary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Web Search → Query analysis and query processing +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Does a valid robust tail-risk certificate identify a better diversified ranking when the intent prior is estimated? Not necessarily. For finite-intent VRisk, fixed-ranking L1 error ε changes risk by at most min{1, ε/(2β)}, sharply, while a standard count radius can collapse robust CVaR to minimax. Even with a perfectly estimated prior and valid coverage, the resulting saturated minimizer and upper-bound gate can incur regret arbitrarily close to one. This separates certificate validity from decision usefulness. -- 理论定义和证明整体较严谨,最低 reviewer soundness 为 3/4。 -- 论文清楚区分 certificate validity、optimization 与 decision usefulness。 -- Matched minimax control、coverage diagnostics 和不利/弃权结果都有披露。 -- Search diversification、risk-sensitive ranking 和 evaluation methodology - 与 WSDM Web Search track 直接相关。 -- 与 `wsdm-05`、`wsdm-11`、`wsdm-12` 相比,当前中心结论的正确性风险较低。 +A frozen-proposal audit across retrieval and recommendation benchmarks supports the distinction. Exact same-prior comparison accepts 17.9% of proposals in the primary NTCIR synthetic-prior experiment, while the evaluated real-estimator settings certify no intervention and matched robust-versus-minimax effects are mostly negligible. Validity, informativeness, and decision benefit are therefore distinct properties. -### 投稿前必须处理 +### Internal Automated Review — Do Not Paste into CMT -- 正面回应中心 regret construction 是否只是已知 robust-CVaR collapse 加 - 简单两排序例子;必须更清楚地界定新增理论。 -- 不要用 synthetic-prior acceptance 暗示真实 estimator 下方法有实用收益。 -- 将真实场景“全部不认证干预”明确作为主要发现,而不是附带 limitation。 -- 若无法补 full-support/calibrated-radius separation,应主动缩小 theorem claim。 +Round 6 panel score: **4/10 · soundness 3/4 · weak reject**. -## 五篇之间的资源优先级 +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 4/10 | 3/4 | 2/4 | 2/4 | Weak reject | -若修改时间有限,建议按以下顺序投入: +## CMT Registration Checklist -1. 完成并审计 `wsdm-06` Round 3,决定其推荐条件是否成立; -2. 修正 `wsdm-09` 的风险定义和 empirical-headline 对齐; -3. 收紧 `wsdm-04` 的 arm-decomposed dose claim; -4. 收紧 `wsdm-03` 的存在性范围和缺失 baseline 表述; -5. 重写 `wsdm-02` 的 novelty boundary 与 real-estimator headline。 +For each paper: -完整的八篇比较依据见 `WSDM2027_8_PAPER_SELECTION_GUIDE.md`。 +- Copy the title exactly from the `Title` field. +- Copy both abstract paragraphs into the CMT abstract field. +- Select the listed primary subject area first, then the suggested secondary + areas that CMT permits. +- Enter authors, affiliations, conflicts, and contact information separately. +- Do not paste the internal automated-review section into CMT. +- Refresh all `wsdm-06` fields after Round 3 delivery. From 2b64379b3fa115aac253a3a8f8da95085eab5883 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Tue, 18 Aug 2026 00:18:44 -0700 Subject: [PATCH 14/18] Rename WSDM paper lists without ranking labels Co-authored-by: Cursor --- ...2027_DEPRIORITIZED_3_PAPERS.md => wsdm 3 paper.md} | 11 +++++------ ...DM2027_RECOMMENDED_5_PAPERS.md => wsdm 5 paper.md} | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) rename docs/notes/wsdm2027/{WSDM2027_DEPRIORITIZED_3_PAPERS.md => wsdm 3 paper.md} (95%) rename docs/notes/wsdm2027/{WSDM2027_RECOMMENDED_5_PAPERS.md => wsdm 5 paper.md} (97%) diff --git a/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md b/docs/notes/wsdm2027/wsdm 3 paper.md similarity index 95% rename from docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md rename to docs/notes/wsdm2027/wsdm 3 paper.md index 39e724f8..c4227c84 100644 --- a/docs/notes/wsdm2027/WSDM2027_DEPRIORITIZED_3_PAPERS.md +++ b/docs/notes/wsdm2027/wsdm 3 paper.md @@ -1,12 +1,11 @@ -# WSDM 2027 CMT Registration: Remaining Three Papers +# wsdm 3 paper -This file contains the three papers currently not recommended for priority -submission. The titles, abstracts, and subject areas are plain-text, -copy-paste-ready CMT registration fields if these papers are registered. +This file contains three WSDM papers. The titles, abstracts, and subject areas +are plain-text, copy-paste-ready CMT registration fields. - Enter authors, conflicts, and other administrative metadata separately. -- Internal automated reviews are included only for selection context; do not - paste them into CMT. +- Internal automated reviews are included only for reference; do not paste + them into CMT. ## Registration Summary diff --git a/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md b/docs/notes/wsdm2027/wsdm 5 paper.md similarity index 97% rename from docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md rename to docs/notes/wsdm2027/wsdm 5 paper.md index 560e85de..111c466a 100644 --- a/docs/notes/wsdm2027/WSDM2027_RECOMMENDED_5_PAPERS.md +++ b/docs/notes/wsdm2027/wsdm 5 paper.md @@ -1,12 +1,11 @@ -# WSDM 2027 CMT Registration: Recommended Five Papers +# wsdm 5 paper -This file contains the five papers currently recommended for priority -submission. The titles, abstracts, and subject areas are plain-text, -copy-paste-ready CMT registration fields. +This file contains five WSDM papers. The titles, abstracts, and subject areas +are plain-text, copy-paste-ready CMT registration fields. - Enter authors, conflicts, and other administrative metadata separately. -- Internal automated reviews are included only for selection context; do not - paste them into CMT. +- Internal automated reviews are included only for reference; do not paste + them into CMT. - `wsdm-06` is still in Round 3. Its title is ready, but its abstract and review must be refreshed after delivery. From 5149d802e8a0c6eabb68e4aeb450e49159f5bcbf Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Tue, 18 Aug 2026 00:40:55 -0700 Subject: [PATCH 15/18] Add CMT IDs and order five WSDM papers Co-authored-by: Cursor --- docs/notes/wsdm2027/wsdm 5 paper.md | 94 ++++++++++++++++------------- 1 file changed, 52 insertions(+), 42 deletions(-) diff --git a/docs/notes/wsdm2027/wsdm 5 paper.md b/docs/notes/wsdm2027/wsdm 5 paper.md index 111c466a..a12e09ca 100644 --- a/docs/notes/wsdm2027/wsdm 5 paper.md +++ b/docs/notes/wsdm2027/wsdm 5 paper.md @@ -11,15 +11,50 @@ are plain-text, copy-paste-ready CMT registration fields. ## Registration Summary -| ID | Status | Final/current round | Primary subject area | -|---|---|---:|---| -| `wsdm-03` | Delivered | 10 | Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models | -| `wsdm-04` | Delivered | 7 | Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining | -| `wsdm-06` | In progress; abstract provisional | 3 | Web Mining and Content Analysis → Web recommender systems and algorithms | -| `wsdm-09` | Delivered | 6 | Web Mining and Content Analysis → Web recommender systems and algorithms | -| `wsdm-02` | Delivered | 6 | Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search | +| CMT submission ID | ID | Status | Final/current round | Primary subject area | +|---:|---|---|---:|---| +| 1779 | `wsdm-02` | Delivered | 6 | Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search | +| 1797 | `wsdm-03` | Delivered | 10 | Foundation Models and Agentic Systems → Retrieval, indexing, and ranking with foundation models | +| 1996 | `wsdm-04` | Delivered | 7 | Foundation Models and Agentic Systems → Evaluation and benchmarking of foundation models in search/mining | +| 1999 | `wsdm-06` | In progress; abstract provisional | 3 | Web Mining and Content Analysis → Web recommender systems and algorithms | +| 2002 | `wsdm-09` | Delivered | 6 | Web Mining and Content Analysis → Web recommender systems and algorithms | -## 1. wsdm-03 +## 1. wsdm-02 + +**CMT submission ID:** `1779` + +**Status:** Delivered, Round 6 + +### Title + +Risk-Sensitive Diversification Without an Oracle: Valid Certificates Need Not Identify Better Rankings + +### Subject Areas + +- **Primary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search +- **Secondary:** Web Search → Search benchmarking and evaluation +- **Secondary:** Web Search → Query analysis and query processing +- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency + +### Abstract + +Does a valid robust tail-risk certificate identify a better diversified ranking when the intent prior is estimated? Not necessarily. For finite-intent VRisk, fixed-ranking L1 error ε changes risk by at most min{1, ε/(2β)}, sharply, while a standard count radius can collapse robust CVaR to minimax. Even with a perfectly estimated prior and valid coverage, the resulting saturated minimizer and upper-bound gate can incur regret arbitrarily close to one. This separates certificate validity from decision usefulness. + +A frozen-proposal audit across retrieval and recommendation benchmarks supports the distinction. Exact same-prior comparison accepts 17.9% of proposals in the primary NTCIR synthetic-prior experiment, while the evaluated real-estimator settings certify no intervention and matched robust-versus-minimax effects are mostly negligible. Validity, informativeness, and decision benefit are therefore distinct properties. + +### Internal Automated Review — Do Not Paste into CMT + +Round 6 panel score: **4/10 · soundness 3/4 · weak reject**. + +| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | +|---|---:|---:|---:|---:|---| +| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | +| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | +| Cursor Grok 4.5 | 4/10 | 3/4 | 2/4 | 2/4 | Weak reject | + +## 2. wsdm-03 + +**CMT submission ID:** `1797` **Status:** Delivered, Round 10 @@ -51,7 +86,9 @@ Round 10 panel score: **5/10 · soundness 3/4 · weak reject**. | Claude Fable 5 | 6/10 | 3/4 | 2/4 | 3/4 | Weak accept | | Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -## 2. wsdm-04 +## 3. wsdm-04 + +**CMT submission ID:** `1996` **Status:** Delivered, Round 7 @@ -83,7 +120,9 @@ Round 7 panel score: **5/10 · soundness 3/4 · weak reject**. | Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | | Cursor Grok 4.5 | 5/10 | 3/4 | 3/4 | 2/4 | Borderline | -## 3. wsdm-06 +## 4. wsdm-06 + +**CMT submission ID:** `1999` **Status:** Round 3 in progress. The abstract and review below are provisional. @@ -121,7 +160,9 @@ running, so this score is provisional. After `wsdm-06` is delivered, refresh its abstract, round, status, and automated review before finalizing CMT registration. -## 4. wsdm-09 +## 5. wsdm-09 + +**CMT submission ID:** `2002` **Status:** Delivered, Round 6 @@ -151,37 +192,6 @@ Round 6 panel score: **5/10 · soundness 2/4 · weak reject**. | Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | | Cursor Grok 4.5 | 5/10 | 2/4 | 3/4 | 2/4 | Weak reject | -## 5. wsdm-02 - -**Status:** Delivered, Round 6 - -### Title - -Risk-Sensitive Diversification Without an Oracle: Valid Certificates Need Not Identify Better Rankings - -### Subject Areas - -- **Primary:** Web Search → Algorithms for web-scale search, distributed search, metasearch, peer-to-peer search -- **Secondary:** Web Search → Search benchmarking and evaluation -- **Secondary:** Web Search → Query analysis and query processing -- **Secondary:** Privacy, Fairness, Interpretability → Model and algorithm transparency - -### Abstract - -Does a valid robust tail-risk certificate identify a better diversified ranking when the intent prior is estimated? Not necessarily. For finite-intent VRisk, fixed-ranking L1 error ε changes risk by at most min{1, ε/(2β)}, sharply, while a standard count radius can collapse robust CVaR to minimax. Even with a perfectly estimated prior and valid coverage, the resulting saturated minimizer and upper-bound gate can incur regret arbitrarily close to one. This separates certificate validity from decision usefulness. - -A frozen-proposal audit across retrieval and recommendation benchmarks supports the distinction. Exact same-prior comparison accepts 17.9% of proposals in the primary NTCIR synthetic-prior experiment, while the evaluated real-estimator settings certify no intervention and matched robust-versus-minimax effects are mostly negligible. Validity, informativeness, and decision benefit are therefore distinct properties. - -### Internal Automated Review — Do Not Paste into CMT - -Round 6 panel score: **4/10 · soundness 3/4 · weak reject**. - -| Reviewer | Rating | Soundness | Presentation | Contribution | Recommendation | -|---|---:|---:|---:|---:|---| -| GPT-5.6 Sol | 5/10 | 3/4 | 3/4 | 2/4 | Weak reject | -| Claude Fable 5 | 6/10 | 3/4 | 3/4 | 2/4 | Weak accept | -| Cursor Grok 4.5 | 4/10 | 3/4 | 2/4 | 2/4 | Weak reject | - ## CMT Registration Checklist For each paper: From 2c95aff9b0fdf6df29c2edc666c30bbd0083438e Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Tue, 18 Aug 2026 00:42:53 -0700 Subject: [PATCH 16/18] Rename five-paper WSDM note without spaces Co-authored-by: Cursor --- docs/notes/wsdm2027/{wsdm 5 paper.md => wsdm-5-paper.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/notes/wsdm2027/{wsdm 5 paper.md => wsdm-5-paper.md} (100%) diff --git a/docs/notes/wsdm2027/wsdm 5 paper.md b/docs/notes/wsdm2027/wsdm-5-paper.md similarity index 100% rename from docs/notes/wsdm2027/wsdm 5 paper.md rename to docs/notes/wsdm2027/wsdm-5-paper.md From 216352a7e60468359fb36d299ea511e6a2bda5df Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Wed, 19 Aug 2026 00:18:45 -0700 Subject: [PATCH 17/18] Make reviewer cleanup resilient to NFS races Avoid wedging completed review panels on transient temporary-file cleanup and preserve the latest monitored paper progress. Co-authored-by: Cursor --- docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md | 10 +++++----- loom/ar_task.py | 7 ++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md b/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md index 6f4efb84..3730ac47 100644 --- a/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md +++ b/docs/notes/zhizhou/WACV_WSDM_PAPER_PROGRESS.md @@ -1,20 +1,20 @@ # WACV / WSDM Paper Progress -Updated: 2026-08-17 00:37 PDT +Updated: 2026-08-17 14:07 PDT | Venue | ID | Paper | Stage | Round | Latest score | Agent | Folder | |---|---|---|---|---:|---:|---|---| -| WACV | wacv-fit-01 | 扩散得分平滑度驱动的开集测试时自适应 | Author/reviewer loop | 6/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-diffusion-score-smoothness-for-open-set-test-time-adaptation` | +| WACV | wacv-fit-01 | 扩散得分平滑度驱动的开集测试时自适应 | Author/reviewer loop | 7/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-diffusion-score-smoothness-for-open-set-test-time-adaptation` | | WACV | wacv-fit-02 | 得分统计量的扩散视频取证 | Delivered | 7/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-score-statistic-forensics-for-diffusion-generated-video-detection` | -| WACV | wacv-fit-03 | 手术场景的开集识别与安全弃权 | Author/reviewer loop | 1/10 | — | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-open-set-recognition-with-safe-abstention-for-surgical-scene-understan` | -| WACV | wacv-fit-04 | 差分隐私的注视估计个性化 | Author/reviewer loop | 1/10 | — | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-differentially-private-personalization-for-gaze-estimation` | +| WACV | wacv-fit-03 | 手术场景的开集识别与安全弃权 | Author/reviewer loop | 3/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-open-set-recognition-with-safe-abstention-for-surgical-scene-understan` | +| WACV | wacv-fit-04 | 差分隐私的注视估计个性化 | Author/reviewer loop | 3/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-differentially-private-personalization-for-gaze-estimation` | | WACV | wacv-fit-08 | 检索记忆智能体的长程序化视频理解 | Author/reviewer loop | 7/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-retrieval-memory-agents-for-long-form-procedural-video-understanding` | | WACV | wacv-fit-14 | 表示层攻击审计合成图像取证器 | Author/reviewer loop | 7/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-presentation-only-attacks-for-auditing-synthetic-image-forensics-detec` | | WACV | wacv-fit-16 | 可验证奖励强化学习的视频异常因果推理 | Author/reviewer loop | 7/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-verifiable-reward-rl-for-causal-video-anomaly-reasoning` | | WACV | wacv-fit-17 | 低秩几何可证保证的分布外检测 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wacv2027-provable-low-rank-feature-geometry-for-out-of-distribution-detection` | | WSDM | wsdm-02 | 没有预言机的风险敏感多样化:意图估计误差如何侵蚀最差情况保证 | Delivered | 6/10 | 4/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-risk-sensitive-diversification-without-an-oracle` | | WSDM | wsdm-03 | Semantic ID 上生成式检索的计算极限 | Author/reviewer loop | 7/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-computational-limits-of-generative-retrieval-over-semantic` | -| WSDM | wsdm-04 | 判官读过答案吗:LLM 相关性判断中的知识截断污染 | Author/reviewer loop | 4/10 | 4/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-llm-knowledge-cutoff-contamination-in-llm-relevance-judgments` | +| WSDM | wsdm-04 | 判官读过答案吗:LLM 相关性判断中的知识截断污染 | Author/reviewer loop | 5/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-llm-knowledge-cutoff-contamination-in-llm-relevance-judgments` | | WSDM | wsdm-05 | 一步就够:带可证明误差界的扩散推荐蒸馏 | Author/reviewer loop | 6/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-one-step-suffices-diffusion-recommendation-distillation-with-provable` | | WSDM | wsdm-06 | 会偷看的分词器:Semantic ID 构建导致的生成式推荐测试集泄漏 | Author/reviewer loop | 3/10 | 5/10 | Working | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-semantic-id-tokenizers-that-peek-test-set-leakage-in-semantic-id-gener` | | WSDM | wsdm-09 | 规模是必要的吗:协同过滤的模型容量下界 | Delivered | 6/10 | 5/10 | Done | `/data/shared/zhizhousha/workspace/loom-project/loom-claude-paper/research-factory/.RUD/wsdm2027-is-scale-necessary-capacity-lower-bounds-for-collaborative-filtering` | diff --git a/loom/ar_task.py b/loom/ar_task.py index 62c7f6c2..d25358de 100644 --- a/loom/ar_task.py +++ b/loom/ar_task.py @@ -2536,7 +2536,12 @@ def run_reviewer( f"reviewing compiled PDF with Cursor panel: {', '.join(selected)}" ) - with TemporaryDirectory(prefix="loom-ar-pdf-review-") as tmp: + # Cursor can leave short-lived files behind while an NFS-backed temporary + # directory is being removed. The review result is already in memory, so a + # cleanup race must never wedge the AR driver after every reviewer returned. + with TemporaryDirectory( + prefix="loom-ar-pdf-review-", ignore_cleanup_errors=True + ) as tmp: workspace = Path(tmp) review_pdf = workspace / "submission.pdf" try: From 5801e73a3553cefcf43c667722ab46f49749bea0 Mon Sep 17 00:00:00 2001 From: Zhizhou Sha Date: Thu, 20 Aug 2026 15:36:11 -0700 Subject: [PATCH 18/18] Keep Paper Factory idea labels in English Match the surrounding interface language for hypothesis, novelty, and metric labels. Co-authored-by: Cursor --- loom/web_static/factory.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/loom/web_static/factory.js b/loom/web_static/factory.js index 34497959..7977d3ee 100644 --- a/loom/web_static/factory.js +++ b/loom/web_static/factory.js @@ -497,9 +497,9 @@ function renderStudioLists(papers, ideas) { ${Number(idea.score || 0).toFixed(2)}
- ${idea.hypothesis ? `

假设。 ${esc(idea.hypothesis)}

` : ''} - ${idea.novelty ? `

新意。 ${esc(idea.novelty)}

` : ''} - ${idea.metric ? `

指标。 ${esc(idea.metric)}

` : ''} + ${idea.hypothesis ? `

Hypothesis. ${esc(idea.hypothesis)}

` : ''} + ${idea.novelty ? `

New because. ${esc(idea.novelty)}

` : ''} + ${idea.metric ? `

Metric. ${esc(idea.metric)}

` : ''} ${edges ? `
${edges}
` : ''} ${spawned && idea.child_slug ? `

Open the paper →

` : ''}