Compare commits

...

80 Commits

Author SHA1 Message Date
codex-bot ae88367fac Scope AAMAS tags to their exact source namespace
Metadata integrity checks / metadata (push) Successful in 8m56s
2026-11-09 13:31:46 +08:00
codex-bot a305d00c75 Collect evidenced AAMAS proceedings metadata by publication format
Metadata integrity checks / metadata (push) Failing after 2m2s
2026-11-09 13:27:23 +08:00
Zayden-Jung 57fcfc7693 Merge pull request '按官方证据识别早期 ICML 与 IROS 主系列' (#37) from codex/historical-primary-series into main
Metadata integrity checks / metadata (push) Successful in 2m58s
Reviewed-on: #37
2026-11-09 05:19:49 +00:00
Zayden-Jung a07b1e42a8 Merge pull request '修正早期 ACL 来源误匹配并记录官方目录缺口' (#36) from codex/history-source-scope into main
Metadata integrity checks / metadata (push) Successful in 2m48s
Reviewed-on: #36
2026-11-09 05:19:43 +00:00
codex-bot 7c6f4c9f1d Recognize evidenced early ICML and IROS primary editions
Metadata integrity checks / metadata (push) Successful in 9m26s
2026-11-09 02:39:18 +08:00
codex-bot 3f0ac694a0 Correct early ACL source candidates and record official index limits
Metadata integrity checks / metadata (push) Successful in 14m52s
2026-11-09 02:28:51 +08:00
Zayden-Jung 32c7edd0a5 Merge pull request '核对135个历史年度缺口与候选论文集来源' (#35) from codex/historical-gaps into main
Metadata integrity checks / metadata (push) Successful in 2m26s
Reviewed-on: #35
2026-11-08 17:37:12 +00:00
Zayden-Jung 658d799334 Merge pull request '封装早期WWW档案采集并核实逐条poster证据' (#32) from codex/www-archive into main
Metadata integrity checks / metadata (push) Successful in 2m34s
Reviewed-on: #32
2026-11-08 17:37:03 +00:00
codex-bot 53fbe9c75c Record current historical year gaps and candidate source volumes
Metadata integrity checks / metadata (push) Successful in 3m15s
2026-11-09 00:50:15 +08:00
codex-bot dac6edbe1e Merge remote-tracking branch 'origin/main' into codex/www-archive
Metadata integrity checks / metadata (push) Successful in 3m10s
# Conflicts:
#	README.md
2026-11-09 00:48:14 +08:00
Zayden-Jung 7a674ac797 Merge pull request '按证据修正投稿轨道并保护后续来源刷新' (#34) from codex/edition-tracks into main
Metadata integrity checks / metadata (push) Successful in 2m5s
Reviewed-on: #34
2026-11-08 16:23:37 +00:00
codex-bot eacc1e3292 Resolve reviewed WWW poster entries with canonical page evidence
Metadata integrity checks / metadata (push) Successful in 1m32s
2026-11-09 00:18:32 +08:00
codex-bot 2275bc7530 Merge remote-tracking branch 'origin/main' into codex/www-archive
# Conflicts:
#	README.md
2026-11-09 00:13:37 +08:00
codex-bot d2c016e309 Reject target conflicts and post-application scope evidence drift
Metadata integrity checks / metadata (push) Successful in 2m3s
2026-11-08 23:48:40 +08:00
codex-bot ea3393144d Merge remote-tracking branch 'origin/main' into codex/edition-tracks 2026-11-08 23:48:02 +08:00
codex-bot 7035cf33b9 Correct existing attempt tracks with bound evidence and refresh guards
Metadata integrity checks / metadata (push) Successful in 1m59s
2026-11-08 23:46:37 +08:00
Zayden-Jung 60726a8c6b Merge pull request '核实 IJCAI 两届 345 条非 main 分类与唯一目录缺项' (#33) from codex/ijcai-sections into main
Metadata integrity checks / metadata (push) Successful in 1m28s
Reviewed-on: #33
2026-11-08 15:44:02 +00:00
codex-bot a1bbd26a5c Merge remote-tracking branch 'origin/main' into codex/edition-tracks 2026-11-08 23:41:10 +08:00
Zayden-Jung 90f3fb213e Merge pull request '区分同年同轨道会议事件并显式迁移原有身份' (#30) from codex/event-identity into main
Metadata integrity checks / metadata (push) Successful in 1m28s
Reviewed-on: #30
2026-11-08 15:37:08 +00:00
codex-bot a68e36907f Document exact IJCAI 2018 and 2022 section discrepancies
Metadata integrity checks / metadata (push) Successful in 1m22s
2026-11-08 23:36:50 +08:00
codex-bot f9f4d263af Expose independent event keys in integrated coverage reports
Metadata integrity checks / metadata (push) Successful in 1m48s
2026-11-08 23:17:55 +08:00
codex-bot 0049b6ba84 Keep runtime integration compatible with newly merged curation tools
Metadata integrity checks / metadata (push) Successful in 1m46s
# Conflicts:
#	paper_atlas/cli.py
#	paper_atlas/curation/__init__.py
2026-11-08 23:13:12 +08:00
Zayden-Jung 4ec82c8f8f Merge pull request '保留同一来源分批导入后的覆盖统计' (#27) from codex/incremental-coverage into main
Metadata integrity checks / metadata (push) Successful in 1m20s
Reviewed-on: #27
2026-11-08 15:10:16 +00:00
Zayden-Jung bdc9b2aed5 Merge pull request '按证据补充稳定标识并保留原始书目字段' (#26) from codex/identifier-curation into main
Metadata integrity checks / metadata (push) Successful in 1m15s
Reviewed-on: #26
2026-11-08 15:10:10 +00:00
Zayden-Jung 621ceba331 Merge pull request '核对43会议年度、公开决定政策与早期WWW逐来源边界' (#20) from codex/coverage-ledger into main
Metadata integrity checks / metadata (push) Successful in 1m18s
Reviewed-on: #20
2026-11-08 15:07:27 +00:00
Zayden-Jung daf15e21d3 Merge pull request '让稳定论文身份优先并拒绝多候选标题自动合并' (#25) from codex/paper-identity-guards into main
Metadata integrity checks / metadata (push) Successful in 1m16s
Reviewed-on: #25
2026-11-08 15:07:15 +00:00
codex-bot 0133ce99d6 Preserve new workshop labels and historical edition scope from main
Metadata integrity checks / metadata (push) Successful in 1m45s
# Conflicts:
#	paper_atlas/collectors/dblp_scope.py
2026-11-08 22:21:55 +08:00
Zayden-Jung 33fd7bf2e1 Merge pull request '修正早期主系列名称与附属 workshop 的分类边界' (#24) from codex/historical-editions into main
Metadata integrity checks / metadata (push) Successful in 1m11s
Reviewed-on: #24
2026-11-08 14:17:09 +00:00
Zayden-Jung ec6076700b Merge pull request '单列核实身份的 ICLR workshop 公开负面标签' (#22) from codex/iclr-workshop-labels into main
Metadata integrity checks / metadata (push) Successful in 1m14s
Reviewed-on: #22
2026-11-08 14:17:00 +00:00
codex-bot 3d279cd7d8 Integrate current main coverage and public decision safeguards
Metadata integrity checks / metadata (push) Successful in 1m44s
2026-11-08 22:16:21 +08:00
Zayden-Jung 6b66febba5 Merge pull request '保留缺标题公开决定并识别明确撤稿标签' (#21) from codex/public-negative-holds into main
Metadata integrity checks / metadata (push) Successful in 1m13s
Reviewed-on: #21
2026-11-08 14:10:27 +00:00
Zayden-Jung c8531d8a14 Merge pull request '在 PostgreSQL 报告会议覆盖与完整决定历史' (#19) from codex/postgres-coverage into main
Metadata integrity checks / metadata (push) Successful in 1m13s
Reviewed-on: #19
2026-11-08 14:10:17 +00:00
Zayden-Jung 9726e31677 Merge pull request '规范CVF目录fragment链接并保留歧义检查' (#18) from codex/cvf-fragments into main
Metadata integrity checks / metadata (push) Successful in 1m15s
Reviewed-on: #18
2026-11-08 14:10:09 +00:00
codex-bot 9040649320 Preserve full source listing totals beside ready archive subsets
Metadata integrity checks / metadata (push) Successful in 1m10s
2026-11-08 21:54:43 +08:00
codex-bot 64ced7af42 Package reproducible early WWW metadata collection with explicit review holds
Metadata integrity checks / metadata (push) Successful in 1m10s
2026-11-08 21:41:02 +08:00
codex-bot a49714786b Record accepted WWW event migration and verified server source cache
Metadata integrity checks / metadata (push) Successful in 1m10s
2026-11-08 21:29:25 +08:00
codex-bot ce5ace0c21 Inventory early WWW proceedings and preserve source scope discrepancies
Metadata integrity checks / metadata (push) Successful in 1m45s
2026-11-08 21:18:40 +08:00
codex-bot 4182070e76 Scope incremental parents to events and verify integrated write safeguards
Metadata integrity checks / metadata (push) Successful in 1m45s
2026-11-08 21:04:05 +08:00
codex-bot 3c974009be Integrate optional provenance-backed paper annotations
# Conflicts:
#	README.md
#	paper_atlas/querying.py
2026-11-08 21:01:26 +08:00
codex-bot 298d7c4564 Integrate independent same-year event identity
# Conflicts:
#	.gitea/workflows/check.yml
#	README.md
#	paper_atlas/cli.py
2026-11-08 21:01:08 +08:00
codex-bot c7591bca0f Integrate verified joint-edition refresh protection 2026-11-08 21:00:45 +08:00
codex-bot 160137ee2d Integrate stable identities and incremental source coverage 2026-11-08 21:00:45 +08:00
codex-bot e044c63546 Bound exact event migration counts with primary-key pagination
Metadata integrity checks / metadata (push) Successful in 1m20s
2026-11-08 20:52:49 +08:00
codex-bot c3aeee6323 Add explicit conference event identity with guarded legacy migration
Metadata integrity checks / metadata (push) Successful in 1m14s
2026-11-08 20:39:40 +08:00
codex-bot 838731025c Record CoNLL direct submission revision and scoped SIGIR IROS policy evidence
Metadata integrity checks / metadata (push) Successful in 1m10s
2026-11-08 20:24:23 +08:00
codex-bot a30cfa5f64 Scope same-year identity work to verified WWW gap after PostgreSQL preflight
Metadata integrity checks / metadata (push) Successful in 1m9s
2026-11-08 20:16:06 +08:00
codex-bot 422c731cf3 Complete first-pass conference year census with evidence and remaining data gaps
Metadata integrity checks / metadata (push) Successful in 1m10s
2026-11-08 20:11:30 +08:00
codex-bot 1cc5e9b88c Census retrieval and mining conferences with same-year event boundaries
Metadata integrity checks / metadata (push) Successful in 1m7s
2026-11-08 20:00:19 +08:00
codex-bot 95fab931a8 Census robotics and speech conference histories with transfer and publication boundaries
Metadata integrity checks / metadata (push) Successful in 1m8s
2026-11-08 19:50:44 +08:00
codex-bot 0570dd8a15 Document FAccT ISMIR and MICCAI edition censuses and policy limits
Metadata integrity checks / metadata (push) Successful in 1m12s
2026-11-08 19:40:23 +08:00
codex-bot 88c2819edd Keep legacy source refreshes in their verified joint editions
Metadata integrity checks / metadata (push) Successful in 1m13s
2026-11-08 19:15:26 +08:00
codex-bot 866aeaf068 Read PostgreSQL mapping rows by position during joint preflight
Metadata integrity checks / metadata (push) Successful in 1m13s
2026-11-08 19:10:10 +08:00
codex-bot c05b979b01 Bind repair execution receipts to the reviewed plan hash 2026-11-08 19:09:27 +08:00
codex-bot 3f81734e69 Repair verified joint edition membership without reimporting papers
Metadata integrity checks / metadata (push) Failing after 1m5s
2026-11-08 19:07:00 +08:00
codex-bot a95815605f Census vision and reasoning conference histories with source-specific evidence
Metadata integrity checks / metadata (push) Successful in 1m10s
2026-11-08 18:53:08 +08:00
codex-bot adcbbb66a2 Freeze SQLite annotation fixtures before PostgreSQL migration
Metadata integrity checks / metadata (push) Successful in 1m19s
2026-11-08 18:41:38 +08:00
codex-bot a13c535919 Require completed annotation upgrade before accepting evidence
Metadata integrity checks / metadata (push) Failing after 1m5s
2026-11-08 18:40:51 +08:00
codex-bot 27e336eee9 Add evidence-bearing research types and retractable custom annotations
Metadata integrity checks / metadata (push) Failing after 1m2s
2026-11-08 18:38:48 +08:00
codex-bot 1022ec7d22 Census NLP conference editions and preserve bounded review policy evidence
Metadata integrity checks / metadata (push) Successful in 1m7s
2026-11-08 18:27:24 +08:00
codex-bot 3bdcc562fe Record bounded Multimedia public metadata access evidence
Metadata integrity checks / metadata (push) Successful in 1m9s
2026-11-08 18:16:42 +08:00
codex-bot 05800ab67a Census RSS ICAPS AAMAS and Multimedia with historical scope boundaries
Metadata integrity checks / metadata (push) Successful in 2m23s
2026-11-08 18:06:20 +08:00
codex-bot 71d3cf0590 Verify incremental coverage rejects a concurrent parent update
Metadata integrity checks / metadata (push) Successful in 1m18s
2026-11-08 17:33:59 +08:00
codex-bot ee140cfd40 Preserve source coverage when importing incremental metadata batches
Metadata integrity checks / metadata (push) Successful in 1m18s
2026-11-08 17:31:12 +08:00
codex-bot ff60fa4cdb Verify CLeaR and CoRL editions and organize conference census evidence
Metadata integrity checks / metadata (push) Successful in 1m48s
2026-11-08 17:03:25 +08:00
codex-bot 18c8feaaa0 Verify IJCAI conference editions and bound resubmission policy evidence
Metadata integrity checks / metadata (push) Successful in 2m4s
2026-11-08 16:41:35 +08:00
codex-bot d50ca2f0ad Census ICLR and NeurIPS years and retain ICML archive gaps
Metadata integrity checks / metadata (push) Successful in 2m17s
2026-11-08 15:30:35 +08:00
codex-bot 3f3dc3f7ad Distinguish historical primary editions from affiliated workshops
Metadata integrity checks / metadata (push) Successful in 1m9s
2026-11-08 15:12:18 +08:00
codex-bot c8314c0bae Census UAI COLT AISTATS and EMNLP official historical editions
Metadata integrity checks / metadata (push) Successful in 1m13s
2026-11-08 15:04:26 +08:00
codex-bot 91505844be Census official MLSys and COLM editions with nonarchival boundaries
Metadata integrity checks / metadata (push) Successful in 1m8s
2026-11-08 14:55:37 +08:00
codex-bot 5fad2fc575 Merge main and preserve coverage and history audit checks
Metadata integrity checks / metadata (push) Successful in 1m17s
2026-11-08 14:53:20 +08:00
codex-bot 040712b9c1 Census official RecSys editions and document KR WSDM policy limits
Metadata integrity checks / metadata (push) Successful in 2m16s
2026-11-08 14:18:06 +08:00
codex-bot bb861badcd Record ICLR release boundaries and FAccT AAAI decision evidence limits
Metadata integrity checks / metadata (push) Successful in 2m24s
2026-11-08 04:37:26 +08:00
codex-bot 8e82742900 Recognize explicit ICLR workshop decisions with scope guards
Metadata integrity checks / metadata (push) Successful in 2m40s
2026-11-08 04:18:09 +08:00
codex-bot 5544a7838c Document ICAPS poster outcomes and AAMAS resubmission evidence gaps
Metadata integrity checks / metadata (push) Successful in 2m44s
2026-11-08 04:11:29 +08:00
codex-bot 9d32f47fac Clarify public decision policies and venue-specific paper attributes
Metadata integrity checks / metadata (push) Successful in 2m56s
2026-11-08 04:01:19 +08:00
codex-bot f327861a00 Hold untitled public assertions and retain explicit withdrawals
Metadata integrity checks / metadata (push) Successful in 1m17s
2026-11-08 03:23:25 +08:00
codex-bot a1744d4f4c Document observed venue coverage and public decision source gaps
Metadata integrity checks / metadata (push) Successful in 1m9s
2026-11-08 03:14:51 +08:00
codex-bot fd3fdb6cf7 Aggregate coverage paper counts once per snapshot
Metadata integrity checks / metadata (push) Successful in 1m17s
2026-11-08 02:57:09 +08:00
codex-bot 346208a272 Audit current PostgreSQL conference coverage and decision history
Metadata integrity checks / metadata (push) Successful in 3m50s
2026-11-08 02:42:21 +08:00
codex-bot c7cc4d78f7 Deduplicate CVF index links by HTTP resource
Metadata integrity checks / metadata (push) Successful in 3m22s
2026-11-07 16:42:20 +08:00
115 changed files with 41581 additions and 61 deletions
+8
View File
@@ -48,16 +48,24 @@ jobs:
outside.mkdir()
subprocess.run([str(venv/'bin/paper-atlas'),'--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','collect','cvf','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','collect','www-archive','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','collect','aamas-proceedings','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','maintain','postgres','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','maintain','edition-tracks','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','maintain','joint-editions','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','maintain','event-identity','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','import','records','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','import','arxiv','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','maintain','backfill','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','audit','public-openreview','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','coverage','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','audit','histories','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','curate','identifiers','--help'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-c','from paper_atlas.postgres.writer import PostgresStore, WriteConnection'],cwd=outside,check=True)
smoke = "from paper_atlas.db.store import Store; from paper_atlas.config import DEFAULT_REGISTRY; import json; assert {'COLM','MM','MLSys'} <= {v['acronym'] for v in json.loads(DEFAULT_REGISTRY.read_text())['venues']}; s=Store('installed.sqlite'); s.conn.close()"
subprocess.run([python,'-I','-B','-c',smoke],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','query','--db','installed.sqlite','--stats'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','annotate','init','--db','installed.sqlite'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','annotate','list','--db','installed.sqlite','--paper','1'],cwd=outside,check=True)
subprocess.run([python,'-I','-B','-m','paper_atlas','audit','histories','--db','installed.sqlite','--examples','0'],cwd=outside,check=True)
PY
+15 -1
View File
@@ -51,7 +51,8 @@ PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas query --pg-service fo
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas query --pg-service foundry-research --paper 123
# 列出全部目标会议,包括尚未入库的项目
paper-atlas coverage --db /data/paper-index/papers.sqlite \
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas coverage \
--pg-service foundry-research --pg-schema research \
--out /data/paper-index/collected/venue-coverage-current.json
# 采集与导入分开;这里只采集到独立文件
@@ -59,6 +60,10 @@ paper-atlas collect colm --cache /data/paper-index/raw/http-cache \
--out /data/paper-index/collected
```
早期主系列的Workshop名称按[ICML/IROS精确届次证据](docs/coverage/historical-primary-series-2026-11-09.md)识别,保留原名与范围证据;代码支持不代表已补齐生产数据。
AAMAS 的[官方论文集采集器](docs/aamas-proceedings.md)目前核验了 2012 版式,可从缓存或已校验快照采集标题、作者及页面提供的摘要;发表形式单独保存,全文/扩展摘要中未明确的投稿 track 保持待明确,不根据会话主题推定主会轨道。
`paper-atlas collect --help` 查看来源;`paper-atlas import --help` 查看导入方式。完整批次步骤见[使用指南](docs/usage.md)。
共享实例名为 `foundry-postgres`,数据位于 `foundry_data` 库的 `research` schema;其他项目可按权限复用同一组表。库名通过 libpq service 配置、schema 通过 search_path 或 `--pg-schema` 指定,不写死在查询中。PostgreSQL 凭据放在服务器权限为 `0600` 的 libpq service 文件中;命令行只使用服务名称。`paper-atlas maintain postgres --help` 提供迁移入口:先完整核验 21 张业务表,再发布目标 schema。SQLite FTS5 内部表由 PostgreSQL GIN 索引替代。切换后 SQLite 为只读备份;`import records`、`import arxiv` 和 `maintain backfill` 使用 `--pg-service foundry-research` 写入主库,整个写入会话只允许一个协调写入者,会议文件失败时整体回滚并保留失败批次记录。
@@ -86,3 +91,12 @@ paper-atlas collect colm --cache /data/paper-index/raw/http-cache \
CI 在已授权的远程 runner 上运行测试、构建 wheel,并从源码目录外验证安装后的命令及随包资源。数据库全量去重和覆盖率是独立的数据验收步骤,不因代码测试通过而自动完成。
开发通过工作分支和 PR 交付,由用户手动合并。
早期WWW档案的可重放元数据采集、论文/海报分轨与待核查条目见 [WWW档案采集](docs/www-archive.md)。
历史联合会议的既有届次归属可通过 [`maintain joint-editions`](docs/joint-editions.md) 先只读规划,再按计划哈希执行;保留论文与投稿决定来源,不重导入。
同年多届的 `event_key`、显式迁移、旧文件刷新与查询边界见 [会议事件身份](docs/event-identity.md)。
研究类型与自定义标签可通过 [`annotate`](docs/annotations.md) 显式初始化、添加和撤回;两者独立查询,保留证据及完整更正历史,不从会议轨道推断研究类型。
整合后的运行版本依赖、交互约束和生产切换顺序见 [运行版本整合](docs/research-runtime.md)。
已导入整卷的逐条轨道修正见 [edition-tracks 维护流程](docs/edition-tracks.md):按完整证据生成只读计划,保留原投稿和决定 ID,事务性修正 edition、标识与覆盖,并防止旧整卷刷新覆盖分类。
+43
View File
@@ -0,0 +1,43 @@
# AAMAS 官方论文集元数据
`paper_atlas.collectors.aamas` 是按需运行的采集适配器,通过统一入口 `collect aamas-proceedings` 使用。目前只支持已独立核验的 **AAMAS 2012** HTML 版式;其他年份需先核对官方目录和逐篇结构,再增加适配,不能仅替换年份。
## 来源与范围
[官方论文集介绍](https://www.ifaamas.org/Proceedings/aamas2012/)及其 Full Papers、Extended Abstracts、Demos、Doctorial Consortium Abstracts 四个栏目分别列出 136、146、28、24 条,共 334 条。旧 DBLP 候选卷的 310 条不能替代这四类官方目录,也不能全部标记为主会全文。栏目数量来自 2026-11-09 冻结的原始页面;页面结构或数量发生变化时,采集器停止,留待重新核验。
采集标题、逐篇作者、页面实际提供的摘要、官方条目 ID、目录锚点和 PDF 地址。**只保存 PDF 链接,不下载 PDF。** 全文页面的摘要藏在标题链接内部的 `abstract` 元素,作者链接里的 “has N papers” 是界面徽标,二者不会混入标题或姓名。未提供的摘要保存为 `null`,不会用标题、说明文字或其他论文填充。
官方介绍说明了 general、robotics、virtual agents、innovative applications 等投稿轨道,但逐篇目录的主题会话不能独立证明某篇论文的投稿轨道。因此全文和扩展摘要均使用 `proceedings_unspecified`;演示、博士栏目使用 `demo`、`doctoral`。发表形式保留在 `metadata.publication_format` 和 `aamas_proceedings:publication_format` 标签中,会话原文单独保存。它们不是研究类型标注,也不会写入自定义 annotation。
目录条目仅提供发表录用证据,不是原始决定信。`observed_at` 是页面采集时间,不能当作 2012 年的决定日期;官方介绍中的投稿、撤稿、录用汇总数不能识别逐篇拒稿或撤稿,采集器不会由总量相减生成这些决定。
## 运行
在已确认的远程运行环境中,使用 HTTP 缓存采集:
```sh
paper-atlas collect aamas-proceedings --year 2012 \
--cache /data/paper-index/cache/aamas \
--out /data/paper-index/collected/aamas-2012
```
也可使用已冻结的官方页面:
```sh
paper-atlas collect aamas-proceedings --year 2012 \
--snapshots /data/paper-index/collected/historical-next-source-evidence-v1 \
--out /data/paper-index/collected/aamas-2012
```
快照目录需含 `receipts.json`,其中每个响应包含原始 `url`、HTTP `status`、相对 `file`、`bytes`、`sha256` 和 `finished_at`。要求五个准确官方 URL 均唯一匹配且返回 200;验证全部字节数和哈希后才解析,不接受目录穿越或绝对文件路径。快照中其他来源的响应不会被当成 AAMAS 页面。
输出为按数据库 track 分组的三个 JSONL 文件和对应 manifest、五份原始 HTML 证据,以及最后写出的 `aamas-proceedings-2012.json` 采集报告。锁文件避免同一输出目录并发运行。manifest 始终为 `partial`,记录发表形式数量和缺失摘要数;**采集命令不连接数据库,也不导入。**
## 复核与恢复
每条记录携带对应官方页面的 URL、采集时间、字节数、SHA-256 与输出内证据路径。重新运行前先检查已有采集报告和文件哈希;采集中断不等于主库已导入,报告缺失或哈希不一致的目录不能直接作为导入队列。输出中的原始证据应随文件一起保存。
生产导入前仍需单独与主库核验稳定标识、标题、作者及已有投稿,按证据补充 DOI/arXiv 等标识;目录页上的作者计数徽标和会话 ID 不能作为这些标识。需要另建经过核验的增量清单、保护旧历史,完成独立验收后才能计入覆盖。跨来源同一论文不得仅因同题就新增或合并投稿。
本功能的代码、测试或采集成功均不代表 AAMAS 2012 已导入生产,也不证明拒稿全集完整。全库最终去重、摘要和来源覆盖验收属于独立后续阶段。
+107
View File
@@ -0,0 +1,107 @@
# Research types and custom annotations
Research type describes a claimed characteristic of the work (for example a survey,
benchmark, empirical study or replication). It is independent of topic, paper length,
conference track, presentation format and acceptance status. No type is inferred from
those fields. Multiple source-specific or human classifications may coexist; no
cross-platform vocabulary mapping or automatic classifier is provided.
`annotation_events` stores both kinds with an explicit `kind` discriminator:
`research_type` and `tag` are separate domains, even when namespace/value strings
happen to coincide. Existing platform labels remain in `tags` / `paper_tags`.
Each assertion carries namespace, value, actor, reason, evidence key, optional source
record and evidence URL, and the time it was recorded. This is observation time, not
paper publication time or a conference decision date.
Values are not forced into a global taxonomy: `custom:method=empirical` and
`platform:declared_type=empirical` retain separate provenance. An explicit platform
assertion API requires a source record belonging to that paper and matching the
namespace prefix. The manual CLI only accepts `custom:*`, and cannot retract platform
assertions. No source type has been automatically assigned to existing papers.
## Initialize explicitly
On the published PostgreSQL dataset, using its protected service file:
```sh
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas annotate init \
--pg-service foundry-research --pg-schema research
```
This creates one optional table, its indexes, and an upgrade marker in one transaction,
using the existing dataset writer lock. It does not copy data, change existing papers
or decisions, or create a PostgreSQL instance. Repeating it is safe; an unexplained
pre-existing table/marker mismatch fails closed. Readers and ordinary imports do not
install the extension. Legacy datasets remain readable. A SQLite **sample** uses
`--db sample.sqlite`; the cutover SQLite backup remains protected against writes.
## Add and retract evidence
Use the canonical paper ID returned by `query`. For a reviewed classification:
```sh
paper-atlas annotate assert --pg-service foundry-research --pg-schema research \
--paper "$PAPER_ID" --kind research_type --namespace custom:method \
--value empirical --evidence-key manual:abstract-review \
--actor reviewer --reason 'Classified from the explicitly described study design' \
--request-id "$REQUEST_ID"
```
`$REQUEST_ID` must be a new, stable identifier for this action (for example a UUID).
Retry with the same request ID and identical content after an interrupted response;
it returns the original event ID. Reusing that ID with changed content is rejected.
A topic annotation uses `--kind tag --namespace custom:topic --value robotics` instead.
Optional `--source-record` and `--evidence-url` attach additional evidence; the source
record must belong to this paper. URLs are retained as evidence and are not fetched.
To withdraw one particular assertion, use its returned event ID:
```sh
paper-atlas annotate retract --pg-service foundry-research --pg-schema research \
--event "$EVENT_ID" --actor reviewer --reason 'Classification corrected after review' \
--request-id "$RETRACTION_REQUEST_ID"
```
Retraction adds an event referencing that assertion, preserving its original content.
It does not remove another contributor's assertion of the same label, platform tags,
source metadata or submission/decision history. A retracted assertion can be asserted
again with a new request ID and evidence; it is a new observation. The API does not
update or delete past annotation events. Database administrators still control direct
SQL access. Work reviewed as the same paper may subsequently be merged by the existing
identity workflow: annotation IDs, original paper IDs, evidence and retraction links
are retained while the canonical paper reference follows the surviving entity.
## Query and analyze
```sh
paper-atlas query --pg-service foundry-research --pg-schema research \
--research-type custom:method=empirical
paper-atlas query --pg-service foundry-research --pg-schema research \
--tag custom:topic=robotics
paper-atlas query --pg-service foundry-research --pg-schema research \
--paper "$PAPER_ID" --annotation-history
paper-atlas annotate list --pg-service foundry-research --pg-schema research \
--paper "$PAPER_ID" --history
```
`--tag` includes original platform labels and active annotation tags. It never matches
research types. `--research-type` matches active type assertions only. Paper details
return separate `tags` (existing provenance), `annotation_tags`, and `research_types`;
`--annotation-history` additionally includes retractions. A missing extension yields
empty annotation results rather than changing the database.
For direct SQL analysis, active research-type evidence is:
```sql
SELECT a.* FROM research.annotation_events a
WHERE a.kind = 'research_type' AND a.retracts_id IS NULL
AND NOT EXISTS (SELECT 1 FROM research.annotation_events r WHERE r.retracts_id = a.id);
```
Several independent assertions can support one label; count distinct papers/labels
when appropriate rather than counting evidence rows as papers. Namespaces stay
separate. Standard paper queries decode the PostgreSQL text codec; direct SQL consumers
must honor the dataset's documented codec, including NUL/SOH values. SQLite-to-PostgreSQL
migration recognizes an installed annotation extension and verifies its full row hashes,
constraints and identity sequence along with the original business tables. An old
21-table snapshot stays a 21-table migration; no synthetic annotations are generated.
+196
View File
@@ -0,0 +1,196 @@
# 会议覆盖与公开决定核查
这是 2026-11-08 的首份核查基线,**完整逐年政策普查和最终去重仍未完成**。收录 43 个目标,不能把“有记录”当作“完整覆盖”。结构化清单见 [inventory-2026-11-08.json](inventory-2026-11-08.json)。清单中的 `policy_checks` 均限定所列年份和轨道;空数组表示尚未核实,绝不表示没有公开拒稿。
## 快照与复核
生产只读快照时间 `2026-11-07T19:06:00.862Z`,数据库 `foundry_data/research`。报告固定代码 `fd3fdb6cf7e70404d7c35051c36442a4e3771d36`,服务器产物 `/data/paper-index/collected/venue-coverage-postgresql-fd3fdb6.json`,SHA256 `2f090827ae741c9d663c428942fec40182231c5479346f3107678ee5c5fb5435`。完整 JSON 保留逐届、逐 track 和来源清单证据;仓库里的清单记录摘要及后续核查任务。
PostgreSQL 报告支持由 [PR #19](https://gitea.entroia.com/Zayden-Jung/paper-atlas/pulls/19) 提供,须使用包含其提交的安装版本。它与本清单的文档分支相互独立。刷新时生成新的日期快照,保留旧快照;不要把旧报告当实时统计。
```sh
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas coverage \
--pg-service foundry-research --pg-schema research \
--out /data/paper-index/collected/venue-coverage-current.json
```
报告包含 1328 个不同届次/track、503,964 次不同投稿。逐会议相加为 505,718,差额 1,754 来自 7 个联合届次同时匹配两个注册目标,见 JSON 的 `joint_editions`。这是栏目重叠,不是新增投稿。论文可以跨年、跨会复投,来源也可以重叠,所以论文数与来源数都不能直接逐行相加。
## 43 个目标的已观察记录
年份范围只表示已观察最早与最晚年,中间是否缺年须看 JSON 的 `observed_years`;它不证明应举办年份齐全。拒稿列按每次投稿的最新已观察决定计数,完整决定历史另见 JSON。
| 会议 | 已观察年份范围 | 投稿 | 最新拒稿 | 状态未知 | 来源 |
| --- | --- | ---: | ---: | ---: | --- |
| NeurIPS | 1987–2025 | 32,057 | 1,216 | 0 | neurips, papercopilot_openreview |
| ICML | 2013–2026 | 21,232 | 399 | 0 | pmlr, papercopilot_openreview, openreview_public_archive |
| ICLR | 2017–2026 | 50,536 | 24,612 | 10,208 | peerread, iclr_program, openreview_snapshot |
| COLM | 2024–2026 | 1,573 | 0 | 0 | colm |
| COLT | 2011–2026 | 1,795 | 0 | 0 | pmlr |
| AISTATS | 2007–2026 | 5,371 | 0 | 0 | pmlr |
| UAI | 2019–2026 | 1,698 | 0 | 0 | pmlr |
| CLeaR | 2022–2026 | 243 | 0 | 0 | pmlr |
| ACL | 1979–2026 | 22,214 | 0 | 0 | acl_anthology |
| EMNLP | 1996–2026 | 21,785 | 9 | 0 | acl_anthology, papercopilot_openreview |
| NAACL | 2000–2025 | 6,251 | 0 | 0 | acl_anthology |
| EACL | 1983–2026 | 3,712 | 0 | 0 | acl_anthology |
| COLING | 1965–2025 | 8,560 | 0 | 0 | acl_anthology |
| CoNLL | 1997–2026 | 1,566 | 0 | 0 | acl_anthology |
| CVPR | 2013–2026 | 23,435 | 0 | 0 | cvf |
| ICCV | 2013–2025 | 9,145 | 0 | 0 | cvf |
| ECCV | 2018–2024 | 6,165 | 0 | 0 | ecva |
| AAAI | 1980–2026 | 29,827 | 0 | 5 | dblp |
| IJCAI | 1969–2026 | 16,288 | 0 | 1 | dblp |
| ECAI | 1976–2026 | 6,280 | 0 | 0 | dblp |
| KDD | 1995–2026 | 8,707 | 0 | 0 | dblp |
| SIGIR | 1971–2026 | 7,869 | 0 | 1 | dblp |
| WWW | 1995–2026 | 11,422 | 0 | 2 | dblp |
| WSDM | 2008–2026 | 2,184 | 0 | 0 | dblp |
| RecSys | 2007–2025 | 2,360 | 0 | 0 | dblp |
| CIKM | 1992–2025 | 9,330 | 0 | 0 | dblp |
| ICDM | 2001–2025 | 3,824 | 0 | 0 | dblp |
| SDM | 2001–2025 | 2,048 | 0 | 0 | dblp |
| ECML-PKDD | 1993–2026 | 4,836 | 0 | 1 | dblp |
| ICRA | 1984–2026 | 32,504 | 0 | 8 | dblp |
| IROS | 1991–2025 | 25,074 | 0 | 0 | dblp |
| RSS | 2005–2024 | 1,305 | 0 | 0 | dblp |
| CoRL | 2017–2025 | 1,488 | 0 | 0 | pmlr |
| ICAPS | 1994–2025 | 1,576 | 0 | 0 | dblp |
| KR | 1989–2026 | 1,694 | 0 | 0 | dblp |
| AAMAS | 2002–2024 | 7,325 | 0 | 0 | dblp |
| ICASSP | 1976–2025 | 56,226 | 0 | 4 | dblp |
| INTERSPEECH | 1987–2026 | 29,784 | 0 | 1 | dblp |
| ISMIR | 2000–2025 | 2,593 | 0 | 0 | dblp |
| MICCAI | 1998–2026 | 10,930 | 0 | 0 | dblp |
| FAccT | 2018–2026 | 1,258 | 0 | 0 | dblp |
| MLSys | 2019–2026 | 448 | 0 | 0 | dblp, mlsys |
| MM | 1993–2025 | 11,200 | 0 | 1 | dblp |
## 优先缺口
- **UAI 2024–2026**:官方均允许作者选择公开拒稿,当前主库拒稿仍为零。原 notes 接口要求 Challenge 验证,公开镜像尚无已核验来源,必须保留这个真实缺口;不能根据 PMLR 录用名单推断拒稿。参见 [2025 投稿指南](https://www.auai.org/uai2025/submission_instructions)、JSON 内其他年份官方证据。
- **EMNLP 2023**:官方允许公开 opt-in 拒稿,目前只导入 9 条。需继续核验实际公开全集。ARR 评审、conference commitment 与最终会议决定分开;[ARR 作者说明](https://aclrollingreview.org/authors) 明确其自愿捐赠数据与 EMNLP 2023 直接投稿发布的范围不同。
- **ICLR**:固定快照已观察 2017 与 2020–2026;快照之后,2013/2018/2019 的 1,654 条来源记录已完成独立 PostgreSQL 验收(报告时间 `2026-11-07T19:52:28.378Z`),不回写旧快照计数,也不据此宣称逐届全集已齐。快照中的 10,208 次 unknown 不等于 rejected,近期补采与冲突核对仍在进行;评审推荐不能当最终决定。
- **MM / MLSys**:MM 11,200 条书目记录保留 `proceedings_unspecified`;MLSys 的 448 次官方投稿与 313 条 DBLP 记录重叠。2026 MLSys 的研究/工业轨道在 [官方 CFP](https://mlsys.org/Conferences/2026/CallForResearchPapers) 中分开,仍须核对逐篇轨道证据,不能仅凭会议名全部归 main。
- **摘要与历史目录**:DBLP 原始来源不含摘要,论文实体可能从其他来源补得,须分开核验。最近导入批次仍有 6 条 CVF 原始摘要缺失。COLT 可选择一页 extended abstract,摘要非空不能证明完整。RSS 等部分近期届次尚无当前来源记录,需与真实出版目录核对。
## 官方历届目录核对
已完成 **43/43** 个目标的首轮独立年份目录核查;逐篇采集、逐轨道/逐年公开决定普查和最终审计仍未完成。每份证据保存官方目录实际条目、URL、可读取表示(HTML、静态JS或网页提取文本)的哈希和检查时间;不能用数据库已观察年份或首尾年份插值替代官方目录。下表差集仅对应前述固定旧快照,不是当前主库查询,也不代表逐篇、track、摘要或公开拒稿已完整。
| 目标 | 官方截至2026年届次 | 固定旧快照缺年 | 证据与边界 |
| --- | --- | --- | --- |
| NeurIPS | 1987–2025已列论文集,另公告2026,共40届 | 2026 | [证据](neurips-editions-2026-11-08.json);2026未列论文集,不能称为漏了已出版论文。 |
| ICLR | 2013–2026,14届 | 2013–2016、2018、2019 | [证据](iclr-editions-2026-11-08.json);2013/2018/2019后续来源已验收,不能因旧快照缺年而重放。 |
| COLM | 2024–2026,3届 | 无 | [证据](colm-editions-2026-11-08.json);无年份差集不证明逐篇或轨道完整。 |
| COLT | 1988–2026,39届 | 1988–2010,23届 | [证据](colt-editions-2026-11-08.json);EuroCOLT四届另列,混合论文集保留范围限制。 |
| AISTATS | 官方目录实际29届,早期不连续 | 1985、1989–2005奇数年,共10届 | [证据](aistats-editions-2026-11-08.json);不补造1987或2008。 |
| UAI | 1985–2026,42届 | 1985–2018,34届 | [证据](uai-editions-2026-11-08.json);早期编辑图书出版年与会议年分开。 |
| CLeaR | 2022–2026,5届 | 无 | [证据](clear-editions-2026-11-08.json);由官方出版社首届说明、实际各卷及会议日期核对。 |
| EMNLP | 1996–2026,31个不同年份 | 无 | [证据](emnlp-editions-2026-11-08.json);WVLC另列,2020重复只计一次,保留年份/日期/地点文字冲突。 |
| IJCAI | 1969–2026,35届,早期隔年 | 无 | [证据](ijcai-editions-2026-11-08.json);保留IJCAI-ECAI / IJCAI-PRICAI联合名称,多卷不增加届数。 |
| RecSys | 2007–2026,20届 | 2026 | [证据](recsys-editions-2026-11-08.json);未来2027排除。 |
| CoRL | 2017–2025已列论文集,另公告2026,共10个年份 | 2026 | [证据](corl-editions-2026-11-08.json);截至11月8日,11月9–12日活动即将举办,PMLR未列该届,不能称为漏了已出版论文。 |
| MLSys | 2018–2026,9届 | 2018 | [证据](mlsys-editions-2026-11-08.json);首届SysML为非存档oral/poster,正式论文集从2019开始。 |
| RSS | 2005–2026,22届 | 2025、2026 | [证据](rss-editions-2026-11-08.json);使用论文集中的会议日期,印刷出版年和期刊特刊分开。 |
| ICAPS及具名共同前身 | ICAPS2003–2026共24届,另13个具名前身届次 | 1990–1993、1995、1997、1999、2001、2026 | [证据](icaps-editions-2026-11-08.json);保留AIPS/ECP/EWSP/EPS原名,ECP系仍有采集范围缺口,不把前身论文改名ICAPS。 |
| AAMAS | 2002–2026,25届 | 2012、2025、2026 | [证据](aamas-editions-2026-11-08.json);2002–2006出版入口与2007后基金会档案分开,保留2020–2022实际线上举办情况。 |
| MM | 1993–2026,34个实际年份标签 | 2026 | [证据](mm-editions-2026-11-08.json);SIGMM早期档案、官网历届及统计年份交叉核对,2026截至11月8日尚未举办,不据此断定出版情况。 |
| ACL | 1963–2026,64个真实会议年 | 1963–1978 | [证据](acl-editions-2026-11-08.json);历史表补16个早年,1962成立年不算会议;1965由首届COLING替代,不能生成额外录用。 |
| NAACL | 2000–2025实际18个系列会议年 | 无 | [证据](naacl-editions-2026-11-08.json);章节网站承办的ACL年份单列,不能改名NAACL;保留2024组织更名与历史标题。 |
| EACL | 1983–2026,19届 | 无 | [证据](eacl-editions-2026-11-08.json);承办ACL2019/2022不算新增EACL届次,1997明确联合;未来2027排除。 |
| COLING | 1965–2025,31届 | 1971、1976、1978 | [证据](coling-editions-2026-11-08.json);1988前言补早期缺年,2024联合LREC、2025改奇数年;不补造2026。 |
| CoNLL | 1997–2026,30届 | 无 | [证据](conll-editions-2026-11-08.json);shared tasks与另一个1997前身workshop分开,保留早期workshop名称。 |
| CVPR | 官方实际39个会议年,1983–2026不连续 | 2013年前25个实际年份,详见JSON | [证据](cvpr-editions-2026-11-08.json);逐行保留实际年份,不按年插值,未来2027–2031排除。 |
| ICCV | 1987–2025实际20届 | 1987–2011实际13届,详见JSON | [证据](iccv-editions-2026-11-08.json);早期1988/1990/1998确有条目,不强制奇数年。 |
| ECCV | 1990–2026,19届 | 1990–2016偶数年及2026 | [证据](eccv-editions-2026-11-08.json);ECVA概览只列2004–2024,以CVF完整目录补核,2020地点文字冲突保留。 |
| AAAI | 1980–2026实际40届 | 无 | [证据](aaai-editions-2026-11-08.json);官网会议/论文集两组年份一致;web工具官方文本提取哈希另存,直连403如实记录。 |
| ECAI及具名前身 | 1974–2026实际29届 | 1974、1980、2018、2022 | [证据](ecai-editions-2026-11-08.json);1974–1980为AISB前身,1982开始ECAI名称;2018/2022/2026与IJCAI联合。 |
| KR | 1989–2026实际23届 | 无 | [证据](kr-editions-2026-11-08.json);只解析官网静态会议数组,不执行脚本,排除其他数组和未来2027/2028。 |
| FAccT | 9个实际会议年 | 无 | [证据](facct-editions-2026-11-08.json);2018–2026;2018–2020保留FAT*原名,2027排除。 |
| ISMIR | 27个实际会议年 | 2026 | [证据](ismir-editions-2026-11-08.json);2000–2026;2026于核查当天开幕,出版完整性未确认。 |
| MICCAI | 29个实际会议年 | 无 | [证据](miccai-editions-2026-11-08.json);1998–2026;另列8个具名前身事件,不改名为MICCAI;保留2026地点/日期来源冲突。 |
| ICRA | 43个目录年份 | 无 | [证据](icra-editions-2026-11-08.json);1984–2026;按届次标题取年,保留2002日期行误写2022的源内冲突。 |
| IROS | 39个目录年份 | 1988、1989、1990、2026 | [证据](iros-editions-2026-11-08.json);1988–2026;1988–1990和2026在固定旧快照缺失,未来2027排除。 |
| ICASSP | 51个目录年份 | 1977、2026 | [证据](icassp-editions-2026-11-08.json);1976–2026列明51个届次年份;2003现场标记取消但仍有IEEE论文集DOI,不能等同没有录用稿件。 |
| INTERSPEECH | 39个目录年份 | 无 | [证据](interspeech-editions-2026-11-08.json);1987–2026具名家族;保留ECST/Eurospeech/ICSLP原名,不补1988。 |
| KDD | 32个具名届次/事件 | 无 | [证据](kdd-editions-2026-11-08.json);1995–2026主会;另列1989/1991/1993/1994四个具名workshop。 |
| SIGIR | 50个具名届次/事件 | 无 | [证据](sigir-editions-2026-11-08.json);含1971独立历史事件与1978–2026的49个年度会,不补1972–1977。 |
| WSDM | 19个具名届次/事件 | 无 | [证据](wsdm-editions-2026-11-08.json);2008–2026;2008文字误连2009域名另记,未来2027排除。 |
| WWW | 35个具名届次/事件 | 1994、1996、1997、1998、1999、2000 | [证据](www-editions-2026-11-08.json);1994–2026共33年份、35事件;1994/1995各两届,需先补事件身份模型再导入。 |
| ICML | 43个具名届次/事件 | 1980、1983、1985、1987、1988、1989、1990、1991、1992、1993、1994、1995、1996、1997、1998、1999、2000、2001、2002、2003、2004、2005、2006、2007、2008、2009、2010、2011、2012 | [证据](icml-editions-2026-11-08.json);1980–2026家族实际年份;早期workshop原名保留,不补1981/1982/1984/1986。 |
| CIKM | 35个具名届次/事件 | 2026 | [证据](cikm-editions-2026-11-08.json);1992–2026;1992会议与1993精选论文集出版年分开,2026正在举行。 |
| ICDM | 26个具名届次/事件 | 2026 | [证据](icdm-editions-2026-11-08.json);2001–2026;重复目录行去重,2026于11月12–15日尚待举行,不代表论文集齐全。 |
| SDM | 26个具名届次/事件 | 2026 | [证据](sdm-editions-2026-11-08.json);2001–2025出版社实际论文集标题加2026官方公告,2026于11月19–20日尚待举行。 |
| ECML-PKDD | 41个具名届次/事件 | 1986、1987、1988、1989、1991 | [证据](ecml-pkdd-editions-2026-11-08.json);1986–2026共38年份、41事件;5个EWSL前身、1997/1998/2000两系列独立事件均保留,生产中已属不同venue/edition。 |
CLeaR与CoRL的出版届次由 [PMLR官方目录](https://proceedings.mlr.press/) 和每卷会议日期核对;[CoRL2026官网](https://www.corl.org/) 的已公告活动另记,不把公告当作已出版论文集。main、workshop、demo与late-breaking展示还需分别核对。MLSys2018允许已有发表研究及后续原样再投,展示或PDF链接不能自动作正式出版证据。
NeurIPS2021 Datasets & Benchmarks使用独立目录,2022起混入主卷,2025 Main Conference与Creative AI分索引,仍须保留逐篇轨道证据。EMNLP目录文字冲突保留在证据中,不据此修改事件元数据。
ICML的[早先部分证据](icml-partial-editions-2026-11-08.json)保留原始坏导航记录;后来找到[2008官方历届表等独立证据](icml-editions-2026-11-08.json),已补齐43个实际家族年份。没有使用错位导航补年,也没有把尚未下载/导入的历史论文集说成已完成。
[UAI2023投稿说明](https://www.auai.org/uai2023/submission_instructions) 与2024–2026核查均包含作者可选公开拒稿;逐篇公开来源仍未验收。[EMNLP2023审稿流程说明](https://2023.emnlp.org/blog/EMNLP-2023-openreview/) 确认opt-in范围,但不提供可见记录全集,目前9条不能称为全量。年份普查不替代逐年、逐轨道的公开决定核查。
ICAPS官方共同历史明确列出两个前身系列,现有DBLP映射只覆盖AIPS/ICAPS,ECP/EWSP/EPS缺口须独立补齐并保留原名。MM官网的完整历届链接当前404;使用SIGMM档案与官网逐年实际标签交叉核对,不从首尾年推算。[MM官方汇总统计](https://www.acmmm.org/) 不是逐篇拒稿记录;SC政策PDF仍有proposal/alternative表述,不能据此代替具体会议最终决定。
## 政策证据的边界
- [COLM 2026 固定版 CFP](https://raw.githubusercontent.com/COLM-org/colm-org.github.io/f1718e86fd16ed9b10b4e010c9098c1b6223c2a8/cfp.md) 明确不发布拒稿、撤稿及其元数据,哈希与提交号保存在 JSON;不再依赖含 2024 旧链接的 2026 AuthorGuide。2025 有独立政策证据。
- [RSS 2026 CFP](https://roboticsconference.org/2026/information/cfp/) 明确仅录用论文公开、评审不公开。无年份根路径已指向 2027,必须使用有年份的链接。
- [CVPR 2026 指南](https://cvpr.thecvf.com/Conferences/2026/AuthorGuidelines) 说评审与回复不公开;这不自动证明所有拒稿元数据都永久私密。[MICCAI 2026 主会流程](https://miccai2026.org/en/THE-MICCAI-REVIEW-PROCESS.html) 的录用评审公开政策,也不能用 workshop 的通用 OpenReview 配置手册替代。
- AISTATS 的撤稿统计口径、CoRL/CLeaR 审稿期隐私、是否使用 OpenReview,均不能单独证明决定后的拒稿发布范围。
## 新增政策核查与建模边界
本次仅补充政策证据,前面的已观察记录表仍对应固定生产快照,不滚动改写旧计数。43 个目标中,目前 43 个都有至少一条限定年份的政策核查,共 54 条;“有核查”包含仍然 unknown 的结果,不代表这些会议的全部历史年份已查清。额外的 TMLR 期刊政策单列在 JSON 的 `additional_nonconference_policy_checks`,不增加会议目标数。
- [ICAPS 2024 主会 CFP / FAQ](https://icaps24.icaps-conference.org/calls/main_track/) 仅明确录用论文的评审和最终 rebuttal 公开,不能据此推断所有拒稿元数据私密。该年把此前主题轨道统一为主轨道内的可选 primary keywords;technical/position、long/short 仍是论文属性,不能互相混用。
- [ICCV 2025 作者指南](https://iccv.thecvf.com/Conferences/2025/AuthorGuidelines) 明确评审和作者回复不公开;拒稿元数据的会后发布范围仍未独立确认,不将审稿期保密外推为永久不公开。
- [KDD 2026 研究轨道 CFP](https://kdd2026.kdd.org/research-track-call-for-papers/) 的 Resubmit 与 Reject、Withdrawn 分开,且保留 cycle。录用评审公开政策不证明拒稿全集可得;研究轨道证据不外推其他轨道。
- [ICAPS 2025 主会 CFP](https://icaps25.icaps-conference.org/calls/main_track/) 另设海报录用及非存档扩展摘要;缺席存档论文集不能作为拒稿证据。论文类型与 long/short 分开,会后拒稿公开政策仍未确认。
- [AAMAS 2026 AAAI track 专页](https://cyprusconferences.org/aamas2026/call-for-papers-aaai-track/) 接收先在 AAAI 被拒的修订稿,但与 [calls 总览](https://cyprusconferences.org/aamas2026/calls/) 的原会议年份分别写 AAAI-26、AAAI-25,存在冲突。[该 track 录用目录](https://cyprusconferences.org/aamas2026/aaai-accepted/) 可作为后续跨会历史候选,须补原投稿标识和逐篇决定证据后关联,不能仅凭 track 资格规则生成原拒稿记录;评审推荐也不替代会议最终决定。
- [ICLR 2026 作者指南](https://iclr.cc/Conferences/2026/AuthorGuide) 明确录用、拒稿和截稿后撤稿的公开范围,截稿前撤稿可删除;该段未单独确认所有 desk rejection。撤稿权止于决定公布,不能把镜像提交时间当成决定后的撤稿时间。指南与 [CFP](https://iclr.cc/Conferences/2026/CallForPapers) 的通知日期也存在差异,逐篇日期须另有证据。
- [FAccT 2026 作者指南](https://facctconference.org/2026/authorguide.html) 保密投稿材料、录用后公开标题/作者/摘要;未据此确认会后拒稿元数据的完整发布范围。[该年 CFP](https://facctconference.org/2026/cfp.html) 的 Revise 再审不是最终 Reject,non-archival 论文只刊摘要仍可为录用。
- [AAAI 2026 投稿说明](https://aaai.org/conference/aaai/aaai-26/submission-instructions/) 的两阶段决定和 OpenReview 用法不能证明拒稿公开。[AI Review Pilot 原论文](https://arxiv.org/html/2604.13940v1) 的 AI 评审及 SPECS 合成错误样本也不是真实会议 Reject 证据;未核验到逐篇拒稿来源时继续标为 unknown。
- [RecSys 2026 CFP](https://recsys.acm.org/recsys26/call/) 使用 EasyChair;开放出版不等于拒稿公开。Research & Practice Notes 明确不接受主轨道拒稿转投,论文类型和长度不自动改成新的会议投稿结果。
- [KR 2026 主会 CFP](https://kr.org/KR2026/call_main_track.html) 的保密承诺截至出版日期,不能外推会后是否公开拒稿。regular/short 长度、会议录用、期刊邀请分别保留。
- [WSDM 2026 CFP](https://wsdm-conference.org/2026/index.php/call-for-papers/) 区分不同评审角色对作者元数据的可见性;EasyChair 投稿和 ACM 开放出版均不能建立公开拒稿全集。
- [TMLR 当前 FAQ](https://www.jmlr.org/tmlr/faq.html) 明确公开录用、拒稿、撤稿及撤回发表的投稿,desk-rejected 不公开。未录用作者仍保持匿名,不能借其他来源推断身份。期刊论文后续获得会议展示认证,也不能自动当成一次新的会议投稿录用。
- [IJCAI 2025 主会 CFP](https://2025.ijcai.org/call-for-papers-main-track/) 要求近期拒稿复投提供原评审与修改说明;这不能据此生成某篇论文的前次拒稿。[Reviewer FAQ](https://2025.ijcai.org/reviewers-faq/) 的内部讨论可见性也不能证明会后拒稿是否公开。该年主会仍标 unknown;Journal / Best Papers from Sister Conferences 展示轨道与新的主会投稿录用分开。
- [本批四项政策证据](nlp-aamas-policy-checks-2026-11-08.json):NAACL2025的ARR匿名投稿可选公开不等于会议最终拒稿公开;preferred venue不是正式commitment,ARR desk rejection不改记成NAACL决定。EACL2026未入main会自动考虑Findings,Findings录用不能当最终会议Reject;TACL/CL展示与主会录用分开。
- COLING2025仅main直投通道明确不公开投稿与评审,ARR稿件另经commitment,不外推其他年份/轨道。AAMAS2026主会明确公开录用论文及评审,但尚未确认会后拒稿元数据发布范围;允许拒稿重投的规则不能生成逐篇历史决定。CoNLL的逐年公开拒稿政策仍待核查。
- [本批视觉与推理政策证据](vision-reasoning-policy-checks-2026-11-08.json):ECCV2026评审及回复永不公开,不等于已确认全部拒稿元数据的会后发布范围;五个作者贡献类型与轨道、主题、决定分开,无逐篇字段时不能补默认类型。ECAI2025内部跨会共享材料不等于公开,允许带原评审复投不能生成某篇论文的原拒稿。
- [ISMIR2026政策核查](music-medical-fairness-policy-checks-2026-11-08.json):双盲、CMT和desk rejection规则未确认会后公开拒稿范围。MICCAI、FAccT已有检查保持原定年份与范围;不把只公开录用稿件或审稿材料理解为公开全部拒稿。
- [机器人与语音政策证据](robotics-speech-policy-checks-2026-11-08.json):ICRA2026允许IROS2025未录用稿件转投,但政策不是逐篇原拒稿证据;期刊展示不额外生成主会录用。ICASSP no-show不进Xplore也可能已分发论文集,不能据索引缺失判拒。INTERSPEECH响应内静态政策说明审稿保密,重定向页面渲染异常另记;IROS政策访问受限未算完成核查。
- [WWW2026分轨道政策](ir-mining-policy-checks-2026-11-08.json):Research为EasyChair、会后拒稿范围unknown;Industry为OpenReview,仅公开录用稿件审稿材料。Research原HTML中隐藏的2025政策注释未作为2026证据。
- WWW1994/1995各两届;当前`UNIQUE(venue_id,year,track)`不能表达两个同年main事件。补导前须提供独立事件身份、迁移和PG验证,保留原track与IDs,不用伪造track绕过约束。
- [最后四会限定政策](final-four-policy-checks-2026-11-08.json):CIKM Full Research、ICDM Research、SDM main、ECML-PKDD ADS分别记录,均未确认会后负面元数据全集。SDM2026公开group可读、三个public标志为false,根venueid匿名notes查询403,不当作零条;没有绕过权限。
- 生产只读预检确认ECML/PKDD1997/1998/2000已经保存在独立venue/edition中,保持现有身份即可,不需要为这些记录迁移。WWW1995已有59条Fall卷来源;Spring及1994两届仍需先解决同一venue/year/track的事件身份,再补导。SIAM出版社与CIKM官方历史的索引文本提取使用独立哈希,直连403/TLS错误保留,不冒充原HTML。
- [CoNLL、SIGIR、IROS限定政策](remaining-policy-checks-2026-11-08.json):CoNLL2025第二次CFP改为只接直接投稿;其OpenReview路径中的Workshop不决定论文track,非存档展示也不增加存档录用。SIGIR2026仅Full Papers,公开group三个标志false、一次匿名拒稿查询403,不算零条。IROS2025为单盲,不把期刊展示视为常规新录用;2026与全部历史公开拒稿范围仍待查。43个目标都有至少一项限定核查,并不代表全部历史年份/轨道已经完整核查。
## 更新与验收
补充每个年份的官方 CFP/FAQ、固定版本或内容哈希、实际可读取来源、轨道和缺口原因。政策描述与记录证据分开:导入只依赖明确最终决定或明确公开分类,不从标题匹配、未录用清单、评分或评审推荐制造拒稿。同一论文后续在别会录用要保留原拒稿历史。
这份基线不关闭长期目标:还需完成 43 个会议逐年公开决定核查、跨来源身份/标签规范化、全部导入后的全库去重与冲突/摘要/约束/查询审计,以及运维文档最终整理。
MM 2026 的[官方 CFP](https://2026.acmmm.org/site/cfp-guidelines.html)说明会后公开最终评审及适用的作者回复,但未明确包含全部被拒投稿。2026-11-08 对官方组的匿名 API 查询返回200,对该组 `venueid` 的投稿查询返回403;[证据](mm-editions-2026-11-08.json)保存查询、时间和响应哈希。公开拒稿可用性仍为 unknown,403不能作为零记录或不存在公开拒稿的证据。
WWW早期逐来源核查见 `www-early-proceedings-2026-11-08.json`:1995春季论文三目录均为38个相同条目ID,海报摘要53个条目与作者链接47个条目不齐;1994春季50个Title字段与主页49场报告说法待逐项核对。上述为源目录观察,不是已导入或全部录用数量;主会、海报、教程等继续独立核验。
WWW事件标识生产迁移已独立验收(报告SHA `f5dbb8a8`):保留1399个原届次字段及IDs、59个Fall投稿和完整全库历史哈希。服务器已缓存46个官方HTML来源(约223KB),只作为后续维护式采集器的输入;尚未补导早期WWW论文,也未启用可选注解表。
IJCAI 联办届次的逐条后续核查见 [2018/2022 分区与目录差集](ijcai-sections-2026-11-08.md) 和 [稳定 ID 映射](ijcai-sections-2026-11-08.json)。已定位 345 条非 main 分类及 2022 官方 HTML 缺失但官方文件仍存在的一条记录;生产分类尚未修正,不能把整卷数量作为 main 覆盖率。
2026年11月9日的[当前历史年度缺口核对](historical-gaps-2026-11-09.md)单列135个历史会议—年份、14个2026年度及85个经范围修正的初步候选来源年度;它使用当前生产edition/别名快照,保留原固定快照不变。年度有记录不等于逐篇、逐track或公开拒稿历史完整。
[早期NLP来源范围复核](historical-source-scope-2026-11-09.md)保留3份官方网页的响应哈希,排除4个COLING卷对ACL缺口的误匹配,并区分会议举办记录、目录可获取性与论文级覆盖;尚未导入或关闭这些年度缺口。
+222
View File
@@ -0,0 +1,222 @@
{
"source_url": "https://aaai.org/conference/aaai/",
"checked_at": "2026-11-08T10:52:18.532452+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "a615dd93457489752e7780c1352882547b44f67c2faf64b28b6f76ee9207e227",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://aaai.org/conference/aaai/",
"error": "HTTP Error 403: Forbidden",
"checked_at": "2026-11-08T10:47:21.547698+00:00"
},
"retrieval_note": "Primarypagewebextractioncontainsboth40pastAAAI-XXlabelsand40proceedingsyearlabelswithmatchingorderedyears,plusfuture41st2027. Rawdirectfetch403retainedaslimitation;nobypassorrawHTMLhashclaim. ArchivedwebtextreceiptisdistinctfromrawHTTPresponse.",
"cutoff_year": 2026,
"expected_years": [
1980,
1982,
1983,
1984,
1986,
1987,
1988,
1990,
1991,
1992,
1993,
1994,
1996,
1997,
1998,
1999,
2000,
2002,
2004,
2005,
2006,
2007,
2008,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 2026,
"label": "AAAI-26"
},
{
"year": 2025,
"label": "AAAI-25"
},
{
"year": 2024,
"label": "AAAI-24"
},
{
"year": 2023,
"label": "AAAI-23"
},
{
"year": 2022,
"label": "AAAI-22"
},
{
"year": 2021,
"label": "AAAI-21"
},
{
"year": 2020,
"label": "AAAI-20"
},
{
"year": 2019,
"label": "AAAI-19"
},
{
"year": 2018,
"label": "AAAI-18"
},
{
"year": 2017,
"label": "AAAI-17"
},
{
"year": 2016,
"label": "AAAI-16"
},
{
"year": 2015,
"label": "AAAI-15"
},
{
"year": 2014,
"label": "AAAI-14"
},
{
"year": 2013,
"label": "AAAI-13"
},
{
"year": 2012,
"label": "AAAI-12"
},
{
"year": 2011,
"label": "AAAI-11"
},
{
"year": 2010,
"label": "AAAI-10"
},
{
"year": 2008,
"label": "AAAI-08"
},
{
"year": 2007,
"label": "AAAI-07"
},
{
"year": 2006,
"label": "AAAI-06"
},
{
"year": 2005,
"label": "AAAI-05"
},
{
"year": 2004,
"label": "AAAI-04"
},
{
"year": 2002,
"label": "AAAI-02"
},
{
"year": 2000,
"label": "AAAI-00"
},
{
"year": 1999,
"label": "AAAI-99"
},
{
"year": 1998,
"label": "AAAI-98"
},
{
"year": 1997,
"label": "AAAI-97"
},
{
"year": 1996,
"label": "AAAI-96"
},
{
"year": 1994,
"label": "AAAI-94"
},
{
"year": 1993,
"label": "AAAI-93"
},
{
"year": 1992,
"label": "AAAI-92"
},
{
"year": 1991,
"label": "AAAI-91"
},
{
"year": 1990,
"label": "AAAI-90"
},
{
"year": 1988,
"label": "AAAI-88"
},
{
"year": 1987,
"label": "AAAI-87"
},
{
"year": 1986,
"label": "AAAI-86"
},
{
"year": 1984,
"label": "AAAI-84"
},
{
"year": 1983,
"label": "AAAI-83"
},
{
"year": 1982,
"label": "AAAI-82"
},
{
"year": 1980,
"label": "AAAI-80"
}
],
"scope": "40actualAAAIeditionlabels1980–2026independentlycrosscheckedagainstproceedingslabelsonthesameprimaryhistorypage. Noannualinterpolationandnoinvented2009orotherunlistedyears. Conferencepapers,IAAI/EAAI,demonstrationsandothertracksstillrequireseparatescopechecks;OpenReviewandpublicationare notproofpublicRejectmetadata."
}
@@ -0,0 +1,187 @@
{
"source_url": "https://www.ifaamas.org/previousaamas.html",
"resolved_url": "https://www.ifaamas.org/previousaamas.html",
"checked_at": "2026-11-08T10:03:00.826680+00:00",
"source_sha256": "bf9d3ed74d85c801804918397fff3d1794c4d0486b712ea174a7427c91be56e1",
"expected_years": [
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"editions": [
{
"year": 2026,
"label": "AAMAS 2026",
"conference_url": "https://cyprusconferences.org/aamas2026/"
},
{
"year": 2022,
"label": "Bids to Host AAMAS 2022",
"conference_url": "https://www.ifaamas.org/hosting-2022.html"
},
{
"year": 2022,
"label": "bids to host AAMAS 2022",
"conference_url": "https://www.ifaamas.org/hosting-2022.html"
},
{
"year": 2025,
"label": "Detroit, USA (AAMAS 2025)",
"conference_url": "https://aamas2025.org/"
},
{
"year": 2024,
"label": "Auckland, New Zealand (AAMAS 2024)",
"conference_url": "https://www.aamas2024-conference.auckland.ac.nz/"
},
{
"year": 2023,
"label": "London, UK (AAMAS 2023)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2023/"
},
{
"year": 2022,
"label": "Auckland, New Zealand (AAMAS 2022) - held online",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2022/"
},
{
"year": 2022,
"label": "Auckland, New Zealand (AAMAS 2022)",
"conference_url": "https://aamas2022-conference.auckland.ac.nz/"
},
{
"year": 2021,
"label": "London, UK (AAMAS 2021)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2021/"
},
{
"year": 2020,
"label": "Auckland, New Zealand (AAMAS 2020)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2020/"
},
{
"year": 2019,
"label": "Montreal, Canada (AAMAS 2019)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2019/"
},
{
"year": 2018,
"label": "Stockholm, Sweden (AAMAS 2018)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2018/"
},
{
"year": 2017,
"label": "São Paulo, Brazil (AAMAS 2017)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2017/"
},
{
"year": 2016,
"label": "Singapore (AAMAS 2016)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2016/"
},
{
"year": 2015,
"label": "Istanbul, Turkey (AAMAS 2015)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2015/"
},
{
"year": 2014,
"label": "Paris, France (AAMAS 2014)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2014/"
},
{
"year": 2013,
"label": "Saint Paul, USA (AAMAS 2013)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2013/"
},
{
"year": 2012,
"label": "Valencia, Spain (AAMAS 2012)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2012/"
},
{
"year": 2011,
"label": "Taipei, Taiwan (AAMAS 2011)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2011/"
},
{
"year": 2010,
"label": "Toronto, Canada (AAMAS 2010)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2010/"
},
{
"year": 2009,
"label": "Budapest, Hungary (AAMAS 2009)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas2009/"
},
{
"year": 2008,
"label": "Estoril, Portugal (AAMAS'08)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas08/"
},
{
"year": 2007,
"label": "Honolulu, USA (AAMAS'07)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas07/"
},
{
"year": 2006,
"label": "Hakodate, Japan (AAMAS'06)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas06/"
},
{
"year": 2005,
"label": "Utrecht, The Netherlands (AAMAS'05)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas05/"
},
{
"year": 2004,
"label": "New York, USA (AAMAS'04)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas04/"
},
{
"year": 2003,
"label": "Melbourne, Australia (AAMAS'03)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas03/"
},
{
"year": 2002,
"label": "Bologna, Italy (AAMAS'02)",
"conference_url": "https://www.ifaamas.org/AAMAS/aamas02/"
}
],
"additional_primary_sources": [
{
"source_url": "https://www.ifaamas.org/proceedings.html",
"resolved_url": "https://www.ifaamas.org/proceedings.html",
"checked_at": "2026-11-08T10:03:01.535471+00:00",
"source_sha256": "b0ad40e5042861bb5004ab902486306c048c50aa5972b962c803d63757b6c7bb"
}
],
"scope": "IFAAMAS actual annualconferenceentries2002–2026. Publisherarchive separates ACM Digital Library2002–2006 from foundation archive2007onward. Keep planned locations and actual online2020–2022 events distinct. No per-paper/track or public rejection census; sister-conference/journal presentation tracks do not manufacture prior rejection or new main acceptance.",
"cutoff_year": 2026,
"excluded_future_years": [],
"source_html_sha256": "bf9d3ed74d85c801804918397fff3d1794c4d0486b712ea174a7427c91be56e1"
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,332 @@
{
"source_url": "https://aistats.org/other.html",
"checked_at": "2026-11-08T07:00:27.535493+00:00",
"source_html_sha256": "cc1d6e200d841f53a215e9b3d58fcc1311e8c65166afd37c5350a2f3949a966d",
"cutoff_year": 2026,
"expected_years": [
1985,
1989,
1991,
1993,
1995,
1997,
1999,
2001,
2003,
2005,
2007,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"edition_entries": [
{
"year": 2026,
"official_entry": "AISTATS 2026 May 2-5, Tangier, Morocco",
"links": [
{
"text": "AISTATS 2026",
"url": "https://aistats.org/aistats2026/"
}
]
},
{
"year": 2025,
"official_entry": "AISTATS 2025 May 3 - May 5, Mai Khao, Thailand",
"links": [
{
"text": "AISTATS 2025",
"url": "https://aistats.org/aistats2025/"
}
]
},
{
"year": 2024,
"official_entry": "AISTATS 2024 May 2 - May 4, Valencia, Spain",
"links": [
{
"text": "AISTATS 2024",
"url": "https://aistats.org/aistats2024/"
}
]
},
{
"year": 2023,
"official_entry": "AISTATS 2023 April 25-27, Valencia, Spain",
"links": [
{
"text": "AISTATS 2023",
"url": "https://aistats.org/aistats2023/"
}
]
},
{
"year": 2022,
"official_entry": "AISTATS 2022 March 28-30, Virtual Conference",
"links": [
{
"text": "AISTATS 2022",
"url": "https://aistats.org/aistats2022/"
}
]
},
{
"year": 2021,
"official_entry": "AISTATS 2021 April 13-15, Virtual Conference",
"links": [
{
"text": "AISTATS 2021",
"url": "https://aistats.org/aistats2021/"
}
]
},
{
"year": 2020,
"official_entry": "AISTATS 2020 August 26-28, Virtual Meeting",
"links": [
{
"text": "AISTATS 2020",
"url": "https://aistats.org/aistats2020/"
}
]
},
{
"year": 2019,
"official_entry": "AISTATS 2019 April 16-18, Naha, Okinawa, Japan",
"links": [
{
"text": "AISTATS 2019",
"url": "https://aistats.org/aistats2019/"
}
]
},
{
"year": 2018,
"official_entry": "AISTATS 2018 April 9-11 Playa Blanca, Lanzarote, Canary Islands",
"links": [
{
"text": "AISTATS 2018",
"url": "https://aistats.org/aistats2018/"
}
]
},
{
"year": 2017,
"official_entry": "AISTATS 2017 April 20-22, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 2017",
"url": "https://aistats.org/aistats2017/"
}
]
},
{
"year": 2016,
"official_entry": "AISTATS 2016 May 9-11, Cadiz, Spain",
"links": [
{
"text": "AISTATS 2016",
"url": "https://aistats.org/aistats2016/"
}
]
},
{
"year": 2015,
"official_entry": "AISTATS 2015 May 9-12, San Diego, California, USA",
"links": [
{
"text": "AISTATS 2015",
"url": "https://aistats.org/aistats2015/"
}
]
},
{
"year": 2014,
"official_entry": "AISTATS 2014 April 22-25, Reykjavik, Iceland",
"links": [
{
"text": "AISTATS 2014",
"url": "https://aistats.org/aistats2014/"
}
]
},
{
"year": 2013,
"official_entry": "AISTATS 2013 April 29-May 1, Scottsdale, Arizona, USA",
"links": [
{
"text": "AISTATS 2013",
"url": "https://aistats.org/aistats2013/"
}
]
},
{
"year": 2012,
"official_entry": "AISTATS 2012 April 21-23, La Palma, Canary Islands",
"links": [
{
"text": "AISTATS 2012",
"url": "https://aistats.org/aistats2012/"
}
]
},
{
"year": 2011,
"official_entry": "AISTATS 2011 April 11-13, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 2011",
"url": "https://aistats.org/aistats2011/"
}
]
},
{
"year": 2010,
"official_entry": "AISTATS 2010 May 13-15, Chia Laguna Resort, Sardinia, Italy",
"links": [
{
"text": "AISTATS 2010",
"url": "https://aistats.org/aistats2010/"
}
]
},
{
"year": 2009,
"official_entry": "AISTATS 2009 April 16-18, Hilton Clearwater Beach Resort, Clearwater Beach, Florida USA",
"links": [
{
"text": "AISTATS 2009",
"url": "https://aistats.org/aistats2009/"
}
]
},
{
"year": 2007,
"official_entry": "AISTATS 2007 March 21-24, Caribe Hilton Hotel, San Juan, Puerto Rico",
"links": [
{
"text": "AISTATS 2007",
"url": "https://aistats.org/aistats2007/"
}
]
},
{
"year": 2005,
"official_entry": "AISTATS 2005 January 6-8, The Savanah Hotel, Bridgetown, Barbados",
"links": [
{
"text": "AISTATS 2005",
"url": "https://aistats.org/aistats2005/"
}
]
},
{
"year": 2003,
"official_entry": "AISTATS 2003 January 1-3, The Hyatt Hotel, Key West, Florida, USA",
"links": [
{
"text": "AISTATS 2003",
"url": "https://aistats.org/aistats2003/"
}
]
},
{
"year": 2001,
"official_entry": "AISTATS 2001 January 3-6, The Hyatt Hotel, Key West, Florida, USA",
"links": [
{
"text": "AISTATS 2001",
"url": "https://aistats.org/aistats2001/"
}
]
},
{
"year": 1999,
"official_entry": "AISTATS 1999 January 3-6, Radisson Bahia Mar Beach Resort, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 1999",
"url": "https://aistats.org/aistats1999/"
}
]
},
{
"year": 1997,
"official_entry": "AISTATS 1997 January 4-7, Radisson Bahia Mar Beach Resort, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 1997",
"url": "https://aistats.org/aistats1997/"
}
]
},
{
"year": 1995,
"official_entry": "AISTATS 1995 January 4-7, Hyatt Regency Pier 66, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 1995",
"url": "https://aistats.org/aistats1995/"
}
]
},
{
"year": 1993,
"official_entry": "AISTATS 1993 January, Hyatt Regency Pier 66, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 1993",
"url": "https://aistats.org/aistats1993/"
}
]
},
{
"year": 1991,
"official_entry": "AISTATS 1991 January, Hyatt Regency Pier 66, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 1991",
"url": "https://aistats.org/aistats1991/"
}
]
},
{
"year": 1989,
"official_entry": "AISTATS 1989 January 4-7, Hyatt Regency Pier 66, Fort Lauderdale, Florida, USA",
"links": [
{
"text": "AISTATS 1989",
"url": "https://aistats.org/aistats1989/"
}
]
},
{
"year": 1985,
"official_entry": "AISTATS 1985 April",
"links": [
{
"text": "AISTATS 1985",
"url": "https://aistats.org/aistats1985/"
}
]
}
],
"scope": "Official conference-year enumeration only. Entry links are recorded as published, not proof that every linked target was fetched or every track/paper/negative decision is covered.",
"enumeration_boundary": "Use the 29 actual official meeting entries. Do not fill calendar gaps (including 1987 and 2008) by interpolating the earliest/latest year."
}
+269
View File
@@ -0,0 +1,269 @@
{
"source_url": "https://www.cikmconference.org/",
"checked_at": "2026-11-08T12:10:20.249437+00:00",
"source_representation": "indexed_first_party_history_page_text_returned_by_search_tool",
"source_html_sha256": null,
"source_extract_sha256": "7fd7e59c30ca60ca01c266352438c5e4fda27be33f3a1ac92b349ea3c7bd730a",
"direct_fetch": {
"source_url": "https://cikmconference.org/",
"error": "<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'cikmconference.org'. (_ssl.c:1081)>"
},
"additional_primary_sources": [
{
"source_url": "https://link.springer.com/book/10.1007/3-540-57419-0",
"resolved_url": "https://link.springer.com/book/10.1007/3-540-57419-0?error=cookies_not_supported&code=882fa90f-f443-4ff5-b4bb-0a031701e8f9",
"http_status": 200,
"checked_at": "2026-11-08T12:03:58.690527+00:00",
"source_sha256": "e596ea97fc0c1c8297ba549e8972897b8b1027af3554078c1a086f3d214924dc",
"source_html_sha256": "e596ea97fc0c1c8297ba549e8972897b8b1027af3554078c1a086f3d214924dc"
},
{
"source_url": "https://cikm2025.org/",
"resolved_url": "https://cikm2025.org/",
"http_status": 200,
"checked_at": "2026-11-08T12:06:35.191168+00:00",
"source_sha256": "978ad9fa2455841e295b8d67155e5ab7d80558b25be3d76ed3891ebc4fb43a15",
"source_html_sha256": "978ad9fa2455841e295b8d67155e5ab7d80558b25be3d76ed3891ebc4fb43a15"
},
{
"source_url": "https://cikm2026.diag.uniroma1.it/",
"resolved_url": "https://cikm2026.diag.uniroma1.it/",
"http_status": 200,
"checked_at": "2026-11-08T12:06:33.175163+00:00",
"source_sha256": "687e250043c7c18f120df4ff2b56257a5885391cb637ea1ab382ea74b327cf64",
"source_html_sha256": "687e250043c7c18f120df4ff2b56257a5885391cb637ea1ab382ea74b327cf64"
},
{
"source_url": "https://api.crossref.org/works/10.1145/170088",
"resolved_url": "https://api.crossref.org/works/10.1145/170088",
"http_status": 200,
"checked_at": "2026-11-08T12:07:40.960053+00:00",
"source_sha256": "660ebc5e235bf6fcbd0cb0f13e983a605fee1cf09f38533f3469f1848e39ae6f"
}
],
"cutoff_year": 2026,
"expected_years": [
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 1992,
"source_label": "CIKM '92",
"dates_label": "November8–11,1992",
"publication_year_of_selected_volume": 1993,
"publication_scope": "SpringerLNCS752selectedpapers;notalloriginalproceedings"
},
{
"year": 1993,
"source_label": "CIKM '93",
"dates_label": "November1–5,1993",
"doi": "10.1145/170088",
"evidence_scope": "ACM-depositedCrossrefproceedingsrecord"
},
{
"year": 1994,
"source_label": "CIKM 1994",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 1995,
"source_label": "CIKM 1995",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 1996,
"source_label": "CIKM 1996",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 1997,
"source_label": "CIKM 1997",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 1998,
"source_label": "CIKM 1998",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 1999,
"source_label": "CIKM 1999",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2000,
"source_label": "CIKM 2000",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2001,
"source_label": "CIKM 2001",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2002,
"source_label": "CIKM 2002",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2003,
"source_label": "CIKM 2003",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2004,
"source_label": "CIKM 2004",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2005,
"source_label": "CIKM 2005",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2006,
"source_label": "CIKM 2006",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2007,
"source_label": "CIKM 2007",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2008,
"source_label": "CIKM 2008",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2009,
"source_label": "CIKM 2009",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2010,
"source_label": "CIKM 2010",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2011,
"source_label": "CIKM 2011",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2012,
"source_label": "CIKM 2012",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2013,
"source_label": "CIKM 2013",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2014,
"source_label": "CIKM 2014",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2015,
"source_label": "CIKM 2015",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2016,
"source_label": "CIKM 2016",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2017,
"source_label": "CIKM 2017",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2018,
"source_label": "CIKM 2018",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2019,
"source_label": "CIKM 2019",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2020,
"source_label": "CIKM 2020",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2021,
"source_label": "CIKM 2021",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2022,
"source_label": "CIKM 2022",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2023,
"source_label": "CIKM 2023",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2024,
"source_label": "CIKM 2024",
"evidence_scope": "officialhistorydirectorylabel"
},
{
"year": 2025,
"source_label": "CIKM 2025",
"evidence_scope": "officialconferencewebsite"
},
{
"year": 2026,
"source_label": "CIKM 2026",
"dates_label": "November7–11,2026",
"event_status_at_cutoff": "ongoing"
}
],
"retrieval_note": "OfficialhistoryTLS hostname mismatch and webtimeout retained; indexed firstpartyhistory31explicitlabels archived separately. NoTLS verification disabled. Publisher1992booktitle andACM-deposited1993eventrecord independentlysupplytwoearlyyears. Historyfuture2027excluded.",
"scope": "35expliciteditionyears1992–2026.1992conferenceand1993selected-paperbookpublicationyearkeptseparate;selectedvolumeisnotthecomplete1992proceedings. CIKM2026isongoingNov7–11asofcutoff;availability/individualtrackcompletenessnotinferredfromeventsite. Full/short/applied/resource/demo/PhD/industry/workshoprequireindividualscope;ciKm.orgdomainisnotused."
}
@@ -0,0 +1,66 @@
{
"source_url": "https://proceedings.mlr.press/",
"checked_at": "2026-11-08T09:00:14.927398+00:00",
"source_html_sha256": "6b0c53798d285af02e4425adfd01b51db9d0945e2dc7c92772daa517e8847843",
"cutoff_year": 2026,
"expected_years": [
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"publisher_index_years": [
2022,
2023,
2024,
2025,
2026
],
"editions": [
{
"year": 2026,
"url": "https://proceedings.mlr.press/v323/",
"publisher_index_label": "Volume 323 Proceedings of CLeaR 2026",
"checked_at": "2026-11-08T09:01:38.679644+00:00",
"source_html_sha256": "57f28747aa48a7d7c22d951ec7ea63ca725e0d39d7135a309f62e2ad09ffbe44",
"event_heading": "Volume 323: Causal Learning and Reasoning, 6-8 April 2026, Broad Institute of MIT and Harvard, Cambridge, USA"
},
{
"year": 2025,
"url": "https://proceedings.mlr.press/v275/",
"publisher_index_label": "Volume 275 Proceedings of CLeaR 2025",
"checked_at": "2026-11-08T09:01:38.558502+00:00",
"source_html_sha256": "c5aafeebab81c47def2ca3f62bed9140c890cc8a2bfc5dca80ad44bf6f2db86d",
"event_heading": "Volume 275: Causal Learning and Reasoning, 7-9 May 2025, Lausanne, Switzerland"
},
{
"year": 2024,
"url": "https://proceedings.mlr.press/v236/",
"publisher_index_label": "Volume 236 Proceedings of CLeaR 2024",
"checked_at": "2026-11-08T09:01:38.730670+00:00",
"source_html_sha256": "3f71ca96a2c87880b8cfcb040356d5fb17ba54535d0c9421d6d4622cfce10bb7",
"event_heading": "Volume 236: Causal Learning and Reasoning, 1-3 April 2024, Los Angeles, California, USA"
},
{
"year": 2023,
"url": "https://proceedings.mlr.press/v213/",
"publisher_index_label": "Volume 213 Proceedings of CLeaR 2023",
"checked_at": "2026-11-08T09:01:40.519783+00:00",
"source_html_sha256": "7b70177fb388db0f60bdbe0b83fa2505ebed7b24eeb8eb0fc65b008e12c68c95",
"event_heading": "Volume 213: Conference on Causal Learning and Reasoning, 11-14 April 2023, Amazon Development Center, Tübingen, Germany"
},
{
"year": 2022,
"url": "https://proceedings.mlr.press/v177/",
"publisher_index_label": "Volume 177 Proceedings of CLeaR 2022",
"checked_at": "2026-11-08T09:01:39.465244+00:00",
"source_html_sha256": "b55542996032f89a89d1edb4a2f5daa1f68c624181721466d4a8dbba2b0e769e",
"event_heading": "Volume 177: Conference on Causal Learning and Reasoning, 11-13 April 2022, Sequoia Conference Center, Eureka, CA, USA"
}
],
"first_edition_explicitly_named_by_publisher": true,
"announced_not_in_publisher_proceedings_index": [],
"scope": "Independent first-edition and all actual publisher-index conference/event-year labels, checked against each volume event heading. No annual interpolation, per-paper/track/abstract completeness or public rejection census. CoRL2026 is separately announced/upcoming and not listed in PMLR index; missing snapshot year does not prove missing published papers."
}
@@ -0,0 +1,899 @@
{
"source_url": "https://aclanthology.org/venues/coling/",
"resolved_url": "https://aclanthology.org/venues/coling/",
"checked_at": "2026-11-08T10:20:25.283166+00:00",
"http_status": 200,
"source_sha256": "8e7ec0a2915bfbccaa26b7a7558a9cf977c4aadc119794516ecebb826f61623f",
"cutoff_year": 2026,
"expected_years": [
1965,
1967,
1969,
1971,
1973,
1976,
1978,
1980,
1982,
1984,
1986,
1988,
1990,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016,
2018,
2020,
2022,
2024,
2025
],
"excluded_future_years": [],
"publisher_years": [
1965,
1967,
1969,
1973,
1980,
1982,
1984,
1986,
1988,
1990,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016,
2018,
2020,
2022,
2024,
2025
],
"editions": [
{
"year": 2025,
"event_url": "https://aclanthology.org/events/coling-2025/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2025.coling-main/",
"title": "Proceedings of the 31st International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/2025.coling-demos/",
"title": "Proceedings of the 31st International Conference on Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2025.coling-industry/",
"title": "Proceedings of the 31st International Conference on Computational Linguistics: Industry Track"
}
]
},
{
"year": 2024,
"event_url": "https://aclanthology.org/events/coling-2024/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2024.lrec-main/",
"title": "Proceedings of the 2024 Joint International Conference on Computational Linguistics, Language Resources and Evaluation (LREC-COLING 2024)"
},
{
"url": "https://aclanthology.org/volumes/2024.lrec-tutorials/",
"title": "Proceedings of the 2024 Joint International Conference on Computational Linguistics, Language Resources and Evaluation (LREC-COLING 2024): Tutorial Summaries"
}
]
},
{
"year": 2022,
"event_url": "https://aclanthology.org/events/coling-2022/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2022.coling-1/",
"title": "Proceedings of the 29th International Conference on Computational Linguistics"
}
]
},
{
"year": 2020,
"event_url": "https://aclanthology.org/events/coling-2020/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2020.coling-main/",
"title": "Proceedings of the 28th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/2020.coling-demos/",
"title": "Proceedings of the 28th International Conference on Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2020.coling-tutorials/",
"title": "Proceedings of the 28th International Conference on Computational Linguistics: Tutorial Abstracts"
},
{
"url": "https://aclanthology.org/volumes/2020.coling-industry/",
"title": "Proceedings of the 28th International Conference on Computational Linguistics: Industry Track"
}
]
},
{
"year": 2018,
"event_url": "https://aclanthology.org/events/coling-2018/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C18-1/",
"title": "Proceedings of the 27th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C18-2/",
"title": "Proceedings of the 27th International Conference on Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/C18-3/",
"title": "Proceedings of the 27th International Conference on Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2016,
"event_url": "https://aclanthology.org/events/coling-2016/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C16-1/",
"title": "Proceedings of COLING 2016, the 26th International Conference on Computational Linguistics: Technical Papers"
},
{
"url": "https://aclanthology.org/volumes/C16-2/",
"title": "Proceedings of COLING 2016, the 26th International Conference on Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/C16-3/",
"title": "Proceedings of COLING 2016, the 26th International Conference on Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2014,
"event_url": "https://aclanthology.org/events/coling-2014/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C14-1/",
"title": "Proceedings of COLING 2014, the 25th International Conference on Computational Linguistics: Technical Papers"
},
{
"url": "https://aclanthology.org/volumes/C14-2/",
"title": "Proceedings of COLING 2014, the 25th International Conference on Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/C14-3/",
"title": "Proceedings of COLING 2014, the 25th International Conference on Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2012,
"event_url": "https://aclanthology.org/events/coling-2012/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C12-1/",
"title": "Proceedings of COLING 2012"
},
{
"url": "https://aclanthology.org/volumes/C12-2/",
"title": "Proceedings of COLING 2012: Posters"
},
{
"url": "https://aclanthology.org/volumes/C12-3/",
"title": "Proceedings of COLING 2012: Demonstration Papers"
}
]
},
{
"year": 2010,
"event_url": "https://aclanthology.org/events/coling-2010/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C10-1/",
"title": "Proceedings of the 23rd International Conference on Computational Linguistics (Coling 2010)"
},
{
"url": "https://aclanthology.org/volumes/C10-2/",
"title": "Coling 2010: Posters"
},
{
"url": "https://aclanthology.org/volumes/C10-3/",
"title": "Coling 2010: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/C10-4/",
"title": "Coling 2010: Paraphrases and Applications–Tutorial notes"
},
{
"url": "https://aclanthology.org/volumes/C10-5/",
"title": "Coling 2010: Kernel Engineering for Fast and Easy Design of Natural Language Applications–Tutorial notes"
}
]
},
{
"year": 2008,
"event_url": "https://aclanthology.org/events/coling-2008/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C08-1/",
"title": "Proceedings of the 22nd International Conference on Computational Linguistics (Coling 2008)"
},
{
"url": "https://aclanthology.org/volumes/C08-2/",
"title": "Coling 2008: Companion volume: Posters"
},
{
"url": "https://aclanthology.org/volumes/C08-3/",
"title": "Coling 2008: Companion volume: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/C08-4/",
"title": "Coling 2008: Educational Natural Language Processing - Tutorial notes"
},
{
"url": "https://aclanthology.org/volumes/C08-5/",
"title": "Coling 2008: Advanced Dynamic Programming in Computational Linguistics: Theory, Algorithms and Applications - Tutorial notes"
}
]
},
{
"year": 2006,
"event_url": "https://aclanthology.org/events/coling-2006/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/P06-1/",
"title": "Proceedings of the 21st International Conference on Computational Linguistics and 44th Annual Meeting of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/P06-2/",
"title": "Proceedings of the COLING/ACL 2006 Main Conference Poster Sessions"
},
{
"url": "https://aclanthology.org/volumes/P06-3/",
"title": "Proceedings of the COLING/ACL 2006 Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/P06-4/",
"title": "Proceedings of the COLING/ACL 2006 Interactive Presentation Sessions"
}
]
},
{
"year": 2004,
"event_url": "https://aclanthology.org/events/coling-2004/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C04-1/",
"title": "COLING 2004: Proceedings of the 20th International Conference on Computational Linguistics"
}
]
},
{
"year": 2002,
"event_url": "https://aclanthology.org/events/coling-2002/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C02-1/",
"title": "COLING 2002: The 19th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C02-2/",
"title": "COLING 2002: The 17th International Conference on Computational Linguistics: Project Notes"
}
]
},
{
"year": 2000,
"event_url": "https://aclanthology.org/events/coling-2000/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C00-1/",
"title": "COLING 2000 Volume 1: The 18th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C00-2/",
"title": "COLING 2000 Volume 2: The 18th International Conference on Computational Linguistics"
}
]
},
{
"year": 1998,
"event_url": "https://aclanthology.org/events/coling-1998/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C98-1/",
"title": "COLING 1998 Volume 1: The 17th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C98-2/",
"title": "COLING 1998 Volume 2: The 17th International Conference on Computational Linguistics"
}
]
},
{
"year": 1996,
"event_url": "https://aclanthology.org/events/coling-1996/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C96-1/",
"title": "COLING 1996 Volume 1: The 16th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C96-2/",
"title": "COLING 1996 Volume 2: The 16th International Conference on Computational Linguistics"
}
]
},
{
"year": 1994,
"event_url": "https://aclanthology.org/events/coling-1994/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C94-1/",
"title": "COLING 1994 Volume 1: The 15th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C94-2/",
"title": "COLING 1994 Volume 2: The 15th International Conference on Computational Linguistics"
}
]
},
{
"year": 1992,
"event_url": "https://aclanthology.org/events/coling-1992/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C92-1/",
"title": "COLING 1992 Volume 1: The 14th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C92-2/",
"title": "COLING 1992 Volume 2: The 14th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C92-3/",
"title": "COLING 1992 Volume 3: The 14th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C92-4/",
"title": "COLING 1992 Volume 4: The 14th International Conference on Computational Linguistics"
}
]
},
{
"year": 1990,
"event_url": "https://aclanthology.org/events/coling-1990/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C90-1/",
"title": "COLING 1990 Volume 1: Papers presented to the 13th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C90-2/",
"title": "COLING 1990 Volume 2: Papers presented to the 13th International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C90-3/",
"title": "COLING 1990 Volume 3: Papers presented to the 13th International Conference on Computational Linguistics"
}
]
},
{
"year": 1988,
"event_url": "https://aclanthology.org/events/coling-1988/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C88-1/",
"title": "Coling Budapest 1988 Volume 1: International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C88-2/",
"title": "Coling Budapest 1988 Volume 2: International Conference on Computational Linguistics"
}
]
},
{
"year": 1986,
"event_url": "https://aclanthology.org/events/coling-1986/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C86-1/",
"title": "Coling 1986 Volume 1: The 11th International Conference on Computational Linguistics"
}
]
},
{
"year": 1984,
"event_url": "https://aclanthology.org/events/coling-1984/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/P84-1/",
"title": "10th International Conference on Computational Linguistics and 22nd Annual Meeting of the Association for Computational Linguistics"
}
]
},
{
"year": 1982,
"event_url": "https://aclanthology.org/events/coling-1982/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C82-1/",
"title": "Coling 1982: Proceedings of the Ninth International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C82-2/",
"title": "Coling 1982 Abstracts: Proceedings of the Ninth International Conference on Computational Linguistics Abstracts"
}
]
},
{
"year": 1980,
"event_url": "https://aclanthology.org/events/coling-1980/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C80-1/",
"title": "COLING 1980 Volume 1: The 8th International Conference on Computational Linguistics"
}
]
},
{
"year": 1973,
"event_url": "https://aclanthology.org/events/coling-1973/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C73-1/",
"title": "COLING 1973 Volume 1: Computational And Mathematical Linguistics: Proceedings of the International Conference on Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/C73-2/",
"title": "COLING 1973 Volume 2: Computational And Mathematical Linguistics: Proceedings of the International Conference on Computational Linguistics"
}
]
},
{
"year": 1969,
"event_url": "https://aclanthology.org/events/coling-1969/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C69-01/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 1"
},
{
"url": "https://aclanthology.org/volumes/C69-02/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 2"
},
{
"url": "https://aclanthology.org/volumes/C69-03/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 3"
},
{
"url": "https://aclanthology.org/volumes/C69-04/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 4"
},
{
"url": "https://aclanthology.org/volumes/C69-05/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 5"
},
{
"url": "https://aclanthology.org/volumes/C69-06/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 6"
},
{
"url": "https://aclanthology.org/volumes/C69-07/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 7"
},
{
"url": "https://aclanthology.org/volumes/C69-08/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 8"
},
{
"url": "https://aclanthology.org/volumes/C69-09/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 9"
},
{
"url": "https://aclanthology.org/volumes/C69-10/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 10"
},
{
"url": "https://aclanthology.org/volumes/C69-11/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 11"
},
{
"url": "https://aclanthology.org/volumes/C69-12/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 12"
},
{
"url": "https://aclanthology.org/volumes/C69-13/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 13"
},
{
"url": "https://aclanthology.org/volumes/C69-14/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 14"
},
{
"url": "https://aclanthology.org/volumes/C69-15/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 15"
},
{
"url": "https://aclanthology.org/volumes/C69-16/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 16"
},
{
"url": "https://aclanthology.org/volumes/C69-17/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 17"
},
{
"url": "https://aclanthology.org/volumes/C69-18/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 18"
},
{
"url": "https://aclanthology.org/volumes/C69-19/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 19"
},
{
"url": "https://aclanthology.org/volumes/C69-20/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 20"
},
{
"url": "https://aclanthology.org/volumes/C69-21/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 21"
},
{
"url": "https://aclanthology.org/volumes/C69-22/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 22"
},
{
"url": "https://aclanthology.org/volumes/C69-23/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 23"
},
{
"url": "https://aclanthology.org/volumes/C69-24/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 24"
},
{
"url": "https://aclanthology.org/volumes/C69-25/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 25"
},
{
"url": "https://aclanthology.org/volumes/C69-26/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 26"
},
{
"url": "https://aclanthology.org/volumes/C69-27/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 27"
},
{
"url": "https://aclanthology.org/volumes/C69-28/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 28"
},
{
"url": "https://aclanthology.org/volumes/C69-29/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 29"
},
{
"url": "https://aclanthology.org/volumes/C69-30/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 30"
},
{
"url": "https://aclanthology.org/volumes/C69-31/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 31"
},
{
"url": "https://aclanthology.org/volumes/C69-32/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 32"
},
{
"url": "https://aclanthology.org/volumes/C69-33/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 33"
},
{
"url": "https://aclanthology.org/volumes/C69-34/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 34"
},
{
"url": "https://aclanthology.org/volumes/C69-35/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 35"
},
{
"url": "https://aclanthology.org/volumes/C69-36/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 36"
},
{
"url": "https://aclanthology.org/volumes/C69-37/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 37"
},
{
"url": "https://aclanthology.org/volumes/C69-38/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 38"
},
{
"url": "https://aclanthology.org/volumes/C69-39/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 39"
},
{
"url": "https://aclanthology.org/volumes/C69-40/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 40"
},
{
"url": "https://aclanthology.org/volumes/C69-41/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 41"
},
{
"url": "https://aclanthology.org/volumes/C69-42/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 42"
},
{
"url": "https://aclanthology.org/volumes/C69-43/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 43"
},
{
"url": "https://aclanthology.org/volumes/C69-44/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 44"
},
{
"url": "https://aclanthology.org/volumes/C69-45/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 45"
},
{
"url": "https://aclanthology.org/volumes/C69-46/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 46"
},
{
"url": "https://aclanthology.org/volumes/C69-47/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 47"
},
{
"url": "https://aclanthology.org/volumes/C69-48/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 48"
},
{
"url": "https://aclanthology.org/volumes/C69-49/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 49"
},
{
"url": "https://aclanthology.org/volumes/C69-50/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 50"
},
{
"url": "https://aclanthology.org/volumes/C69-51/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 51"
},
{
"url": "https://aclanthology.org/volumes/C69-52/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 52"
},
{
"url": "https://aclanthology.org/volumes/C69-53/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 53"
},
{
"url": "https://aclanthology.org/volumes/C69-54/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 54"
},
{
"url": "https://aclanthology.org/volumes/C69-55/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 55"
},
{
"url": "https://aclanthology.org/volumes/C69-56/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 56"
},
{
"url": "https://aclanthology.org/volumes/C69-57/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 57"
},
{
"url": "https://aclanthology.org/volumes/C69-58/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 58"
},
{
"url": "https://aclanthology.org/volumes/C69-59/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 59"
},
{
"url": "https://aclanthology.org/volumes/C69-60/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 60"
},
{
"url": "https://aclanthology.org/volumes/C69-61/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 61"
},
{
"url": "https://aclanthology.org/volumes/C69-62/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 62: Collection of Abstracts of Papers"
},
{
"url": "https://aclanthology.org/volumes/C69-63/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 63"
},
{
"url": "https://aclanthology.org/volumes/C69-64/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 64"
},
{
"url": "https://aclanthology.org/volumes/C69-65/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 65"
},
{
"url": "https://aclanthology.org/volumes/C69-66/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 66"
},
{
"url": "https://aclanthology.org/volumes/C69-67/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 67"
},
{
"url": "https://aclanthology.org/volumes/C69-68/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 68"
},
{
"url": "https://aclanthology.org/volumes/C69-69/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 69: Collection of Abstracts of Papers"
},
{
"url": "https://aclanthology.org/volumes/C69-70/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 70"
},
{
"url": "https://aclanthology.org/volumes/C69-71/",
"title": "International Conference on Computational Linguistics COLING 1969: Preprint No. 71"
},
{
"url": "https://aclanthology.org/volumes/C69-72/",
"title": "International Conference on Computational Linguistics COLING 1969"
},
{
"url": "https://aclanthology.org/volumes/C69-73/",
"title": "International Conference on Computational Linguistics COLING 1969"
},
{
"url": "https://aclanthology.org/volumes/C69-74/",
"title": "International Conference on Computational Linguistics COLING 1969"
},
{
"url": "https://aclanthology.org/volumes/C69-75/",
"title": "International Conference on Computational Linguistics COLING 1969"
},
{
"url": "https://aclanthology.org/volumes/C69-76/",
"title": "International Conference on Computational Linguistics COLING 1969: Post-Print I"
},
{
"url": "https://aclanthology.org/volumes/C69-77/",
"title": "International Conference on Computational Linguistics COLING 1969: Index to Preprints"
},
{
"url": "https://aclanthology.org/volumes/C69-78/",
"title": "International Conference on Computational Linguistics COLING 1969: Bulletin Monday, September 1, 1969"
},
{
"url": "https://aclanthology.org/volumes/C69-79/",
"title": "International Conference on Computational Linguistics COLING 1969: Bulletin Wednesday, September 3, 1969"
}
]
},
{
"year": 1967,
"event_url": "https://aclanthology.org/events/coling-1967/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C67-1/",
"title": "COLING 1967 Volume 1: Conference Internationale Sur Le Traitement Automatique Des Langues"
}
]
},
{
"year": 1965,
"event_url": "https://aclanthology.org/events/coling-1965/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/C65-1/",
"title": "COLING 1965"
}
]
}
],
"scope": "Actual first-party publisher entries; multiple volumes/tracks do not create extra event years. Year census does not establish per-paper/track/abstract or public rejected-submission completeness. 31actualeventyears1965–2025 from28publisherheadings plus1971/1976/1978 named in contemporary1988frontmatter.2024isLREC-COLINGjoint,2025returnsstandalone/odd-yearschedule. No fabricated2026meeting. JointACL1984/1998/2006 are not additional distinctpaper acceptances; different1998catalogueIDs still require identity review.",
"additional_primary_sources": [
{
"source_url": "https://aclanthology.org/C88-2000.pdf",
"resolved_url": "https://aclanthology.org/C88-2000.pdf",
"checked_at": "2026-11-08T10:22:01.141425+00:00",
"http_status": 200,
"source_sha256": "cd878f821b013f142856272b1bb2e993e2a70f45ec57f62c173416db9f5e7e7e",
"pdf_page_one_based": 4,
"review": "Visually read the complete Previous COLING Conferences list of11 actualevents; PDFpage1 states12thconference1988."
},
{
"source_url": "https://coling2025.org/faqs/",
"resolved_url": "https://coling2025.org/faqs/",
"checked_at": "2026-11-08T10:22:00.644326+00:00",
"http_status": 200,
"source_sha256": "21ce11fb7f2deee77315c7e546ae97f0982c5cf4e16950c830005db60a49af1a"
}
],
"early_history_entries": [
{
"year": 1965,
"location": "New York"
},
{
"year": 1967,
"location": "Grenoble"
},
{
"year": 1969,
"location": "Sånga Säby"
},
{
"year": 1971,
"location": "Debrecen"
},
{
"year": 1973,
"location": "Pisa"
},
{
"year": 1976,
"location": "Ottawa"
},
{
"year": 1978,
"location": "Bergen"
},
{
"year": 1980,
"location": "Tokyo"
},
{
"year": 1982,
"location": "Prague"
},
{
"year": 1984,
"location": "Stanford"
},
{
"year": 1986,
"location": "Bonn"
}
],
"publisher_directory_missing_historical_years": [
1971,
1976,
1978
],
"source_disagreements": [
{
"source_url": "https://coling2025.org/faqs/",
"issue": "2025FAQ associates Bergen with1976; contemporary1988officialfrontmatter instead lists Ottawa1976 andBergen1978. Prefer contemporary explicitlist for these locations; no originalpaper metadata rewritten."
},
{
"year": 2002,
"issue": "Publisherproject-notes title says17th while mainvolume says19th. Sameyear remains oneedition; originalvolume title preserved."
}
],
"source_html_sha256": "8e7ec0a2915bfbccaa26b7a7558a9cf977c4aadc119794516ecebb826f61623f"
}
@@ -0,0 +1,36 @@
{
"source_url": "https://colm.cc/",
"checked_at": "2026-11-08T06:51:08.576901+00:00",
"source_html_sha256": "2fcea9d2a73cf3d88c09a731fbc4f16314fbb04e81b3506d3c355d14e7a8ae0d",
"cutoff_year": 2026,
"expected_years": [
2024,
2025,
2026
],
"excluded_future_years": [],
"year_links": {
"2026": [
"https://colm.cc/Conferences/2026/index.html"
],
"2025": [
"https://colmweb.org/2025/"
],
"2024": [
"https://colmweb.org/2024/"
]
},
"edition_pages": [
{
"source_url": "https://colmweb.org/2024/",
"checked_at": "2026-11-08T06:51:09.525917+00:00",
"source_html_sha256": "d757f26ff2876cac240bc07e0b1dd78638307b9d4fcea3d3c2f848f799e85cf9"
},
{
"source_url": "https://colmweb.org/2025/",
"checked_at": "2026-11-08T06:51:11.606331+00:00",
"source_html_sha256": "cd82ab43a570aad227dffdb9ea2302b2ab28f73d88e53d6955d49710cd514f62"
}
],
"scope": "Official first-through-third conference enumeration only; no claim of per-track/paper completeness or public rejection coverage."
}
+830
View File
@@ -0,0 +1,830 @@
{
"source_url": "https://www.learningtheory.org/",
"checked_at": "2026-11-08T07:00:26.440614+00:00",
"source_html_sha256": "133586432353e07b6364cd38aea5769936460f58ad31fee654b75116840d500c",
"cutoff_year": 2026,
"expected_years": [
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"edition_entries": [
{
"year": 2027,
"official_entry": "COLT 2027",
"links": [
{
"text": "COLT 2027",
"url": "http://learningtheory.org/colt2027/"
}
]
},
{
"year": 1988,
"official_entry": "COLT 1988 dblp",
"links": [
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1988.html"
}
]
},
{
"year": 1989,
"official_entry": "COLT 1989 dblp",
"links": [
{
"text": "COLT 1989",
"url": "https://www.sciencedirect.com/book/9780080948294/colt-89"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1989.html"
}
]
},
{
"year": 1990,
"official_entry": "COLT 1990 dblp",
"links": [
{
"text": "COLT 1990",
"url": "https://www.sciencedirect.com/book/9781558601468/colt-proceedings-1990"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1990.html"
}
]
},
{
"year": 1991,
"official_entry": "COLT 1991 dblp",
"links": [
{
"text": "COLT 1991",
"url": "https://www.sciencedirect.com/book/9781558602137/colt"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1991.html"
}
]
},
{
"year": 1992,
"official_entry": "COLT 1992 dblp",
"links": [
{
"text": "COLT 1992",
"url": "http://dl.acm.org/citation.cfm?id=130385"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1992.html"
}
]
},
{
"year": 1993,
"official_entry": "COLT 1993 dblp",
"links": [
{
"text": "COLT 1993",
"url": "http://dl.acm.org/citation.cfm?id=168304"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1993.html"
}
]
},
{
"year": 1994,
"official_entry": "COLT 1994 dblp",
"links": [
{
"text": "COLT 1994",
"url": "http://dl.acm.org/citation.cfm?id=180139"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1994.html"
}
]
},
{
"year": 1995,
"official_entry": "COLT 1995 dblp",
"links": [
{
"text": "COLT 1995",
"url": "http://dl.acm.org/citation.cfm?id=225298"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1995.html"
}
]
},
{
"year": 1996,
"official_entry": "COLT 1996 dblp",
"links": [
{
"text": "COLT 1996",
"url": "http://dl.acm.org/citation.cfm?id=238061"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1996.html"
}
]
},
{
"year": 1997,
"official_entry": "COLT 1997 dblp",
"links": [
{
"text": "COLT 1997",
"url": "http://dl.acm.org/citation.cfm?id=267460"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1997.html"
}
]
},
{
"year": 1998,
"official_entry": "COLT 1998 dblp",
"links": [
{
"text": "COLT 1998",
"url": "http://dl.acm.org/citation.cfm?id=279943"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1998.html"
}
]
},
{
"year": 1999,
"official_entry": "COLT 1999 dblp",
"links": [
{
"text": "COLT 1999",
"url": "http://dl.acm.org/citation.cfm?id=307400"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt1999.html"
}
]
},
{
"year": 2000,
"official_entry": "COLT 2000 dblp www",
"links": [
{
"text": "COLT 2000",
"url": "https://www.learningtheory.org/colt2000/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2000.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20060202000723/http://www.learningtheory.org/colt2000/"
}
]
},
{
"year": 2001,
"official_entry": "COLT 2001 dblp www",
"links": [
{
"text": "COLT 2001",
"url": "https://link.springer.com/book/10.1007/3-540-44581-1"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2001.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20061205041150/http://learningtheory.org/colt2001/"
}
]
},
{
"year": 2002,
"official_entry": "COLT 2002 dblp www",
"links": [
{
"text": "COLT 2002",
"url": "https://link.springer.com/book/10.1007/3-540-45435-7"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2002.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20030208022421/http://www.cse.unsw.edu.au/~colt2002/colt2002.html"
}
]
},
{
"year": 2003,
"official_entry": "COLT 2003 dblp www",
"links": [
{
"text": "COLT 2003",
"url": "https://link.springer.com/book/10.1007/b12006"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2003.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20070519034402/http://learningtheory.org/colt2003/"
}
]
},
{
"year": 2004,
"official_entry": "COLT 2004 dblp www",
"links": [
{
"text": "COLT 2004",
"url": "https://link.springer.com/book/10.1007/b98522"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2004.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20070703083129/http://www.learningtheory.org/colt2004/"
}
]
},
{
"year": 2005,
"official_entry": "COLT 2005 dblp www",
"links": [
{
"text": "COLT 2005",
"url": "https://link.springer.com/book/10.1007/b137542"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2005.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20070703134356/http://learningtheory.org/colt2005/"
}
]
},
{
"year": 2006,
"official_entry": "COLT 2006 dblp www",
"links": [
{
"text": "COLT 2006",
"url": "https://link.springer.com/book/10.1007/11776420"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2006.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20070706001445/http://learningtheory.org/colt2006/"
}
]
},
{
"year": 2007,
"official_entry": "COLT 2007 dblp www",
"links": [
{
"text": "COLT 2007",
"url": "https://link.springer.com/book/10.1007/978-3-540-72927-3"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2007.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20070807141052/http://www.learningtheory.org/colt2007/"
}
]
},
{
"year": 2008,
"official_entry": "COLT 2008 dblp www",
"links": [
{
"text": "COLT 2008",
"url": "https://www.learningtheory.org/colt2008/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2008.html"
},
{
"text": "www",
"url": "http://colt2008.cs.helsinki.fi/"
}
]
},
{
"year": 2009,
"official_entry": "COLT 2009 dblp www",
"links": [
{
"text": "COLT 2009",
"url": "https://www.learningtheory.org/colt2009/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2009.html"
},
{
"text": "www",
"url": "https://www.cs.mcgill.ca/~colt2009/"
}
]
},
{
"year": 2010,
"official_entry": "COLT 2010 dblp www",
"links": [
{
"text": "COLT 2010",
"url": "https://www.learningtheory.org/colt2010/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2010.html"
},
{
"text": "www",
"url": "https://www.learningtheory.org/colt2010/conference-website/"
}
]
},
{
"year": 2011,
"official_entry": "COLT 2011 dblp videos www",
"links": [
{
"text": "COLT 2011",
"url": "https://proceedings.mlr.press/v19/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2011.html"
},
{
"text": "videos",
"url": "https://videolectures.net/colt2011_budapest/"
},
{
"text": "www",
"url": "http://www.conferences.hu/colt2011"
}
]
},
{
"year": 2012,
"official_entry": "COLT 2012 dblp www",
"links": [
{
"text": "COLT 2012",
"url": "https://proceedings.mlr.press/v23/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2012.html"
},
{
"text": "www",
"url": "http://www.ttic.edu/colt2012"
}
]
},
{
"year": 2013,
"official_entry": "COLT 2013 dblp videos www",
"links": [
{
"text": "COLT 2013",
"url": "https://proceedings.mlr.press/v30/"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2013.html"
},
{
"text": "videos",
"url": "https://videolectures.net/colt2013_princeton/"
},
{
"text": "www",
"url": "https://web.archive.org/web/20131109133822/https://orfe.princeton.edu/conferences/colt2013"
}
]
},
{
"year": 2014,
"official_entry": "COLT 2014 dblp videos www",
"links": [
{
"text": "COLT 2014",
"url": "https://proceedings.mlr.press/v35"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2014.html"
},
{
"text": "videos",
"url": "https://videolectures.net/colt2014_barcelona/"
},
{
"text": "www",
"url": "https://web.archive.org/web/20141122072429/http://orfe.princeton.edu/conferences/colt2014/"
}
]
},
{
"year": 2015,
"official_entry": "COLT 2015 dblp videos www",
"links": [
{
"text": "COLT 2015",
"url": "https://proceedings.mlr.press/v40"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2015.html"
},
{
"text": "videos",
"url": "https://videolectures.net/colt2015_paris/"
},
{
"text": "www",
"url": "https://web.archive.org/web/20240813033833/http://www.learningtheory.org/colt2015/"
}
]
},
{
"year": 2016,
"official_entry": "COLT 2016 dblp videos www",
"links": [
{
"text": "COLT 2016",
"url": "https://proceedings.mlr.press/v49"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2016.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYxyz4k3OlafPd9G68v7zDWB"
},
{
"text": "www",
"url": "https://web.archive.org/web/20170702175829/http://www.learningtheory.org/colt2016/"
}
]
},
{
"year": 2017,
"official_entry": "COLT 2017 dblp videos www",
"links": [
{
"text": "COLT 2017",
"url": "https://proceedings.mlr.press/v65"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2017.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYw7U8mH0gCaWNbi3xDejrAH"
},
{
"text": "www",
"url": "https://web.archive.org/web/20241008042653/http://www.learningtheory.org/colt2017/"
}
]
},
{
"year": 2018,
"official_entry": "COLT 2018 dblp videos www",
"links": [
{
"text": "COLT 2018",
"url": "https://proceedings.mlr.press/v75"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2018.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYzMjoGTatLItEhisi5sBNFh"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2018"
}
]
},
{
"year": 2019,
"official_entry": "COLT 2019 dblp videos www",
"links": [
{
"text": "COLT 2019",
"url": "https://proceedings.mlr.press/v99"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2019.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYz4jx6NPdnI_1rP3kj0E3G8"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2019"
}
]
},
{
"year": 2020,
"official_entry": "COLT 2020 dblp videos www",
"links": [
{
"text": "COLT 2020",
"url": "https://proceedings.mlr.press/v125"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2020.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYw4LAGsUrCLamYRnBf9pTTT"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2020"
}
]
},
{
"year": 2021,
"official_entry": "COLT 2021 dblp videos www",
"links": [
{
"text": "COLT 2021",
"url": "https://proceedings.mlr.press/v134"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2021.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYwAnL8ZSYN3c1tprFa9-Qdx"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2021"
}
]
},
{
"year": 2022,
"official_entry": "COLT 2022 dblp videos www",
"links": [
{
"text": "COLT 2022",
"url": "https://proceedings.mlr.press/v178"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2022.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYxoGuHe6kYSSo8ETlzDqrJN"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2022"
}
]
},
{
"year": 2023,
"official_entry": "COLT 2023 dblp www",
"links": [
{
"text": "COLT 2023",
"url": "https://proceedings.mlr.press/v195"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2023.html"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2023"
}
]
},
{
"year": 2024,
"official_entry": "COLT 2024 dblp www",
"links": [
{
"text": "COLT 2024",
"url": "https://proceedings.mlr.press/v247"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2024.html"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2024"
}
]
},
{
"year": 2025,
"official_entry": "COLT 2025 dblp videos www",
"links": [
{
"text": "COLT 2025",
"url": "https://proceedings.mlr.press/v291"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2025.html"
},
{
"text": "videos",
"url": "https://www.youtube.com/playlist?list=PLCHBdlWR7RYx9VNiWhgSboOAFfiYubw8u"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2025"
}
]
},
{
"year": 2026,
"official_entry": "COLT 2026 dblp www",
"links": [
{
"text": "COLT 2026",
"url": "https://proceedings.mlr.press/v336"
},
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/colt/colt2026.html"
},
{
"text": "www",
"url": "http://learningtheory.org/colt2026"
}
]
},
{
"year": 2027,
"official_entry": "COLT 2027 www",
"links": [
{
"text": "www",
"url": "http://learningtheory.org/colt2027"
}
]
}
],
"scope": "Official conference-year enumeration only. Entry links are recorded as published, not proof that every linked target was fetched or every track/paper/negative decision is covered.",
"related_series_entries": [
{
"year": 1993,
"official_entry": "EuroCOLT 1993 dblp",
"links": [
{
"text": "dblp",
"url": "https://dblp.uni-trier.de/db/conf/eurocolt/eurocolt1993.html"
}
]
},
{
"year": 1995,
"official_entry": "EuroCOLT 1995 dblp",
"links": [
{
"text": "EuroCOLT 1995",
"url": "https://link.springer.com/book/10.1007/3-540-59119-2"
},
{
"text": "dblp",
"url": "https://dblp.org/db/conf/eurocolt/eurocolt1995.html"
}
]
},
{
"year": 1997,
"official_entry": "EuroCOLT 1997 dblp www",
"links": [
{
"text": "EuroCOLT 1997",
"url": "https://link.springer.com/book/10.1007/3-540-62685-9"
},
{
"text": "dblp",
"url": "https://dblp.org/db/conf/eurocolt/eurocolt1997.html"
},
{
"text": "www",
"url": "https://web.archive.org/web/20000901081649/http://ls2-www.cs.uni-dortmund.de/eurocolt/1997/index.html"
}
]
},
{
"year": 1999,
"official_entry": "EuroCOLT 1999 dblp",
"links": [
{
"text": "EuroCOLT 1999",
"url": "https://link.springer.com/book/10.1007/3-540-49097-3"
},
{
"text": "dblp",
"url": "https://dblp.org/db/conf/eurocolt/eurocolt1999.html"
}
]
}
],
"related_series_scope": "EuroCOLT entries retained separately for later source/identity checks; do not count them as another COLT edition in the same year or infer final decisions from titles."
}
@@ -0,0 +1,480 @@
{
"source_url": "https://aclanthology.org/venues/conll/",
"resolved_url": "https://aclanthology.org/venues/conll/",
"checked_at": "2026-11-08T10:20:25.545279+00:00",
"http_status": 200,
"source_sha256": "a342c627a8a97330fc064a5b3b7d612f917b9d81e07e050ffeb4a2b05d3bf061",
"cutoff_year": 2026,
"expected_years": [
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"publisher_years": [
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"editions": [
{
"year": 2026,
"event_url": "https://aclanthology.org/events/conll-2026/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2026.conll-main/",
"title": "Proceedings of the 30th Conference on Computational Natural Language Learning"
}
]
},
{
"year": 2025,
"event_url": "https://aclanthology.org/events/conll-2025/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2025.conll-1/",
"title": "Proceedings of the 29th Conference on Computational Natural Language Learning"
}
]
},
{
"year": 2024,
"event_url": "https://aclanthology.org/events/conll-2024/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2024.conll-1/",
"title": "Proceedings of the 28th Conference on Computational Natural Language Learning"
}
]
},
{
"year": 2023,
"event_url": "https://aclanthology.org/events/conll-2023/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2023.conll-1/",
"title": "Proceedings of the 27th Conference on Computational Natural Language Learning (CoNLL)"
}
]
},
{
"year": 2022,
"event_url": "https://aclanthology.org/events/conll-2022/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2022.conll-1/",
"title": "Proceedings of the 26th Conference on Computational Natural Language Learning (CoNLL)"
}
]
},
{
"year": 2021,
"event_url": "https://aclanthology.org/events/conll-2021/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2021.conll-1/",
"title": "Proceedings of the 25th Conference on Computational Natural Language Learning"
}
]
},
{
"year": 2020,
"event_url": "https://aclanthology.org/events/conll-2020/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2020.conll-1/",
"title": "Proceedings of the 24th Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/2020.conll-shared/",
"title": "Proceedings of the CoNLL 2020 Shared Task: Cross-Framework Meaning Representation Parsing"
}
]
},
{
"year": 2019,
"event_url": "https://aclanthology.org/events/conll-2019/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/K19-1/",
"title": "Proceedings of the 23rd Conference on Computational Natural Language Learning (CoNLL)"
},
{
"url": "https://aclanthology.org/volumes/K19-2/",
"title": "Proceedings of the Shared Task on Cross-Framework Meaning Representation Parsing at the 2019 Conference on Natural Language Learning"
}
]
},
{
"year": 2018,
"event_url": "https://aclanthology.org/events/conll-2018/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/K18-1/",
"title": "Proceedings of the 22nd Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/K18-2/",
"title": "Proceedings of the CoNLL 2018 Shared Task: Multilingual Parsing from Raw Text to Universal Dependencies"
},
{
"url": "https://aclanthology.org/volumes/K18-3/",
"title": "Proceedings of the CoNLL–SIGMORPHON 2018 Shared Task: Universal Morphological Reinflection"
}
]
},
{
"year": 2017,
"event_url": "https://aclanthology.org/events/conll-2017/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/K17-1/",
"title": "Proceedings of the 21st Conference on Computational Natural Language Learning (CoNLL 2017)"
},
{
"url": "https://aclanthology.org/volumes/K17-2/",
"title": "Proceedings of the CoNLL SIGMORPHON 2017 Shared Task: Universal Morphological Reinflection"
},
{
"url": "https://aclanthology.org/volumes/K17-3/",
"title": "Proceedings of the CoNLL 2017 Shared Task: Multilingual Parsing from Raw Text to Universal Dependencies"
}
]
},
{
"year": 2016,
"event_url": "https://aclanthology.org/events/conll-2016/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/K16-1/",
"title": "Proceedings of the 20th SIGNLL Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/K16-2/",
"title": "Proceedings of the CoNLL-16 shared task"
}
]
},
{
"year": 2015,
"event_url": "https://aclanthology.org/events/conll-2015/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/K15-1/",
"title": "Proceedings of the Nineteenth Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/K15-2/",
"title": "Proceedings of the Nineteenth Conference on Computational Natural Language Learning - Shared Task"
}
]
},
{
"year": 2014,
"event_url": "https://aclanthology.org/events/conll-2014/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W14-16/",
"title": "Proceedings of the Eighteenth Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/W14-17/",
"title": "Proceedings of the Eighteenth Conference on Computational Natural Language Learning: Shared Task"
}
]
},
{
"year": 2013,
"event_url": "https://aclanthology.org/events/conll-2013/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W13-35/",
"title": "Proceedings of the Seventeenth Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/W13-36/",
"title": "Proceedings of the Seventeenth Conference on Computational Natural Language Learning: Shared Task"
}
]
},
{
"year": 2012,
"event_url": "https://aclanthology.org/events/conll-2012/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/D12-1/",
"title": "Proceedings of the 2012 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/W12-45/",
"title": "Joint Conference on EMNLP and CoNLL - Shared Task"
}
]
},
{
"year": 2011,
"event_url": "https://aclanthology.org/events/conll-2011/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W11-03/",
"title": "Proceedings of the Fifteenth Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/W11-19/",
"title": "Proceedings of the Fifteenth Conference on Computational Natural Language Learning: Shared Task"
}
]
},
{
"year": 2010,
"event_url": "https://aclanthology.org/events/conll-2010/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W10-29/",
"title": "Proceedings of the Fourteenth Conference on Computational Natural Language Learning"
},
{
"url": "https://aclanthology.org/volumes/W10-30/",
"title": "Proceedings of the Fourteenth Conference on Computational Natural Language Learning – Shared Task"
}
]
},
{
"year": 2009,
"event_url": "https://aclanthology.org/events/conll-2009/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W09-11/",
"title": "Proceedings of the Thirteenth Conference on Computational Natural Language Learning (CoNLL-2009)"
},
{
"url": "https://aclanthology.org/volumes/W09-12/",
"title": "Proceedings of the Thirteenth Conference on Computational Natural Language Learning (CoNLL 2009): Shared Task"
}
]
},
{
"year": 2008,
"event_url": "https://aclanthology.org/events/conll-2008/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W08-21/",
"title": "CoNLL 2008: Proceedings of the Twelfth Conference on Computational Natural Language Learning"
}
]
},
{
"year": 2007,
"event_url": "https://aclanthology.org/events/conll-2007/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/D07-1/",
"title": "Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP-CoNLL)"
}
]
},
{
"year": 2006,
"event_url": "https://aclanthology.org/events/conll-2006/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W06-29/",
"title": "Proceedings of the Tenth Conference on Computational Natural Language Learning (CoNLL-X)"
}
]
},
{
"year": 2005,
"event_url": "https://aclanthology.org/events/conll-2005/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W05-06/",
"title": "Proceedings of the Ninth Conference on Computational Natural Language Learning (CoNLL-2005)"
}
]
},
{
"year": 2004,
"event_url": "https://aclanthology.org/events/conll-2004/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W04-24/",
"title": "Proceedings of the Eighth Conference on Computational Natural Language Learning (CoNLL-2004) at HLT-NAACL 2004"
}
]
},
{
"year": 2003,
"event_url": "https://aclanthology.org/events/conll-2003/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W03-04/",
"title": "Proceedings of the Seventh Conference on Natural Language Learning at HLT-NAACL 2003"
}
]
},
{
"year": 2002,
"event_url": "https://aclanthology.org/events/conll-2002/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W02-20/",
"title": "COLING-02: The 6th Conference on Natural Language Learning 2002 (CoNLL-2002)"
}
]
},
{
"year": 2001,
"event_url": "https://aclanthology.org/events/conll-2001/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W01-07/",
"title": "Proceedings of the ACL 2001 Workshop on Computational Natural Language Learning (CoNLL)"
}
]
},
{
"year": 2000,
"event_url": "https://aclanthology.org/events/conll-2000/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W00-07/",
"title": "Fourth Conference on Computational Natural Language Learning and the Second Learning Language in Logic Workshop"
}
]
},
{
"year": 1999,
"event_url": "https://aclanthology.org/events/conll-1999/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W99-07/",
"title": "EACL 1999: CoNLL-99 Computational Natural Language Learning"
}
]
},
{
"year": 1998,
"event_url": "https://aclanthology.org/events/conll-1998/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W98-12/",
"title": "Proceedings of the Joint Conference on New Methods in Language Processing and Computational Natural Language Learning"
}
]
},
{
"year": 1997,
"event_url": "https://aclanthology.org/events/conll-1997/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/W97-10/",
"title": "CoNLL97: Computational Natural Language Learning"
}
]
}
],
"scope": "Actual first-party publisher entries; multiple volumes/tracks do not create extra event years. Year census does not establish per-paper/track/abstract or public rejected-submission completeness. 30 actualeditions1997–2026:officialpreviouslist1997–2025 pluscurrent2026 andpublisherentries; separate shared-taskseries excluded from extraeditioncounts. Named ECML97/MLNet fore-runner is not the1997MadridCoNLLedition. Preserve earlyworkshop titles andtrack evidence rather than blindly relabel allrecords main.",
"additional_primary_sources": [
{
"source_url": "https://www.conll.org/previous-editions",
"resolved_url": "https://www.conll.org/previous-editions",
"checked_at": "2026-11-08T10:24:23.579938+00:00",
"http_status": 200,
"source_sha256": "79e9e4342727acd13891103d140b40bc35ab4f3f5beef8b38868dab13c5129f4"
},
{
"source_url": "https://www.conll.org/2026",
"resolved_url": "https://www.conll.org/2026",
"checked_at": "2026-11-08T10:23:34.920174+00:00",
"http_status": 200,
"source_sha256": "b4925b839e61d2a9e69b88bad06cca191c2e4bb40d66ea07a5890770ca4e8e02"
}
],
"official_previous_edition_years": [
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"source_html_sha256": "a342c627a8a97330fc064a5b3b7d612f917b9d81e07e050ffeb4a2b05d3bf061"
}
+117
View File
@@ -0,0 +1,117 @@
{
"source_url": "https://proceedings.mlr.press/",
"checked_at": "2026-11-08T09:00:14.927398+00:00",
"source_html_sha256": "6b0c53798d285af02e4425adfd01b51db9d0945e2dc7c92772daa517e8847843",
"cutoff_year": 2026,
"expected_years": [
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"publisher_index_years": [
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"editions": [
{
"year": 2025,
"url": "https://proceedings.mlr.press/v305/",
"publisher_index_label": "Volume 305 Proceedings of CoRL 2025",
"checked_at": "2026-11-08T09:01:41.131259+00:00",
"source_html_sha256": "6d006392265f4eec3a40cb44a89cf1c9b75d9b2cb393acdf711e91bda0d60e80",
"event_heading": "Volume 305: Conference on Robot Learning, 27-30 September 2025, Seoul, Korea"
},
{
"year": 2024,
"url": "https://proceedings.mlr.press/v270/",
"publisher_index_label": "Volume 270 Proceedings of CoRL 2024",
"checked_at": "2026-11-08T09:01:46.083656+00:00",
"source_html_sha256": "9bf9b3c63c131f8779ee3af7e9ffb3950be4e8eed0dd88d5dd75c7e956764bae",
"event_heading": "Volume 270: Conference on Robot Learning, 6-9 November 2024, Munich, Germany"
},
{
"year": 2023,
"url": "https://proceedings.mlr.press/v229/",
"publisher_index_label": "Volume 229 Proceedings of CoRL 2023",
"checked_at": "2026-11-08T09:01:41.859103+00:00",
"source_html_sha256": "7411f1baa35bc2034af476079fc14dc7198aea1943979f832c0415e34eb91421",
"event_heading": "Volume 229: Conference on Robot Learning, 6-9 November 2023, Atlanta, USA"
},
{
"year": 2022,
"url": "https://proceedings.mlr.press/v205/",
"publisher_index_label": "Volume 205 Proceedings of CoRL 2022",
"checked_at": "2026-11-08T09:01:42.212859+00:00",
"source_html_sha256": "ea69a217883f22500ce1153fc23c6dfa140ffbebb60081945b57baebee5e8db4",
"event_heading": "Volume 205: Conference on Robot Learning, 14-18 December 2022, Auckland, New Zealand"
},
{
"year": 2021,
"url": "https://proceedings.mlr.press/v164/",
"publisher_index_label": "Volume 164 Proceedings of CoRL 2021",
"checked_at": "2026-11-08T09:01:43.424032+00:00",
"source_html_sha256": "5dbbb03b4b021f50898b66ce2f9896ef809a2813210e17c1a97809ac36e0bf71",
"event_heading": "Volume 164: Conference on Robot Learning, 8-11 November 2021, London, UK"
},
{
"year": 2020,
"url": "https://proceedings.mlr.press/v155/",
"publisher_index_label": "Volume 155 Proceedings of CoRL 2020",
"checked_at": "2026-11-08T09:01:43.030373+00:00",
"source_html_sha256": "80350d6dac2b430312639d7a7c8973e5f5c91e1430c45a50fa7b10b7668b6905",
"event_heading": "Volume 155: Conference on Robot Learning, 16-18 November 2020, virtual"
},
{
"year": 2019,
"url": "https://proceedings.mlr.press/v100/",
"publisher_index_label": "Volume 100 CoRL 2019",
"checked_at": "2026-11-08T09:01:45.269656+00:00",
"source_html_sha256": "13c5f8504612969fc76a0547437d5e1ed00f6bc9e5961950dce9bd074e02962c",
"event_heading": "Volume 100: Conference on Robot Learning, 30 October to 1 November 2019,"
},
{
"year": 2018,
"url": "https://proceedings.mlr.press/v87/",
"publisher_index_label": "Volume 87 CoRL 2018",
"checked_at": "2026-11-08T09:01:47.815772+00:00",
"source_html_sha256": "9820e3ef1d900d1479a1dd2e90bdbf36d88bd1841cac3c1c23cf1aa4cd548396",
"event_heading": "Volume 87: Conference on Robot Learning, 29-31 October 2018,"
},
{
"year": 2017,
"url": "https://proceedings.mlr.press/v78/",
"publisher_index_label": "Volume 78 CoRL 2017 Proceedings",
"checked_at": "2026-11-08T09:01:47.618892+00:00",
"source_html_sha256": "9cf96de10cea85ea94e841861d6a17deccf9d89a0058c991fab7c69ac9a300e9",
"event_heading": "Volume 78: Conference on Robot Learning, 13-15 November 2017,"
}
],
"first_edition_explicitly_named_by_publisher": true,
"announced_not_in_publisher_proceedings_index": [
{
"source_url": "https://www.corl.org/",
"checked_at": "2026-11-08T09:01:51.370877+00:00",
"source_html_sha256": "346f02407c7247f3de4e8124d65c391f8786afe5bdf6c2261de91b34a8ab25d2",
"year": 2026,
"event_dates": "2026-11-09/2026-11-12",
"as_of": "2026-11-08",
"state": "announced_upcoming_event_not_in_publisher_proceedings_index"
}
],
"scope": "Independent first-edition and all actual publisher-index conference/event-year labels, checked against each volume event heading. No annual interpolation, per-paper/track/abstract completeness or public rejection census. CoRL2026 is separately announced/upcoming and not listed in PMLR index; missing snapshot year does not prove missing published papers."
}
+283
View File
@@ -0,0 +1,283 @@
{
"source_url": "https://www.thecvf.com/?page_id=100",
"resolved_url": "https://www.thecvf.com/?page_id=100",
"http_status": 200,
"checked_at": "2026-11-08T10:47:26.989521+00:00",
"source_sha256": "59b10db1ad99b8e47871bea22c5739310ce02294d6b34e5a0665bd7b32d1ed64",
"source_html_sha256": "59b10db1ad99b8e47871bea22c5739310ce02294d6b34e5a0665bd7b32d1ed64",
"cutoff_year": 2026,
"expected_years": [
1983,
1985,
1986,
1988,
1989,
1991,
1992,
1993,
1994,
1996,
1997,
1998,
1999,
2000,
2001,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028,
2029,
2030,
2031
],
"editions": [
{
"year": 2026,
"location_label": "Denver",
"links": [
"http://openaccess.thecvf.com/CVPR2026"
]
},
{
"year": 2025,
"location_label": "Nashville",
"links": [
"http://openaccess.thecvf.com/CVPR2025"
]
},
{
"year": 2024,
"location_label": "Seattle",
"links": [
"http://openaccess.thecvf.com/CVPR2024"
]
},
{
"year": 2023,
"location_label": "Vancouver",
"links": [
"http://openaccess.thecvf.com/CVPR2023"
]
},
{
"year": 2022,
"location_label": "New Orleans",
"links": [
"http://openaccess.thecvf.com/CVPR2022"
]
},
{
"year": 2021,
"location_label": "Virtual",
"links": [
"http://openaccess.thecvf.com/CVPR2021"
]
},
{
"year": 2020,
"location_label": "Virtual",
"links": [
"http://openaccess.thecvf.com/CVPR2020.py"
]
},
{
"year": 2019,
"location_label": "Long Beach",
"links": [
"http://openaccess.thecvf.com/CVPR2019.py"
]
},
{
"year": 2018,
"location_label": "Salt Lake City",
"links": [
"http://openaccess.thecvf.com/CVPR2018.py"
]
},
{
"year": 2017,
"location_label": "Honolulu",
"links": [
"http://openaccess.thecvf.com/CVPR2017.py"
]
},
{
"year": 2016,
"location_label": "Las Vegas",
"links": [
"http://openaccess.thecvf.com/CVPR2016.py"
]
},
{
"year": 2015,
"location_label": "Boston",
"links": [
"http://openaccess.thecvf.com/CVPR2015.py"
]
},
{
"year": 2014,
"location_label": "Columbus",
"links": [
"http://openaccess.thecvf.com/CVPR2014.py"
]
},
{
"year": 2013,
"location_label": "Portland",
"links": [
"http://openaccess.thecvf.com/CVPR2013.py"
]
},
{
"year": 2012,
"location_label": "Providence",
"links": []
},
{
"year": 2011,
"location_label": "Colorado Springs",
"links": []
},
{
"year": 2010,
"location_label": "San Francisco",
"links": []
},
{
"year": 2009,
"location_label": "Miami",
"links": []
},
{
"year": 2008,
"location_label": "Anchorage",
"links": []
},
{
"year": 2007,
"location_label": "Minneapolis",
"links": []
},
{
"year": 2006,
"location_label": "New York",
"links": []
},
{
"year": 2005,
"location_label": "San Diego",
"links": []
},
{
"year": 2004,
"location_label": "Washington D.C.",
"links": []
},
{
"year": 2003,
"location_label": "Madison",
"links": []
},
{
"year": 2001,
"location_label": "Kauai",
"links": []
},
{
"year": 2000,
"location_label": "Hilton Head",
"links": []
},
{
"year": 1999,
"location_label": "Fort Collins",
"links": []
},
{
"year": 1998,
"location_label": "Santa Barbara",
"links": []
},
{
"year": 1997,
"location_label": "San Juan",
"links": []
},
{
"year": 1996,
"location_label": "San Francisco",
"links": []
},
{
"year": 1994,
"location_label": "Seattle",
"links": []
},
{
"year": 1993,
"location_label": "New York",
"links": []
},
{
"year": 1992,
"location_label": "Champaign",
"links": []
},
{
"year": 1991,
"location_label": "Lahaina",
"links": []
},
{
"year": 1989,
"location_label": "San Francisco",
"links": []
},
{
"year": 1988,
"location_label": "Ann Arbor",
"links": []
},
{
"year": 1986,
"location_label": "Miami",
"links": []
},
{
"year": 1985,
"location_label": "San Francisco",
"links": []
},
{
"year": 1983,
"location_label": "Arlington",
"links": []
}
],
"scope": "Explicit rows from CVFcomprehensivepast/futureconference table, filteredat2026; notfirst/lastyear interpolation. Multiple proceedingsvolumes,tracksandfuturebidsdonotcreateextraeventyears. Doesnotproveperpaper/track/abstract/publicnegativecompleteness. Preserve irregular earlyyearlist; do not invent1984/1987/1990/1995/2002 because they fallbetweenfirstandlast. CVFofficialopenaccesslinksbegin2013, sohistoricalpublisheravailabilityisaseparatequestion.2026Findings retainsitsowntrack,notallworkshopproceedingsareFindings."
}
+492
View File
@@ -0,0 +1,492 @@
{
"source_url": "https://aclanthology.org/venues/eacl/",
"resolved_url": "https://aclanthology.org/venues/eacl/",
"checked_at": "2026-11-08T10:20:24.488318+00:00",
"http_status": 200,
"source_sha256": "d117c304299c40a1c569ebff91056cdb8fdfdb448d3e90a62bc962b31eb01f7d",
"cutoff_year": 2026,
"expected_years": [
1983,
1985,
1987,
1989,
1991,
1993,
1995,
1997,
1999,
2003,
2006,
2009,
2012,
2014,
2017,
2021,
2023,
2024,
2026
],
"excluded_future_years": [
2027
],
"publisher_years": [
1983,
1985,
1987,
1989,
1991,
1993,
1995,
1997,
1999,
2003,
2006,
2009,
2012,
2014,
2017,
2021,
2023,
2024,
2026
],
"editions": [
{
"year": 2026,
"event_url": "https://aclanthology.org/events/eacl-2026/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2026.eacl-long/",
"title": "Proceedings of the 19th Conference of the European Chapter of the Association for Computational Linguistics (Volume 1: Long Papers)"
},
{
"url": "https://aclanthology.org/volumes/2026.eacl-short/",
"title": "Proceedings of the 19th Conference of the European Chapter of the Association for Computational Linguistics (Volume 2: Short Papers)"
},
{
"url": "https://aclanthology.org/volumes/2026.eacl-demo/",
"title": "Proceedings of the 19th Conference of the European Chapter of the Association for Computational Linguistics (Volume 3: System Demonstrations)"
},
{
"url": "https://aclanthology.org/volumes/2026.eacl-srw/",
"title": "Proceedings of the 19th Conference of the European Chapter of the Association for Computational Linguistics (Volume 4: Student Research Workshop)"
},
{
"url": "https://aclanthology.org/volumes/2026.eacl-industry/",
"title": "Proceedings of the 19th Conference of the European Chapter of the Association for Computational Linguistics (Volume 5: Industry Track)"
},
{
"url": "https://aclanthology.org/volumes/2026.eacl-tutorials/",
"title": "Proceedings of the 19th Conference of the European Chapter of the Association for Computational Linguistics (Volume 6: Tutorial Abstracts)"
}
]
},
{
"year": 2024,
"event_url": "https://aclanthology.org/events/eacl-2024/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2024.eacl-long/",
"title": "Proceedings of the 18th Conference of the European Chapter of the Association for Computational Linguistics (Volume 1: Long Papers)"
},
{
"url": "https://aclanthology.org/volumes/2024.eacl-short/",
"title": "Proceedings of the 18th Conference of the European Chapter of the Association for Computational Linguistics (Volume 2: Short Papers)"
},
{
"url": "https://aclanthology.org/volumes/2024.eacl-demo/",
"title": "Proceedings of the 18th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2024.eacl-srw/",
"title": "Proceedings of the 18th Conference of the European Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/2024.eacl-tutorials/",
"title": "Proceedings of the 18th Conference of the European Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2023,
"event_url": "https://aclanthology.org/events/eacl-2023/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2023.eacl-main/",
"title": "Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/2023.eacl-demo/",
"title": "Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2023.eacl-srw/",
"title": "Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/2023.eacl-tutorials/",
"title": "Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2021,
"event_url": "https://aclanthology.org/events/eacl-2021/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2021.eacl-main/",
"title": "Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: Main Volume"
},
{
"url": "https://aclanthology.org/volumes/2021.eacl-demos/",
"title": "Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2021.eacl-srw/",
"title": "Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/2021.eacl-tutorials/",
"title": "Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2017,
"event_url": "https://aclanthology.org/events/eacl-2017/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E17-1/",
"title": "Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Volume 1, Long Papers"
},
{
"url": "https://aclanthology.org/volumes/E17-2/",
"title": "Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Volume 2, Short Papers"
},
{
"url": "https://aclanthology.org/volumes/E17-3/",
"title": "Proceedings of the Software Demonstrations of the 15th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E17-4/",
"title": "Proceedings of the Student Research Workshop at the 15th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E17-5/",
"title": "Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2014,
"event_url": "https://aclanthology.org/events/eacl-2014/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E14-1/",
"title": "Proceedings of the 14th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E14-2/",
"title": "Proceedings of the Demonstrations at the 14th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E14-3/",
"title": "Proceedings of the Student Research Workshop at the 14th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E14-4/",
"title": "Proceedings of the 14th Conference of the European Chapter of the Association for Computational Linguistics, volume 2: Short Papers"
}
]
},
{
"year": 2012,
"event_url": "https://aclanthology.org/events/eacl-2012/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E12-1/",
"title": "Proceedings of the 13th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E12-2/",
"title": "Proceedings of the Demonstrations at the 13th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E12-3/",
"title": "Proceedings of the Student Research Workshop at the 13th Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 2009,
"event_url": "https://aclanthology.org/events/eacl-2009/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E09-1/",
"title": "Proceedings of the 12th Conference of the European Chapter of the ACL (EACL 2009)"
},
{
"url": "https://aclanthology.org/volumes/E09-2/",
"title": "Proceedings of the Demonstrations Session at EACL 2009"
},
{
"url": "https://aclanthology.org/volumes/E09-3/",
"title": "Proceedings of the Student Research Workshop at EACL 2009"
}
]
},
{
"year": 2006,
"event_url": "https://aclanthology.org/events/eacl-2006/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E06-1/",
"title": "11th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E06-2/",
"title": "Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/E06-3/",
"title": "Student Research Workshop"
}
]
},
{
"year": 2003,
"event_url": "https://aclanthology.org/events/eacl-2003/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E03-1/",
"title": "10th Conference of the European Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/E03-2/",
"title": "Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/E03-3/",
"title": "Student Research Workshop"
}
]
},
{
"year": 1999,
"event_url": "https://aclanthology.org/events/eacl-1999/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E99-1/",
"title": "Ninth Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1997,
"event_url": "https://aclanthology.org/events/eacl-1997/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/P97-1/",
"title": "35th Annual Meeting of the Association for Computational Linguistics and 8th Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1995,
"event_url": "https://aclanthology.org/events/eacl-1995/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E95-1/",
"title": "Seventh Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1993,
"event_url": "https://aclanthology.org/events/eacl-1993/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E93-1/",
"title": "Sixth Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1991,
"event_url": "https://aclanthology.org/events/eacl-1991/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E91-1/",
"title": "Fifth Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1989,
"event_url": "https://aclanthology.org/events/eacl-1989/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E89-1/",
"title": "Fourth Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1987,
"event_url": "https://aclanthology.org/events/eacl-1987/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E87-1/",
"title": "Third Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1985,
"event_url": "https://aclanthology.org/events/eacl-1985/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E85-1/",
"title": "Second Conference of the European Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 1983,
"event_url": "https://aclanthology.org/events/eacl-1983/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/E83-1/",
"title": "First Conference of the European Chapter of the Association for Computational Linguistics"
}
]
}
],
"scope": "Actual first-party publisher entries; multiple volumes/tracks do not create extra event years. Year census does not establish per-paper/track/abstract or public rejected-submission completeness. All19namededitions1983–2026 crosschecked against chapterdirectory; hostedACL2019/2022 are separate from EACLseries.1997explicitjointACL/EACL sharesP97-1.2027excluded; no interpolation across irregular intervals.2021plannedKyiv/heldonline are kept distinct.",
"additional_primary_sources": [
{
"source_url": "https://eacl.org/conferences/",
"resolved_url": "https://eacl.org/conferences/",
"checked_at": "2026-11-08T10:20:25.447335+00:00",
"http_status": 200,
"source_sha256": "0ee08d024d3356336de9a2c02c7e214e6d48d97acb9060bfbc360ff510cd34c7"
}
],
"chapter_directory_entries": [
{
"year": 2027,
"label": "EACL 2027",
"location_note": "Athens, Greece"
},
{
"year": 2026,
"label": "EACL 2026",
"location_note": "Rabat, Morocco"
},
{
"year": 2024,
"label": "EACL 2024",
"location_note": "St. Julians, Malta"
},
{
"year": 2023,
"label": "EACL 2023",
"location_note": "Dubrovnik, Croatia (hybrid)"
},
{
"year": 2022,
"label": "ACL 2022",
"location_note": "Dublin, Ireland"
},
{
"year": 2021,
"label": "EACL 2021",
"location_note": "Kyiv, Ukraine (held online)"
},
{
"year": 2019,
"label": "ACL 2019",
"location_note": "Florence, Italy"
},
{
"year": 2017,
"label": "EACL 2017",
"location_note": "Valencia, Spain"
},
{
"year": 2014,
"label": "EACL 2014",
"location_note": "Gothenburg, Sweden"
},
{
"year": 2012,
"label": "EACL 2012",
"location_note": "Avignon, France"
},
{
"year": 2009,
"label": "EACL 2009",
"location_note": "Athens, Greece"
},
{
"year": 2006,
"label": "EACL 2006",
"location_note": "Trento, Italy"
},
{
"year": 2003,
"label": "EACL 2003",
"location_note": "Budapest, Hungary"
},
{
"year": 1999,
"label": "EACL 1999",
"location_note": "Bergen, Norway"
},
{
"year": 1997,
"label": "EACL-ACL 1997",
"location_note": "Madrid, Spain"
},
{
"year": 1995,
"label": "EACL 1995",
"location_note": "Dublin, Ireland"
},
{
"year": 1993,
"label": "EACL 1993",
"location_note": "Utrecht, The Netherlands"
},
{
"year": 1991,
"label": "EACL 1991",
"location_note": "Berlin, Germany"
},
{
"year": 1989,
"label": "EACL 1989",
"location_note": "Manchester, England"
},
{
"year": 1987,
"label": "EACL 1987",
"location_note": "Copenhagen, Denmark"
},
{
"year": 1985,
"label": "EACL 1985",
"location_note": "Geneva, Switzerland"
},
{
"year": 1983,
"label": "EACL 1983",
"location_note": "Pisa, Italy"
}
],
"chapter_hosted_acl_years_not_eacl_series_editions": [
2022,
2019
],
"source_html_sha256": "d117c304299c40a1c569ebff91056cdb8fdfdb448d3e90a62bc962b31eb01f7d"
}
+269
View File
@@ -0,0 +1,269 @@
{
"source_url": "https://www.eurai.org/ecai/history",
"resolved_url": "https://www.eurai.org/ecai/history",
"http_status": 200,
"checked_at": "2026-11-08T10:48:38.667782+00:00",
"source_sha256": "9d7b1d7a1b9cc22abf8ae981bc421560ae028e484b759bbdc36e32e5f3cb2cff",
"source_html_sha256": "9d7b1d7a1b9cc22abf8ae981bc421560ae028e484b759bbdc36e32e5f3cb2cff",
"additional_primary_sources": [
{
"source_url": "https://ecai2025.org/",
"resolved_url": "https://ecai2025.org/",
"http_status": 200,
"checked_at": "2026-11-08T10:48:35.786591+00:00",
"source_sha256": "485208f9783d26a094832af9dd8f024642528561e29226f29ca3533d2de81bce"
},
{
"source_url": "https://www.eurai.org/ecai",
"resolved_url": "https://www.eurai.org/ecai",
"http_status": 200,
"checked_at": "2026-11-08T10:47:36.587944+00:00",
"source_sha256": "d9a23a3955947645ac19dbb80bb4aedf99ce19137ad3204acdaccbdc813824ad"
}
],
"cutoff_year": 2026,
"expected_years": [
1974,
1976,
1978,
1980,
1982,
1984,
1986,
1988,
1990,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016,
2018,
2020,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"ordinal": 1,
"year": 1974,
"location_label": "Brighton",
"series_label": "AISB predecessor",
"joint_with_ijcai": false
},
{
"ordinal": 2,
"year": 1976,
"location_label": "Edinburgh",
"series_label": "AISB predecessor",
"joint_with_ijcai": false
},
{
"ordinal": 3,
"year": 1978,
"location_label": "Hamburg",
"series_label": "AISB predecessor",
"joint_with_ijcai": false
},
{
"ordinal": 4,
"year": 1980,
"location_label": "Amsterdam",
"series_label": "AISB predecessor",
"joint_with_ijcai": false
},
{
"ordinal": 5,
"year": 1982,
"location_label": "Orsay",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 6,
"year": 1984,
"location_label": "Pisa",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 7,
"year": 1986,
"location_label": "Brighton",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 8,
"year": 1988,
"location_label": "Munich",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 9,
"year": 1990,
"location_label": "Stockholm",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 10,
"year": 1992,
"location_label": "Vienna",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 11,
"year": 1994,
"location_label": "Amsterdam",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 12,
"year": 1996,
"location_label": "Budapest",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 13,
"year": 1998,
"location_label": "Brighton",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 14,
"year": 2000,
"location_label": "Berlin",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 15,
"year": 2002,
"location_label": "Lyon",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 16,
"year": 2004,
"location_label": "Valencia",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 17,
"year": 2006,
"location_label": "Riva del Garda",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 18,
"year": 2008,
"location_label": "Patras",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 19,
"year": 2010,
"location_label": "Lisboa",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 20,
"year": 2012,
"location_label": "Montpellier",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 21,
"year": 2014,
"location_label": "Prague",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 22,
"year": 2016,
"location_label": "The Hague",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 23,
"year": 2018,
"location_label": "Stockholm",
"series_label": "ECAI",
"joint_with_ijcai": true
},
{
"ordinal": 24,
"year": 2020,
"location_label": "Santiago de Compostela (online)",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 25,
"year": 2022,
"location_label": "Vienna",
"series_label": "ECAI",
"joint_with_ijcai": true
},
{
"ordinal": 26,
"year": 2023,
"location_label": "Krakow",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 27,
"year": 2024,
"location_label": "Santiago de Compostela",
"series_label": "ECAI",
"joint_with_ijcai": false
},
{
"ordinal": 28,
"year": 2025,
"series_label": "ECAI",
"location_label": "Bologna",
"joint_with_ijcai": false
},
{
"ordinal": 29,
"year": 2026,
"series_label": "IJCAI-ECAI",
"location_label": "Bremen",
"joint_with_ijcai": true
}
],
"predecessor_years": [
1974,
1976,
1978,
1980
],
"scope": "Officialhistoryenumerates27actualeditions1974–2024;currentofficial28th2025and29thjoint2026sourcesextendto29. FirstfourwereAISBconferencesretrospectivelynumberedinthefamily;ECAInamefirstused1982. PreserveoriginalAISBsource names,notimplicitrenaming. JointIJCAI2018/2022/2026areoneeventperyear,notadditionalpapers;2023onannualonlyasactualentries. Earlypredecessors,perpapertracksandpublicnegativecoverage stillneedindependentcollection."
}
+161
View File
@@ -0,0 +1,161 @@
{
"source_url": "https://www.thecvf.com/?page_id=100",
"resolved_url": "https://www.thecvf.com/?page_id=100",
"http_status": 200,
"checked_at": "2026-11-08T10:47:26.989521+00:00",
"source_sha256": "59b10db1ad99b8e47871bea22c5739310ce02294d6b34e5a0665bd7b32d1ed64",
"source_html_sha256": "59b10db1ad99b8e47871bea22c5739310ce02294d6b34e5a0665bd7b32d1ed64",
"cutoff_year": 2026,
"expected_years": [
1990,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016,
2018,
2020,
2022,
2024,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 2026,
"location_label": "Malmö",
"links": []
},
{
"year": 2024,
"location_label": "Milan",
"links": [
"https://www.ecva.net/papers.php"
]
},
{
"year": 2022,
"location_label": "Tel Aviv",
"links": [
"https://www.ecva.net/papers.php"
]
},
{
"year": 2020,
"location_label": "Edinburgh",
"links": [
"https://www.ecva.net/papers.php"
]
},
{
"year": 2018,
"location_label": "Munich",
"links": [
"http://openaccess.thecvf.com/ECCV2018.py"
]
},
{
"year": 2016,
"location_label": "Amsterdam",
"links": []
},
{
"year": 2014,
"location_label": "Zurich",
"links": []
},
{
"year": 2012,
"location_label": "Florence",
"links": []
},
{
"year": 2010,
"location_label": "Hersonissos",
"links": []
},
{
"year": 2008,
"location_label": "Marseille",
"links": []
},
{
"year": 2006,
"location_label": "Graz",
"links": []
},
{
"year": 2004,
"location_label": "Prague",
"links": []
},
{
"year": 2002,
"location_label": "Copenhagen",
"links": []
},
{
"year": 2000,
"location_label": "Dublin",
"links": []
},
{
"year": 1998,
"location_label": "Freiburg",
"links": []
},
{
"year": 1996,
"location_label": "Cambridge",
"links": []
},
{
"year": 1994,
"location_label": "Stockholm",
"links": []
},
{
"year": 1992,
"location_label": "Santa Margherita Ligure",
"links": []
},
{
"year": 1990,
"location_label": "Antibes",
"links": []
}
],
"scope": "Explicit rows from CVFcomprehensivepast/futureconference table, filteredat2026; notfirst/lastyear interpolation. Multiple proceedingsvolumes,tracksandfuturebidsdonotcreateextraeventyears. Doesnotproveperpaper/track/abstract/publicnegativecompleteness. CVFexplicitlylists1990–2026; ECVAoverviewlistsonly2004–2024 andlabelsitslistpartial.2026websiteconfirmscurrentedition; proceedingavailabilitynotinferredfromeventlisting. Workshop/demo/contributiontype remainindependent.",
"additional_primary_sources": [
{
"source_url": "https://www.ecva.net/",
"resolved_url": "https://www.ecva.net/",
"http_status": 200,
"checked_at": "2026-11-08T10:47:22.058487+00:00",
"source_sha256": "c1946548b87a08a6381bf8ab409f35bc18ede20d3e09b6152b8e147a629386da"
},
{
"source_url": "https://eccv.ecva.net/Conferences/2026",
"resolved_url": "https://eccv.ecva.net/Conferences/2026",
"http_status": 200,
"checked_at": "2026-11-08T10:48:37.796019+00:00",
"source_sha256": "4a8dfff82350066c696247f62baf8069af49368135827fca95cdfc1be8953967"
}
],
"source_disagreements": [
{
"year": 2020,
"cvf_location_label": "Edinburgh",
"ecva_location_label": "Glasgow, Scotland",
"interpretation": "Retain firstparty directory disagreement; no venue metadata rewritten or actualinpersonlocationinferred."
}
]
}
@@ -0,0 +1,432 @@
{
"source_url": "https://www.ecmlpkdd2011.org/pastConferences.php",
"resolved_url": "https://www.ecmlpkdd2011.org/pastConferences.php",
"http_status": 200,
"checked_at": "2026-11-08T12:03:53.988202+00:00",
"source_sha256": "c3ecdb032aeacf6a365aace5457773827d1405872ad9bc6be6fc05851d5e68d6",
"source_html_sha256": "c3ecdb032aeacf6a365aace5457773827d1405872ad9bc6be6fc05851d5e68d6",
"additional_primary_sources": [
{
"source_url": "https://ecmlpkdd.org/",
"resolved_url": "https://ecmlpkdd.org/",
"http_status": 200,
"checked_at": "2026-11-08T12:03:53.009253+00:00",
"source_sha256": "d390dbba8ae6142d828b10eee646dc0a70cf744dabdd200dd419ea281a23ff23",
"source_html_sha256": "d390dbba8ae6142d828b10eee646dc0a70cf744dabdd200dd419ea281a23ff23"
},
{
"source_url": "https://www.ecmlpkdd2011.org/",
"resolved_url": "https://www.ecmlpkdd2011.org/",
"http_status": 200,
"checked_at": "2026-11-08T12:06:35.511744+00:00",
"source_sha256": "ad5b311ec3e17173615e092b436f740a27114fcbd4272e6d659f78ebc2a7c809",
"source_html_sha256": "ad5b311ec3e17173615e092b436f740a27114fcbd4272e6d659f78ebc2a7c809"
},
{
"source_url": "https://ecmlpkdd.org/2026/",
"resolved_url": "https://ecmlpkdd.org/2026/",
"http_status": 200,
"checked_at": "2026-11-08T12:06:36.806556+00:00",
"source_sha256": "6c8d1ce8f13698f377304104f4ed887952776928ac5e2dcf07e859c5d0aa445c",
"source_html_sha256": "6c8d1ce8f13698f377304104f4ed887952776928ac5e2dcf07e859c5d0aa445c"
}
],
"cutoff_year": 2026,
"expected_years": [
1986,
1987,
1988,
1989,
1991,
1993,
1994,
1995,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 1986,
"source_series": "EWSL",
"source_label": "EWSL 1986, Orsay, France, February 3-4, 1986",
"census_event_key": "ewsl:1986"
},
{
"year": 1987,
"source_series": "EWSL",
"source_label": "EWSL 1987, Bled, Yugoslavia, May 13-15, 1987",
"census_event_key": "ewsl:1987"
},
{
"year": 1988,
"source_series": "EWSL",
"source_label": "EWSL 1988, Glasgow, Scotland, UK, October 3-5, 1988",
"census_event_key": "ewsl:1988"
},
{
"year": 1989,
"source_series": "EWSL",
"source_label": "EWSL 1989, Montpellier, France, December 4-6, 1989",
"census_event_key": "ewsl:1989"
},
{
"year": 1991,
"source_series": "EWSL",
"source_label": "EWSL 1991, Porto, Portugal, March 6-8, 1991",
"census_event_key": "ewsl:1991"
},
{
"year": 1993,
"source_series": "ECML",
"source_label": "ECML 1993, Vienna, Austria, April 5-7, 1993",
"census_event_key": "ecml:1993"
},
{
"year": 1994,
"source_series": "ECML",
"source_label": "ECML 1994, Catania, Italy, April 6-8, 1994",
"census_event_key": "ecml:1994"
},
{
"year": 1995,
"source_series": "ECML",
"source_label": "ECML 1995, Heraclion, Crete, Greece, April 25-27, 1995",
"census_event_key": "ecml:1995"
},
{
"year": 1997,
"source_series": "ECML",
"source_label": "ECML 1997, located in Prague, Czech Republic, April 23-26, 1997",
"census_event_key": "ecml:1997"
},
{
"year": 1997,
"source_series": "PKDD",
"source_label": "PKDD 1997, Trondheim, Norway, June 24-27, 1997",
"census_event_key": "pkdd:1997"
},
{
"year": 1998,
"source_series": "ECML",
"source_label": "ECML 1998, Chemnitz, Germany, April 21-24, 1998",
"census_event_key": "ecml:1998"
},
{
"year": 1998,
"source_series": "PKDD",
"source_label": "PKDD 1998, Nantes, France, September 23-26, 1998",
"census_event_key": "pkdd:1998"
},
{
"year": 1999,
"source_series": "PKDD",
"source_label": "PKDD 1999, Prague, Czech Republic, September 15-18, 1999",
"census_event_key": "pkdd:1999"
},
{
"year": 2000,
"source_series": "ECML",
"source_label": "ECML 2000, Barcelona, Spain, May 30-June 2, 2000",
"census_event_key": "ecml:2000"
},
{
"year": 2000,
"source_series": "PKDD",
"source_label": "PKDD 2000, Lyon, France, September 13-16, 2000",
"census_event_key": "pkdd:2000"
},
{
"year": 2001,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2001, Freiburg, Germany, September 3-7, 2001",
"census_event_key": "ecml-pkdd:2001"
},
{
"year": 2002,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2002, Helsinki, Finland, August 19-23, 2002",
"census_event_key": "ecml-pkdd:2002"
},
{
"year": 2003,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2003, Cavtat/Dubrovnik, Croatia, September 22-26, 2003",
"census_event_key": "ecml-pkdd:2003"
},
{
"year": 2004,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2004, Pisa, Italy, September 20-24, 2004",
"census_event_key": "ecml-pkdd:2004"
},
{
"year": 2005,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2005, Porto, Portugal, October 3-7, 2005",
"census_event_key": "ecml-pkdd:2005"
},
{
"year": 2006,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2006, Berlin, Germany, September 18-22, 2006",
"census_event_key": "ecml-pkdd:2006"
},
{
"year": 2007,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2007, Warsaw, Poland, September 17-21, 2007",
"census_event_key": "ecml-pkdd:2007"
},
{
"year": 2008,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2008, Antwerp, Belgium September 15-19, 2008",
"census_event_key": "ecml-pkdd:2008"
},
{
"year": 2009,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2009, Bled, Slovenia, September 7-11, 2009",
"census_event_key": "ecml-pkdd:2009"
},
{
"year": 2010,
"source_series": "ECML-PKDD",
"source_label": "ECML-PKDD 2010, Barcelona, Catalonia, Spain, September 20-24, 2010",
"census_event_key": "ecml-pkdd:2010"
},
{
"year": 2011,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2011",
"census_event_key": "ecml-pkdd:2011",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2012,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2012",
"census_event_key": "ecml-pkdd:2012",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2013,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2013",
"census_event_key": "ecml-pkdd:2013",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2014,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2014",
"census_event_key": "ecml-pkdd:2014",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2015,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2015",
"census_event_key": "ecml-pkdd:2015",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2016,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2016",
"census_event_key": "ecml-pkdd:2016",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2017,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2017",
"census_event_key": "ecml-pkdd:2017",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2018,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2018",
"census_event_key": "ecml-pkdd:2018",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2019,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2019",
"census_event_key": "ecml-pkdd:2019",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2020,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2020",
"census_event_key": "ecml-pkdd:2020",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2021,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2021",
"census_event_key": "ecml-pkdd:2021",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2022,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2022",
"census_event_key": "ecml-pkdd:2022",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2023,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2023",
"census_event_key": "ecml-pkdd:2023",
"evidence_scope": "officialOldSite.datesJSONarray"
},
{
"year": 2024,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2024",
"census_event_key": "ecml-pkdd:2024",
"evidence_scope": "officialcurrenteventorrecentsitelist"
},
{
"year": 2025,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2025",
"census_event_key": "ecml-pkdd:2025",
"evidence_scope": "officialcurrenteventorrecentsitelist"
},
{
"year": 2026,
"source_series": "ECML-PKDD",
"source_label": "ECML PKDD 2026",
"census_event_key": "ecml-pkdd:2026",
"evidence_scope": "officialcurrenteventorrecentsitelist"
}
],
"event_count": 41,
"multiple_events_in_same_year": {
"1997": [
"ECML",
"PKDD"
],
"1998": [
"ECML",
"PKDD"
],
"2000": [
"ECML",
"PKDD"
]
},
"predecessor_years": [
1991,
1989,
1988,
1987,
1986
],
"scope": "41expliciteventsacross38years1986–2026. FiveEWSLpredecessors1986/1987/1988/1989/1991retainnames;ECMLnamefrom1993,PKDDfrom1997,andco-locationfrom2001. No1990/1992/1996interpolation. SeparateECML/PKDDeventsin1997/1998/2000arenotonehistoricalconference. OnlyOldSite.datesJSONparsedwithoutJSexecution;currentrecentyearsindependentlymatch. MultipleLNCSvolumes,journaltrackandADS/research/workshopsnotduplicateeventacceptances.",
"existing_event_identity_preflight": {
"snapshot_at": "2026-11-08 12:13:48.722149+00:00",
"report_path": "/data/paper-index/collected/same-year-event-preflight-v1.json",
"report_sha256": "50e213d5fdc194ae4fee8b74059252fa3f6f9a3bb2d2b593993ba1b95636e3b5",
"database_written": false,
"scope": "Read-onlyrepeatablereadmatchingvenues+fiveyears; notfinaldedupaudit.",
"status": "existing_separate_venue_identity_verified_preserve",
"venues": [
{
"id": 30,
"acronym": "ECML"
},
{
"id": 47,
"acronym": "PKDD"
}
],
"editions": [
{
"id": 641,
"venue_id": 30,
"acronym": "ECML",
"year": 1997,
"track": "main",
"submissions": 33
},
{
"id": 642,
"venue_id": 30,
"acronym": "ECML",
"year": 1998,
"track": "main",
"submissions": 48
},
{
"id": 643,
"venue_id": 30,
"acronym": "ECML",
"year": 2000,
"track": "main",
"submissions": 45
},
{
"id": 1053,
"venue_id": 47,
"acronym": "PKDD",
"year": 1997,
"track": "main",
"submissions": 43
},
{
"id": 1054,
"venue_id": 47,
"acronym": "PKDD",
"year": 1998,
"track": "main",
"submissions": 56
},
{
"id": 1056,
"venue_id": 47,
"acronym": "PKDD",
"year": 2000,
"track": "main",
"submissions": 86
}
],
"interpretation": "ExistingECMLandPKDDsameyeareventsaredistinctvenue/editionIDsandhaveindependentDBLPvolumeanchors. Noidentitymigrationneededfortheseexistingrecords. Keepseparatecanonicalvenues; familyquerymembershipdoesnotmeanoneevent. Earlierconstraint-onlyriskinferencewastoobroad."
}
}
@@ -0,0 +1,621 @@
{
"source_url": "https://sigdat.org/events",
"checked_at": "2026-11-08T07:00:27.310733+00:00",
"source_html_sha256": "5988b322cd329b9ff4eb10af701f40201fc6e2c394422e48b4f20357ace50769",
"cutoff_year": 2026,
"expected_years": [
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"edition_entries": [
{
"year": 2026,
"official_heading": "2026 Conference on Empirical Methods in Natural Language Processing (EMNLP 2026)",
"year_basis": "leading heading year"
},
{
"year": 2025,
"official_heading": "2025 Conference on Empirical Methods in Natural Language Processing (EMNLP 2023)",
"year_basis": "leading heading year"
},
{
"year": 2024,
"official_heading": "2024 Conference on Empirical Methods in Natural Language Processing (EMNLP 2023)",
"year_basis": "leading heading year"
},
{
"year": 2023,
"official_heading": "2023 Conference on Empirical Methods in Natural Language Processing (EMNLP 2023)",
"year_basis": "leading heading year"
},
{
"year": 2022,
"official_heading": "2022 Conference on Empirical Methods in Natural Language Processing (EMNLP 2022)",
"year_basis": "leading heading year"
},
{
"year": 2021,
"official_heading": "2021 Conference on Empirical Methods in Natural Language Processing (EMNLP 2021)",
"year_basis": "leading heading year"
},
{
"year": 2020,
"official_heading": "2020 Conference on Empirical Methods in Natural Language Processing (EMNLP 2020)",
"year_basis": "leading heading year"
},
{
"year": 2020,
"official_heading": "2020 Conference on Empirical Methods in Natural Language Processing and 9th International Joint Conference on Natural Language Processing (EMNLP 2020)",
"year_basis": "leading heading year"
},
{
"year": 2019,
"official_heading": "2019 Conference on Empirical Methods in Natural Language Processing and 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP 2019)",
"year_basis": "leading heading year"
},
{
"year": 2018,
"official_heading": "2018 Conference on Empirical Methods in Natural Language Processing (EMNLP 2018)",
"year_basis": "leading heading year"
},
{
"year": 2017,
"official_heading": "2017 Conference on Empirical Methods in Natural Language Processing (EMNLP 2015)",
"year_basis": "leading heading year"
},
{
"year": 2016,
"official_heading": "2016 Conference on Empirical Methods in Natural Language Processing (EMNLP 2015)",
"year_basis": "leading heading year"
},
{
"year": 2015,
"official_heading": "2015 Conference on Empirical Methods in Natural Language Processing (EMNLP 2015)",
"year_basis": "leading heading year"
},
{
"year": 2014,
"official_heading": "2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014)",
"year_basis": "leading heading year"
},
{
"year": 2013,
"official_heading": "2013 Conference on Empirical Methods in Natural Language Processing (EMNLP 2013)",
"year_basis": "leading heading year"
},
{
"year": 2012,
"official_heading": "2012 Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP-CoNLL 2012)",
"year_basis": "leading heading year"
},
{
"year": 2011,
"official_heading": "2011 Conference on Empirical Methods in Natural Language Processing (EMNLP 2011)",
"year_basis": "leading heading year"
},
{
"year": 2010,
"official_heading": "2010 Conference on Empirical Methods in Natural Language Processing (EMNLP 2010)",
"year_basis": "leading heading year"
},
{
"year": 2009,
"official_heading": "2009 Conference on Empirical Methods in Natural Language Processing (EMNLP 2009)",
"year_basis": "leading heading year"
},
{
"year": 2008,
"official_heading": "2008 Conference on Empirical Methods in Natural Language Processing (EMNLP 2008)",
"year_basis": "leading heading year"
},
{
"year": 2007,
"official_heading": "2007 Joint Conference on Empirical Methods in Natural Language Processing and Natural Langauge Learning (EMNLP-CoNLL 2007)",
"year_basis": "leading heading year"
},
{
"year": 2006,
"official_heading": "2006 Conference on Empirical Methods in Natural Language Processing (EMNLP 2006)",
"year_basis": "leading heading year"
},
{
"year": 2005,
"official_heading": "2005 Joint Conference on Human Language Technology and Empirical Methods in Natural Language Processing (HLT-EMNLP 2005)",
"year_basis": "leading heading year"
},
{
"year": 2004,
"official_heading": "2004 Conference on Empirical Methods in Natural Language Processing (EMNLP 2004)",
"year_basis": "leading heading year"
},
{
"year": 2003,
"official_heading": "2003 Conference on Empirical Methods in Natural Language Processing (EMNLP 2003)",
"year_basis": "leading heading year"
},
{
"year": 2002,
"official_heading": "2002 Conference on Empirical Methods in Natural Language Processing (EMNLP 2002)",
"year_basis": "leading heading year"
},
{
"year": 2001,
"official_heading": "2001 Conference on Empirical Methods in Natural Language Processing (EMNLP 2001)",
"year_basis": "leading heading year"
},
{
"year": 2000,
"official_heading": "2000 Joint SIGDAT Conference on Empirical Methods in NLP and Very Large Corpora (EMNLP/VLC 2000)",
"year_basis": "leading heading year"
},
{
"year": 1999,
"official_heading": "1999 Joint SIGDAT Conference on Empirical Methods in NLP and Very Large Corpora (EMNLP/VLC 1999)",
"year_basis": "leading heading year"
},
{
"year": 1998,
"official_heading": "3rd Conference on Empirical Methods in Natural Language Processing (EMNLP-3)",
"year_basis": "dated body following numbered/first EMNLP heading"
},
{
"year": 1997,
"official_heading": "2nd Conference on Empirical Methods in Natural Language Processing (EMNLP-2)",
"year_basis": "dated body following numbered/first EMNLP heading"
},
{
"year": 1996,
"official_heading": "First Conference on Empirical Methods in Natural Language Processing",
"year_basis": "dated body following numbered/first EMNLP heading"
}
],
"related_event_headings_excluded_from_emnlp_year_count": [
"Sixth Workshop on Very Large Corpora (WVLC-6)",
"Fifth Workshop on Very Large Corpora (WVLC-5) - August 18-20, 1997",
"Fourth Workshop on Very Large Corpora (WVLC-4) at COLING-96",
"Third Workshop on Very Large Corpora (WVLC-3) at ACL-95",
"EACL-95 SIGDAT Workshop: From Text to Tags",
"Second Workshop on Very Large Corpora (WVLC-2) at COLING-94 (Kyoto)",
"First Workshop on Very Large Corpora (WVLC-1) at ACL-93 (Columbus, Ohio)"
],
"archive_links": [
{
"text": "SIGDAT",
"url": "https://sigdat.org/"
},
{
"text": "About",
"url": "https://sigdat.org/about"
},
{
"text": "Organization",
"url": "https://sigdat.org/organization"
},
{
"text": "Constitution",
"url": "https://sigdat.org/constitution"
},
{
"text": "Information",
"url": "https://sigdat.org/information"
},
{
"text": "Calls",
"url": "https://sigdat.org/calls/bids2025"
},
{
"text": "Videos",
"url": "https://sigdat.org/videos"
},
{
"text": "Past Events",
"url": "https://sigdat.org/events"
},
{
"text": "Website",
"url": "https://2026.emnlp.org"
},
{
"text": "Website",
"url": "https://2025.emnlp.org"
},
{
"text": "Proceedings",
"url": "https://aclanthology.org/events/emnlp-2025/"
},
{
"text": "Website",
"url": "https://2024.emnlp.org"
},
{
"text": "Proceedings",
"url": "https://aclanthology.org/events/emnlp-2024/"
},
{
"text": "Website",
"url": "https://2023.emnlp.org/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2023/"
},
{
"text": "Website",
"url": "https://2022.emnlp.org/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2022/"
},
{
"text": "Website",
"url": "https://2021.emnlp.org/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2021/"
},
{
"text": "Website",
"url": "https://2020.emnlp.org/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2020/"
},
{
"text": "Website",
"url": "https://2020.emnlp.org/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2020/"
},
{
"text": "Website",
"url": "https://www.emnlp-ijcnlp2019.org"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2019/"
},
{
"text": "Website",
"url": "https://2018.emnlp.org/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2018/"
},
{
"text": "Website",
"url": "http://www.emnlp2017.net"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2017/"
},
{
"text": "Website",
"url": "https://www.aclweb.org/mirror/emnlp2016/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2016/"
},
{
"text": "Culturgest",
"url": "http://www.culturgest.pt/"
},
{
"text": "Website",
"url": "http://www.emnlp2015.org"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2015/"
},
{
"text": "Website",
"url": "http://www.emnlp2014.org"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2014/"
},
{
"text": "Website",
"url": "http://hum.csse.unimelb.edu.au/emnlp2013/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2013/"
},
{
"text": "Poster",
"url": "http://www.cs.jhu.edu/~yarowsky/EMNLP-CoNLL-2012.jpg"
},
{
"text": "Website",
"url": "http://emnlp-conll2012.unige.ch/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2012/"
},
{
"text": "Poster",
"url": "http://www.cs.jhu.edu/~yarowsky/emnlp-2011.jpg"
},
{
"text": "Website",
"url": "http://conferences.inf.ed.ac.uk/emnlp2011/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2011/"
},
{
"text": "Website",
"url": "http://www.lsi.upc.edu/events/emnlp2010/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2010/"
},
{
"text": "Website",
"url": "http://conferences.inf.ed.ac.uk/emnlp09/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2009/"
},
{
"text": "Website",
"url": "http://conferences.inf.ed.ac.uk/emnlp08/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2008/"
},
{
"text": "Website",
"url": "http://cs.jhu.edu/EMNLP-CoNLL-2007/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2007/"
},
{
"text": "Website",
"url": "http://nlp.stanford.edu/emnlp06"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2006/"
},
{
"text": "Website",
"url": "http://www.cs.utexas.edu/~ml/HLT-EMNLP05"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2005/"
},
{
"text": "Website",
"url": "https://web.archive.org/web/20041208220224/http://www.cs.ualberta.ca/~lindek/emnlp04"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2004/"
},
{
"text": "Website",
"url": "https://web.archive.org/web/20031203134359/http://www.ai.mit.edu/people/mcollins/emnlp03.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2003/"
},
{
"text": "Website",
"url": "https://web.archive.org/web/20021209092212/http://ufal.ms.mff.cuni.cz/~hajic/emnlp02/"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2002/"
},
{
"text": "Website",
"url": "https://web.archive.org/web/20011101075859/http://www.cs.cornell.edu/home/llee/emnlp.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2001/"
},
{
"text": "Program",
"url": "https://web.archive.org/web/20011128122922/http://www-csli.stanford.edu/~schuetze/finalprogram.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/20011128105606/http://www-csli.stanford.edu/~schuetze/emnlp-vlc2000.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-2000/"
},
{
"text": "Program",
"url": "https://web.archive.org/web/20001208024200/http://www.ee.ust.hk:80/~pascale/emnlpwvlc99_program.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/20001014101735/http://www.ee.ust.hk:80/~pascale/emnlpwvlc99-final.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-1999/"
},
{
"text": "Program",
"url": "https://web.archive.org/web/19990429022549/http://coling-acl98.iro.umontreal.ca/WVLC6_prog.en.html"
},
{
"text": "Registration",
"url": "https://web.archive.org/web/19991106060156/http://coling-acl98.iro.umontreal.ca/Fees.en.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/19991103110053/http://www.cs.jhu.edu/~yarowsky/wvlc6.html"
},
{
"text": "Program",
"url": "https://web.archive.org/web/19990225093521/http://www.cs.vassar.edu/~ide/papers.html"
},
{
"text": "Registration",
"url": "https://web.archive.org/web/19990504092315/http://www.cs.vassar.edu/~ide/registration.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/19990429050846/http://www.cs.vassar.edu/~ide/emnlp3.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-1998/"
},
{
"text": "Program",
"url": "https://web.archive.org/web/19970805000114/http://www.cs.cornell.edu/Info/People/cardie/emnlp2.html"
},
{
"text": "Registration",
"url": "https://web.archive.org/web/19970805000114/http://www.cs.cornell.edu/Info/People/cardie/emnlp2.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/19970805000114/http://www.cs.cornell.edu/Info/People/cardie/emnlp2.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/events/emnlp-1997/"
},
{
"text": "Program",
"url": "https://web.archive.org/web/19991104192207/http://www.lexis-nexis.com:80/WVLC-5/final.html"
},
{
"text": "Registration",
"url": "https://web.archive.org/web/19991010145622/http://www.lexis-nexis.com:80/WVLC-5/regform.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/19991010072858/http://www.lexis-nexis.com:80/WVLC-5/2ndpap.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/W/W97/#0100"
},
{
"text": "Program",
"url": "https://web.archive.org/web/19990218074412/http://www.ling.umu.se:80/WVLC-4/program.html"
},
{
"text": "Registration",
"url": "https://web.archive.org/web/19991014043712/http://www.ling.umu.se:80/WVLC-4/coling-reg.txt"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/19991014033008/http://www.ling.umu.se:80/WVLC-4/2ndcfp.html"
},
{
"text": "Proceedings",
"url": "http://www.aclweb.org/anthology/W/W96/#0100/"
},
{
"text": "Program",
"url": "https://web.archive.org/web/20010609141717/http://www.cis.upenn.edu:80/~yarowsky/Conf_on_Emp_Meth.html"
},
{
"text": "Proceedings",
"url": "http://www.aclweb.org/anthology/W/W96/#0200/"
},
{
"text": "Program & Registration",
"url": "https://web.archive.org/web/20010606230356/http://www.cis.upenn.edu:80/~yarowsky/wvlc3.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/20010609145326/http://www.cis.upenn.edu:80/~yarowsky/wvlc3_cfp.html"
},
{
"text": "Proceedings",
"url": "https://www.aclweb.org/anthology/W/W95/#0100"
},
{
"text": "Program",
"url": "https://web.archive.org/web/20010609143300/http://www.cis.upenn.edu:80/~yarowsky/eacl_sigdat_prog.html"
},
{
"text": "Registration",
"url": "https://web.archive.org/web/20010408030721/http://www.cis.upenn.edu:80/~yarowsky/eacl_sigdat_reg.html"
},
{
"text": "Call for papers",
"url": "https://web.archive.org/web/20010406122325/http://www.cis.upenn.edu:80/~yarowsky/eacl_sigdat_cfp.html"
},
{
"text": "Feed",
"url": "https://sigdat.org/feed.xml"
},
{
"text": "Jekyll",
"url": "https://jekyllrb.com"
},
{
"text": "Minimal Mistakes",
"url": "https://mademistakes.com/work/minimal-mistakes-jekyll-theme/"
}
],
"source_issues": [
"2024/2025 headings retain parenthetical EMNLP 2023; use leading year only for edition enumeration, not as repaired source text.",
"2026 heading lists a 2023 date; event dates remain untrusted here.",
"2016/2017 headings retain parenthetical EMNLP 2015.",
"2020 appears twice, one entry retaining 9th IJCNLP text; count one EMNLP year and do not create a new joint event from this typo.",
"2023 location disagrees with the actual EMNLP2023 official homepage (Singapore); do not import history-page locations."
],
"scope": "Year enumeration only, preserving joint edition headings and separate WVLC events. Dates/locations/parenthetical labels contain source conflicts and are not imported as metadata. No per-track/paper or negative completeness claim."
}
@@ -0,0 +1,70 @@
{
"source_url": "https://facctconference.org/",
"resolved_url": "https://facctconference.org/",
"http_status": 200,
"checked_at": "2026-11-08T11:37:54.104171+00:00",
"source_html_sha256": "dfe181a34da6ac39e456440e85014625c9a0d6295cf73a19fab5585abe34c81d",
"cutoff_year": 2026,
"expected_years": [
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 2018,
"source_label": "FAT*2018 New York",
"source_url": "https://facctconference.org/2018/index.html"
},
{
"year": 2019,
"source_label": "FAT*2019 Atlanta",
"source_url": "https://facctconference.org/2019/index.html"
},
{
"year": 2020,
"source_label": "FAT*2020 Barcelona",
"source_url": "https://facctconference.org/2020/index.html"
},
{
"year": 2021,
"source_label": "FAccT 2021 Online",
"source_url": "https://facctconference.org/2021/index.html"
},
{
"year": 2022,
"source_label": "Home",
"source_url": "https://facctconference.org/2022/index.html"
},
{
"year": 2023,
"source_label": "Home",
"source_url": "https://facctconference.org/2023/index.html"
},
{
"year": 2024,
"source_label": "Home",
"source_url": "https://facctconference.org/2024/index.html"
},
{
"year": 2025,
"source_label": "Home",
"source_url": "https://facctconference.org/2025/index.html"
},
{
"year": 2026,
"source_label": "Home",
"source_url": "https://facctconference.org/2026/index.html"
}
],
"scope": "Nine actual linked conference years, not annual interpolation. Preserve FAT* labels for 2018–2020 and FAccT from 2021. Earlier FATML workshops are not extra FAccT main conferences. Archival and non-archival acceptances, CRAFTs, tutorials and doctoral events require separate scope; no per-paper completeness or public rejection export claimed."
}
@@ -0,0 +1,128 @@
{
"checked_on": "2026-11-08",
"scope": "Four bounded2026trackchecks, no individualnegativeexport orDBwrite. Unknowndoesnotmeanprivateforeverorzerorecords.",
"checks": [
{
"venue": "CIKM",
"year": 2026,
"track": "full_research",
"status": "unknown",
"primary_url": "https://cikm2026.diag.uniroma1.it/full-research-papers/",
"checked_on": "2026-11-08",
"note": "官方Full Research与通用政策使用EasyChair、双盲、作者审稿义务及desk rejection规则;未确认会后逐篇拒稿元数据公开范围。各short/applied/resource/demo/industry轨道不自动继承相同公开范围。",
"evidence": [
{
"source_url": "https://cikm2026.diag.uniroma1.it/full-research-papers/",
"resolved_url": "https://cikm2026.diag.uniroma1.it/full-research-papers/",
"http_status": 200,
"checked_at": "2026-11-08T12:07:43.733817+00:00",
"source_sha256": "c3b6ae0e7160ab0b3d972537aecb0997d2ba7b0577b3b8d09f74d8f7e30a2fcb",
"source_html_sha256": "c3b6ae0e7160ab0b3d972537aecb0997d2ba7b0577b3b8d09f74d8f7e30a2fcb"
},
{
"source_url": "https://cikm2026.diag.uniroma1.it/policies-and-information/",
"resolved_url": "https://cikm2026.diag.uniroma1.it/policies-and-information/",
"http_status": 200,
"checked_at": "2026-11-08T12:06:35.159771+00:00",
"source_sha256": "0a89aad73fb2b95558c251e61fcb7507d350d71f85b0d0f4f6d8297e30743118",
"source_html_sha256": "0a89aad73fb2b95558c251e61fcb7507d350d71f85b0d0f4f6d8297e30743118"
}
]
},
{
"venue": "ICDM",
"year": 2026,
"track": "research",
"status": "unknown",
"primary_url": "https://icdm2026.neu.edu.cn/CallforResearchTrack/",
"checked_on": "2026-11-08",
"note": "官方Research使用CyberChair及triple-blind,超长稿件不送审;三盲包含评审之间与AC的身份隐藏,不能概括为普通双盲。既有预印本可保留不代表公开最终拒稿,实际会后负面元数据发布范围仍未确认。",
"evidence": [
{
"source_url": "https://icdm2026.neu.edu.cn/CallforResearchTrack/",
"resolved_url": "https://icdm2026.neu.edu.cn/CallforResearchTrack/",
"http_status": 200,
"checked_at": "2026-11-08T12:07:39.969872+00:00",
"source_sha256": "12803953314a3f4165108cf3f95d6d3c678d6d3a3dd9a24cdc28dabd6abda446",
"source_html_sha256": "12803953314a3f4165108cf3f95d6d3c678d6d3a3dd9a24cdc28dabd6abda446"
}
]
},
{
"venue": "SDM",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://www.siam.org/conferences-events/siam-conferences/sdm26/submissions/",
"checked_on": "2026-11-08",
"note": "官方说明三盲、OpenReview及desk rejection规则;核查时会议尚未举行。公开group配置的public_submissions/public_withdrawn_submissions/public_desk_rejected_submissions均false;一次根venueid匿名notes查询403,未获得逐篇记录。查询不等于完整拒稿出口检查,不能把403说成零条,未来会后公开范围仍unknown。",
"evidence": [
{
"source_url": "https://www.siam.org/conferences-events/siam-conferences/sdm26/submissions/",
"checked_at": "2026-11-08T12:10:20.249437+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_html_sha256": null,
"source_extract_sha256": "34abd19290f2b0539b28be04867c9bc5540266fd6cd77b2ce04481c027b4ef87",
"direct_fetch": {
"source_url": "https://www.siam.org/conferences-events/siam-conferences/sdm26/submissions/",
"error": "HTTP Error 403: Forbidden",
"checked_at": "2026-11-08T12:07:40.123155+00:00"
}
},
{
"source_url": "https://api2.openreview.net/groups?id=SIAM.org%2F2026%2FConference_on_Data_Mining",
"resolved_url": "https://api2.openreview.net/groups?id=SIAM.org%2F2026%2FConference_on_Data_Mining",
"http_status": 200,
"checked_at": "2026-11-08T12:07:42.385042+00:00",
"source_sha256": "8aecd0bc5cf2ae980bab011e0454d4307f1426b2779018a619e4459ec4dad724"
},
{
"source_url": "https://api2.openreview.net/notes?content.venueid=SIAM.org%2F2026%2FConference_on_Data_Mining&limit=1",
"error": "HTTP Error 403: Forbidden",
"checked_at": "2026-11-08T12:07:43.286510+00:00"
}
]
},
{
"venue": "ECML-PKDD",
"year": 2026,
"track": "applied_data_science",
"status": "unknown",
"primary_url": "https://ecmlpkdd.org/2026/submissions-ads-track/",
"checked_on": "2026-11-08",
"note": "官方ADS采用CMT、双盲、Springer LNCS,并说明不在轨道间重新分配稿件;鼓励公开代码数据与可复现性,不等于公开投稿/拒稿决定。Research、journal、demo、workshop等轨道另查,不能由ADS推断全会公开范围。",
"evidence": [
{
"source_url": "https://ecmlpkdd.org/2026/submissions-ads-track/",
"resolved_url": "https://ecmlpkdd.org/2026/submissions-ads-track/",
"http_status": 200,
"checked_at": "2026-11-08T12:07:42.127752+00:00",
"source_sha256": "84308422cd240bd2ca63f4a316cbd60507f4b1b4d2b8f474cbd131d18e77ead8",
"source_html_sha256": "84308422cd240bd2ca63f4a316cbd60507f4b1b4d2b8f474cbd131d18e77ead8"
}
]
}
],
"sdm2026_anonymous_access_check": {
"group_id": "SIAM.org/2026/Conference_on_Data_Mining",
"public_flags_at_check": {
"public_submissions": false,
"public_withdrawn_submissions": false,
"public_desk_rejected_submissions": false
},
"group_receipt": {
"source_url": "https://api2.openreview.net/groups?id=SIAM.org%2F2026%2FConference_on_Data_Mining",
"resolved_url": "https://api2.openreview.net/groups?id=SIAM.org%2F2026%2FConference_on_Data_Mining",
"http_status": 200,
"checked_at": "2026-11-08T12:07:42.385042+00:00",
"source_sha256": "8aecd0bc5cf2ae980bab011e0454d4307f1426b2779018a619e4459ec4dad724"
},
"notes_query_receipt": {
"source_url": "https://api2.openreview.net/notes?content.venueid=SIAM.org%2F2026%2FConference_on_Data_Mining&limit=1",
"error": "HTTP Error 403: Forbidden",
"checked_at": "2026-11-08T12:07:43.286510+00:00"
},
"query_scope": "Onecontent.venueid=rootgroup query, limit1; did not query specificRejected_Submissionvenueid or claimcompleteexport. Noauthnobypass.",
"interpretation": "Publicgroupconfigurationreadable; notesrequest403. Notzero, notproofallhistorical/futureSDMnegativepublicationpolicy."
}
}
@@ -0,0 +1,867 @@
{
"snapshot_at": "2026-11-08 16:34:40.741334+00:00",
"scope": "Official first-pass conference-year census vs current populated editions and real aliases. Missing year means no imported attempt in that year, not missing paper count or proof all other years complete. Includes announced/nonarchival exceptions below.",
"venues": [
{
"venue": "NeurIPS",
"expected_years": 40,
"observed_expected_years": 39,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"NeurIPS"
]
},
{
"venue": "ICML",
"expected_years": 43,
"observed_expected_years": 14,
"missing_years": [
1980,
1983,
1985,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012
],
"missing_count": 29,
"canonical_matches": [
"ICML"
]
},
{
"venue": "ICLR",
"expected_years": 14,
"observed_expected_years": 11,
"missing_years": [
2014,
2015,
2016
],
"missing_count": 3,
"canonical_matches": [
"ICLR"
]
},
{
"venue": "COLM",
"expected_years": 3,
"observed_expected_years": 3,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"COLM"
]
},
{
"venue": "COLT",
"expected_years": 39,
"observed_expected_years": 39,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"COLT"
]
},
{
"venue": "AISTATS",
"expected_years": 29,
"observed_expected_years": 25,
"missing_years": [
1985,
1989,
1991,
1993
],
"missing_count": 4,
"canonical_matches": [
"AISTATS"
]
},
{
"venue": "UAI",
"expected_years": 42,
"observed_expected_years": 42,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"UAI"
]
},
{
"venue": "CLeaR",
"expected_years": 5,
"observed_expected_years": 5,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"CLEAR"
]
},
{
"venue": "ACL",
"expected_years": 64,
"observed_expected_years": 48,
"missing_years": [
1963,
1964,
1965,
1966,
1967,
1968,
1969,
1970,
1971,
1972,
1973,
1974,
1975,
1976,
1977,
1978
],
"missing_count": 16,
"canonical_matches": [
"ACL",
"ACL+COLING",
"ACL+EACL"
]
},
{
"venue": "EMNLP",
"expected_years": 31,
"observed_expected_years": 31,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"CoNLL+EMNLP",
"EMNLP"
]
},
{
"venue": "NAACL",
"expected_years": 18,
"observed_expected_years": 18,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"NAACL"
]
},
{
"venue": "EACL",
"expected_years": 19,
"observed_expected_years": 19,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"ACL+EACL",
"EACL"
]
},
{
"venue": "COLING",
"expected_years": 31,
"observed_expected_years": 28,
"missing_years": [
1971,
1976,
1978
],
"missing_count": 3,
"canonical_matches": [
"ACL+COLING",
"COLING",
"COLING+LREC"
]
},
{
"venue": "CoNLL",
"expected_years": 30,
"observed_expected_years": 30,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"CoNLL",
"CoNLL+EMNLP"
]
},
{
"venue": "CVPR",
"expected_years": 39,
"observed_expected_years": 14,
"missing_years": [
1983,
1985,
1986,
1988,
1989,
1991,
1992,
1993,
1994,
1996,
1997,
1998,
1999,
2000,
2001,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012
],
"missing_count": 25,
"canonical_matches": [
"CVPR"
]
},
{
"venue": "ICCV",
"expected_years": 20,
"observed_expected_years": 7,
"missing_years": [
1987,
1988,
1990,
1993,
1995,
1998,
1999,
2001,
2003,
2005,
2007,
2009,
2011
],
"missing_count": 13,
"canonical_matches": [
"ICCV"
]
},
{
"venue": "ECCV",
"expected_years": 19,
"observed_expected_years": 4,
"missing_years": [
1990,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016,
2026
],
"missing_count": 15,
"canonical_matches": [
"ECCV"
]
},
{
"venue": "AAAI",
"expected_years": 40,
"observed_expected_years": 40,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"AAAI",
"AAAI+IAAI"
]
},
{
"venue": "IJCAI",
"expected_years": 35,
"observed_expected_years": 35,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"ECAI+IJCAI",
"IJCAI"
]
},
{
"venue": "ECAI",
"expected_years": 29,
"observed_expected_years": 27,
"missing_years": [
1974,
1980
],
"missing_count": 2,
"canonical_matches": [
"ECAI",
"ECAI+IJCAI"
]
},
{
"venue": "KDD",
"expected_years": 32,
"observed_expected_years": 32,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"KDD"
]
},
{
"venue": "SIGIR",
"expected_years": 50,
"observed_expected_years": 50,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"SIGIR"
]
},
{
"venue": "WWW",
"expected_years": 33,
"observed_expected_years": 27,
"missing_years": [
1994,
1996,
1997,
1998,
1999,
2000
],
"missing_count": 6,
"canonical_matches": [
"WWW"
]
},
{
"venue": "WSDM",
"expected_years": 19,
"observed_expected_years": 19,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"WSDM"
]
},
{
"venue": "RecSys",
"expected_years": 20,
"observed_expected_years": 19,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"RecSys"
]
},
{
"venue": "CIKM",
"expected_years": 35,
"observed_expected_years": 34,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"CIKM"
]
},
{
"venue": "ICDM",
"expected_years": 26,
"observed_expected_years": 25,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"ICDM"
]
},
{
"venue": "SDM",
"expected_years": 26,
"observed_expected_years": 25,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"SDM"
]
},
{
"venue": "ECML-PKDD",
"expected_years": 38,
"observed_expected_years": 33,
"missing_years": [
1986,
1987,
1988,
1989,
1991
],
"missing_count": 5,
"canonical_matches": [
"ECML",
"ECML-PKDD",
"PKDD"
]
},
{
"venue": "ICRA",
"expected_years": 43,
"observed_expected_years": 43,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"ICRA"
]
},
{
"venue": "IROS",
"expected_years": 39,
"observed_expected_years": 35,
"missing_years": [
1988,
1989,
1990,
2026
],
"missing_count": 4,
"canonical_matches": [
"IROS"
]
},
{
"venue": "RSS",
"expected_years": 22,
"observed_expected_years": 20,
"missing_years": [
2025,
2026
],
"missing_count": 2,
"canonical_matches": [
"RSS"
]
},
{
"venue": "CoRL",
"expected_years": 10,
"observed_expected_years": 9,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"CORL"
]
},
{
"venue": "ICAPS",
"expected_years": 37,
"observed_expected_years": 28,
"missing_years": [
1990,
1991,
1992,
1993,
1995,
1997,
1999,
2001,
2026
],
"missing_count": 9,
"canonical_matches": [
"AIPS",
"ICAPS"
]
},
{
"venue": "KR",
"expected_years": 23,
"observed_expected_years": 23,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"KR"
]
},
{
"venue": "AAMAS",
"expected_years": 25,
"observed_expected_years": 22,
"missing_years": [
2012,
2025,
2026
],
"missing_count": 3,
"canonical_matches": [
"AAMAS"
]
},
{
"venue": "ICASSP",
"expected_years": 51,
"observed_expected_years": 49,
"missing_years": [
1977,
2026
],
"missing_count": 2,
"canonical_matches": [
"ICASSP"
]
},
{
"venue": "INTERSPEECH",
"expected_years": 39,
"observed_expected_years": 39,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"ECST",
"EUROSPEECH",
"ICSLP",
"INTERSPEECH"
]
},
{
"venue": "ISMIR",
"expected_years": 27,
"observed_expected_years": 26,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"ISMIR"
]
},
{
"venue": "MICCAI",
"expected_years": 29,
"observed_expected_years": 29,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"MICCAI"
]
},
{
"venue": "FAccT",
"expected_years": 9,
"observed_expected_years": 9,
"missing_years": [],
"missing_count": 0,
"canonical_matches": [
"FAccT"
]
},
{
"venue": "MLSys",
"expected_years": 9,
"observed_expected_years": 8,
"missing_years": [
2018
],
"missing_count": 1,
"canonical_matches": [
"MLSys"
]
},
{
"venue": "MM",
"expected_years": 34,
"observed_expected_years": 33,
"missing_years": [
2026
],
"missing_count": 1,
"canonical_matches": [
"MM"
]
}
],
"expected_venue_years": 1266,
"missing_venue_years": 150,
"venues_with_missing_years": 25,
"known_nonpublication_exceptions": [
{
"venue": "NeurIPS",
"year": 2026,
"reason": "announced;not in proceedings index at census"
},
{
"venue": "CoRL",
"year": 2026,
"reason": "not in publisher proceedings index at census"
},
{
"venue": "MLSys",
"year": 2018,
"reason": "first non-archival SysML meeting; not a missing formal publication volume"
}
],
"historical_missing_years_excluding_nonarchival_2018": 135,
"historical_venues_with_missing_years": 16,
"historical_gaps": [
{
"venue": "ICML",
"years": [
1980,
1983,
1985,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012
]
},
{
"venue": "ICLR",
"years": [
2014,
2015,
2016
]
},
{
"venue": "AISTATS",
"years": [
1985,
1989,
1991,
1993
]
},
{
"venue": "ACL",
"years": [
1963,
1964,
1965,
1966,
1967,
1968,
1969,
1970,
1971,
1972,
1973,
1974,
1975,
1976,
1977,
1978
]
},
{
"venue": "COLING",
"years": [
1971,
1976,
1978
]
},
{
"venue": "CVPR",
"years": [
1983,
1985,
1986,
1988,
1989,
1991,
1992,
1993,
1994,
1996,
1997,
1998,
1999,
2000,
2001,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012
]
},
{
"venue": "ICCV",
"years": [
1987,
1988,
1990,
1993,
1995,
1998,
1999,
2001,
2003,
2005,
2007,
2009,
2011
]
},
{
"venue": "ECCV",
"years": [
1990,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016
]
},
{
"venue": "ECAI",
"years": [
1974,
1980
]
},
{
"venue": "WWW",
"years": [
1994,
1996,
1997,
1998,
1999,
2000
]
},
{
"venue": "ECML-PKDD",
"years": [
1986,
1987,
1988,
1989,
1991
]
},
{
"venue": "IROS",
"years": [
1988,
1989,
1990
]
},
{
"venue": "RSS",
"years": [
2025
]
},
{
"venue": "ICAPS",
"years": [
1990,
1991,
1992,
1993,
1995,
1997,
1999,
2001
]
},
{
"venue": "AAMAS",
"years": [
2012,
2025
]
},
{
"venue": "ICASSP",
"years": [
1977
]
}
],
"current_2026_gaps": 14
}
@@ -0,0 +1,58 @@
# 历史年度缺口的当前核对
生产只读快照:2026-11-08 16:34:40.741334 UTC(北京时间11月9日00:34),foundry_data/research。对比已核实的43份首轮官方会议年度清单,使用当前有投稿记录的edition及真实venue_aliases,不沿用旧固定快照的missing_years。
- 清单共1266个会议—年份位置,当前有150个位置尚无投稿记录,涉及25个目标会议。
- 其中2025年及以前136个;排除已明确非存档的SysML2018首届,剩**135个历史年度待补采或核实,涉及16个会议**。
- 另有14个2026年度待核实。已知NeurIPS2026和CoRL2026在首轮核查时尚未进入论文集索引,不能一律当已公开论文遗漏;其他年度也需逐个核实发布时间。
这些是“整年没有任何投稿记录”的数量,不是缺论文篇数,也不是完整性百分比。一个年份只有少数记录、只有公开拒稿或缺了某个track,仍会被计作“已有年度”;这些更细缺口及公开拒稿的逐年可获得性尚须继续核验。会议别名共享的联合届次不能当成两批独立论文,未见录用也不能推断拒稿。
| 会议 | 历史缺口年份数 |
| --- | ---: |
| ICML | 29 |
| CVPR | 25 |
| ACL | 16 |
| ECCV | 14 |
| ICCV | 13 |
| ICAPS | 8 |
| WWW | 6 |
| ECML-PKDD | 5 |
| AISTATS | 4 |
| ICLR、COLING、IROS | 各3 |
| ECAI、AAMAS | 各2 |
| RSS、ICASSP | 各1 |
[完整逐年结果](historical-gaps-2026-11-09.json) 保留43目标的官方预期、现有年份数、缺失年份与规范会议匹配。原始只读生产导出保存在 `/data/paper-index/collected/historical-gap-current-20261109-v1.json`。 导出SHA256 `580cdea6dd9869adafe9bc28fb75cf3854bb290ad65aa5a600d9bc368a528b93`。年度对照清单为 `docs/coverage/inventory-2026-11-08.json`;候选来源文件绑定的输入哈希与本目录缺口JSON逐字节一致。来源清单的年份和哈希沿用相应 `*-editions-2026-11-08.json`,不是本轮重新访问所有会议网站;2026发布状态需要后续更新。
## 候选来源与下一步
另一次只读目录核查在现有、已校验的DBLP快照中,为135个历史年度中的**85个**匹配到初步候选论文集,另**50个**尚未按本轮规则匹配到,需要继续识别目录键或寻找官方来源。未匹配不等于会议没举办、未出版或没有公开来源。
[候选卷清单](historical-source-candidates-2026-11-09.json) 保留卷key、标题、出版年份、原始bibliographic counts和出版者链接。初筛使用目标family映射内的四位卷key年份或卷标题唯一显式年份,再按具体会议身份复核;两位键、出版年份与会议年份差异、前身系列及其他目录命名可能漏匹配。原始计数可能含workshop、前言、索引或多个卷,**不能当可直接导入的录用论文数量**。
后续[来源范围复核](historical-source-scope-2026-11-09.md)排除了4个误归ACL的COLING卷,因此候选年度由89修正为85、未匹配年度由46增至50。原卷及排除理由保留在JSON中;135个历史年度缺口不因此改变。ACL1963–1978与COLING1971/1976/1978在当前Anthology目录未列出,继续记为来源待核实,不能一律称作已公开但漏采的论文集。
优先核查已有候选卷较集中的CVPR22年、ICCV12年、ECCV14年和ICML25年。其中ICML早期workshop名称可能属于官方主系列前身,也可能是附属workshop,须对照官方届次证据逐卷区分,不能靠标题包含workshop一刀切。所有候选须经过范围、稳定标识、重复/冲突、原始字段和覆盖预检;这一步没有导入候选卷。
## 复核方法
只读获取当前有记录的edition,不连接papers大文本或标签表:
```sql
WITH counts AS (
SELECT edition_id,count(*) AS submissions
FROM submissions GROUP BY edition_id
)
SELECT e.id,e.venue_id,v.acronym,e.year,e.track,e.event_key,counts.submissions
FROM editions e JOIN venues v ON v.id=e.venue_id
JOIN counts ON counts.edition_id=e.id ORDER BY e.id;
SELECT venue_id,alias FROM venue_aliases ORDER BY venue_id,alias;
```
逐目标取规范会议名或别名相等的edition年份集合,与该目标edition_census.expected_years做集合差;再把2026与明确非存档的SysML2018单列。保留原始导出与校验哈希,不把每个matched year误当逐篇/逐track完整。
与本清单同一阶段的WWW补采只补1995年现有poster轨道,不新增缺失年度,所以即使其15条增量已验收,135这个年度计数也不会随之下降。早期1994年的50条正式展示候选、307条混合节目候选共357条仍需核实;其中并非每条都是论文。
本清单用于明确第14步剩余范围,不代表第14步完成,也不替代所有导入结束后的第16步全库去重、摘要、约束和实际查询验收。
@@ -0,0 +1,33 @@
# ICML 与 IROS 早期主系列的来源范围
本轮修正采集阶段的届次识别,不修改任何现有生产投稿轨道或历史。正式主系列曾以Workshop命名,不等于附属workshop;也不能反过来把所有旧workshop升为主会。
## 已核实的精确范围
| 会议 | 论文集键 | 依据与行为 |
| --- | --- | --- |
| ICML | `conf/icml/1988`、`1989`、`1990`、`1991`、`1992` | [官方历史](https://icml.cc/Conferences/2008/past_icmls.shtml.html)将其列为第5–9届,年份与举办地对应固定目录中的完整标题。1989/1991/1992的Workshop名称不再导致主系列被默认排除;1988/1990保留main并增加来源范围证据 |
| IROS | `conf/iros/1988`、`1989`、`1990` | [IEEE RAS官方历届目录](https://www.ieee-ras.org/conferences-workshops/financially-co-sponsored/iros/iros-past-and-future-venues/)列出三届与论文集链接,地点及日期对应固定目录标题;这些是IROS主系列 |
规则同时要求family、booktitle基础别名(ML或IROS)、空轨道后缀、完整精确论文集键、匹配的事件年份及固定完整标题。仍执行原有书目年份核查:与事件年不同且标题无明确事件年时拒绝推断。ML91原始标题没有四位年份,使用精确1991卷键、完整标题、逐篇书目年和官方第8届记录,不从两位标题代码猜世纪。
`1991w`/`1988w`等卷键、booktitle中的Workshops后缀、不同届次/地点/完整标题、未列入的年份均不会获得上述主系列豁免。AISTATS/COLT既有精确规则保留;真正的附属workshop仍受默认不采集workshop的边界约束。
## 原始字段、决定与后续导入
采集器仍保存原始proceedings标题(包括Workshop)、书目年、原始作者名、完整来源书目字段及稳定标识;新增 `track_scope_note` 与官方 `track_scope_evidence_url`。接受状态仍只源自该论文的inproceedings书目证据;不从历史目录生成占位论文或拒稿,也不重新导入已经存在的记录。
新规则的输出必须重新做原始来源/标题/作者/稳定标识与现有库冲突预检,再按增量导入。此前被隔离的ICML1988/1990记录不能仅凭代码规则而直接解除全部冲突。当前正在运行的历史批次使用原固定版本和文件,不能在运行中替换其源码或输入。
## 验证与证据
新增回归覆盖:ICML三届Workshop名称、IROS最初三届、ICML原Conference名称的两届、错误卷键/后缀/标题/未知年份,以及归一化记录经过原生文件导入后保留轨道证据。构建与测试仅在已授权的ces-control远程runner执行,本机仅做语法和文本/JSON一致性检查;结果以相应commit的CI回执为准。
官方HTML在工作证据目录 `paper-index/historical-primary-series-evidence-v1/`,附响应状态、字节数、时间与SHA256;仅取元数据网页,没有下载论文全文。
| 来源 | UTC采样时间 | HTTP | 字节数 | SHA256 |
| --- | --- | ---: | ---: | --- |
| [icml-history](https://icml.cc/Conferences/2008/past_icmls.shtml.html) | 2026-11-08T18:36:43.043135+00:00 | 200 | 11993 | `80cce886fe985551339a52b13c4077acf827e8fcc01555f854dc24077bdebdf0` |
| [iros-history](https://www.ieee-ras.org/conferences-workshops/financially-co-sponsored/iros/iros-past-and-future-venues/) | 2026-11-08T18:36:45.687171+00:00 | 200 | 466059 | `fdb4594621e68567e1099f5c88aae53de835b7b8146025148c3b1968df990697` |
本次不关闭历史年度缺口,也不替代全部导入后的全库去重、来源/年度/track覆盖、摘要和实际查询验收。
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,32 @@
# 早期 NLP 来源范围复核
核查时间:2026-11-08 18:27 UTC(北京时间11月9日)。本轮只修正来源候选和记录可获得性,没有操作生产数据库。
## 跨会议候选修正
先前候选清单将 `conf/coling/1965`、`1967`、`1969`、`1973` 匹配到 ACL 年会缺口。这四卷标题明确属于 COLING;[COLING 官方 Anthology 目录](https://aclanthology.org/venues/coling/)将它们列在 COLING 下。出版者写作 ACL 或目标映射包含 COLING,不足以证明某一年是 ACL 联办届次。
从 ACL 候选中排除上述四卷,原始卷字段和排除理由保留在[候选JSON](historical-source-candidates-2026-11-09.json)的 `excluded_cross_venue_candidates` 中。135个历史会议—年份位置仍未关闭;有初步候选来源的年度由89修正为85,尚未匹配的由46增至50。这些数字是目录初筛结果,不是已验证可导入的论文数。
联合届次仍按具体年度的明确会议身份处理,例如有官方联办证据的卷可以属于多个会议。不能一律排除跨family卷,也不能把联合卷重复导入为两批论文。
## 来源待核实的早期年份
| 范围 | 本轮官方来源观察 | 处理 |
| --- | --- | --- |
| ACL 1963–1978,共16年 | [ACL 官方 Anthology 目录](https://aclanthology.org/venues/acl/)目前从1979年列起 | 保留历史举办清单;逐年核实是否有可索引发表材料,不能据会议举办就断言漏采正式论文集,也不据目录缺失断言未出版 |
| COLING 1971、1976、1978 | [主办委员会历史](https://ufal.mff.cuni.cz/iccl-old)列出这三届;当前Anthology COLING目录未列出 | 来源缺口继续开放,需要主办方或出版者逐篇索引;不生成占位论文或录用/拒稿记录 |
这19个位置不能用其他会议的卷补齐,也不能因本轮未找到目录而删除。公开拒稿可获得性是独立核查,不从论文集或录用清单缺失推断。
## 证据与复核
三份原始HTML及 `receipts.json` 保存在工作证据目录 `paper-index/nlp-history-source-review-v1/`;结构化响应URL、时间、状态、字节数和完整SHA256收录于候选JSON的 `scope_review.evidence`。三次响应均为HTTP200;未获取论文全文。
| 官方来源 | 响应SHA256 |
| --- | --- |
| [acl-venue](https://aclanthology.org/venues/acl/) | `d04c188c0769e065f18ca9c0246f70086e2f7027ce3efe5ea0f2cdc641796b72` |
| [coling-venue](https://aclanthology.org/venues/coling/) | `8e7ec0a2915bfbccaa26b7a7558a9cf977c4aadc119794516ecebb826f61623f` |
| [iccl-history](https://ufal.mff.cuni.cz/iccl-old) | `c5286dc51236c90685d22543ff1f7b209adcb3eedb82a7b1ac2115c8dd0169fc` |
复核时先校验保存的原始响应哈希,再读取目录中的会议身份和年度。实时网页若已变化,应另存新响应和时间,不能把新内容套用旧哈希。本次不改最初会议年度清单或生产年度快照,不代表第14步覆盖验收或第16步最终全库审计完成。
@@ -0,0 +1,425 @@
{
"source_url": "https://www.icaps-conference.org/conference-series/",
"resolved_url": "https://www.icaps-conference.org/conference-series/",
"checked_at": "2026-11-08T10:03:01.651775+00:00",
"source_sha256": "de1d217660cb819825f58112cdaf774d0f68da6ed87e3e90a59055e52f152081",
"expected_years": [
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"name": "ICAPS",
"year": 2026,
"label": "ICAPS 2026",
"url": "https://www.icaps-conference.org/conference/icaps-2026/"
},
{
"name": "ICAPS",
"year": 2025,
"label": "ICAPS 2025",
"url": "https://www.icaps-conference.org/conference/icaps-2025/"
},
{
"name": "ICAPS",
"year": 2024,
"label": "ICAPS 2024",
"url": "https://www.icaps-conference.org/conference/icaps-2024/"
},
{
"name": "ICAPS",
"year": 2023,
"label": "ICAPS 2023",
"url": "https://www.icaps-conference.org/conference/icaps-2023/"
},
{
"name": "ICAPS",
"year": 2022,
"label": "ICAPS 2022",
"url": "https://www.icaps-conference.org/conference/icaps-2022/"
},
{
"name": "ICAPS",
"year": 2021,
"label": "ICAPS 2021",
"url": "https://www.icaps-conference.org/conference/icaps-2021/"
},
{
"name": "ICAPS",
"year": 2020,
"label": "ICAPS 2020",
"url": "https://www.icaps-conference.org/conference/icaps-2020/"
},
{
"name": "ICAPS",
"year": 2019,
"label": "ICAPS 2019",
"url": "https://www.icaps-conference.org/conference/icaps-2019/"
},
{
"name": "ICAPS",
"year": 2018,
"label": "ICAPS 2018",
"url": "https://www.icaps-conference.org/conference/icaps-2018/"
},
{
"name": "ICAPS",
"year": 2017,
"label": "ICAPS 2017",
"url": "https://www.icaps-conference.org/conference/icaps-2017/"
},
{
"name": "ICAPS",
"year": 2016,
"label": "ICAPS 2016",
"url": "https://www.icaps-conference.org/conference/icaps-2016/"
},
{
"name": "ICAPS",
"year": 2015,
"label": "ICAPS 2015",
"url": "https://www.icaps-conference.org/conference/icaps-2015/"
},
{
"name": "ICAPS",
"year": 2014,
"label": "ICAPS 2014",
"url": "https://www.icaps-conference.org/conference/icaps-2014/"
},
{
"name": "ICAPS",
"year": 2013,
"label": "ICAPS 2013",
"url": "https://www.icaps-conference.org/conference/icaps-2013/"
},
{
"name": "ICAPS",
"year": 2012,
"label": "ICAPS 2012",
"url": "https://www.icaps-conference.org/conference/icaps-2012/"
},
{
"name": "ICAPS",
"year": 2011,
"label": "ICAPS 2011",
"url": "https://www.icaps-conference.org/conference/icaps-2011/"
},
{
"name": "ICAPS",
"year": 2010,
"label": "ICAPS 2010",
"url": "https://www.icaps-conference.org/conference/icaps-2010/"
},
{
"name": "ICAPS",
"year": 2009,
"label": "ICAPS 2009",
"url": "https://www.icaps-conference.org/conference/icaps-2009/"
},
{
"name": "ICAPS",
"year": 2008,
"label": "ICAPS 2008",
"url": "https://www.icaps-conference.org/conference/icaps-2008/"
},
{
"name": "ICAPS",
"year": 2007,
"label": "ICAPS 2007",
"url": "https://www.icaps-conference.org/conference/icaps-2007/"
},
{
"name": "ICAPS",
"year": 2006,
"label": "ICAPS 2006",
"url": "https://www.icaps-conference.org/conference/icaps-2006/"
},
{
"name": "ICAPS",
"year": 2005,
"label": "ICAPS 2005",
"url": "https://www.icaps-conference.org/conference/icaps-2005/"
},
{
"name": "ICAPS",
"year": 2004,
"label": "ICAPS 2004",
"url": "https://www.icaps-conference.org/conference/icaps-2004/"
},
{
"name": "ICAPS",
"year": 2003,
"label": "ICAPS 2003",
"url": "https://www.icaps-conference.org/conference/icaps-2003/"
},
{
"name": "AIPS",
"year": 2002,
"label": "AIPS 2002",
"url": "https://www.icaps-conference.org/conference/aips-2002/"
},
{
"name": "ECP",
"year": 2001,
"label": "ECP 2001",
"url": "https://www.icaps-conference.org/conference/ecp-2001/"
},
{
"name": "AIPS",
"year": 2000,
"label": "AIPS 2000",
"url": "https://www.icaps-conference.org/conference/aips-2000/"
},
{
"name": "ECP",
"year": 1999,
"label": "ECP 1999",
"url": "https://www.icaps-conference.org/conference/ecp-1999/"
},
{
"name": "AIPS",
"year": 1998,
"label": "AIPS 1998",
"url": "https://www.icaps-conference.org/conference/aips-1998/"
},
{
"name": "ECP",
"year": 1997,
"label": "ECP 1997",
"url": "https://www.icaps-conference.org/conference/1890/"
},
{
"name": "AIPS",
"year": 1996,
"label": "AIPS 1996",
"url": "https://www.icaps-conference.org/conference/aips-1996/"
},
{
"name": "EWSP",
"year": 1995,
"label": "EWSP 1995",
"url": "https://www.icaps-conference.org/conference/ewsp-1995/"
},
{
"name": "AIPS",
"year": 1994,
"label": "AIPS 1994",
"url": "https://www.icaps-conference.org/conference/aips-1994/"
},
{
"name": "EWSP",
"year": 1993,
"label": "EWSP 1993",
"url": "https://www.icaps-conference.org/conference/ewsp-1993/"
},
{
"name": "AIPS",
"year": 1992,
"label": "AIPS 1992",
"url": "https://www.icaps-conference.org/conference/aips-1992/"
},
{
"name": "EWSP",
"year": 1991,
"label": "EWSP 1991",
"url": "https://www.icaps-conference.org/conference/ewsp-1991/"
},
{
"name": "EPS",
"year": 1990,
"label": "EPS 1990",
"url": "https://www.icaps-conference.org/conference/eps-1990/"
}
],
"primary_name_years": [
2026,
2025,
2024,
2023,
2022,
2021,
2020,
2019,
2018,
2017,
2016,
2015,
2014,
2013,
2012,
2011,
2010,
2009,
2008,
2007,
2006,
2005,
2004,
2003
],
"predecessor_editions": [
{
"name": "AIPS",
"year": 2002,
"label": "AIPS 2002",
"url": "https://www.icaps-conference.org/conference/aips-2002/"
},
{
"name": "ECP",
"year": 2001,
"label": "ECP 2001",
"url": "https://www.icaps-conference.org/conference/ecp-2001/"
},
{
"name": "AIPS",
"year": 2000,
"label": "AIPS 2000",
"url": "https://www.icaps-conference.org/conference/aips-2000/"
},
{
"name": "ECP",
"year": 1999,
"label": "ECP 1999",
"url": "https://www.icaps-conference.org/conference/ecp-1999/"
},
{
"name": "AIPS",
"year": 1998,
"label": "AIPS 1998",
"url": "https://www.icaps-conference.org/conference/aips-1998/"
},
{
"name": "ECP",
"year": 1997,
"label": "ECP 1997",
"url": "https://www.icaps-conference.org/conference/1890/"
},
{
"name": "AIPS",
"year": 1996,
"label": "AIPS 1996",
"url": "https://www.icaps-conference.org/conference/aips-1996/"
},
{
"name": "EWSP",
"year": 1995,
"label": "EWSP 1995",
"url": "https://www.icaps-conference.org/conference/ewsp-1995/"
},
{
"name": "AIPS",
"year": 1994,
"label": "AIPS 1994",
"url": "https://www.icaps-conference.org/conference/aips-1994/"
},
{
"name": "EWSP",
"year": 1993,
"label": "EWSP 1993",
"url": "https://www.icaps-conference.org/conference/ewsp-1993/"
},
{
"name": "AIPS",
"year": 1992,
"label": "AIPS 1992",
"url": "https://www.icaps-conference.org/conference/aips-1992/"
},
{
"name": "EWSP",
"year": 1991,
"label": "EWSP 1991",
"url": "https://www.icaps-conference.org/conference/ewsp-1991/"
},
{
"name": "EPS",
"year": 1990,
"label": "EPS 1990",
"url": "https://www.icaps-conference.org/conference/eps-1990/"
}
],
"collector_scope_gaps": [
{
"name": "ECP",
"year": 2001,
"label": "ECP 2001",
"url": "https://www.icaps-conference.org/conference/ecp-2001/"
},
{
"name": "ECP",
"year": 1999,
"label": "ECP 1999",
"url": "https://www.icaps-conference.org/conference/ecp-1999/"
},
{
"name": "ECP",
"year": 1997,
"label": "ECP 1997",
"url": "https://www.icaps-conference.org/conference/1890/"
},
{
"name": "EWSP",
"year": 1995,
"label": "EWSP 1995",
"url": "https://www.icaps-conference.org/conference/ewsp-1995/"
},
{
"name": "EWSP",
"year": 1993,
"label": "EWSP 1993",
"url": "https://www.icaps-conference.org/conference/ewsp-1993/"
},
{
"name": "EWSP",
"year": 1991,
"label": "EWSP 1991",
"url": "https://www.icaps-conference.org/conference/ewsp-1991/"
},
{
"name": "EPS",
"year": 1990,
"label": "EPS 1990",
"url": "https://www.icaps-conference.org/conference/eps-1990/"
}
],
"scope": "Official combined family directory:24ICAPSnamededitions2003–2026 plus13namedpredecessors1990–2002. Preserve AIPS/ECP/EWSP/EPS labels, never rename their paper metadata to ICAPS. Existing collector only maps aips/icaps; ECP-lineage entries identify extra scope/data gaps needing separate follow-up. Year census is not a claim those papers are imported.",
"cutoff_year": 2026,
"source_html_sha256": "de1d217660cb819825f58112cdaf774d0f68da6ed87e3e90a59055e52f152081"
}
@@ -0,0 +1,392 @@
{
"source_url": "https://signalprocessingsociety.org/sites/default/files/uploads/conferences_events/docs/ICASSP_Proposal_Guidelines.pdf",
"resolved_url": "https://signalprocessingsociety.org/sites/default/files/uploads/conferences_events/docs/ICASSP_Proposal_Guidelines.pdf",
"http_status": 200,
"checked_at": "2026-11-08T11:44:10.502686+00:00",
"source_sha256": "3974cf5173ef4cbb55a729a6b605538ef81a48ce637d3e3caaaafe021357af69",
"source_representation": "official_pdf_table_page_1_visually_verified",
"source_html_sha256": null,
"source_pdf_sha256": "3974cf5173ef4cbb55a729a6b605538ef81a48ce637d3e3caaaafe021357af69",
"text_extract_sha256": "6eb7ae7f242c188fbec1f6c4948c88498903ff37d4cfaeef445cbcc7e8870e6d",
"cutoff_year": 2026,
"expected_years": [
1976,
1977,
1978,
1979,
1980,
1981,
1982,
1983,
1984,
1985,
1986,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028,
2029
],
"editions": [
{
"year": 1976,
"source_label": "ICASSP 1976",
"location_label": "Philadelphia, PA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1977,
"source_label": "ICASSP 1977",
"location_label": "Hartford, CT, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1978,
"source_label": "ICASSP 1978",
"location_label": "Tulsa, OK, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1979,
"source_label": "ICASSP 1979",
"location_label": "Washington, DC, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1980,
"source_label": "ICASSP 1980",
"location_label": "Denver, CO, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1981,
"source_label": "ICASSP 1981",
"location_label": "Atlanta, GA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1982,
"source_label": "ICASSP 1982",
"location_label": "Paris, France",
"physical_event_status": "not_independently_classified"
},
{
"year": 1983,
"source_label": "ICASSP 1983",
"location_label": "Boston, MA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1984,
"source_label": "ICASSP 1984",
"location_label": "San Diego, CA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1985,
"source_label": "ICASSP 1985",
"location_label": "Tampa, FL, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1986,
"source_label": "ICASSP 1986",
"location_label": "Tokyo, Japan",
"physical_event_status": "not_independently_classified"
},
{
"year": 1987,
"source_label": "ICASSP 1987",
"location_label": "Dallas, TX, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1988,
"source_label": "ICASSP 1988",
"location_label": "New York, NY, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1989,
"source_label": "ICASSP 1989",
"location_label": "Glasgow, Scotland",
"physical_event_status": "not_independently_classified"
},
{
"year": 1990,
"source_label": "ICASSP 1990",
"location_label": "Albuquerque, NM, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1991,
"source_label": "ICASSP 1991",
"location_label": "Toronto, ON, Canada",
"physical_event_status": "not_independently_classified"
},
{
"year": 1992,
"source_label": "ICASSP 1992",
"location_label": "San Francisco, CA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1993,
"source_label": "ICASSP 1993",
"location_label": "Minneapolis, MN, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1994,
"source_label": "ICASSP 1994",
"location_label": "Adelaide, Australia",
"physical_event_status": "not_independently_classified"
},
{
"year": 1995,
"source_label": "ICASSP 1995",
"location_label": "Detroit, MI, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1996,
"source_label": "ICASSP 1996",
"location_label": "Atlanta, GA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1997,
"source_label": "ICASSP 1997",
"location_label": "Munich, Germany",
"physical_event_status": "not_independently_classified"
},
{
"year": 1998,
"source_label": "ICASSP 1998",
"location_label": "Seattle, WA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 1999,
"source_label": "ICASSP 1999",
"location_label": "Phoenix, AZ, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2000,
"source_label": "ICASSP 2000",
"location_label": "Istanbul, Turkey",
"physical_event_status": "not_independently_classified"
},
{
"year": 2001,
"source_label": "ICASSP 2001",
"location_label": "Salt Lake City, UT, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2002,
"source_label": "ICASSP 2002",
"location_label": "Orlando, FL, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2003,
"source_label": "ICASSP 2003",
"location_label": "Hong Kong (cancelled)",
"physical_event_status": "cancelled_as_marked_by_society"
},
{
"year": 2004,
"source_label": "ICASSP 2004",
"location_label": "Montreal, QC, Canada",
"physical_event_status": "not_independently_classified"
},
{
"year": 2005,
"source_label": "ICASSP 2005",
"location_label": "Philadelphia, PA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2006,
"source_label": "ICASSP 2006",
"location_label": "Toulouse, France",
"physical_event_status": "not_independently_classified"
},
{
"year": 2007,
"source_label": "ICASSP 2007",
"location_label": "Honolulu, HI, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2008,
"source_label": "ICASSP 2008",
"location_label": "Las Vegas, NV, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2009,
"source_label": "ICASSP 2009",
"location_label": "Taipei, Taiwan",
"physical_event_status": "not_independently_classified"
},
{
"year": 2010,
"source_label": "ICASSP 2010",
"location_label": "Dallas, TX, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2011,
"source_label": "ICASSP 2011",
"location_label": "Prague, Czech Republic",
"physical_event_status": "not_independently_classified"
},
{
"year": 2012,
"source_label": "ICASSP 2012",
"location_label": "Kyoto, Japan",
"physical_event_status": "not_independently_classified"
},
{
"year": 2013,
"source_label": "ICASSP 2013",
"location_label": "Vancouver, BC, Canada",
"physical_event_status": "not_independently_classified"
},
{
"year": 2014,
"source_label": "ICASSP 2014",
"location_label": "Florence, Italy",
"physical_event_status": "not_independently_classified"
},
{
"year": 2015,
"source_label": "ICASSP 2015",
"location_label": "Brisbane, Australia",
"physical_event_status": "not_independently_classified"
},
{
"year": 2016,
"source_label": "ICASSP 2016",
"location_label": "Shanghai, China",
"physical_event_status": "not_independently_classified"
},
{
"year": 2017,
"source_label": "ICASSP 2017",
"location_label": "New Orleans, LA, USA",
"physical_event_status": "not_independently_classified"
},
{
"year": 2018,
"source_label": "ICASSP 2018",
"location_label": "Calgary, AB, Canada",
"physical_event_status": "not_independently_classified"
},
{
"year": 2019,
"source_label": "ICASSP 2019",
"location_label": "Brighton, UK",
"physical_event_status": "not_independently_classified"
},
{
"year": 2020,
"source_label": "ICASSP 2020",
"location_label": "Virtual, Formerly, Barcelona, Spain",
"physical_event_status": "not_independently_classified"
},
{
"year": 2021,
"source_label": "ICASSP 2021",
"location_label": "Virtual, Formerly Toronto, ON, Canada",
"physical_event_status": "not_independently_classified"
},
{
"year": 2022,
"source_label": "ICASSP 2022",
"location_label": "Singapore, Singapore",
"physical_event_status": "not_independently_classified"
},
{
"year": 2023,
"source_label": "ICASSP 2023",
"location_label": "Kos Island, Greece",
"physical_event_status": "not_independently_classified"
},
{
"year": 2024,
"source_label": "ICASSP 2024",
"location_label": "Seoul, Korea",
"physical_event_status": "not_independently_classified"
},
{
"year": 2025,
"source_label": "ICASSP 2025",
"location_label": "Hyderabad, India",
"physical_event_status": "not_independently_classified"
},
{
"year": 2026,
"source_label": "ICASSP 2026",
"location_label": "Barcelona, Spain",
"physical_event_status": "not_independently_classified"
}
],
"publication_evidence_for_cancelled_event": {
"year": 2003,
"source": {
"source_url": "https://api.crossref.org/works/10.1109/ICASSP.2003.1201769",
"resolved_url": "https://api.crossref.org/works/10.1109/ICASSP.2003.1201769",
"checked_at": "2026-11-08T11:47:39.032775+00:00",
"source_sha256": "ccf299df282642b9c5f5a4ce4080fe02d1da1ad1612b1466e6e927e4779cb473"
},
"doi": "10.1109/icassp.2003.1201769",
"publisher": "IEEE",
"container_title": "2003 IEEE International Conference on Acoustics, Speech, and Signal Processing, 2003. Proceedings. (ICASSP '03).",
"interpretation": "Publisher-deposited DOI record confirms a proceedings article exists. Cancellation of the physical event does not justify deleting publications or classifying papers as rejected."
},
"scope": "51 explicitly listed edition years1976–2026, including 2003 marked cancelled; this is not a claim that51inpersonmeetingsoccurred. Future2027/2028/2029 excluded. Keep virtual2020/2021 labels.1977is an explicit official entry missing in the fixed DB snapshot, not interpolated. Multiple volumes, main/special sessions, OJSP journal papers and no-show publication status need independent per-paper checks."
}
+153
View File
@@ -0,0 +1,153 @@
{
"source_url": "https://www.thecvf.com/?page_id=100",
"resolved_url": "https://www.thecvf.com/?page_id=100",
"http_status": 200,
"checked_at": "2026-11-08T10:47:26.989521+00:00",
"source_sha256": "59b10db1ad99b8e47871bea22c5739310ce02294d6b34e5a0665bd7b32d1ed64",
"source_html_sha256": "59b10db1ad99b8e47871bea22c5739310ce02294d6b34e5a0665bd7b32d1ed64",
"cutoff_year": 2026,
"expected_years": [
1987,
1988,
1990,
1993,
1995,
1998,
1999,
2001,
2003,
2005,
2007,
2009,
2011,
2013,
2015,
2017,
2019,
2021,
2023,
2025
],
"excluded_future_years": [
2027,
2029,
2031
],
"editions": [
{
"year": 2025,
"location_label": "Honolulu",
"links": [
"https://openaccess.thecvf.com/ICCV2025"
]
},
{
"year": 2023,
"location_label": "Paris",
"links": [
"https://openaccess.thecvf.com/ICCV2023"
]
},
{
"year": 2021,
"location_label": "Virtual",
"links": [
"https://openaccess.thecvf.com/ICCV2021"
]
},
{
"year": 2019,
"location_label": "Seoul",
"links": [
"http://openaccess.thecvf.com/ICCV2019.py"
]
},
{
"year": 2017,
"location_label": "Venice",
"links": [
"http://openaccess.thecvf.com/ICCV2017.py"
]
},
{
"year": 2015,
"location_label": "Santiago",
"links": [
"http://openaccess.thecvf.com/ICCV2015.py"
]
},
{
"year": 2013,
"location_label": "Sydney",
"links": [
"http://openaccess.thecvf.com/ICCV2013.py"
]
},
{
"year": 2011,
"location_label": "Barcelona",
"links": []
},
{
"year": 2009,
"location_label": "Kyoto",
"links": []
},
{
"year": 2007,
"location_label": "Rio de Janeiro",
"links": []
},
{
"year": 2005,
"location_label": "Beijing",
"links": []
},
{
"year": 2003,
"location_label": "Nice",
"links": []
},
{
"year": 2001,
"location_label": "Vancouver",
"links": []
},
{
"year": 1999,
"location_label": "Kerkyra",
"links": []
},
{
"year": 1998,
"location_label": "Bombay",
"links": []
},
{
"year": 1995,
"location_label": "Boston",
"links": []
},
{
"year": 1993,
"location_label": "Berlin",
"links": []
},
{
"year": 1990,
"location_label": "Osaka",
"links": []
},
{
"year": 1988,
"location_label": "Tampa",
"links": []
},
{
"year": 1987,
"location_label": "London",
"links": []
}
],
"scope": "Explicit rows from CVFcomprehensivepast/futureconference table, filteredat2026; notfirst/lastyear interpolation. Multiple proceedingsvolumes,tracksandfuturebidsdonotcreateextraeventyears. Doesnotproveperpaper/track/abstract/publicnegativecompleteness. Includes actual1988/1990/1998 entries; do notforceallhistoricaleditionsintooddyears orcreate2026.2027/2029/2031futureentriesexcluded."
}
+179
View File
@@ -0,0 +1,179 @@
{
"source_url": "https://icdm.zhonghuapu.com/main.shtml",
"resolved_url": "https://icdm.zhonghuapu.com/main.shtml",
"http_status": 200,
"checked_at": "2026-11-08T12:06:31.460027+00:00",
"source_sha256": "2ee351a898264b028f5d166d63e288149e86f569fb3d2b1d6574af7d63033e0a",
"source_html_sha256": "2ee351a898264b028f5d166d63e288149e86f569fb3d2b1d6574af7d63033e0a",
"cutoff_year": 2026,
"expected_years": [
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028,
2029
],
"editions": [
{
"year": 2001,
"source_label": "ICDM 2001",
"dates_location_label": "(11/29-12/02) San Jose, California, USA"
},
{
"year": 2002,
"source_label": "ICDM 2002",
"dates_location_label": "(12/09-12/12) Maebashi City, Japan"
},
{
"year": 2003,
"source_label": "ICDM 2003",
"dates_location_label": "(11/19-11/22) Melbourne, Florida, USA"
},
{
"year": 2004,
"source_label": "ICDM 2004",
"dates_location_label": "(11/01-11/04) Brighton, United Kingdom"
},
{
"year": 2005,
"source_label": "ICDM 2005",
"dates_location_label": "(11/27-11/30) Houston, Texas, USA"
},
{
"year": 2006,
"source_label": "ICDM 2006",
"dates_location_label": "(12/18-12/22) Hong Kong, China"
},
{
"year": 2007,
"source_label": "ICDM 2007",
"dates_location_label": "(10/28-10/31) Omaha, Nebraska, USA"
},
{
"year": 2008,
"source_label": "ICDM 2008",
"dates_location_label": "(12/15-12/19) Pisa, Italy"
},
{
"year": 2009,
"source_label": "ICDM 2009",
"dates_location_label": "(12/06-12/09) Miami, Florida, USA"
},
{
"year": 2010,
"source_label": "ICDM 2010",
"dates_location_label": "(12/14-12/17) Sydney, Australia"
},
{
"year": 2011,
"source_label": "ICDM 2011",
"dates_location_label": "(12/11-12/14) Vancouver, Canada"
},
{
"year": 2012,
"source_label": "ICDM 2012",
"dates_location_label": "(12/10-12/13) Brussels, Belgium"
},
{
"year": 2013,
"source_label": "ICDM 2013",
"dates_location_label": "(12/07-12/10) Dallas, TX, USA"
},
{
"year": 2014,
"source_label": "ICDM 2014",
"dates_location_label": "(12/14-12/17) Shenzhen, China"
},
{
"year": 2015,
"source_label": "ICDM 2015",
"dates_location_label": "(11/14-11/17) Atlantic City, NJ, USA"
},
{
"year": 2016,
"source_label": "ICDM 2016",
"dates_location_label": "(12/12-12/15) Barcelona, Spain"
},
{
"year": 2017,
"source_label": "ICDM 2017",
"dates_location_label": "(11/18-11/21) New Orleans, LA, USA"
},
{
"year": 2018,
"source_label": "ICDM 2018",
"dates_location_label": "(11/17-11/20) Singapore"
},
{
"year": 2019,
"source_label": "ICDM 2019",
"dates_location_label": "(11/8-11/11) Beijing, China"
},
{
"year": 2020,
"source_label": "ICDM 2020",
"dates_location_label": "(11/17-11/20) Sorrento, Italy"
},
{
"year": 2021,
"source_label": "ICDM 2021",
"dates_location_label": "(12/7-12/10) Auckland, New Zealand"
},
{
"year": 2022,
"source_label": "ICDM 2022",
"dates_location_label": "(11/30-12/3) Orlando, USA"
},
{
"year": 2023,
"source_label": "ICDM 2023",
"dates_location_label": "(12/1-12/4) Shanghai, China"
},
{
"year": 2024,
"source_label": "ICDM 2024",
"dates_location_label": "(12/9-12/12) Abu Dhabi, UAE"
},
{
"year": 2025,
"source_label": "ICDM 2025",
"dates_location_label": "(11/12-11/15) Washington DC, USA"
},
{
"year": 2026,
"source_label": "ICDM 2026",
"dates_location_label": "(11/12-11/15) Shenyang, China"
}
],
"upcoming_within_cutoff": [
2026
],
"source_note": "Society series page intro still says2001to2022 but actual table extends to2029. Read actual rows; duplicate2025/2026rowsdeduplicated.",
"scope": "26explicitserieseditionyears2001–2026;2026eventNov12–15isupcomingasofNov8,notproofproceedingsready.2027/2028/2029futureyears excluded. Regularmain/workshops/Applied/BlueSky/PhD have separate scopes. No individualnegativeinferredfromaggregateortripleblindreview. Originaldates/locationlabelsretained,notverifiedinpersonformat."
}
@@ -0,0 +1,88 @@
{
"source_url": "https://iclr.cc/",
"checked_at": "2026-11-08T07:28:29.958753+00:00",
"source_html_sha256": "a88e5db514670fcb6bcf80b58a338520d4ab4007d8cb5b85f2eb513408d799d7",
"cutoff_year": 2026,
"expected_years": [
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"edition_links": [
{
"text": "2027",
"url": "https://iclr.cc/Conferences/2027/index.html"
},
{
"text": "2026",
"url": "https://iclr.cc/Conferences/2026"
},
{
"text": "2025",
"url": "https://iclr.cc/Conferences/2025"
},
{
"text": "2024",
"url": "https://iclr.cc/Conferences/2024"
},
{
"text": "2023",
"url": "https://iclr.cc/Conferences/2023"
},
{
"text": "2022",
"url": "https://iclr.cc/Conferences/2022"
},
{
"text": "2021",
"url": "https://iclr.cc/Conferences/2021"
},
{
"text": "2020",
"url": "https://iclr.cc/Conferences/2020"
},
{
"text": "2019",
"url": "https://iclr.cc/Conferences/2019"
},
{
"text": "2018",
"url": "https://iclr.cc/Conferences/2018"
},
{
"text": "2017",
"url": "https://iclr.cc/archive/www/2017.html"
},
{
"text": "2016",
"url": "https://iclr.cc/archive/www/2016.html"
},
{
"text": "2015",
"url": "https://iclr.cc/archive/www/2015.html"
},
{
"text": "2014",
"url": "https://iclr.cc/archive/2014/"
},
{
"text": "2013",
"url": "https://iclr.cc/archive/2013/"
}
],
"scope": "Official conference-year directory only. Link targets not all fetched; per-track/paper/negative availability and current database completeness unverified."
}
+380
View File
@@ -0,0 +1,380 @@
{
"source_url": "https://icml.cc/Conferences/2008/past_icmls.shtml.html",
"resolved_url": "https://icml.cc/Conferences/2008/past_icmls.shtml.html",
"http_status": 200,
"checked_at": "2026-11-08T11:55:52.568028+00:00",
"source_sha256": "80cce886fe985551339a52b13c4077acf827e8fcc01555f854dc24077bdebdf0",
"source_html_sha256": "80cce886fe985551339a52b13c4077acf827e8fcc01555f854dc24077bdebdf0",
"additional_primary_sources": [
{
"source_url": "https://icml.cc/",
"resolved_url": "https://icml.cc/",
"http_status": 200,
"checked_at": "2026-11-08T11:55:55.401775+00:00",
"source_sha256": "a67cbcc28b56efc9020801901459e5aed56efdbe9d6d2a87939a80cc4c715f20",
"source_html_sha256": "a67cbcc28b56efc9020801901459e5aed56efdbe9d6d2a87939a80cc4c715f20"
},
{
"source_url": "https://icml.cc/Conferences/2012/",
"resolved_url": "https://icml.cc/Conferences/2012/",
"http_status": 200,
"checked_at": "2026-11-08T11:55:52.550215+00:00",
"source_sha256": "c2069fa350aaa3635ef380107e3531b69e4e501e7970993c96b1a28f135f1698",
"source_html_sha256": "c2069fa350aaa3635ef380107e3531b69e4e501e7970993c96b1a28f135f1698"
},
{
"source_url": "https://icml.cc/Conferences/2026",
"resolved_url": "https://icml.cc/Conferences/2026",
"http_status": 200,
"checked_at": "2026-11-08T11:55:57.066327+00:00",
"source_sha256": "75c650c61dfebd68da3e2bc2feca0a74fce37b2a29a3d9c9aebef12d0c864e1c",
"source_html_sha256": "75c650c61dfebd68da3e2bc2feca0a74fce37b2a29a3d9c9aebef12d0c864e1c"
}
],
"cutoff_year": 2026,
"expected_years": [
1980,
1983,
1985,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 1980,
"ordinal": 1,
"location_label": "Pittsburgh, Pennsylvania, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1983,
"ordinal": 2,
"location_label": "Monticello, Illinois, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1985,
"ordinal": 3,
"location_label": "Skytop, Pennsylvania, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1987,
"ordinal": 4,
"location_label": "Irvine, California, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1988,
"ordinal": 5,
"location_label": "Ann Arbor, Michigan, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1989,
"ordinal": 6,
"location_label": "Ithaca, New York, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1990,
"ordinal": 7,
"location_label": "Austin, Texas, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1991,
"ordinal": 8,
"location_label": "Evanston, Illinois, USA",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1992,
"ordinal": 9,
"location_label": "Aberdeen, Scotland, UK",
"original_series_scope": "historical workshop predecessor",
"evidence_source": "official2008historictable"
},
{
"year": 1993,
"ordinal": 10,
"location_label": "Amherst, Massachusetts, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 1994,
"ordinal": 11,
"location_label": "New Brunswick, New Jersey, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 1995,
"ordinal": 12,
"location_label": "Tahoe City, California, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 1996,
"ordinal": 13,
"location_label": "Bari, Italy",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 1997,
"ordinal": 14,
"location_label": "Nashville, Tennessee, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 1998,
"ordinal": 15,
"location_label": "Madison, Wisconsin, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 1999,
"ordinal": 16,
"location_label": "Bled, Slovenia",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2000,
"ordinal": 17,
"location_label": "Stanford, California, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2001,
"ordinal": 18,
"location_label": "Williamstown, Massachusetts, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2002,
"ordinal": 19,
"location_label": "Sydney Australia",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2003,
"ordinal": 20,
"location_label": "Washington DC, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2004,
"ordinal": 21,
"location_label": "Banff, Alberta, Canada",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2005,
"ordinal": 22,
"location_label": "Bonn, Germany",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2006,
"ordinal": 23,
"location_label": "Pittsburgh, Pennsylvania, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2007,
"ordinal": 24,
"location_label": "Corvallis, Oregon, USA",
"original_series_scope": "ICML conference",
"evidence_source": "official2008historictable"
},
{
"year": 2008,
"source_label": "ICML 2008",
"source_url": "https://icml.cc/Conferences/2008",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2009,
"source_label": "ICML 2009",
"source_url": "https://icml.cc/Conferences/2009",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2010,
"source_label": "ICML 2010",
"source_url": "https://icml.cc/Conferences/2010",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2011,
"source_label": "ICML 2011",
"source_url": "https://icml.cc/Conferences/2011",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2012,
"source_label": "ICML 2012",
"source_url": "https://icml.cc/Conferences/2012",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2013,
"source_label": "ICML 2013",
"source_url": "https://icml.cc/Conferences/2013",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2014,
"source_label": "ICML 2014",
"source_url": "https://icml.cc/Conferences/2014",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2015,
"source_label": "ICML 2015",
"source_url": "https://icml.cc/Conferences/2015",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2016,
"source_label": "ICML 2016",
"source_url": "https://icml.cc/Conferences/2016",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2017,
"source_label": "ICML 2017",
"source_url": "https://icml.cc/Conferences/2017",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2018,
"source_label": "ICML 2018",
"source_url": "https://icml.cc/Conferences/2018",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2019,
"source_label": "ICML 2019",
"source_url": "https://icml.cc/Conferences/2019/",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2020,
"source_label": "ICML 2020",
"source_url": "https://icml.cc/Conferences/2020/",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2021,
"source_label": "ICML 2021",
"source_url": "https://icml.cc/Conferences/2021/index.html",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2022,
"source_label": "ICML 2022",
"source_url": "https://icml.cc/Conferences/2022",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2023,
"source_label": "ICML 2023",
"source_url": "https://icml.cc/Conferences/2023",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2024,
"source_label": "ICML 2024",
"source_url": "https://icml.cc/Conferences/2024",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2025,
"source_label": "ICML 2025",
"source_url": "https://icml.cc/Conferences/2025",
"evidence_source": "officialcurrentmatchingyearnavigation"
},
{
"year": 2026,
"source_label": "ICML 2026",
"source_url": "https://icml.cc/Conferences/2026",
"evidence_source": "officialcurrentmatchingyearnavigation"
}
],
"predecessor_years": [
1980,
1983,
1985,
1987,
1988,
1989,
1990,
1991,
1992
],
"previous_partial_evidence_file": "icml-partial-editions-2026-11-08.json",
"scope": "43explicitconference-familyyears:24historic2008tableentries1980–2007plus19matchingcurrentnavigationentries2008–2026, current2026is43rd. No1981/1982/1984/1986interpolation.2012officialhistorysaysconferencenamebegan1993;1980–1992workshoppredecessorsretainoriginalnames. Brokencurrent2007/2006/2004navlabelsarenotusedtoinferyears; historictableindependentlyprovidesthem. Yearcensuscompletiondoesnotmeanearlyproceedingsdownloadedorrecordsimported;2007–2012publisher/sourceandmain/position/workshop/negativegapsneedindividualchecks."
}
@@ -0,0 +1,139 @@
{
"source_url": "https://icml.cc/",
"checked_at": "2026-11-08T07:28:28.878319+00:00",
"source_html_sha256": "ce6233fdf4dc4af5edeae7756fb1ba2ee4652069634f196918e4ba25c4cd2f09",
"status": "partial_official_archive_unavailable",
"cutoff_year": 2026,
"expected_years": null,
"observed_navigation_labels": [
{
"text": "2027",
"url": "https://icml.cc/Conferences/2027"
},
{
"text": "2026",
"url": "https://icml.cc/Conferences/2026"
},
{
"text": "2025",
"url": "https://icml.cc/Conferences/2025"
},
{
"text": "2024",
"url": "https://icml.cc/Conferences/2024"
},
{
"text": "2023",
"url": "https://icml.cc/Conferences/2023"
},
{
"text": "2022",
"url": "https://icml.cc/Conferences/2022"
},
{
"text": "2021",
"url": "https://icml.cc/Conferences/2021/index.html"
},
{
"text": "2020",
"url": "https://icml.cc/Conferences/2020/"
},
{
"text": "2019",
"url": "https://icml.cc/Conferences/2019/"
},
{
"text": "2018",
"url": "https://icml.cc/Conferences/2018"
},
{
"text": "2017",
"url": "https://icml.cc/Conferences/2017"
},
{
"text": "2016",
"url": "https://icml.cc/Conferences/2016"
},
{
"text": "2015",
"url": "https://icml.cc/Conferences/2015"
},
{
"text": "2014",
"url": "https://icml.cc/Conferences/2014"
},
{
"text": "2013",
"url": "https://icml.cc/Conferences/2013"
},
{
"text": "2012",
"url": "https://icml.cc/Conferences/2012"
},
{
"text": "2011",
"url": "https://icml.cc/Conferences/2011"
},
{
"text": "2010",
"url": "https://icml.cc/Conferences/2010"
},
{
"text": "2009",
"url": "https://icml.cc/Conferences/2009"
},
{
"text": "2008",
"url": "https://icml.cc/Conferences/2008"
},
{
"text": "2007",
"url": "https://icml.cc/Conferences/2008"
},
{
"text": "2006",
"url": "https://icml.cc/Conferences/2007"
},
{
"text": "2005",
"url": "https://icml.cc/Conferences/2005"
},
{
"text": "2004",
"url": "https://icml.cc/Conferences/2005"
},
{
"text": "2002",
"url": "https://icml.cc/Conferences/2002"
},
{
"text": "1996",
"url": "https://icml.cc/Conferences/1996"
}
],
"conflicting_navigation_links": [
{
"text": "2007",
"url": "https://icml.cc/Conferences/2008"
},
{
"text": "2006",
"url": "https://icml.cc/Conferences/2007"
},
{
"text": "2004",
"url": "https://icml.cc/Conferences/2005"
}
],
"external_archive_attempt": {
"source_url": "https://www.machinelearning.org/archive.html",
"error": "URLError",
"status": null
},
"scope": "Root navigation is incomplete and some labels link to other years. Official external IMLS archive request failed. Do not interpolate a complete historical year set or count this as completed independent year census.",
"later_independent_census": {
"checked_on": "2026-11-08",
"evidence_file": "icml-editions-2026-11-08.json",
"note": "Earlier partial receipt kept unchanged as historical evidence. Independent2008table resolves missing earlyyears; oldbadnavigationnotreclassifiedasvalid."
}
}
+259
View File
@@ -0,0 +1,259 @@
{
"source_url": "https://www.ieee-ras.org/conferences-workshops/fully-sponsored/icra/icra-venues-and-archive/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "2b667b2945d1c228ace071b6318b9d2c33a3b0328565c0ca5c380936495fed6e",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://www.ieee-ras.org/conferences-workshops/fully-sponsored/icra/icra-venues-and-archive/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Official web-tool extraction archived separately from raw HTTP. Direct403 retained, not bypassed and not represented as HTML hash.",
"cutoff_year": 2026,
"expected_years": [
1984,
1985,
1986,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028,
2029,
2030
],
"editions": [
{
"year": 1984,
"source_label": "ICRA 1984 Atlanta (GA), USA"
},
{
"year": 1985,
"source_label": "ICRA 1985 St Louis (MO), USA"
},
{
"year": 1986,
"source_label": "ICRA 1986 San Francisco (CA), USA"
},
{
"year": 1987,
"source_label": "ICRA 1987 Raleigh (NC), USA"
},
{
"year": 1988,
"source_label": "ICRA 1988 Philadelphia (PA), USA"
},
{
"year": 1989,
"source_label": "ICRA 1989 Scottsdale (AZ), USA)"
},
{
"year": 1990,
"source_label": "ICRA 1990 Cincinnati (OH), USA"
},
{
"year": 1991,
"source_label": "ICRA 1991 Sacramento (CA), USA"
},
{
"year": 1992,
"source_label": "ICRA 1992 Nice, France"
},
{
"year": 1993,
"source_label": "ICRA 1993 Atlanta (GA), USA"
},
{
"year": 1994,
"source_label": "ICRA 1994 San Diego (CA), USA"
},
{
"year": 1995,
"source_label": "ICRA 1995 Nagoya, Japan"
},
{
"year": 1996,
"source_label": "ICRA 1996 Minneapolis (MN), USA"
},
{
"year": 1997,
"source_label": "ICRA 1997 Albuquerque (NM), USA"
},
{
"year": 1998,
"source_label": "ICRA 1998 Leuven, Belgium"
},
{
"year": 1999,
"source_label": "ICRA 1999 Detroit (MI), USA"
},
{
"year": 2000,
"source_label": "ICRA 2000 San Francisco (CA), USA"
},
{
"year": 2001,
"source_label": "ICRA 2001 Seoul, Korea"
},
{
"year": 2002,
"source_label": "ICRA 2002 Washington (DC), USA"
},
{
"year": 2003,
"source_label": "ICRA 2003 Taipei, China"
},
{
"year": 2004,
"source_label": "ICRA 2004 New Orleans (LA), USA"
},
{
"year": 2005,
"source_label": "ICRA 2005 Barcelona, Spain"
},
{
"year": 2006,
"source_label": "ICRA 2006 Orlando (FL), USA"
},
{
"year": 2007,
"source_label": "ICRA 2007 Rome, Italy"
},
{
"year": 2008,
"source_label": "ICRA 2008 Pasadena (CA), USA"
},
{
"year": 2009,
"source_label": "ICRA 2009 Kobe, Japan"
},
{
"year": 2010,
"source_label": "ICRA 2010 Anchorage (AK), USA"
},
{
"year": 2011,
"source_label": "ICRA 2011 Shanghai, China"
},
{
"year": 2012,
"source_label": "ICRA 2012 Minneapolis (MN), USA"
},
{
"year": 2013,
"source_label": "ICRA 2013 Karlsruhe, Germany"
},
{
"year": 2014,
"source_label": "ICRA 2014 Hong Kong, China"
},
{
"year": 2015,
"source_label": "ICRA 2015 Seattle (WA), USA"
},
{
"year": 2016,
"source_label": "ICRA 2016 Stockholm, Sweden"
},
{
"year": 2017,
"source_label": "ICRA 2017 Singapore"
},
{
"year": 2018,
"source_label": "ICRA 2018 Brisbane, Australia"
},
{
"year": 2019,
"source_label": "ICRA 2019 Montreal, Canada"
},
{
"year": 2020,
"source_label": "ICRA 2020 Paris, France (Virtual Event)"
},
{
"year": 2021,
"source_label": "ICRA 2021 Xi’an, China"
},
{
"year": 2022,
"source_label": "ICRA 2022 Philadelphia (PA), USA"
},
{
"year": 2023,
"source_label": "ICRA 2023 London, United Kingdom"
},
{
"year": 2024,
"source_label": "ICRA 2024 Yokohama, Japan"
},
{
"year": 2025,
"source_label": "ICRA 2025 Atlanta (GA), USA"
},
{
"year": 2026,
"source_label": "ICRA 2026 Vienna, Austria"
}
],
"scope": "Explicit society archive edition labels only; no interpolation from database years, dates or footer copyright. Multiple proceedings volumes, journal presentation options and workshops do not create additional main conference acceptances. Public negative-record completeness is not established.",
"additional_extract_receipts": [
{
"source_url": "https://www.ieee-ras.org/conferences-workshops/fully-sponsored/icra/icra-venues-and-archive/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_extract_sha256": "6bc312efe214aab58a77d9c6a89008a380b560b4fcbf43e1a1566c3e680a784e",
"scope": "Tail extraction confirms 1987/1986/1985/1984 after initial text output stopped at 1988."
}
],
"source_disagreements": [
{
"year": 2002,
"edition_heading": "ICRA 2002",
"date_line": "11-15 May 2022",
"interpretation": "Preserve internally inconsistent date text. Census uses explicit edition heading; no date rewrite."
},
{
"year": 2003,
"scope": "Official archive states delay from May to September due to SARS. Do not confuse with cancelled ICASSP2003 physical meeting."
}
]
}
@@ -0,0 +1,464 @@
{
"source_url": "https://ijcai.org/past_conferences/",
"resolved_url": "https://ijcai.org/past_conferences/",
"checked_at": "2026-11-08T08:40:42.121749+00:00",
"source_html_sha256": "e38587dc922778c008bd355851ac3df7993bdf894154fc1ec81836f8803ee398",
"cutoff_year": 2026,
"expected_years": [
1969,
1971,
1973,
1975,
1977,
1979,
1981,
1983,
1985,
1987,
1989,
1991,
1993,
1995,
1997,
1999,
2001,
2003,
2005,
2007,
2009,
2011,
2013,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 2026,
"label": "IJCAI-ECAI-26",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2026/"
}
]
},
{
"year": 2025,
"label": "IJCAI-25",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2025/"
}
]
},
{
"year": 2024,
"label": "IJCAI-24",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2024/"
}
]
},
{
"year": 2023,
"label": "IJCAI-23",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2023/"
}
]
},
{
"year": 2022,
"label": "IJCAI-ECAI-22",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2022/"
}
]
},
{
"year": 2021,
"label": "IJCAI-21",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2021/"
}
]
},
{
"year": 2020,
"label": "IJCAI-PRICAI-20",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2020/"
}
]
},
{
"year": 2019,
"label": "IJCAI-19",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2019/"
}
]
},
{
"year": 2018,
"label": "IJCAI-ECAI-18",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2018/"
}
]
},
{
"year": 2017,
"label": "IJCAI-17",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2017/"
}
]
},
{
"year": 2016,
"label": "IJCAI-16",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2016/"
}
]
},
{
"year": 2015,
"label": "IJCAI-15",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2015/"
}
]
},
{
"year": 2013,
"label": "IJCAI-13",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2013/"
}
]
},
{
"year": 2011,
"label": "IJCAI-11",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2011/"
}
]
},
{
"year": 2009,
"label": "IJCAI-09",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2009/"
}
]
},
{
"year": 2007,
"label": "IJCAI-07",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2007/"
}
]
},
{
"year": 2005,
"label": "IJCAI-05",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2005/"
}
]
},
{
"year": 2003,
"label": "IJCAI-03",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/2003/"
}
]
},
{
"year": 2001,
"label": "IJCAI-01",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/2001-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/2001-2/"
}
]
},
{
"year": 1999,
"label": "IJCAI-99",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1999-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1999-2/"
}
]
},
{
"year": 1997,
"label": "IJCAI-97",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1997-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1997-2/"
}
]
},
{
"year": 1995,
"label": "IJCAI-95",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1995-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1995-2/"
}
]
},
{
"year": 1993,
"label": "IJCAI-93",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1993-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1993-2/"
}
]
},
{
"year": 1991,
"label": "IJCAI-91",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1991-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1991-2/"
}
]
},
{
"year": 1989,
"label": "IJCAI-89",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1989-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1989-2/"
}
]
},
{
"year": 1987,
"label": "IJCAI-87",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1987-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1987-2/"
}
]
},
{
"year": 1985,
"label": "IJCAI-85",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1985-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1985-2/"
}
]
},
{
"year": 1983,
"label": "IJCAI-83",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1983-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1983-2/"
}
]
},
{
"year": 1981,
"label": "IJCAI-81",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1981-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1981-2/"
}
]
},
{
"year": 1979,
"label": "IJCAI-79",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1979-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1979-2/"
}
]
},
{
"year": 1977,
"label": "IJCAI-77",
"proceedings_links": [
{
"label": "Proceedings vol. 1",
"url": "https://ijcai.org/proceedings/1977-1/"
},
{
"label": "vol. 2",
"url": "https://ijcai.org/proceedings/1977-2/"
}
]
},
{
"year": 1975,
"label": "IJCAI-75",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/1975/"
}
]
},
{
"year": 1973,
"label": "IJCAI-73",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/1973/"
}
]
},
{
"year": 1971,
"label": "IJCAI-71",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/1971/"
}
]
},
{
"year": 1969,
"label": "IJCAI-69",
"proceedings_links": [
{
"label": "Proceedings",
"url": "https://ijcai.org/proceedings/1969/"
}
]
}
],
"policy_sources": [
{
"source_url": "https://2025.ijcai.org/call-for-papers-main-track/",
"resolved_url": "https://2025.ijcai.org/call-for-papers-main-track/",
"checked_at": "2026-11-08T08:40:52.887317+00:00",
"source_html_sha256": "bef26040fbee191248efb333e255d37bac39c1ea2e83de26f3008d284f696405"
},
{
"source_url": "https://2025.ijcai.org/reviewers-faq/",
"resolved_url": "https://2025.ijcai.org/reviewers-faq/",
"checked_at": "2026-11-08T08:41:05.695475+00:00",
"source_html_sha256": "0c15b7d0817fed9e15599d763d1435ab1d269a80915886b946ddafdb7498e111"
}
],
"scope": "Official enumerated conference years only. IJCAI-ECAI and IJCAI-PRICAI labels preserved, multivolume proceedings not counted as extra conferences. Does not establish per-paper/track completeness or public rejection availability."
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,40 @@
# IJCAI 2018、2022 逐条目录与 track 核查
2026-11-08 的只读生产快照中,edition 867(2018)和 871(2022)已正确属于 IJCAI/ECAI 联办会议,但整本论文集的所有投稿仍归在 `main`。本核查用官方目录的逐条 DOI 和分区定位问题,不修改生产数据。
| 年份 | 库中投稿 | 官方目录条目 | DOI 一对一对应 | 官方 Main track | 明确非 main | 当前目录缺项 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| 2018 | 870 | 870 | 870 | 709 | 161 | 0 |
| 2022 | 863 | 862 | 862 | 678 | 184 | 1 |
2018 官方分区为 Main track 709、Invited Speakers 3、Evolution of the contours of AI 6、Sister Conferences Best Papers 46、Survey track 16、Journal track 24、Early Career 19、Doctoral Consortium 17、Demos 30。
2022 官方分区为 Main Track 678、Special Track on AI, the Arts and Creativity 17、Special Track on AI for Good 33、Sister Conferences Best Papers 26、Survey Track 38、Journal Track 19、Early Career 8、Doctoral Consortium 25、Demo Track 18。Special Track 保留独立范围,不因同在正式论文集就合进 main。
## 862/863 差异已定位,不能删一条凑数
数据库独有条目:`conf/ijcai/Fang22`,题名 **Fixed-Budget Pure Exploration in Multinomial Logit Bandits**,DOI `10.24963/ijcai.2022/409`,页码 2951–2957。submission 333599、source_record 3578445、paper 3442268。
[当前官方总目录](https://ijcai.org/proceedings/2022/) 没有这一条,详情页 `/proceedings/2022/409` 本次 HTTP 404;但[官方论文文件](https://ijcai.org/proceedings/2022/0409.pdf) HEAD 返回 HTTP 200、application/pdf、153657 字节。浏览器读取的官方文件标题、作者 Boli Fang、IJCAI-22 页脚及首页 2951 与数据库对应,共七页。服务器没有下载保存 PDF 正文。
因此这是已定位的“当前 HTML 目录缺项但官方文件仍存在”的来源差异。没有证据证明撤稿、拒稿或数据库多收了一篇;保留原条目与发表证据。其当前官方 track 仍待明确,不根据相邻编号擅自归 main。
## 可复核证据
同目录 JSON 保存两份官方 HTML 的 URL、HTTP 状态、时间、字节数和 SHA256,以及生产只读导出 SHA256。服务器快照目录 `/data/paper-index/collected/ijcai-section-audit-v1/` 保留 HTML、来源回执、原始数据库来源导出和 409 HTTP 回执。
JSON 的 `years[].sections[].records` 每条为 `[submission_id, source_record_id, doi_suffix]`;DOI 为 `10.24963/ijcai.<year>/<doi_suffix>`。这些是现有稳定 ID,不是待插入的新投稿。全部 1732 个当前目录条目均对应唯一数据库来源 DOI,目录与数据库均无重复 DOI,官方目录独有条目为零。
标题仅作辅助核验:NFKC、casefold、去除 Unicode 非 word 字符后,2018 全部一致;2022 有一个拼写差异,DOI `/552` 的 DBLP 标题将 Revisiting、Re-Construction 拼为 Revisting、Re-Constrcution。原始标题均保留,未因此创建或合并论文。
## 未完成事项及修正边界
本次交付只完成来源核查和逐条分区映射,**345 条非 main 的生产分类尚未修正**,第 14 步尚未完成。下一步需要可复用的、带快照前提和验收报告的分区修正流程:
- 保持原 submission、source_record、paper、decision 的 ID 和证据内容;纠正 edition 归属,不制造“新一次投稿”。
- 同步处理依赖 edition 的 submission_identifiers、覆盖记录与联合会议别名;不能只移动 submissions 一个字段。
- 保存官方分区文字、URL、源文件 SHA 和原始分类,防止以后 DBLP 整卷刷新把精确 track 覆盖回 main。
- 对 409 保持单独待核实状态,不推断撤稿、拒稿或当前 main 归属。
- 修正后独立核验完整投稿/决定历史、稳定标识、各 track 行数及实际查询。研究方法类型不能由 track 自动生成。
这是 2018、2022 两届的完整目录差集和分区证据,不代表其他年份已逐条验收,也不替代所有导入结束后的全库去重。
@@ -0,0 +1,311 @@
{
"source_url": "https://www.isca-archive.org/",
"resolved_url": "https://www.isca-archive.org/",
"http_status": 200,
"checked_at": "2026-11-08T11:44:20.741970+00:00",
"source_sha256": "ea110bbf0d9ace8297de8bab32bb1293125f854221f263a661e24373de815802",
"source_html_sha256": "ea110bbf0d9ace8297de8bab32bb1293125f854221f263a661e24373de815802",
"additional_primary_sources": [
{
"source_url": "https://isca-speech.org/page-18313",
"resolved_url": "https://isca-speech.org/page-18313",
"http_status": 200,
"checked_at": "2026-11-08T11:44:11.781820+00:00",
"source_sha256": "6414722eb62caed905058445f17a54efc7ac83e96c91c9db2b3acd18db09c35c"
}
],
"cutoff_year": 2026,
"expected_years": [
1987,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 1987,
"source_label": "European Conference on Speech Technology",
"source_series": "ECST",
"source_url": "https://www.isca-archive.org/ecst_1987/index.html"
},
{
"year": 1989,
"source_label": "First European Conference on Speech Communication and Technology (Eurospeech 1989)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_1989/index.html"
},
{
"year": 1990,
"source_label": "First International Conference on Spoken Language Processing (ICSLP 1990)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_1990/index.html"
},
{
"year": 1991,
"source_label": "2nd European Conference on Speech Communication and Technology (Eurospeech 1991)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_1991/index.html"
},
{
"year": 1992,
"source_label": "2nd International Conference on Spoken Language Processing (ICSLP 1992)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_1992/index.html"
},
{
"year": 1993,
"source_label": "3rd European Conference on Speech Communication and Technology (Eurospeech 1993)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_1993/index.html"
},
{
"year": 1994,
"source_label": "3rd International Conference on Spoken Language Processing (ICSLP 1994)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_1994/index.html"
},
{
"year": 1995,
"source_label": "4th European Conference on Speech Communication and Technology (Eurospeech 1995)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_1995/index.html"
},
{
"year": 1996,
"source_label": "4th International Conference on Spoken Language Processing (ICSLP 1996)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_1996/index.html"
},
{
"year": 1997,
"source_label": "5th European Conference on Speech Communication and Technology (Eurospeech 1997)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_1997/index.html"
},
{
"year": 1998,
"source_label": "5th International Conference on Spoken Language Processing (ICSLP 1998)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_1998/index.html"
},
{
"year": 1999,
"source_label": "6th European Conference on Speech Communication and Technology",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_1999/index.html"
},
{
"year": 2000,
"source_label": "6th International Conference on Spoken Language Processing (ICSLP 2000)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_2000/index.html"
},
{
"year": 2001,
"source_label": "7th European Conference on Speech Communication and Technology (Eurospeech 2001)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_2001/index.html"
},
{
"year": 2002,
"source_label": "7th International Conference on Spoken Language Processing (ICSLP 2002)",
"source_series": "ICSLP",
"source_url": "https://www.isca-archive.org/icslp_2002/index.html"
},
{
"year": 2003,
"source_label": "8th European Conference on Speech Communication and Technology (Eurospeech 2003)",
"source_series": "Eurospeech",
"source_url": "https://www.isca-archive.org/eurospeech_2003/index.html"
},
{
"year": 2004,
"source_label": "Interspeech 2004",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2004/index.html"
},
{
"year": 2005,
"source_label": "Interspeech 2005",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2005/index.html"
},
{
"year": 2006,
"source_label": "Interspeech 2006",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2006/index.html"
},
{
"year": 2007,
"source_label": "Interspeech 2007",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2007/index.html"
},
{
"year": 2008,
"source_label": "Interspeech 2008",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2008/index.html"
},
{
"year": 2009,
"source_label": "Interspeech 2009",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2009/index.html"
},
{
"year": 2010,
"source_label": "Interspeech 2010",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2010/index.html"
},
{
"year": 2011,
"source_label": "Interspeech 2011",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2011/index.html"
},
{
"year": 2012,
"source_label": "Interspeech 2012",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2012/index.html"
},
{
"year": 2013,
"source_label": "Interspeech 2013",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2013/index.html"
},
{
"year": 2014,
"source_label": "Interspeech 2014",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2014/index.html"
},
{
"year": 2015,
"source_label": "Interspeech 2015",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2015/index.html"
},
{
"year": 2016,
"source_label": "Interspeech 2016",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2016/index.html"
},
{
"year": 2017,
"source_label": "Interspeech 2017",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2017/index.html"
},
{
"year": 2018,
"source_label": "Interspeech 2018",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2018/index.html"
},
{
"year": 2019,
"source_label": "Interspeech 2019",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2019/index.html"
},
{
"year": 2020,
"source_label": "Interspeech 2020",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2020/index.html"
},
{
"year": 2021,
"source_label": "Interspeech 2021",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2021/index.html"
},
{
"year": 2022,
"source_label": "Interspeech 2022",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2022/index.html"
},
{
"year": 2023,
"source_label": "Interspeech 2023",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2023/index.html"
},
{
"year": 2024,
"source_label": "Interspeech 2024",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2024/index.html"
},
{
"year": 2025,
"source_label": "Interspeech 2025",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2025/index.html"
},
{
"year": 2026,
"source_label": "Interspeech 2026",
"source_series": "Interspeech",
"source_url": "https://www.isca-archive.org/interspeech_2026/index.html"
}
],
"predecessor_years": [
1987,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999
],
"scope": "39 actual official archive entries for Interspeech/Eurospeech/ICSLP/ECST family1987–2026, no1988interpolation. ExactduplicateHTMLrowsdeduplicated. Society says common Interspeech label began2000, while archive retains original Eurospeech2001/2003 and ICSLP2000/2002 names; preserve these source labels. ECST1987 is an explicitly linked predecessor, not renamed a contemporaneous Interspeech conference. Other402archiveconferences and satelliteworkshops are excluded. Journal/conference/track/publicnegative completeness not proven."
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,45 @@
{
"checked_on": "2026-11-08",
"scope": "Two separate2026tracks; no public rejected export or database write. not_published concerns this official review release policy, not author self-disclosures or other tracks/years.",
"checks": [
{
"venue": "WWW",
"year": 2026,
"track": "research",
"status": "unknown",
"primary_url": "https://www2026.thewebconf.org/calls/research-tracks.html",
"checked_on": "2026-11-08",
"note": "官方Research使用EasyChair并实行双盲;当前可见政策未确认会后全体拒稿元数据范围。HTML注释中遗留的2025 OpenReview透明政策未作为2026证据;不能把产业轨道政策套用到研究轨道。",
"evidence": [
{
"source_url": "https://www2026.thewebconf.org/calls/research-tracks.html",
"resolved_url": "https://www2026.thewebconf.org/calls/research-tracks.html",
"http_status": 200,
"checked_at": "2026-11-08T11:57:16.998157+00:00",
"source_sha256": "52d6b3507eb3d45b75fb5c78b1949750a65cf8579a3664cf9a036018c2776385",
"source_html_sha256": "52d6b3507eb3d45b75fb5c78b1949750a65cf8579a3664cf9a036018c2776385"
}
]
},
{
"venue": "WWW",
"year": 2026,
"track": "industry",
"status": "not_published",
"primary_url": "https://www2026.thewebconf.org/calls/industry.html",
"checked_on": "2026-11-08",
"note": "官方Industry说明评审期间投稿不公开,最终仅录用稿件的原投稿、评审、meta-review和讨论公开于OpenReview;该范围不包括拒稿。产业稿件进入Main proceedings不意味着与Research为同一审稿轨道;有desk reject/withdraw规则不能生成逐篇决定。",
"evidence": [
{
"source_url": "https://www2026.thewebconf.org/calls/industry.html",
"resolved_url": "https://www2026.thewebconf.org/calls/industry.html",
"http_status": 200,
"checked_at": "2026-11-08T11:57:17.849915+00:00",
"source_sha256": "fdd4f96ef3102e1f47845f553a00419ea1f26e925ee756291fda0fb3479f0d46",
"source_html_sha256": "fdd4f96ef3102e1f47845f553a00419ea1f26e925ee756291fda0fb3479f0d46"
}
]
}
],
"html_comment_boundary": "Research page hidden2025transparencycomment excluded; rawHTML retained withSHA."
}
+216
View File
@@ -0,0 +1,216 @@
{
"source_url": "https://www.ieee-ras.org/conferences-workshops/financially-co-sponsored/iros/iros-past-and-future-venues/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "3671feaccc8fecbf4b0074438a667209d203a62bdab2a71d32800da163215bb8",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://www.ieee-ras.org/conferences-workshops/financially-co-sponsored/iros/iros-past-and-future-venues/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Official web-tool extraction archived separately from raw HTTP. Direct403 retained, not bypassed and not represented as HTML hash.",
"cutoff_year": 2026,
"expected_years": [
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 1988,
"source_label": "IROS 1988 Tokyo, Japan (Proceedings)"
},
{
"year": 1989,
"source_label": "IROS 1989 Ysukuba, Japan (Proceedings)"
},
{
"year": 1990,
"source_label": "IROS 1990 Ibaraki, Japan (Proceedings)"
},
{
"year": 1991,
"source_label": "IROS 1991 Osaka, Japan (Proceedings)"
},
{
"year": 1992,
"source_label": "IROS 1992 Raleigh (NC) USA (Proceedings)"
},
{
"year": 1993,
"source_label": "IROS 1993 Tokyo, Japan (Proceedings)"
},
{
"year": 1994,
"source_label": "IROS 1994 Munich, Germany (Proceedings)"
},
{
"year": 1995,
"source_label": "IROS 1995 Pittsburgh (PA) USA (Proceedings)"
},
{
"year": 1996,
"source_label": "IROS 1996 Osaka, Japan (Proceedings)"
},
{
"year": 1997,
"source_label": "IROS 1997 Grenoble, France (Proceedings)"
},
{
"year": 1998,
"source_label": "IROS 1998 Victoria, Canada (Proceedings)"
},
{
"year": 1999,
"source_label": "IROS 1999 Kyongju, Korea (Proceedings)"
},
{
"year": 2000,
"source_label": "IROS 2000 Takamatsu, Japan (Proceedings)"
},
{
"year": 2001,
"source_label": "IROS 2001 Maui (HI) USA (Proceedings)"
},
{
"year": 2002,
"source_label": "IROS 2002 (Archived) Lausanne, Switerland (Website, Proceedings)"
},
{
"year": 2003,
"source_label": "IROS 2003 Las Vegas (NV) USA (Proceedings)"
},
{
"year": 2004,
"source_label": "IROS 2004 Sendai, Japan (Proceedings)"
},
{
"year": 2005,
"source_label": "IROS 2005 (Archived) Edmonton, Canada (Website, Proceedings)"
},
{
"year": 2006,
"source_label": "IROS 2006 Beijing, China (Proceedings)"
},
{
"year": 2007,
"source_label": "IROS 2007 San Diego (CA) USA (Proceedings)"
},
{
"year": 2008,
"source_label": "IROS 2008 (Archived) Nice, France (Website, Proceedings)"
},
{
"year": 2009,
"source_label": "IROS 2009 St. Louis (MO) USA (Proceedings)"
},
{
"year": 2010,
"source_label": "IROS 2010 Taipei, Taiwan (Proceedings)"
},
{
"year": 2011,
"source_label": "IROS 2011 San Francisco (CA) USA (Website)"
},
{
"year": 2012,
"source_label": "IROS 2012 Vilamoura, Algarve, Portugal (Website)"
},
{
"year": 2013,
"source_label": "IROS 2013 Tokyo, Japan (Website)"
},
{
"year": 2014,
"source_label": "IROS 2014 Chicago (IL) USA (Website)"
},
{
"year": 2015,
"source_label": "IROS 2015 Hamburg, Germany (Website)"
},
{
"year": 2016,
"source_label": "IROS 2016 Daejon, South Korea (Website)"
},
{
"year": 2017,
"source_label": "IROS 2017 Vancouver, Canada (Website)"
},
{
"year": 2018,
"source_label": "IROS 2018 Madrid, Spain (Website)"
},
{
"year": 2019,
"source_label": "IROS 2019 Macau, China (Website)"
},
{
"year": 2020,
"source_label": "IROS 2020 Las Vegas (NV) USA (Website)"
},
{
"year": 2021,
"source_label": "IROS 2021 Prague, Czech Republic (Website)"
},
{
"year": 2022,
"source_label": "IROS 2022 Kyoto, Japan (Website)"
},
{
"year": 2023,
"source_label": "IROS 2023 Detroit (MI), USA (Website)"
},
{
"year": 2024,
"source_label": "IROS 2024 Abu Dhabi, UAE"
},
{
"year": 2025,
"source_label": "IROS 2025 Hangzhou, China (Website)"
},
{
"year": 2026,
"source_label": "IROS 2026"
}
],
"scope": "Explicit society archive edition labels only; no interpolation from database years, dates or footer copyright. Multiple proceedings volumes, journal presentation options and workshops do not create additional main conference acceptances. Public negative-record completeness is not established. Includes1988–1990 before the oldest observed DBLP year1991; future2027 excluded. Archived location is not proof an edition occurred in person."
}
@@ -0,0 +1,171 @@
{
"source_url": "https://ismir.net/conferences/",
"checked_at": "2026-11-08T11:39:24.623314+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "873bc007add9fad226a46fcd9a6720c66a8931f8f73c0f42ea903fe8fe0d35b7",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://ismir.net/conferences/",
"error": "HTTP Error 406: Not Acceptable"
},
"retrieval_note": "Anonymous direct HTTP returned 403/406. Archived official-page web-tool text is a separate representation, not a raw HTML response; no access-control bypass.",
"additional_primary_sources": [
{
"source_url": "https://ismir2026.ismir.net/",
"checked_at": "2026-11-08T11:39:24.623314+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "e661b42ec5216c1450e93993933f4ec5dd67bd0c132776428246d9861ec7d46a",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://ismir2026.ismir.net/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Anonymous direct HTTP returned 403/406. Archived official-page web-tool text is a separate representation, not a raw HTML response; no access-control bypass."
}
],
"cutoff_year": 2026,
"expected_years": [
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 2025,
"source_label": "ISMIR 2025"
},
{
"year": 2024,
"source_label": "ISMIR 2024"
},
{
"year": 2023,
"source_label": "ISMIR 2023"
},
{
"year": 2022,
"source_label": "ISMIR 2022"
},
{
"year": 2021,
"source_label": "ISMIR 2021"
},
{
"year": 2020,
"source_label": "ISMIR 2020"
},
{
"year": 2019,
"source_label": "ISMIR 2019"
},
{
"year": 2018,
"source_label": "ISMIR 2018"
},
{
"year": 2017,
"source_label": "ISMIR 2017"
},
{
"year": 2016,
"source_label": "ISMIR 2016"
},
{
"year": 2015,
"source_label": "ISMIR 2015"
},
{
"year": 2014,
"source_label": "ISMIR 2014"
},
{
"year": 2013,
"source_label": "ISMIR 2013"
},
{
"year": 2012,
"source_label": "ISMIR 2012"
},
{
"year": 2011,
"source_label": "ISMIR 2011"
},
{
"year": 2010,
"source_label": "ISMIR 2010"
},
{
"year": 2009,
"source_label": "ISMIR 2009"
},
{
"year": 2008,
"source_label": "ISMIR 2008"
},
{
"year": 2007,
"source_label": "ISMIR 2007"
},
{
"year": 2006,
"source_label": "ISMIR 2006"
},
{
"year": 2005,
"source_label": "ISMIR 2005"
},
{
"year": 2004,
"source_label": "ISMIR 2004"
},
{
"year": 2003,
"source_label": "ISMIR 2003"
},
{
"year": 2002,
"source_label": "ISMIR 2002"
},
{
"year": 2001,
"source_label": "ISMIR 2001"
},
{
"year": 2000,
"source_label": "ISMIR 2000"
},
{
"year": 2026,
"source_label": "ISMIR 2026",
"dates_label": "November 8-12, 2026",
"event_status_at_cutoff": "starts_on_cutoff_date",
"publication_status": "not_independently_verified"
}
],
"scope": "26 explicit past-conference headings plus current official 27th 2026 conference. The event starts on the cutoff date; this is not proof proceedings or all accepted metadata are available. Historical workshop/symposium naming must remain as source records state it; directory uses retrospective ISMIR labels. Main, late-breaking demos, tutorials and music submissions are separate. No negative decisions inferred from missing publication."
}
+193
View File
@@ -0,0 +1,193 @@
{
"source_url": "https://www.kdd.org/conferences",
"resolved_url": "https://www.kdd.org/conferences",
"http_status": 200,
"checked_at": "2026-11-08T11:54:42.709760+00:00",
"source_sha256": "dc2ac9180ea9261818dd4d95996a7a27d6918921b7419ded5a96e80e06f48966",
"source_html_sha256": "dc2ac9180ea9261818dd4d95996a7a27d6918921b7419ded5a96e80e06f48966",
"cutoff_year": 2026,
"expected_years": [
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 1995,
"source_label": "KDD-1995 Montreal, QC August 20-21"
},
{
"year": 1996,
"source_label": "KDD-1996 Portland, OR August 2-4"
},
{
"year": 1997,
"source_label": "KDD-1997 Newport Beach, CA August 14-17"
},
{
"year": 1998,
"source_label": "KDD-1998 New York, NY August 27-31"
},
{
"year": 1999,
"source_label": "KDD-1999 San Diego, CA August 15-18"
},
{
"year": 2000,
"source_label": "KDD-2000 Boston, MA August 20-23"
},
{
"year": 2001,
"source_label": "KDD-2001 San Francisco, CA August 26-29"
},
{
"year": 2002,
"source_label": "KDD-2002 Edmonton, AB July 23-26"
},
{
"year": 2003,
"source_label": "KDD-2003 Washington, D.C. August 24-27"
},
{
"year": 2004,
"source_label": "KDD-2004 Seattle, WA August 22-25"
},
{
"year": 2005,
"source_label": "KDD-2005 Chicago, IL August 21-24"
},
{
"year": 2006,
"source_label": "KDD-2006 Philadelphia, PA August 20-23"
},
{
"year": 2007,
"source_label": "KDD-2007 San Jose, CA August 12-15"
},
{
"year": 2008,
"source_label": "KDD-2008 Las Vegas, NV August 24-27"
},
{
"year": 2009,
"source_label": "KDD-2009 Paris, France June 28 - July 1"
},
{
"year": 2010,
"source_label": "KDD-2010 Washington, DC July 25-28"
},
{
"year": 2011,
"source_label": "KDD-2011 San Diego, CA August 21-24, 2011"
},
{
"year": 2012,
"source_label": "KDD-2012, August 12-16, 2012, Beijing, China"
},
{
"year": 2013,
"source_label": "KDD-2013, August 11-14, Chicago, IL"
},
{
"year": 2014,
"source_label": "KDD-2014: August 24-27, 2014 New York City"
},
{
"year": 2015,
"source_label": "KDD-2015: August 10-13, 2015, Sydney, Australia"
},
{
"year": 2016,
"source_label": "KDD-2016: August 13-17, 2016 San Francisco, California"
},
{
"year": 2017,
"source_label": "KDD-2017: August 13-17, 2017, Halfiax, Nova Scotia"
},
{
"year": 2018,
"source_label": "KDD-2018: August 19-23, 2018, London, UK"
},
{
"year": 2019,
"source_label": "KDD-2019: August 4 - 8, 2019, Anchorage, AK"
},
{
"year": 2020,
"source_label": "KDD-2020: August 23 - 27, 2020, San Diego, CA"
},
{
"year": 2021,
"source_label": "KDD-2021: August 14 - 19, 2021, Singapore/Virtual"
},
{
"year": 2022,
"source_label": "KDD-2022: August 14 - 18, 2022, Washington DC, USA"
},
{
"year": 2023,
"source_label": "KDD-2023: August 6 - 10, 2023, Long Beach, CA"
},
{
"year": 2024,
"source_label": "KDD-2024: August 25 - 29, 2024, Barcelona, Spain"
},
{
"year": 2025,
"source_label": "KDD-2025: August 3 - 7, 2025, Toronto, Canada"
},
{
"year": 2026,
"source_label": "Join us for KDD 2026"
}
],
"named_predecessor_workshops": [
{
"year": 1989,
"source_label": "KDD-1989 workshop Detroit, MI, August 20"
},
{
"year": 1991,
"source_label": "KDD-1991 workshop Anaheim, CA, July 14-15"
},
{
"year": 1993,
"source_label": "KDD-1993 workshop Washington, D.C., July 11-12"
},
{
"year": 1994,
"source_label": "KDD-1994 workshop Seattle, WA, July 31-Aug 1"
}
],
"scope": "32 explicit conference headings1995–2026. Four separately named KDD workshops1989/1991/1993/1994 retained outside main conference expected years; no interpolation for1990/1992. KDD Cup is not the main research conference; AppliedDataScience/Research/Datasets/Benchmarks require individual track proof. Existing2026policy check retained, not generalized across all history."
}
+236
View File
@@ -0,0 +1,236 @@
{
"source_url": "https://kr.org/js/data.js",
"resolved_url": "https://kr.org/js/data.js",
"http_status": 200,
"checked_at": "2026-11-08T10:48:32.435524+00:00",
"source_sha256": "8d048de6a0b4bafb6c76f00b7240c08daf7da0a8d15eb8c79ac7740e9fb5bd72",
"source_representation": "official_static_javascript_data_not_executed",
"source_html_sha256": null,
"source_js_sha256": "8d048de6a0b4bafb6c76f00b7240c08daf7da0a8d15eb8c79ac7740e9fb5bd72",
"additional_primary_sources": [
{
"source_url": "https://kr.org/conferences.html",
"resolved_url": "https://kr.org/conferences.html",
"http_status": 200,
"checked_at": "2026-11-08T10:47:24.636636+00:00",
"source_sha256": "14a2b89b522853179814f61daaf57bda964486dc1a735e057ae6ddda23098454"
}
],
"cutoff_year": 2026,
"expected_years": [
1989,
1991,
1992,
1994,
1996,
1998,
2000,
2002,
2004,
2006,
2008,
2010,
2012,
2014,
2016,
2018,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028
],
"editions": [
{
"year": 2026,
"status": "past",
"location": "Lisbon, Portugal",
"dates": "July 20–23, 2026",
"link": "https://kr.org/KR2026/",
"proceedingsUrl": "https://proceedings.kr.org/2026/"
},
{
"year": 2025,
"status": "past",
"location": "Melbourne, Australia",
"dates": "November 11–17, 2025",
"link": "https://kr.org/KR2025/",
"proceedingsUrl": "https://proceedings.kr.org/2025/"
},
{
"year": 2024,
"status": "past",
"location": "Hanoi, Vietnam",
"dates": "November 2–8, 2024",
"link": "https://kr.org/KR2024/",
"proceedingsUrl": "https://proceedings.kr.org/2024/"
},
{
"year": 2023,
"status": "past",
"location": "Rhodes, Greece",
"dates": "September 2–8, 2023",
"link": "https://kr.org/KR2023/",
"proceedingsUrl": "https://proceedings.kr.org/2023/"
},
{
"year": 2022,
"status": "past",
"location": "Haifa, Israel",
"dates": "July 31–August 5, 2022",
"link": "https://kr.org/KR2022/",
"proceedingsUrl": "https://proceedings.kr.org/2022/"
},
{
"year": 2021,
"status": "past",
"location": "Hanoi, Vietnam (virtual)",
"dates": "November 3–12, 2021",
"link": "https://kr.org/KR2021/",
"proceedingsUrl": "https://proceedings.kr.org/2021/"
},
{
"year": 2020,
"status": "past",
"location": "Rhodes, Greece (virtual)",
"dates": "September 12–18, 2020",
"link": "https://kr.org/KR2020/",
"proceedingsUrl": "https://proceedings.kr.org/2020/"
},
{
"year": 2018,
"status": "past",
"location": "Tempe, Arizona, USA",
"dates": "October 27–November 2, 2018",
"link": "https://kr.org/KR2018/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-16-2018/"
},
{
"year": 2016,
"status": "past",
"location": "Cape Town, South Africa",
"dates": "April 25–29, 2016",
"link": "https://kr.org/KR2016/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-15-2016/"
},
{
"year": 2014,
"status": "past",
"location": "Vienna, Austria",
"dates": "July 20–24, 2014",
"link": "https://kr.org/KR2014/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-14-2014/"
},
{
"year": 2012,
"status": "past",
"location": "Rome, Italy",
"dates": "June 10–14, 2012",
"link": "https://kr.org/KR2012/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-13-2012/"
},
{
"year": 2010,
"status": "past",
"location": "Toronto, Canada",
"dates": "May 9–13, 2010",
"link": "https://kr.org/KR2010/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-12-2010/"
},
{
"year": 2008,
"status": "past",
"location": "Sydney, Australia",
"dates": "September 16–19, 2008",
"link": "https://kr.org/KR2008/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-2008/"
},
{
"year": 2006,
"status": "past",
"location": "Lake District, UK",
"dates": "June 2–5, 2006",
"link": "https://kr.org/KR2006/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-2006/"
},
{
"year": 2004,
"status": "past",
"location": "Whistler, Canada",
"dates": "June 2–5, 2004",
"link": "https://kr.org/KR2004/",
"proceedingsUrl": "https://aaai.org/proceeding/kr-2004/"
},
{
"year": 2002,
"status": "past",
"location": "Toulouse, France",
"dates": "April 22–25, 2002",
"link": "https://kr.org/KR2002/",
"proceedingsUrl": "https://kr.org/proceedings/KR-2002-proceedings-scanned.pdf"
},
{
"year": 2000,
"status": "past",
"location": "Breckenridge, Colorado, USA",
"dates": "April 12–15, 2000",
"link": "https://kr.org/KR2000/",
"proceedingsUrl": "https://kr.org/proceedings/KR-2000-proceedings-scanned.pdf"
},
{
"year": 1998,
"status": "past",
"location": "Trento, Italy",
"dates": "June 2–5, 1998",
"link": "https://kr.org/KR1998/",
"proceedingsUrl": "https://kr.org/proceedings/KR-1998-proceedings-scanned.pdf"
},
{
"year": 1996,
"status": "past",
"location": "Cambridge, Massachusetts, USA",
"dates": "November 5–8, 1996",
"link": "https://kr.org/KR1996/",
"proceedingsUrl": "https://kr.org/proceedings/KR-1996-proceedings-scanned.pdf"
},
{
"year": 1994,
"status": "past",
"location": "Bonn, Germany",
"dates": "May 24–27, 1994",
"link": "https://dblp.org/db/conf/kr/kr94.html",
"proceedingsUrl": "https://kr.org/proceedings/KR-1994-proceedings-scanned.pdf"
},
{
"year": 1992,
"status": "past",
"location": "Cambridge, Massachusetts, USA",
"dates": "October 25–29, 1992",
"link": "https://dblp.org/db/conf/kr/kr92.html",
"proceedingsUrl": "https://kr.org/proceedings/KR-1992-proceedings-scanned.pdf"
},
{
"year": 1991,
"status": "past",
"location": "Cambridge, Massachusetts, USA",
"dates": "April 22–25, 1991",
"link": "https://dblp.org/db/conf/kr/kr91.html",
"proceedingsUrl": "https://kr.org/proceedings/KR-1991-proceedings-scanned.pdf"
},
{
"year": 1989,
"status": "past",
"location": "Toronto, Canada",
"dates": "May 15–18, 1989",
"link": "https://dblp.org/db/conf/kr/kr89.html",
"proceedingsUrl": "https://kr.org/proceedings/KR-1989-proceedings-scanned.pdf"
}
],
"scope": "23actualeventrows1989–2026 isolatedfromofficialCONFERENCESarray linkedbyconferencepage; staticstring/numberparsingonly,nocodeexecution. Excludesawards/otherarraysandannounced2027/2028. Datesandlinksretained; virtual2021keptdistinctfrominpersonlocation. ProceedingsPDFlinksaremetadataonly,nopaperPDFdownload; noindividualaccepted/negativeclaim."
}
@@ -0,0 +1,207 @@
{
"source_url": "https://miccai.org/past-conferences/",
"checked_at": "2026-11-08T11:39:24.623314+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "5f981fec02f6b3cc189833bea24e3214a91db4d9eaf27401e7d60070abebb6b2",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://miccai.org/past-conferences/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Anonymous direct HTTP returned 403/406. Archived official-page web-tool text is a separate representation, not a raw HTML response; no access-control bypass.",
"cutoff_year": 2026,
"expected_years": [
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 2026,
"source_label": "MICCAI 2026"
},
{
"year": 2025,
"source_label": "MICCAI 2025"
},
{
"year": 2024,
"source_label": "MICCAI 2024"
},
{
"year": 2023,
"source_label": "MICCAI 2023"
},
{
"year": 2022,
"source_label": "MICCAI 2022"
},
{
"year": 2021,
"source_label": "MICCAI 2021"
},
{
"year": 2020,
"source_label": "MICCAI 2020"
},
{
"year": 2019,
"source_label": "MICCAI 2019"
},
{
"year": 2018,
"source_label": "MICCAI 2018"
},
{
"year": 2017,
"source_label": "MICCAI 2017"
},
{
"year": 2016,
"source_label": "MICCAI 2016"
},
{
"year": 2015,
"source_label": "MICCAI 2015"
},
{
"year": 2014,
"source_label": "MICCAI 2014"
},
{
"year": 2013,
"source_label": "MICCAI 2013"
},
{
"year": 2012,
"source_label": "MICCAI 2012"
},
{
"year": 2011,
"source_label": "MICCAI 2011"
},
{
"year": 2010,
"source_label": "MICCAI 2010"
},
{
"year": 2009,
"source_label": "MICCAI 2009"
},
{
"year": 2008,
"source_label": "MICCAI 2008"
},
{
"year": 2007,
"source_label": "MICCAI 2007"
},
{
"year": 2006,
"source_label": "MICCAI 2006"
},
{
"year": 2005,
"source_label": "MICCAI 2005"
},
{
"year": 2004,
"source_label": "MICCAI 2004"
},
{
"year": 2003,
"source_label": "MICCAI 2003"
},
{
"year": 2002,
"source_label": "MICCAI 2002"
},
{
"year": 2001,
"source_label": "MICCAI 2001"
},
{
"year": 2000,
"source_label": "MICCAI 2000"
},
{
"year": 1999,
"source_label": "MICCAI 99"
},
{
"year": 1998,
"source_label": "MICCAI 98"
}
],
"named_predecessor_events": [
{
"year": 1997,
"source_label": "CVRMed-MRCAS 97"
},
{
"year": 1996,
"source_label": "VBC 96"
},
{
"year": 1995,
"source_label": "MRCAS 95"
},
{
"year": 1995,
"source_label": "CVRMed 95"
},
{
"year": 1994,
"source_label": "MRCAS 94"
},
{
"year": 1994,
"source_label": "VBC 94"
},
{
"year": 1992,
"source_label": "VBC 92"
},
{
"year": 1990,
"source_label": "VBC 90"
}
],
"source_disagreements": [
{
"year": 2026,
"current_society_history": "Sept 27-Oct 1; Strasbourg, France",
"older_sponsorship_material": "Oct 4-8; Abu Dhabi, United Arab Emirates",
"older_source_url": "https://conferences.miccai.org/2026/files/downloads/MICCAI2026-sponsorship-prospectus.pdf",
"interpretation": "Retain primary-source conflict; event year is agreed. No database date/location rewrite or assumption the old prospectus describes the final venue."
}
],
"scope": "29 explicit MICCAI rows including two-digit 98/99 labels decoded as 1998/1999. Eight separately named predecessor events are preserved outside MICCAI expected years: same-year CVRMed/MRCAS/VBC events are not renamed or collapsed into MICCAI. Society incorporation in 2004 is not the conference start. Multiple LNCS volumes and workshops do not create extra main events; accepted reviews do not prove public rejection export."
}
@@ -0,0 +1,104 @@
{
"source_url": "https://mlsys.org/",
"checked_at": "2026-11-08T06:51:13.127546+00:00",
"source_html_sha256": "2309b47c1294e42a3b5eee4ffe52a192aabc25fcd642710750f4ade6928cdf7d",
"cutoff_year": 2026,
"expected_years": [
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"year_links": {
"2018": [
"https://mlsys.org/Conferences/2018"
],
"2019": [
"https://mlsys.org/Conferences/2019/"
],
"2020": [
"https://mlsys.org/Conferences/2020"
],
"2021": [
"https://mlsys.org/Conferences/2021"
],
"2022": [
"https://mlsys.org/Conferences/2022"
],
"2023": [
"https://mlsys.org/Conferences/2023"
],
"2024": [
"https://mlsys.org/Conferences/2024"
],
"2025": [
"https://mlsys.org/Conferences/2025"
],
"2026": [
"https://mlsys.org/Conferences/2026"
],
"2027": [
"https://mlsys.org/Conferences/2027/CallForResearchPapers",
"https://mlsys.org/Conferences/2027/Dates"
]
},
"proceedings_archive": {
"source_url": "https://proceedings.mlsys.org/",
"checked_at": "2026-11-08T06:51:09.375277+00:00",
"source_html_sha256": "3102f1921a5c120dd02749f3c7e31ec3d58c32e03da21c244469903f04f833ba",
"expected_proceedings_years": [
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"year_links": {
"2019": [
"https://proceedings.mlsys.org/paper_files/paper/2019"
],
"2020": [
"https://proceedings.mlsys.org/paper_files/paper/2020"
],
"2021": [
"https://proceedings.mlsys.org/paper_files/paper/2021"
],
"2022": [
"https://proceedings.mlsys.org/paper_files/paper/2022"
],
"2023": [
"https://proceedings.mlsys.org/paper_files/paper/2023"
],
"2024": [
"https://proceedings.mlsys.org/paper_files/paper/2024"
],
"2025": [
"https://proceedings.mlsys.org/paper_files/paper/2025"
],
"2026": [
"https://proceedings.mlsys.org/paper_files/paper/2026"
]
}
},
"predecessor_edition": {
"source_url": "https://mlsys.org/Conferences/2018/",
"checked_at": "2026-11-08T06:51:18.356899+00:00",
"source_html_sha256": "474b710e34c938d287f923c65b4bdc28ac3d61d6a97d14fde66db818e707673e",
"year": 2018,
"name": "SysML",
"publication_mode": "non_archival",
"note": "官方首届录用 oral/poster 非存档;允许近期已发表研究,后续可原样再投。不由 PDF 链接制造正式出版或重复录用;拒稿公开范围未核实。"
},
"scope": "Conference-year enumeration only; archival proceedings begin in 2019. Per-track/paper coverage and public negative availability require independent verification."
}
+165
View File
@@ -0,0 +1,165 @@
{
"source_url": "https://www.acmmm.org/",
"resolved_url": "https://www.acmmm.org/",
"checked_at": "2026-11-08T10:03:02.860428+00:00",
"source_sha256": "1b3428b0a898f66dc92a5bd517f882d06dada0164d805cabae627107cda05a47",
"expected_years": [
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028
],
"history_years": [
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015
],
"past_and_current_heading_years": [
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"research_track_statistic_year_labels": [
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"additional_primary_sources": [
{
"source_url": "https://www.sigmm.org/preservation/mm/",
"resolved_url": "https://www.sigmm.org/preservation/mm/",
"checked_at": "2026-11-08T10:03:03.844294+00:00",
"source_sha256": "711435f0d0c27e542342b92b0295bda95422b47b6e3dfa6be8b694a9b976f84e"
},
{
"source_url": "https://2026.acmmm.org/",
"resolved_url": "https://2026.acmmm.org/",
"checked_at": "2026-11-08T10:03:03.026686+00:00",
"source_sha256": "775794bad24dbbc8cabace5243485b51ff07789076cc7dbb4aa38d0615707020"
}
],
"announced_upcoming_events": [
{
"year": 2026,
"event_dates": "2026-11-10/2026-11-14",
"as_of": "2026-11-08",
"scope": "Not yet held; publication availability not independently inferred."
}
],
"broken_previous_editions_link": {
"url": "https://www.acmmm.org/ACMMM_pasteditions.html",
"observed_status": 404,
"interpretation": "Not absence evidence; SIGMMarchive and individually listed first-partyyearlabels used instead."
},
"policy_assets": [
{
"source_url": "https://www.acmmm.org/files/ACMMMDeskRej_2025.pdf",
"resolved_url": "https://www.acmmm.org/files/ACMMMDeskRej_2025.pdf",
"checked_at": "2026-11-08T10:03:04.577190+00:00",
"source_sha256": "649bb2309c4d18653a49b4fa4a4b5d9cc872e5a03e57c5342ecf4f169d17cf6d"
}
],
"policy_note": "Steering-committee website links a December2025approved desk-rejection PDF which retains proposal/alternative wording. Do not infer final sanction thresholds or actual per-paper decisions from that document, nor public rejection availability. First-party aggregate research-track submission/acceptance totals are not individual rejected-paper records.",
"scope": "34actualyearlabels through2026 from SIGMMhistory1993–2015, currenthomepagepast/currentheadings and separately listedresearch-trackstatistics2005–2025, checked against2026official34thconference announcement. No annual interpolation. Main/workshop/demo/other tracks remain independent; MM is not MMM or ICME.",
"cutoff_year": 2026,
"source_html_sha256": "1b3428b0a898f66dc92a5bd517f882d06dada0164d805cabae627107cda05a47",
"public_metadata_access_check": {
"official_group_url": "https://openreview.net/group?id=acmmm.org/ACMMM/2026/Conference",
"official_policy_url": "https://2026.acmmm.org/site/cfp-guidelines.html",
"checks": [
{
"url": "https://api2.openreview.net/groups?id=acmmm.org%2FACMMM%2F2026%2FConference",
"checked_at": "2026-11-08T10:08:54.026580+00:00",
"http_status": 200,
"response_sha256": "857dab80694ba7443cac711d9e567b427a1c43568c7d3b91e80aa7800e0db5f2",
"scope": "Only this anonymous public endpoint/query; not a rejection census or proof of absence."
},
{
"url": "https://api2.openreview.net/notes?content.venueid=acmmm.org%2FACMMM%2F2026%2FConference&limit=1",
"checked_at": "2026-11-08T10:08:57.480669+00:00",
"http_status": 403,
"response_sha256": "b8001134d8f50a8008037fd5a918a97e5479c019500404f741e6d13f6c8ddbfd",
"scope": "Only this anonymous public endpoint/query; not a rejection census or proof of absence."
}
],
"interpretation": "The public group endpoint returned200, while this anonymous venueid notes query returned403. This is an access limitation for the exact query, not zero records or evidence that rejected submissions are absent. CFP describes post-process public final reviews and applicable author responses, but does not establish that all rejected submissions are public. No access bypass or database write.",
"rejection_availability": "unknown"
}
}
@@ -0,0 +1,42 @@
{
"checked_on": "2026-11-08",
"scope": "One bounded main-track policy review; no per-paper rejection export and no database write. Existing MICCAI/FAccT checks remain unchanged.",
"checks": [
{
"venue": "ISMIR",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://ismir2026.ismir.net/authors/call-for-papers",
"checked_on": "2026-11-08",
"note": "官方CFP与作者指南说明双盲、CMT及可能desk rejection,但未确认会后全体拒稿元数据是否公开;匿名投稿及预印本规则不等于逐篇最终决定。late-breaking/demo、tutorial及music投稿另属轨道,不能混作主会拒稿。",
"evidence_file": "music-medical-fairness-policy-checks-2026-11-08.json",
"evidence": [
{
"source_url": "https://ismir2026.ismir.net/authors/call-for-papers",
"checked_at": "2026-11-08T11:39:24.623314+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "e1572ef05e361930fa8705b4d64bb8494d17793eb0bad42352f389dc87a4e8ae",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://ismir2026.ismir.net/authors/call-for-papers",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Anonymous direct HTTP returned 403/406. Archived official-page web-tool text is a separate representation, not a raw HTML response; no access-control bypass."
},
{
"source_url": "https://ismir2026.ismir.net/authors/author-guidelines",
"checked_at": "2026-11-08T11:39:24.623314+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "9cd75abefdbc4136a9de9d59d326d7df911ebfa0079f8047d45bae1277ae377f",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://ismir2026.ismir.net/authors/author-guidelines",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Anonymous direct HTTP returned 403/406. Archived official-page web-tool text is a separate representation, not a raw HTML response; no access-control bypass."
}
]
}
]
}
@@ -0,0 +1,516 @@
{
"source_url": "https://aclanthology.org/venues/naacl/",
"resolved_url": "https://aclanthology.org/venues/naacl/",
"checked_at": "2026-11-08T10:20:24.463381+00:00",
"http_status": 200,
"source_sha256": "d45623780479aa07c8afc419d5799decf59c9f1b124ea799281993f2a43ec14f",
"cutoff_year": 2026,
"expected_years": [
2000,
2001,
2003,
2004,
2006,
2007,
2009,
2010,
2012,
2013,
2015,
2016,
2018,
2019,
2021,
2022,
2024,
2025
],
"excluded_future_years": [],
"publisher_years": [
2000,
2001,
2003,
2004,
2006,
2007,
2009,
2010,
2012,
2013,
2015,
2016,
2018,
2019,
2021,
2022,
2024,
2025
],
"editions": [
{
"year": 2025,
"event_url": "https://aclanthology.org/events/naacl-2025/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2025.naacl-long/",
"title": "Proceedings of the 2025 Conference of the Nations of the Americas Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 1: Long Papers)"
},
{
"url": "https://aclanthology.org/volumes/2025.naacl-short/",
"title": "Proceedings of the 2025 Conference of the Nations of the Americas Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 2: Short Papers)"
},
{
"url": "https://aclanthology.org/volumes/2025.naacl-industry/",
"title": "Proceedings of the 2025 Conference of the Nations of the Americas Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 3: Industry Track)"
},
{
"url": "https://aclanthology.org/volumes/2025.naacl-srw/",
"title": "Proceedings of the 2025 Conference of the Nations of the Americas Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 4: Student Research Workshop)"
},
{
"url": "https://aclanthology.org/volumes/2025.naacl-tutorial/",
"title": "Proceedings of the 2025 Annual Conference of the Nations of the Americas Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 5: Tutorial Abstracts)"
},
{
"url": "https://aclanthology.org/volumes/2025.naacl-demo/",
"title": "Proceedings of the 2025 Conference of the Nations of the Americas Chapter of the Association for Computational Linguistics: Human Language Technologies (System Demonstrations)"
}
]
},
{
"year": 2024,
"event_url": "https://aclanthology.org/events/naacl-2024/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2024.naacl-long/",
"title": "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 1: Long Papers)"
},
{
"url": "https://aclanthology.org/volumes/2024.naacl-short/",
"title": "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 2: Short Papers)"
},
{
"url": "https://aclanthology.org/volumes/2024.naacl-demo/",
"title": "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 3: System Demonstrations)"
},
{
"url": "https://aclanthology.org/volumes/2024.naacl-srw/",
"title": "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 4: Student Research Workshop)"
},
{
"url": "https://aclanthology.org/volumes/2024.naacl-tutorials/",
"title": "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 5: Tutorial Abstracts)"
},
{
"url": "https://aclanthology.org/volumes/2024.naacl-industry/",
"title": "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 6: Industry Track)"
}
]
},
{
"year": 2022,
"event_url": "https://aclanthology.org/events/naacl-2022/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2022.naacl-main/",
"title": "Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/2022.naacl-srw/",
"title": "Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/2022.naacl-demo/",
"title": "Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: System Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2022.naacl-tutorials/",
"title": "Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Tutorial Abstracts"
},
{
"url": "https://aclanthology.org/volumes/2022.naacl-industry/",
"title": "Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Industry Track"
}
]
},
{
"year": 2021,
"event_url": "https://aclanthology.org/events/naacl-2021/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/2021.naacl-main/",
"title": "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/2021.naacl-demos/",
"title": "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/2021.naacl-srw/",
"title": "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/2021.naacl-tutorials/",
"title": "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Tutorials"
},
{
"url": "https://aclanthology.org/volumes/2021.naacl-industry/",
"title": "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Industry Papers"
}
]
},
{
"year": 2019,
"event_url": "https://aclanthology.org/events/naacl-2019/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N19-1/",
"title": "Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers)"
},
{
"url": "https://aclanthology.org/volumes/N19-2/",
"title": "Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 2 (Industry Papers)"
},
{
"url": "https://aclanthology.org/volumes/N19-3/",
"title": "Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N19-4/",
"title": "Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics (Demonstrations)"
},
{
"url": "https://aclanthology.org/volumes/N19-5/",
"title": "Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Tutorials"
}
]
},
{
"year": 2018,
"event_url": "https://aclanthology.org/events/naacl-2018/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N18-1/",
"title": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers)"
},
{
"url": "https://aclanthology.org/volumes/N18-2/",
"title": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 2 (Short Papers)"
},
{
"url": "https://aclanthology.org/volumes/N18-3/",
"title": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 3 (Industry Papers)"
},
{
"url": "https://aclanthology.org/volumes/N18-4/",
"title": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N18-5/",
"title": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/N18-6/",
"title": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2016,
"event_url": "https://aclanthology.org/events/naacl-2016/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N16-1/",
"title": "Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/N16-2/",
"title": "Proceedings of the NAACL Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N16-3/",
"title": "Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/N16-4/",
"title": "Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2015,
"event_url": "https://aclanthology.org/events/naacl-2015/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N15-1/",
"title": "Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/N15-2/",
"title": "Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics: Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N15-3/",
"title": "Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/N15-4/",
"title": "Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics: Tutorial Abstracts"
}
]
},
{
"year": 2013,
"event_url": "https://aclanthology.org/events/naacl-2013/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N13-1/",
"title": "Proceedings of the 2013 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/N13-2/",
"title": "Proceedings of the 2013 NAACL HLT Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N13-3/",
"title": "Proceedings of the 2013 NAACL HLT Demonstration Session"
},
{
"url": "https://aclanthology.org/volumes/N13-4/",
"title": "NAACL HLT 2013 Tutorial Abstracts"
}
]
},
{
"year": 2012,
"event_url": "https://aclanthology.org/events/naacl-2012/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N12-1/",
"title": "Proceedings of the 2012 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/N12-2/",
"title": "Proceedings of the NAACL HLT 2012 Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N12-3/",
"title": "Proceedings of the Demonstration Session at the Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
},
{
"url": "https://aclanthology.org/volumes/N12-4/",
"title": "Tutorial Abstracts at the Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies"
}
]
},
{
"year": 2010,
"event_url": "https://aclanthology.org/events/naacl-2010/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N10-1/",
"title": "Human Language Technologies: The 2010 Annual Conference of the North American Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/N10-2/",
"title": "Proceedings of the NAACL HLT 2010 Demonstration Session"
},
{
"url": "https://aclanthology.org/volumes/N10-3/",
"title": "Proceedings of the NAACL HLT 2010 Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N10-4/",
"title": "NAACL HLT 2010 Tutorial Abstracts"
}
]
},
{
"year": 2009,
"event_url": "https://aclanthology.org/events/naacl-2009/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N09-1/",
"title": "Proceedings of Human Language Technologies: The 2009 Annual Conference of the North American Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/N09-2/",
"title": "Proceedings of Human Language Technologies: The 2009 Annual Conference of the North American Chapter of the Association for Computational Linguistics, Companion Volume: Short Papers"
},
{
"url": "https://aclanthology.org/volumes/N09-3/",
"title": "Proceedings of Human Language Technologies: The 2009 Annual Conference of the North American Chapter of the Association for Computational Linguistics, Companion Volume: Student Research Workshop and Doctoral Consortium"
},
{
"url": "https://aclanthology.org/volumes/N09-4/",
"title": "Proceedings of Human Language Technologies: The 2009 Annual Conference of the North American Chapter of the Association for Computational Linguistics, Companion Volume: Tutorial Abstracts"
},
{
"url": "https://aclanthology.org/volumes/N09-5/",
"title": "Proceedings of Human Language Technologies: The 2009 Annual Conference of the North American Chapter of the Association for Computational Linguistics, Companion Volume: Demonstration Session"
}
]
},
{
"year": 2007,
"event_url": "https://aclanthology.org/events/naacl-2007/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N07-1/",
"title": "Human Language Technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics; Proceedings of the Main Conference"
},
{
"url": "https://aclanthology.org/volumes/N07-2/",
"title": "Human Language Technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics; Companion Volume, Short Papers"
},
{
"url": "https://aclanthology.org/volumes/N07-3/",
"title": "Proceedings of the NAACL-HLT 2007 Doctoral Consortium"
},
{
"url": "https://aclanthology.org/volumes/N07-4/",
"title": "Proceedings of Human Language Technologies: The Annual Conference of the North American Chapter of the Association for Computational Linguistics (NAACL-HLT)"
},
{
"url": "https://aclanthology.org/volumes/N07-5/",
"title": "Proceedings of the Human Language Technology Conference of the NAACL, Companion Volume: Tutorial Abstracts"
}
]
},
{
"year": 2006,
"event_url": "https://aclanthology.org/events/naacl-2006/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N06-1/",
"title": "Proceedings of the Human Language Technology Conference of the NAACL, Main Conference"
},
{
"url": "https://aclanthology.org/volumes/N06-2/",
"title": "Proceedings of the Human Language Technology Conference of the NAACL, Companion Volume: Short Papers"
},
{
"url": "https://aclanthology.org/volumes/N06-3/",
"title": "Proceedings of the Human Language Technology Conference of the NAACL, Companion Volume: Doctoral Consortium"
},
{
"url": "https://aclanthology.org/volumes/N06-4/",
"title": "Proceedings of the Human Language Technology Conference of the NAACL, Companion Volume: Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/N06-5/",
"title": "Proceedings of the Human Language Technology Conference of the NAACL, Companion Volume: Tutorial Abstracts"
}
]
},
{
"year": 2004,
"event_url": "https://aclanthology.org/events/naacl-2004/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N04-1/",
"title": "Proceedings of the Human Language Technology Conference of the North American Chapter of the Association for Computational Linguistics: HLT-NAACL 2004"
},
{
"url": "https://aclanthology.org/volumes/N04-2/",
"title": "Proceedings of the Student Research Workshop at HLT-NAACL 2004"
},
{
"url": "https://aclanthology.org/volumes/N04-3/",
"title": "Demonstration Papers at HLT-NAACL 2004"
},
{
"url": "https://aclanthology.org/volumes/N04-4/",
"title": "Proceedings of HLT-NAACL 2004: Short Papers"
}
]
},
{
"year": 2003,
"event_url": "https://aclanthology.org/events/naacl-2003/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N03-1/",
"title": "Proceedings of the 2003 Human Language Technology Conference of the North American Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/N03-2/",
"title": "Companion Volume of the Proceedings of HLT-NAACL 2003 - Short Papers"
},
{
"url": "https://aclanthology.org/volumes/N03-3/",
"title": "Proceedings of the HLT-NAACL 2003 Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/N03-4/",
"title": "Companion Volume of the Proceedings of HLT-NAACL 2003 - Demonstrations"
},
{
"url": "https://aclanthology.org/volumes/N03-5/",
"title": "Companion Volume of the Proceedings of HLT-NAACL 2003 - Tutorial Abstracts"
}
]
},
{
"year": 2001,
"event_url": "https://aclanthology.org/events/naacl-2001/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/N01-1/",
"title": "Second Meeting of the North American Chapter of the Association for Computational Linguistics"
}
]
},
{
"year": 2000,
"event_url": "https://aclanthology.org/events/naacl-2000/",
"volumes": [
{
"url": "https://aclanthology.org/volumes/A00-2/",
"title": "1st Meeting of the North American Chapter of the Association for Computational Linguistics"
},
{
"url": "https://aclanthology.org/volumes/A00-3/",
"title": "Proceedings of the ANLP-NAACL 2000 Student Research Workshop"
},
{
"url": "https://aclanthology.org/volumes/A00-4/",
"title": "Author Index to the Proceedings of ANLP-NAACL 2000 and the Student Research Workshop"
}
]
}
],
"scope": "Actual first-party publisher entries; multiple volumes/tracks do not create extra event years. Year census does not establish per-paper/track/abstract or public rejected-submission completeness. 18 published NAACLseries eventyears2000–2025, with first/second meetings and subsequent actual publisherentries, crosschecked against chapter list. No annual interpolation or fabricated NAACL2026.",
"additional_primary_sources": [
{
"source_url": "https://naacl.org/conferences/",
"resolved_url": "https://naacl.org/conferences/",
"checked_at": "2026-11-08T10:20:26.974206+00:00",
"http_status": 200,
"source_sha256": "bf0a00acb6be31011516080b7ef0311299236525e3db445be46b104c83a46f38"
},
{
"source_url": "https://naacl.org/posts/2001-09-01-newsletter",
"resolved_url": "https://naacl.org/posts/2001-09-01-newsletter",
"checked_at": "2026-11-08T10:22:01.105833+00:00",
"http_status": 200,
"source_sha256": "5ddef8c8bd3ec53301f2f8215eafc4190dc1891a76dd2ad47a240165a8c5e97c"
}
],
"chapter_hosted_acl_years_not_new_naacl_series_editions": [
2002,
2005,
2008,
2011,
2014,
2017
],
"chapter_hosting_note": "Currentchapterlist mixes independently named NAACL/HLT-NAACL with hosted ACL meetings. The2001officialnewsletter explicitly calls2002 co-hosting internationalACL, not an extra standalone NAACL series acceptance. Chapterschedule/hosting does not rename ACLpapers. Publisher first andsecond meetings2000/2001 supplement chapterweb list starting2003.",
"name_change": {
"formerly": "North American Chapter",
"current": "Nations of the Americas Chapter",
"publisher_stated_until": "2024-10",
"interpretation": "Preserve historic source titles/author fields; this organizational name change is not a new conference series or an extra submission."
},
"source_html_sha256": "d45623780479aa07c8afc419d5799decf59c9f1b124ea799281993f2a43ec14f"
}
@@ -0,0 +1,269 @@
{
"source_url": "https://neurips.cc/",
"checked_at": "2026-11-08T07:28:31.793833+00:00",
"source_html_sha256": "2adec2819b63be23b21960b4f1c8d0dff1af501b8593b16f029bbb3e0902ebdf",
"cutoff_year": 2026,
"expected_years": [
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"published_years_in_official_proceedings_index": [
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"announced_years_without_proceedings_index": [
2026
],
"proceedings_index": {
"source_url": "https://proceedings.neurips.cc/",
"checked_at": "2026-11-08T07:28:27.754669+00:00",
"source_html_sha256": "c3bd4a4fd93a352393985c9e3ae3806ca34d7026c99d73e798910496babaad37",
"year_and_track_links": [
{
"text": "Advances in Neural Information Processing Systems Datasets and Benchmarks, 2021",
"url": "https://datasets-benchmarks-proceedings.neurips.cc/paper/2021"
},
{
"text": "Advances in Neural Information Processing Systems 38 Main Conference",
"url": "https://proceedings.neurips.cc/paper_files/paper/2025/vol38-main-conference"
},
{
"text": "Advances in Neural Information Processing Systems 38 Creative AI",
"url": "https://proceedings.neurips.cc/paper_files/paper/2025"
},
{
"text": "Advances in Neural Information Processing Systems 37",
"url": "https://proceedings.neurips.cc/paper_files/paper/2024"
},
{
"text": "Advances in Neural Information Processing Systems 36",
"url": "https://proceedings.neurips.cc/paper_files/paper/2023"
},
{
"text": "Advances in Neural Information Processing Systems 35",
"url": "https://proceedings.neurips.cc/paper_files/paper/2022"
},
{
"text": "Advances in Neural Information Processing Systems 34",
"url": "https://proceedings.neurips.cc/paper_files/paper/2021"
},
{
"text": "Advances in Neural Information Processing Systems 33",
"url": "https://proceedings.neurips.cc/paper_files/paper/2020"
},
{
"text": "Advances in Neural Information Processing Systems 32",
"url": "https://proceedings.neurips.cc/paper_files/paper/2019"
},
{
"text": "Advances in Neural Information Processing Systems 31",
"url": "https://proceedings.neurips.cc/paper_files/paper/2018"
},
{
"text": "Advances in Neural Information Processing Systems 30",
"url": "https://proceedings.neurips.cc/paper_files/paper/2017"
},
{
"text": "Advances in Neural Information Processing Systems 29",
"url": "https://proceedings.neurips.cc/paper_files/paper/2016"
},
{
"text": "Advances in Neural Information Processing Systems 28",
"url": "https://proceedings.neurips.cc/paper_files/paper/2015"
},
{
"text": "Advances in Neural Information Processing Systems 27",
"url": "https://proceedings.neurips.cc/paper_files/paper/2014"
},
{
"text": "Advances in Neural Information Processing Systems 26",
"url": "https://proceedings.neurips.cc/paper_files/paper/2013"
},
{
"text": "Advances in Neural Information Processing Systems 25",
"url": "https://proceedings.neurips.cc/paper_files/paper/2012"
},
{
"text": "Advances in Neural Information Processing Systems 24",
"url": "https://proceedings.neurips.cc/paper_files/paper/2011"
},
{
"text": "Advances in Neural Information Processing Systems 23",
"url": "https://proceedings.neurips.cc/paper_files/paper/2010"
},
{
"text": "Advances in Neural Information Processing Systems 22",
"url": "https://proceedings.neurips.cc/paper_files/paper/2009"
},
{
"text": "Advances in Neural Information Processing Systems 21",
"url": "https://proceedings.neurips.cc/paper_files/paper/2008"
},
{
"text": "Advances in Neural Information Processing Systems 20",
"url": "https://proceedings.neurips.cc/paper_files/paper/2007"
},
{
"text": "Advances in Neural Information Processing Systems 19",
"url": "https://proceedings.neurips.cc/paper_files/paper/2006"
},
{
"text": "Advances in Neural Information Processing Systems 18",
"url": "https://proceedings.neurips.cc/paper_files/paper/2005"
},
{
"text": "Advances in Neural Information Processing Systems 17",
"url": "https://proceedings.neurips.cc/paper_files/paper/2004"
},
{
"text": "Advances in Neural Information Processing Systems 16",
"url": "https://proceedings.neurips.cc/paper_files/paper/2003"
},
{
"text": "Advances in Neural Information Processing Systems 15",
"url": "https://proceedings.neurips.cc/paper_files/paper/2002"
},
{
"text": "Advances in Neural Information Processing Systems 14",
"url": "https://proceedings.neurips.cc/paper_files/paper/2001"
},
{
"text": "Advances in Neural Information Processing Systems 13",
"url": "https://proceedings.neurips.cc/paper_files/paper/2000"
},
{
"text": "Advances in Neural Information Processing Systems 12",
"url": "https://proceedings.neurips.cc/paper_files/paper/1999"
},
{
"text": "Advances in Neural Information Processing Systems 11",
"url": "https://proceedings.neurips.cc/paper_files/paper/1998"
},
{
"text": "Advances in Neural Information Processing Systems 10",
"url": "https://proceedings.neurips.cc/paper_files/paper/1997"
},
{
"text": "Advances in Neural Information Processing Systems 9",
"url": "https://proceedings.neurips.cc/paper_files/paper/1996"
},
{
"text": "Advances in Neural Information Processing Systems 8",
"url": "https://proceedings.neurips.cc/paper_files/paper/1995"
},
{
"text": "Advances in Neural Information Processing Systems 7",
"url": "https://proceedings.neurips.cc/paper_files/paper/1994"
},
{
"text": "Advances in Neural Information Processing Systems 6",
"url": "https://proceedings.neurips.cc/paper_files/paper/1993"
},
{
"text": "Advances in Neural Information Processing Systems 5",
"url": "https://proceedings.neurips.cc/paper_files/paper/1992"
},
{
"text": "Advances in Neural Information Processing Systems 4",
"url": "https://proceedings.neurips.cc/paper_files/paper/1991"
},
{
"text": "Advances in Neural Information Processing Systems 3",
"url": "https://proceedings.neurips.cc/paper_files/paper/1990"
},
{
"text": "Advances in Neural Information Processing Systems 2",
"url": "https://proceedings.neurips.cc/paper_files/paper/1989"
},
{
"text": "Advances in Neural Information Processing Systems 1",
"url": "https://proceedings.neurips.cc/paper_files/paper/1988"
},
{
"text": "Neural Information Processing Systems 0",
"url": "https://proceedings.neurips.cc/paper_files/paper/1987"
}
]
},
"track_boundaries": [
"2021 Datasets and Benchmarks has a separate index; from2022 it is inside main proceedings and requires per-paper track metadata.",
"2025 Main Conference and Creative AI have distinct official index URLs; count one conference year, preserve separate tracks."
],
"scope": "Official published years 1987–2025 plus announced 40th edition2026. At check time 2026 proceedings not listed; missing announced year is not a claim of missing published records. No per-paper/track/negative completeness claim."
}
@@ -0,0 +1,66 @@
{
"checked_on": "2026-11-08",
"scope": "Four bounded year/track primary-source checks; not a historical policy census, actual rejected-paper export, or production import. No access bypass.",
"checks": [
{
"venue": "NAACL",
"year": 2025,
"track": "main",
"status": "unknown",
"primary_url": "https://2025.naacl.org/calls/papers/",
"evidence": {
"source_url": "https://2025.naacl.org/calls/papers/",
"resolved_url": "https://2025.naacl.org/calls/papers/",
"checked_at": "2026-11-08T10:22:02.491032+00:00",
"http_status": 200,
"source_sha256": "8b8db0cf37f0ef1b30b2b1578f609306f292fa87bef8c97083961c4b777aa077"
},
"note": "ARR评审不公开,作者可选择公开匿名投稿;这不是NAACL最终拒稿公开证据。会议commitment与ARR评审周期分开,ARR的preferred venue不是已投会议;ARR desk rejection不能标成NAACL desk rejection。TACL/CL展示不自动产生新的主会录用。该年最终拒稿发布范围仍未确认。"
},
{
"venue": "EACL",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://2026.eacl.org/calls/papers/",
"evidence": {
"source_url": "https://2026.eacl.org/calls/papers/",
"resolved_url": "https://2026.eacl.org/calls/papers/",
"checked_at": "2026-11-08T10:23:05.391233+00:00",
"http_status": 200,
"source_sha256": "e71bcee71f1bd52ae9fce2c78f48f9ad3fb738461d8daef4fd62aaaec3597e15"
},
"note": "官方CFP确认ARR评审后commitment;未入主会的稿件会自动考虑Findings,两者同时通知,不能将Findings录用推断为最终会议Reject。TACL/CL期刊展示不自动当成主会录用;该页未明确会后拒稿元数据发布范围。"
},
{
"venue": "COLING",
"year": 2025,
"track": "main_direct",
"status": "not_published",
"primary_url": "https://coling2025.org/calls/main_conference_papers/",
"evidence": {
"source_url": "https://coling2025.org/calls/main_conference_papers/",
"resolved_url": "https://coling2025.org/calls/main_conference_papers/",
"checked_at": "2026-11-08T10:22:02.995232+00:00",
"http_status": 200,
"source_sha256": "3185283db3be9adda44c381074d61b9fbaaab9b62d1ddab6cbcbdc3ac4f971e0"
},
"note": "仅该年main直投通道明确说明投稿和评审不公开;ARR已评审稿件另经commitment,由SAC/PC决定,ARR评审不是最终COLING决定。不外推其他年份、轨道或独立数据集;不从未录用清单生成拒稿。"
},
{
"venue": "AAMAS",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://cyprusconferences.org/aamas2026/submission-instructions/",
"evidence": {
"source_url": "https://cyprusconferences.org/aamas2026/submission-instructions/",
"resolved_url": "https://cyprusconferences.org/aamas2026/submission-instructions/",
"checked_at": "2026-11-08T10:20:30.733617+00:00",
"http_status": 200,
"source_sha256": "c428a92e83ba913b1f36a8cca009ccf0f62fe29f20f8c4c74d173a4fb591b27a"
},
"note": "官方说明录用论文及评审将在OpenReview公开,投稿材料保密;未明确会后所有拒稿元数据发布范围。允许其他会议拒稿重投是资格规则,不能据此生成逐篇先前拒稿;不能把AAAI特殊轨道规则外推主会。"
}
]
}
@@ -0,0 +1,97 @@
{
"source_url": "https://recsys.acm.org/",
"checked_at": "2026-11-07T20:53:46.009213+00:00",
"source_html_sha256": "b2f68fbe060b34e24c2bbb9032aa69aac66a1a48a20cb4da1cd205b977c7f30b",
"cutoff_year": 2026,
"expected_years": [
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"year_links": {
"2007": [
"https://recsys.acm.org/recsys07/"
],
"2008": [
"https://recsys.acm.org/recsys08/"
],
"2009": [
"https://recsys.acm.org/recsys09/"
],
"2010": [
"https://recsys.acm.org/recsys10/"
],
"2011": [
"https://recsys.acm.org/recsys11/"
],
"2012": [
"https://recsys.acm.org/recsys12/"
],
"2013": [
"https://recsys.acm.org/recsys13/"
],
"2014": [
"https://recsys.acm.org/recsys14/"
],
"2015": [
"https://recsys.acm.org/recsys15/"
],
"2016": [
"https://recsys.acm.org/recsys16/"
],
"2017": [
"https://recsys.acm.org/recsys17/"
],
"2018": [
"https://recsys.acm.org/recsys18/"
],
"2019": [
"https://recsys.acm.org/recsys19/"
],
"2020": [
"https://recsys.acm.org/recsys20/"
],
"2021": [
"https://recsys.acm.org/recsys21/"
],
"2022": [
"https://recsys.acm.org/recsys22/"
],
"2023": [
"https://recsys.acm.org/recsys23/"
],
"2024": [
"https://recsys.acm.org/recsys24/"
],
"2025": [
"https://recsys.acm.org/recsys25/"
],
"2026": [
"https://recsys.acm.org/recsys26/"
],
"2027": [
"https://recsys.acm.org/recsys27/"
]
},
"scope": "Official conference-year archive enumeration only; not per-track/paper-list or rejection coverage."
}
@@ -0,0 +1,161 @@
{
"checked_on": "2026-11-08",
"scope": "补充三个会议各一项限定年份/轨道核查;不是完整历史政策普查或公开负面记录全集,无数据库写入。当前配置快照不代表永久发布政策。",
"checks": [
{
"venue": "CoNLL",
"year": 2025,
"track": "archival",
"status": "unknown",
"primary_url": "https://www.aclweb.org/portal/content/conll-2025-2nd-call-papers",
"checked_on": "2026-11-08",
"note": "2025第二次官方CFP改为只收直接投稿;不能继续用第一次CFP的ARR路径。Archival匿名、非存档展示不匿名且可为2023–2025已有发表论文,展示不生成新的主会存档录用。OpenReview托管路径含Workshop不代表CoNLL正式论文的语义track。公开group当前三个public标志false,未确认会后全部拒稿/withdrawn元数据范围,不能推断零条或永不公开。",
"evidence": [
{
"source_url": "https://www.aclweb.org/portal/content/conll-2025-2nd-call-papers",
"checked_at": "2026-11-08T12:23:12.646583+00:00",
"source_representation": "first_party_organizer_CFP_text_returned_by_web_tool",
"source_html_sha256": null,
"source_extract_sha256": "168aae01ee24b65f7b120d87bfd8a3a46e313a7e43482f755db3e13b2a52d9a8",
"direct_fetch": {
"source_url": "https://www.aclweb.org/portal/content/conll-2025-2nd-call-papers",
"error": "HTTP Error 418: Unknown",
"checked_at": "2026-11-08T12:21:07.703494+00:00"
}
},
{
"source_url": "https://api2.openreview.net/groups?id=aclweb.org%2FACL%2F2025%2FWorkshop%2FCoNLL",
"resolved_url": "https://api2.openreview.net/groups?id=aclweb.org%2FACL%2F2025%2FWorkshop%2FCoNLL",
"http_status": 200,
"checked_at": "2026-11-08T12:21:49.351048+00:00",
"source_sha256": "7ad88f486224f08bec7a673e541557d8b7d46238154bf21aa9e6a0cf636aa894"
}
]
},
{
"venue": "SIGIR",
"year": 2026,
"track": "full_papers",
"status": "unknown",
"primary_url": "https://sigir2026.org/en-AU/pages/submissions/full-papers-track",
"checked_on": "2026-11-08",
"note": "官方OpenReview group说明为2026 Full Papers Track并链接确切CFP;三个投稿公开标志当前为false。一次Rejected_Submission匿名notes查询403,未取得逐篇记录,不能当作零条或完整全历史拒稿核查。CFP直连HTTP200但web工具没有可读行,原HTML及路由限制保留;不把short/其他轨道或2027规则套用到2026。",
"evidence": [
{
"source_url": "https://api2.openreview.net/groups?id=ACM.org%2FSIGIR%2F2026%2FConference",
"resolved_url": "https://api2.openreview.net/groups?id=ACM.org%2FSIGIR%2F2026%2FConference",
"http_status": 200,
"checked_at": "2026-11-08T12:19:52.058120+00:00",
"source_sha256": "1b622a620e7f35f1648d25d08faada7c384d8c05cdc3f84cef3f2656cf141108"
},
{
"source_url": "https://sigir2026.org/en-AU/pages/submissions/full-papers-track",
"resolved_url": "https://sigir2026.org/en-AU/pages/submissions/full-papers-track",
"http_status": 200,
"checked_at": "2026-11-08T12:22:04.292334+00:00",
"source_sha256": "1adbff7531aa3f86c6c94605eaeefe349c8e760f222cf620b4572e52c8fc718e"
},
{
"source_url": "https://api2.openreview.net/notes?content.venueid=ACM.org%2FSIGIR%2F2026%2FConference%2FRejected_Submission&limit=1",
"error": "HTTP Error 403: Forbidden",
"checked_at": "2026-11-08T12:22:05.292689+00:00"
}
]
},
{
"venue": "IROS",
"year": 2025,
"track": "main",
"status": "unknown",
"primary_url": "https://www.iros25.org/CallForPapersv2",
"checked_on": "2026-11-08",
"note": "官方2025 CFP说明PaperPlaza、单盲审稿及Senior Program Committee最终决定;仅期刊展示不算常规IROS新录用。保密规则和已录用稿件发表安排未确认会后逐篇拒稿元数据公开范围。TLS校验失败保留,使用索引中的官方CFP文本;未关闭TLS验证。2026访问限制依旧,不能将2025结论推广为2026或全部历史。",
"evidence": [
{
"source_url": "https://www.iros25.org/CallForPapersv2",
"checked_at": "2026-11-08T12:23:12.646583+00:00",
"source_representation": "indexed_first_party_CFP_text_returned_by_search_tool",
"source_html_sha256": null,
"source_extract_sha256": "ae0c2d0211a8d2ade1a528d1758a5e7f58fb3111ae96af5807f570ee9f1a4318",
"direct_fetch": {
"source_url": "https://www.iros25.org/CallForPapersv2",
"error": "<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1081)>",
"checked_at": "2026-11-08T12:19:47.356024+00:00"
}
}
]
}
],
"public_group_snapshots": [
{
"venue": "CoNLL",
"group_id": "aclweb.org/ACL/2025/Workshop/CoNLL",
"public_flags_at_check": {
"public_submissions": false,
"public_withdrawn_submissions": false,
"public_desk_rejected_submissions": false
},
"submission_venue_id": "aclweb.org/ACL/2025/Workshop/CoNLL/Submission",
"rejected_venue_id": "aclweb.org/ACL/2025/Workshop/CoNLL/Rejected_Submission",
"receipt": {
"source_url": "https://api2.openreview.net/groups?id=aclweb.org%2FACL%2F2025%2FWorkshop%2FCoNLL",
"resolved_url": "https://api2.openreview.net/groups?id=aclweb.org%2FACL%2F2025%2FWorkshop%2FCoNLL",
"http_status": 200,
"checked_at": "2026-11-08T12:21:49.351048+00:00",
"source_sha256": "7ad88f486224f08bec7a673e541557d8b7d46238154bf21aa9e6a0cf636aa894"
}
},
{
"venue": "SIGIR",
"group_id": "ACM.org/SIGIR/2026/Conference",
"public_flags_at_check": {
"public_submissions": false,
"public_withdrawn_submissions": false,
"public_desk_rejected_submissions": false
},
"submission_venue_id": "ACM.org/SIGIR/2026/Conference/Submission",
"rejected_venue_id": "ACM.org/SIGIR/2026/Conference/Rejected_Submission",
"receipt": {
"source_url": "https://api2.openreview.net/groups?id=ACM.org%2FSIGIR%2F2026%2FConference",
"resolved_url": "https://api2.openreview.net/groups?id=ACM.org%2FSIGIR%2F2026%2FConference",
"http_status": 200,
"checked_at": "2026-11-08T12:19:52.058120+00:00",
"source_sha256": "1b622a620e7f35f1648d25d08faada7c384d8c05cdc3f84cef3f2656cf141108"
}
}
],
"anonymous_access_attempts": [
{
"venue": "SIGIR",
"year": 2026,
"track": "full_papers",
"receipt": {
"source_url": "https://api2.openreview.net/notes?content.venueid=ACM.org%2FSIGIR%2F2026%2FConference%2FRejected_Submission&limit=1",
"error": "HTTP Error 403: Forbidden",
"checked_at": "2026-11-08T12:22:05.292689+00:00"
},
"scope": "仅一次官方group配置所列Rejected_Submission venueid查询,limit1;403不是零记录,不绕过权限。"
}
],
"conll2025_policy_revision": {
"source": {
"source_url": "https://www.aclweb.org/portal/content/conll-2025-2nd-call-papers",
"checked_at": "2026-11-08T12:23:12.646583+00:00",
"source_representation": "first_party_organizer_CFP_text_returned_by_web_tool",
"source_html_sha256": null,
"source_extract_sha256": "168aae01ee24b65f7b120d87bfd8a3a46e313a7e43482f755db3e13b2a52d9a8",
"direct_fetch": {
"source_url": "https://www.aclweb.org/portal/content/conll-2025-2nd-call-papers",
"error": "HTTP Error 418: Unknown",
"checked_at": "2026-11-08T12:21:07.703494+00:00"
}
},
"revision": "2025-02-07 second CFP",
"direct_only": true,
"archival_anonymous": true,
"nonarchival_anonymous": false,
"nonarchival_scope": "已有2023–2025发表作品的展示,不额外生成存档主会录用。",
"hosting_path_semantics": "Workshop路径是OpenReview托管标识,不能单独决定论文track。"
},
"retrieval_boundaries": "CoNLL官方CFP直连418、IROS TLS失败,分别保留官方网页提取和索引文本哈希,与原HTML区分;SIGIR web路由无可读行,不执行其脚本。"
}
@@ -0,0 +1,127 @@
{
"checked_on": "2026-11-08",
"scope": "Three bounded main-track policy checks, no per-paper negative export and no DB write. IROS2025/2026 access attempts remain unverified rather than counted as completed policy reviews.",
"checks": [
{
"venue": "ICRA",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://2026.ieee-icra.org/contribute/call-for-icra-2026-papers-now-accepting-submissions/",
"checked_on": "2026-11-08",
"note": "官方主会说明双盲、保密及Paperplaza;IROS2025未录用稿件可带评审回复转投ICRA2026,仍需正常审稿。转投政策不是逐篇公开原拒稿证据,具体跨会历史需要逐篇标识与来源。期刊论文仅展示须与主会新录用分开,会后全部拒稿元数据范围未确认。",
"evidence": [
{
"source_url": "https://2026.ieee-icra.org/contribute/call-for-icra-2026-papers-now-accepting-submissions/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "1b137225f3eddf70b52bc85a9e67283aecfd391345c6f11adda4ac41812e7896",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://2026.ieee-icra.org/contribute/call-for-icra-2026-papers-now-accepting-submissions/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Official web-tool extraction archived separately from raw HTTP. Direct403 retained, not bypassed and not represented as HTML hash."
}
]
},
{
"venue": "ICASSP",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://2026.ieeeicassp.org/editorial-policies/",
"checked_on": "2026-11-08",
"note": "官方编辑政策说明初筛、至少三位评审、可选rebuttal及最终建议;存在desk rejection规则并不证明所有实际拒稿元数据公开。no-show未进IEEE Xplore也可能已向参会者分发论文集,不能因索引缺失或未展示推断Reject。OJSP期刊轨道与主会分开。",
"evidence": [
{
"source_url": "https://2026.ieeeicassp.org/editorial-policies/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "fd0bea379c611f2f7bd7d0adaa5514ea0cb7f7468711cde247ac7b8874b1df6d",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://2026.ieeeicassp.org/editorial-policies/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Official web-tool extraction archived separately from raw HTTP. Direct403 retained, not bypassed and not represented as HTML hash."
},
{
"source_url": "https://2026.ieeeicassp.org/sps-policies/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "9147c23b94a5deaad9e807b758ea493c9404cfa10a0e371e63628c78dccbd6c6",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://2026.ieeeicassp.org/sps-policies/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Official web-tool extraction archived separately from raw HTTP. Direct403 retained, not bypassed and not represented as HTML hash."
}
]
},
{
"venue": "INTERSPEECH",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://interspeech2026.org/pages/author-resources/submission-policy",
"checked_on": "2026-11-08",
"note": "官方响应内静态政策文字说明审稿保密、投稿不录用时版权暂转失效;允许预印本不是公开逐篇最终拒稿。会后全体拒稿元数据范围仍未确认。官网重定向页面的可渲染状态存在限制,已保留回执。",
"evidence": [
{
"source_url": "https://interspeech2026.org/pages/author-resources/submission-policy",
"resolved_url": "https://interspeech2026.org/en-AU/pages/author-resources/submission-policy",
"http_status": 200,
"checked_at": "2026-11-08T11:46:45.791744+00:00",
"source_sha256": "212d7bd47c1ed3974ee2ddd5c8ae66164fe6fb6b549812098e924e1bcbdfd6c3",
"source_representation": "static_policy_text_in_official_html_JSON_string_literals_not_executed",
"source_html_sha256": "212d7bd47c1ed3974ee2ddd5c8ae66164fe6fb6b549812098e924e1bcbdfd6c3",
"policy_text_sha256": "5c2fd10c43a418baf35ada26853b30126df387ac452741d0cbc644f17b61821a",
"retrieval_note": "HTTP200 redirects to en-AU; web-tool rendered route returned PageNotFound. Confidentiality policy text is embedded in response JSON strings and matches first-party search extraction, not claimed to be successfully rendered page. Keep routing limitation; no JS executed."
}
]
}
],
"unverified_access_attempts": [
{
"venue": "IROS",
"year": 2025,
"track": "main",
"receipt": {
"source_url": "https://iros25.org/CallForPapersv2",
"error": "<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1081)>"
},
"web_tool_error": "502 Bad Gateway",
"interpretation": "Do not disable TLS verification; not evidence of no public rejection data."
},
{
"venue": "IROS",
"year": 2026,
"track": "main",
"source_url": "https://2026.ieee-iros.org/contribute/call-for-papers/",
"web_tool_error": "blocked by robots.txt",
"interpretation": "No bypass and no claim of absent negative records."
}
],
"cross_conference_resubmission_policy": {
"source": {
"source_url": "https://2026.ieee-icra.org/contribute/call-for-icra-2026-papers-now-accepting-submissions/",
"checked_at": "2026-11-08T11:49:47.378390+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_extract_sha256": "1b137225f3eddf70b52bc85a9e67283aecfd391345c6f11adda4ac41812e7896",
"source_html_sha256": null,
"direct_fetch": {
"source_url": "https://2026.ieee-icra.org/contribute/call-for-icra-2026-papers-now-accepting-submissions/",
"error": "HTTP Error 403: Forbidden"
},
"retrieval_note": "Official web-tool extraction archived separately from raw HTTP. Direct403 retained, not bypassed and not represented as HTML hash."
},
"from_venue": "IROS",
"from_year": 2025,
"to_venue": "ICRA",
"to_year": 2026,
"category_label": "IROS-ICRA transfer",
"scope": "Authors include response and prior reviewer comments; new regular review required. Policy alone creates no submission, decision, merge or prior-rejection annotation."
}
}
+147
View File
@@ -0,0 +1,147 @@
{
"source_url": "https://www.roboticsproceedings.org/",
"resolved_url": "https://www.roboticsproceedings.org/",
"checked_at": "2026-11-08T10:03:01.144979+00:00",
"source_sha256": "0d61c8fe136b5eeb2422b37cd44ed5f090907a8c7659b32b8a613a7478713feb",
"expected_years": [
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"editions": [
{
"year": 2026,
"proceedings_url": "https://www.roboticsproceedings.org/rss22/index.html",
"roman_ordinal": "XXII"
},
{
"year": 2025,
"proceedings_url": "https://www.roboticsproceedings.org/rss21/index.html",
"roman_ordinal": "XXI"
},
{
"year": 2024,
"proceedings_url": "https://www.roboticsproceedings.org/rss20/index.html",
"roman_ordinal": "XX"
},
{
"year": 2023,
"proceedings_url": "https://www.roboticsproceedings.org/rss19/index.html",
"roman_ordinal": "XIX"
},
{
"year": 2022,
"proceedings_url": "https://www.roboticsproceedings.org/rss18/index.html",
"roman_ordinal": "XVIII"
},
{
"year": 2021,
"proceedings_url": "https://www.roboticsproceedings.org/rss17/index.html",
"roman_ordinal": "XVII"
},
{
"year": 2020,
"proceedings_url": "https://www.roboticsproceedings.org/rss16/index.html",
"roman_ordinal": "XVI"
},
{
"year": 2019,
"proceedings_url": "https://www.roboticsproceedings.org/rss15/index.html",
"roman_ordinal": "XV"
},
{
"year": 2018,
"proceedings_url": "https://www.roboticsproceedings.org/rss14/index.html",
"roman_ordinal": "XIV"
},
{
"year": 2017,
"proceedings_url": "https://www.roboticsproceedings.org/rss13/index.html",
"roman_ordinal": "XIII"
},
{
"year": 2016,
"proceedings_url": "https://www.roboticsproceedings.org/rss12/index.html",
"roman_ordinal": "XII"
},
{
"year": 2015,
"proceedings_url": "https://www.roboticsproceedings.org/rss11/index.html",
"roman_ordinal": "XI"
},
{
"year": 2014,
"proceedings_url": "https://www.roboticsproceedings.org/rss10/index.html",
"roman_ordinal": "X"
},
{
"year": 2013,
"proceedings_url": "https://www.roboticsproceedings.org/rss09/index.html",
"roman_ordinal": "IX"
},
{
"year": 2012,
"proceedings_url": "https://www.roboticsproceedings.org/rss08/index.html",
"roman_ordinal": "VIII"
},
{
"year": 2011,
"proceedings_url": "https://www.roboticsproceedings.org/rss07/index.html",
"roman_ordinal": "VII"
},
{
"year": 2010,
"proceedings_url": "https://www.roboticsproceedings.org/rss06/index.html",
"roman_ordinal": "VI"
},
{
"year": 2009,
"proceedings_url": "https://www.roboticsproceedings.org/rss05/index.html",
"roman_ordinal": "V"
},
{
"year": 2008,
"proceedings_url": "https://www.roboticsproceedings.org/rss04/index.html",
"roman_ordinal": "IV"
},
{
"year": 2007,
"proceedings_url": "https://www.roboticsproceedings.org/rss03/index.html",
"roman_ordinal": "III"
},
{
"year": 2006,
"proceedings_url": "https://www.roboticsproceedings.org/rss02/index.html",
"roman_ordinal": "II"
},
{
"year": 2005,
"proceedings_url": "https://www.roboticsproceedings.org/rss01/index.html",
"roman_ordinal": "I"
}
],
"scope": "Official proceedings enumeration of22actualconferenceyears. Event dates distinguish later printed-book publication years; linked journal special issues are separate publications, not new RSS acceptances. No per-paper/track or public rejection completeness claim.",
"cutoff_year": 2026,
"excluded_future_years": [],
"source_html_sha256": "0d61c8fe136b5eeb2422b37cd44ed5f090907a8c7659b32b8a613a7478713feb",
"conference_name": "Robotics: Science and Systems"
}
+191
View File
@@ -0,0 +1,191 @@
{
"source_url": "https://epubs.siam.org/action/showBookSeries?seriesCode=pr",
"checked_at": "2026-11-08T12:10:20.249437+00:00",
"source_representation": "indexed_first_party_publisher_page_text_returned_by_search_tool",
"source_html_sha256": null,
"source_extract_sha256": "5032af58a6979585e38ef43dc66c33ab7c3e458ff3a03217830c056118027430",
"direct_fetch": {
"source_url": "https://epubs.siam.org/action/showBookSeries?seriesCode=pr",
"error": "HTTP Error 403: Forbidden"
},
"additional_primary_sources": [
{
"source_url": "https://www.siam.org/conferences-events/siam-conferences/sdm26/",
"checked_at": "2026-11-08T12:10:20.249437+00:00",
"source_representation": "first_party_page_text_returned_by_web_tool",
"source_html_sha256": null,
"source_extract_sha256": "6dcfc45afb51ed0359e1e9cc9a5ea096e62af395545727026054601483d205f2",
"direct_fetch": {
"source_url": "https://www.siam.org/conferences-events/siam-conferences/sdm26/",
"error": "HTTP Error 403: Forbidden"
}
}
],
"cutoff_year": 2026,
"expected_years": [
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"editions": [
{
"year": 2001,
"source_label": "SDM 2001",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2002,
"source_label": "SDM 2002",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2003,
"source_label": "SDM 2003",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2004,
"source_label": "SDM 2004",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2005,
"source_label": "SDM 2005",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2006,
"source_label": "SDM 2006",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2007,
"source_label": "SDM 2007",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2008,
"source_label": "SDM 2008",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2009,
"source_label": "SDM 2009",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2010,
"source_label": "SDM 2010",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2011,
"source_label": "SDM 2011",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2012,
"source_label": "SDM 2012",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2013,
"source_label": "SDM 2013",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2014,
"source_label": "SDM 2014",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2015,
"source_label": "SDM 2015",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2016,
"source_label": "SDM 2016",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2017,
"source_label": "SDM 2017",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2018,
"source_label": "SDM 2018",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2019,
"source_label": "SDM 2019",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2020,
"source_label": "SDM 2020",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2021,
"source_label": "SDM 2021",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2022,
"source_label": "SDM 2022",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2023,
"source_label": "SDM 2023",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2024,
"source_label": "SDM 2024",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2025,
"source_label": "SDM 2025",
"evidence_scope": "publisher-listed proceedings"
},
{
"year": 2026,
"source_label": "SDM26",
"dates_label": "November19–20,2026",
"location_label": "SaltLakeCity,Utah,U.S.",
"event_status_at_cutoff": "announced_upcoming",
"publication_status": "not_independently_verified"
}
],
"retrieval_note": "Rawpublisherfetch403andwebopen timeout retained. Searchtoolreturned indexed firstpartyproceedingslist with25explicityeartitles; extracthash identifies that representation, notrawHTML orfreshpublicationavailability. Current2026separateofficialeventpage confirmsupcomingevent.",
"scope": "25explicitpublisherproceedingsyears2001–2025plusofficialannounced2026,26editionyears; not26heldphysicalmeetings.2020haspublishedproceedings; physicaleventcancellation/formatdoesnotremoveanedition. Do nottreatMDS/ImagingSciencejointmeetingsasextraSDMmainacceptances. Proceedingscalendarandindividualpaper/track/abstract/negativerecordscope are distinct."
}
@@ -0,0 +1,381 @@
{
"source_url": "https://sigir.org/general-information/history/",
"resolved_url": "https://sigir.org/general-information/history/",
"http_status": 200,
"checked_at": "2026-11-08T11:54:43.994403+00:00",
"source_sha256": "8b8789c024b68515d1da53eccc0d25cef408b1be772fa9dba90535325c7ca791",
"source_html_sha256": "8b8789c024b68515d1da53eccc0d25cef408b1be772fa9dba90535325c7ca791",
"additional_primary_sources": [
{
"source_url": "https://sigir2026.org/",
"resolved_url": "https://sigir2026.org/en-AU",
"http_status": 200,
"checked_at": "2026-11-08T11:56:14.986412+00:00",
"source_sha256": "1353484731cc9609ac713c79a32babeff9acfd75536c352f47ddba12c358f6df",
"source_html_sha256": "1353484731cc9609ac713c79a32babeff9acfd75536c352f47ddba12c358f6df"
}
],
"cutoff_year": 2026,
"expected_years": [
1971,
1978,
1979,
1980,
1981,
1982,
1983,
1984,
1985,
1986,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 1971,
"source_label": "SIGIR 1971",
"series_scope": "separate historical Information Storage and Retrieval event"
},
{
"year": 1978,
"source_label": "SIGIR 1978",
"series_scope": "annual SIGIR series"
},
{
"year": 1979,
"source_label": "SIGIR 1979",
"series_scope": "annual SIGIR series"
},
{
"year": 1980,
"source_label": "SIGIR 1980",
"series_scope": "annual SIGIR series"
},
{
"year": 1981,
"source_label": "SIGIR 1981",
"series_scope": "annual SIGIR series"
},
{
"year": 1982,
"source_label": "SIGIR 1982",
"series_scope": "annual SIGIR series"
},
{
"year": 1983,
"source_label": "SIGIR 1983",
"series_scope": "annual SIGIR series"
},
{
"year": 1984,
"source_label": "SIGIR 1984",
"series_scope": "annual SIGIR series"
},
{
"year": 1985,
"source_label": "SIGIR 1985",
"series_scope": "annual SIGIR series"
},
{
"year": 1986,
"source_label": "SIGIR 1986",
"series_scope": "annual SIGIR series"
},
{
"year": 1987,
"source_label": "SIGIR 1987",
"series_scope": "annual SIGIR series"
},
{
"year": 1988,
"source_label": "SIGIR 1988",
"series_scope": "annual SIGIR series"
},
{
"year": 1989,
"source_label": "SIGIR 1989",
"series_scope": "annual SIGIR series"
},
{
"year": 1990,
"source_label": "SIGIR 1990",
"series_scope": "annual SIGIR series"
},
{
"year": 1991,
"source_label": "SIGIR 1991",
"series_scope": "annual SIGIR series"
},
{
"year": 1992,
"source_label": "SIGIR 1992",
"series_scope": "annual SIGIR series"
},
{
"year": 1993,
"source_label": "SIGIR 1993",
"series_scope": "annual SIGIR series"
},
{
"year": 1994,
"source_label": "SIGIR 1994",
"series_scope": "annual SIGIR series"
},
{
"year": 1995,
"source_label": "SIGIR 1995",
"series_scope": "annual SIGIR series"
},
{
"year": 1996,
"source_label": "SIGIR 1996",
"series_scope": "annual SIGIR series"
},
{
"year": 1997,
"source_label": "SIGIR 1997",
"series_scope": "annual SIGIR series"
},
{
"year": 1998,
"source_label": "SIGIR 1998",
"series_scope": "annual SIGIR series"
},
{
"year": 1999,
"source_label": "SIGIR 1999",
"series_scope": "annual SIGIR series"
},
{
"year": 2000,
"source_label": "SIGIR 2000",
"series_scope": "annual SIGIR series"
},
{
"year": 2001,
"source_label": "SIGIR 2001",
"series_scope": "annual SIGIR series"
},
{
"year": 2002,
"source_label": "SIGIR 2002",
"series_scope": "annual SIGIR series"
},
{
"year": 2003,
"source_label": "SIGIR 2003",
"series_scope": "annual SIGIR series"
},
{
"year": 2004,
"source_label": "SIGIR 2004",
"series_scope": "annual SIGIR series"
},
{
"year": 2005,
"source_label": "SIGIR 2005",
"series_scope": "annual SIGIR series"
},
{
"year": 2006,
"source_label": "SIGIR 2006",
"series_scope": "annual SIGIR series"
},
{
"year": 2007,
"source_label": "SIGIR 2007",
"series_scope": "annual SIGIR series"
},
{
"year": 2008,
"source_label": "SIGIR 2008",
"series_scope": "annual SIGIR series"
},
{
"year": 2009,
"source_label": "SIGIR 2009",
"series_scope": "annual SIGIR series"
},
{
"year": 2010,
"source_label": "SIGIR 2010",
"series_scope": "annual SIGIR series"
},
{
"year": 2011,
"source_label": "SIGIR 2011",
"series_scope": "annual SIGIR series"
},
{
"year": 2012,
"source_label": "SIGIR 2012",
"series_scope": "annual SIGIR series"
},
{
"year": 2013,
"source_label": "SIGIR 2013",
"series_scope": "annual SIGIR series"
},
{
"year": 2014,
"source_label": "SIGIR 2014",
"series_scope": "annual SIGIR series"
},
{
"year": 2015,
"source_label": "SIGIR 2015",
"series_scope": "annual SIGIR series"
},
{
"year": 2016,
"source_label": "SIGIR 2016",
"series_scope": "annual SIGIR series"
},
{
"year": 2017,
"source_label": "SIGIR 2017",
"series_scope": "annual SIGIR series"
},
{
"year": 2018,
"source_label": "SIGIR 2018",
"series_scope": "annual SIGIR series"
},
{
"year": 2019,
"source_label": "SIGIR 2019",
"series_scope": "annual SIGIR series"
},
{
"year": 2020,
"source_label": "SIGIR 2020",
"series_scope": "annual SIGIR series"
},
{
"year": 2021,
"source_label": "SIGIR 2021",
"series_scope": "annual SIGIR series"
},
{
"year": 2022,
"source_label": "SIGIR 2022",
"series_scope": "annual SIGIR series"
},
{
"year": 2023,
"source_label": "SIGIR 2023",
"series_scope": "annual SIGIR series"
},
{
"year": 2024,
"source_label": "SIGIR 2024",
"series_scope": "annual SIGIR series"
},
{
"year": 2025,
"source_label": "SIGIR 2025",
"series_scope": "annual SIGIR series"
},
{
"year": 2026,
"source_label": "SIGIR 2026",
"series_scope": "annual SIGIR series"
}
],
"annual_series_years": [
1978,
1979,
1980,
1981,
1982,
1983,
1984,
1985,
1986,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"separate_historical_event_years": [
1971
],
"scope": "49 explicit history headings include1971InformationStorageandRetrieval event and48annual1978–2025entries; current2026officialpage identifies49thannualconference. Thus50familyeventyears, not50annualeditions. No1972–1977interpolation. Current website HTML metadata/embedded content confirms49th, rendered en-AU route has no readable lines in web tool. ICTIRco-location is not extraSIGIRmainacceptance; historicalnames and tracks remain distinct. Publicnegative scope still unverified."
}
+412
View File
@@ -0,0 +1,412 @@
{
"source_url": "https://www.auai.org/",
"checked_at": "2026-11-08T07:00:27.315635+00:00",
"source_html_sha256": "42138b961e725d6e1dbf5a336e991cbce1bb2f603fccb5aa9e776d079feea33f",
"cutoff_year": 2026,
"expected_years": [
1985,
1986,
1987,
1988,
1989,
1990,
1991,
1992,
1993,
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [],
"edition_entries": [
{
"year": 2025,
"official_entry": "41 2025 Rio de Janeiro, Brazil",
"links": [
{
"text": "Rio de Janeiro, Brazil",
"url": "https://www.auai.org/uai2025/"
}
]
},
{
"year": 2024,
"official_entry": "40 2024 Barcelona, Spain",
"links": [
{
"text": "Barcelona, Spain",
"url": "https://www.auai.org/uai2024/"
}
]
},
{
"year": 2023,
"official_entry": "39 2023 Pittsburgh, USA",
"links": [
{
"text": "Pittsburgh, USA",
"url": "https://www.auai.org/uai2023/"
}
]
},
{
"year": 2022,
"official_entry": "38 2022 Eindhoven, The Netherlands",
"links": [
{
"text": "Eindhoven, The Netherlands",
"url": "https://www.auai.org/uai2022/"
}
]
},
{
"year": 2021,
"official_entry": "37 2021 Virtual",
"links": [
{
"text": "Virtual",
"url": "https://www.auai.org/uai2021/"
}
]
},
{
"year": 2020,
"official_entry": "36 2020 Virtual",
"links": [
{
"text": "Virtual",
"url": "https://www.auai.org/uai2020/"
}
]
},
{
"year": 2019,
"official_entry": "35 2019 Tel Aviv, Israel",
"links": [
{
"text": "Tel Aviv, Israel",
"url": "https://www.auai.org/uai2019/"
}
]
},
{
"year": 2018,
"official_entry": "34 2018 Monterey, CA, USA",
"links": [
{
"text": "Monterey, CA, USA",
"url": "https://www.auai.org/uai2018/"
}
]
},
{
"year": 2017,
"official_entry": "33 2017 Sydney, Australia",
"links": [
{
"text": "Sydney, Australia",
"url": "https://www.auai.org/uai2017/"
}
]
},
{
"year": 2016,
"official_entry": "32 2016 New York, USA",
"links": [
{
"text": "New York, USA",
"url": "https://www.auai.org/uai2016/"
}
]
},
{
"year": 2015,
"official_entry": "31 2015 Amsterdam, Netherlands",
"links": [
{
"text": "Amsterdam, Netherlands",
"url": "https://www.auai.org/uai2015/"
}
]
},
{
"year": 2014,
"official_entry": "30 2014 Quebec City, Quebec, Canada",
"links": [
{
"text": "Quebec City, Quebec, Canada",
"url": "https://www.auai.org/uai2014/"
}
]
},
{
"year": 2013,
"official_entry": "29 2013 Bellevue, Washington, USA",
"links": [
{
"text": "Bellevue, Washington, USA",
"url": "https://www.auai.org/uai2013/"
}
]
},
{
"year": 2012,
"official_entry": "28 2012 Catalina Island, California, USA",
"links": [
{
"text": "Catalina Island, California, USA",
"url": "https://www.auai.org/uai2012/"
}
]
},
{
"year": 2011,
"official_entry": "27 2011 Barcelona, Spain",
"links": [
{
"text": "Barcelona, Spain",
"url": "https://www.auai.org/uai2011/"
}
]
},
{
"year": 2010,
"official_entry": "26 2010 Catalina Island, California, USA",
"links": [
{
"text": "Catalina Island, California, USA",
"url": "http://event.cwi.nl/uai2010/"
}
]
},
{
"year": 2009,
"official_entry": "25 2009 Montreal, Canada",
"links": [
{
"text": "Montreal, Canada",
"url": "https://www.auai.org/uai2009/"
}
]
},
{
"year": 2008,
"official_entry": "24 2008 Helsinki, Finland",
"links": [
{
"text": "Helsinki, Finland",
"url": "https://www.auai.org/uai2008/"
}
]
},
{
"year": 2007,
"official_entry": "23 2007 Vancouver, Canada",
"links": [
{
"text": "Vancouver, Canada",
"url": "https://www.auai.org/uai2007/"
}
]
},
{
"year": 2006,
"official_entry": "22 2006 Cambridge, Massachusetts, USA",
"links": [
{
"text": "Cambridge, Massachusetts, USA",
"url": "https://www.auai.org/uai2006/"
}
]
},
{
"year": 2005,
"official_entry": "21 2005 Edinburgh, Scotland, UK",
"links": [
{
"text": "Edinburgh, Scotland, UK",
"url": "https://www.auai.org/uai2005/"
}
]
},
{
"year": 2004,
"official_entry": "20 2004 Banff, Canada",
"links": [
{
"text": "Banff, Canada",
"url": "https://www.auai.org/uai2004/"
}
]
},
{
"year": 2003,
"official_entry": "19 2003 Acapulco, Mexico",
"links": [
{
"text": "Acapulco, Mexico",
"url": "https://www.auai.org/uai2003/"
}
]
},
{
"year": 2002,
"official_entry": "18 2002 Edmonton, Canada",
"links": [
{
"text": "Edmonton, Canada",
"url": "http://web.archive.org/web/20021201030651/http://www.cs.ucla.edu/~uai02/"
}
]
},
{
"year": 2001,
"official_entry": "17 2001 Seattle, Washington, USA",
"links": []
},
{
"year": 2000,
"official_entry": "16 2000 Stanford, California, USA",
"links": [
{
"text": "Stanford, California, USA",
"url": "https://www.auai.org/uai2000/"
}
]
},
{
"year": 1999,
"official_entry": "15 1999 Stockholm, Sweden",
"links": []
},
{
"year": 1998,
"official_entry": "14 1998 Madison, Wisconsin, USA",
"links": []
},
{
"year": 1997,
"official_entry": "13 1997 Providence, Rhode Island, USA",
"links": [
{
"text": "Providence, Rhode Island, USA",
"url": "https://www.auai.org/uai1997/"
}
]
},
{
"year": 1996,
"official_entry": "12 1996 Portland, Oregon, USA",
"links": [
{
"text": "Portland, Oregon, USA",
"url": "https://www.auai.org/uai1996/"
}
]
},
{
"year": 1995,
"official_entry": "11 1995 Montreal, Canada",
"links": [
{
"text": "Montreal, Canada",
"url": "https://www.auai.org/uai1995/"
}
]
},
{
"year": 1994,
"official_entry": "10 1994 Seattle, Washington, USA",
"links": [
{
"text": "Seattle, Washington, USA",
"url": "https://www.auai.org/uai1994/"
}
]
},
{
"year": 1993,
"official_entry": "9 1993 Washington, DC, USA",
"links": []
},
{
"year": 1992,
"official_entry": "8 1992 Stanford, California, USA",
"links": []
},
{
"year": 1991,
"official_entry": "7 1991 Los Angeles, California, USA",
"links": []
},
{
"year": 1990,
"official_entry": "6 1990 Cambridge, Massachusetts, USA",
"links": []
},
{
"year": 1989,
"official_entry": "5 1989 Windsor, Ontario, USA",
"links": []
},
{
"year": 1988,
"official_entry": "4 1988 Minneapolis, Minnesota, USA",
"links": []
},
{
"year": 1987,
"official_entry": "3 1987 Seattle, Washington, USA",
"links": []
},
{
"year": 1986,
"official_entry": "2 1986 Philadelphia, Pennsylvania, USA",
"links": []
},
{
"year": 1985,
"official_entry": "1 1985 Los Angeles, California, USA",
"links": []
}
],
"scope": "Official conference-year enumeration only. Entry links are recorded as published, not proof that every linked target was fetched or every track/paper/negative decision is covered.",
"current_edition_evidence": {
"source_url": "https://www.auai.org/uai2026/",
"checked_at": "2026-11-08T07:00:26.473380+00:00",
"source_html_sha256": "3cc4b89026fe83041838ffa0fc0a12902bbe0ea2ab6f00bb66665a27d95bb773",
"year": 2026,
"edition_number": 42
},
"publication_boundary": "1985–1990 collections were edited books; conference year and book publication year must remain separate. Root archive has some unlinked historical entries; missing links are not absent conferences."
}
@@ -0,0 +1,73 @@
{
"checked_on": "2026-11-08",
"scope": "Two boundedyear/main policyreviews, not actualRejectexport orcompletehistoricalpolicycensus. NoDBwrite.",
"checks": [
{
"venue": "ECCV",
"year": 2026,
"track": "main",
"status": "unknown",
"primary_url": "https://eccv.ecva.net/Conferences/2026/SubmissionPolicies",
"checked_on": "2026-11-08",
"evidence": [
{
"source_url": "https://eccv.ecva.net/Conferences/2026/AuthorGuide",
"resolved_url": "https://eccv.ecva.net/Conferences/2026/AuthorGuide",
"http_status": 200,
"checked_at": "2026-11-08T10:49:35.617521+00:00",
"source_sha256": "d6bd6656d5132b9e2c0c657fdb868fef1bac4710d0a2208927782d25233d974f"
},
{
"source_url": "https://eccv.ecva.net/Conferences/2026/SubmissionPolicies",
"resolved_url": "https://eccv.ecva.net/Conferences/2026/SubmissionPolicies",
"http_status": 200,
"checked_at": "2026-11-08T10:49:32.449048+00:00",
"source_sha256": "125f846b287ccfd1eea1ff5eb0b39fc169eeaf23960c38b4cecad7f69e86eb19"
},
{
"source_url": "https://eccv.ecva.net/Conferences/2026/AuthorContributionTypes",
"resolved_url": "https://eccv.ecva.net/Conferences/2026/AuthorContributionTypes",
"http_status": 200,
"checked_at": "2026-11-08T10:49:32.490036+00:00",
"source_sha256": "7756aacb752ebc827bad246fd8729618855977588d16f9dd66932b0364e2ba3c"
}
],
"note": "官方说明审稿中稿件仅分配的委员会可见,评审及作者回复永不公开;这未独立确认会后所有拒稿元数据的发布范围。投稿选择的一种primary Contribution Type是研究属性,不是轨道或最终决定;无逐篇原字段时不能用默认选项补写类型。"
},
{
"venue": "ECAI",
"year": 2025,
"track": "main",
"status": "unknown",
"primary_url": "https://ecai2025.org/call-for-papers/",
"checked_on": "2026-11-08",
"evidence": [
{
"source_url": "https://ecai2025.org/call-for-papers/",
"resolved_url": "https://ecai2025.org/call-for-papers/",
"http_status": 200,
"checked_at": "2026-11-08T10:49:38.238706+00:00",
"source_sha256": "f8d0360418662c17ab81b85ce37a3ac002a77efda0d05505c23b1e2e4a3e1170"
}
],
"note": "官方CFP说明投稿保密、可为识别重复投稿及减少重复评审与其他会议组织者共享;内部共享不是公开数据。过去12个月被其他会拒的作者可补充原评审及回复,不据此生成逐篇原拒稿、年份或决定。主会与PAIS/demo/journal展示分开;该年会后拒稿元数据范围未确认。"
}
],
"eccv2026_contribution_type_vocabulary": {
"source": {
"source_url": "https://eccv.ecva.net/Conferences/2026/AuthorContributionTypes",
"resolved_url": "https://eccv.ecva.net/Conferences/2026/AuthorContributionTypes",
"http_status": 200,
"checked_at": "2026-11-08T10:49:32.490036+00:00",
"source_sha256": "7756aacb752ebc827bad246fd8729618855977588d16f9dd66932b0364e2ba3c"
},
"labels": [
"Algorithms / General",
"Theory / Foundational",
"Applied / Systems",
"Datasets / Benchmarks",
"Concept & Feasibility"
],
"scope": "OneprimaryauthorselectedtypeforECCV2026;independentfromtopic/track/acceptance. PolicydefaultAlgorithms/Generalisnotsufficientperpaperevidencetofillmissingmetadata. Noautomaticcrossplatformtaxonomy mapping ornewannotationevents."
}
}
+139
View File
@@ -0,0 +1,139 @@
{
"source_url": "https://wsdm-conference.org/",
"resolved_url": "https://wsdm-conference.org/",
"http_status": 200,
"checked_at": "2026-11-08T11:54:42.458696+00:00",
"source_sha256": "681e529e2c513c111f9eea6887863690dd4e2d04add470cc79c81bb26f400736",
"source_html_sha256": "681e529e2c513c111f9eea6887863690dd4e2d04add470cc79c81bb26f400736",
"cutoff_year": 2026,
"expected_years": [
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027
],
"editions": [
{
"year": 2008,
"source_label": "WSDM 2008",
"source_url": "http://www.wsdm2009.org/wsdm2008.org/"
},
{
"year": 2009,
"source_label": "WSDM 2009",
"source_url": "http://www.wsdm2009.org/"
},
{
"year": 2010,
"source_label": "WSDM 2010",
"source_url": "http://www.wsdm-conference.org/2010/"
},
{
"year": 2011,
"source_label": "WSDM 2011",
"source_url": "http://www.wsdm2011.org/"
},
{
"year": 2012,
"source_label": "WSDM 2012",
"source_url": "http://www.wsdm2012.org/"
},
{
"year": 2013,
"source_label": "WSDM 2013",
"source_url": "http://www.dis.uniroma1.it/wsdm2013"
},
{
"year": 2014,
"source_label": "WSDM 2014",
"source_url": "http://www.wsdm-conference.org/2014"
},
{
"year": 2015,
"source_label": "WSDM 2015",
"source_url": "http://www.wsdm-conference.org/2015"
},
{
"year": 2016,
"source_label": "WSDM 2016",
"source_url": "http://www.wsdm-conference.org/2016"
},
{
"year": 2017,
"source_label": "WSDM 2017",
"source_url": "http://www.wsdm-conference.org/2017"
},
{
"year": 2018,
"source_label": "WSDM 2018",
"source_url": "http://www.wsdm-conference.org/2018"
},
{
"year": 2019,
"source_label": "WSDM 2019",
"source_url": "http://www.wsdm-conference.org/2019"
},
{
"year": 2020,
"source_label": "WSDM 2020",
"source_url": "http://www.wsdm-conference.org/2020"
},
{
"year": 2021,
"source_label": "WSDM 2021",
"source_url": "http://www.wsdm-conference.org/2021"
},
{
"year": 2022,
"source_label": "WSDM 2022",
"source_url": "http://www.wsdm-conference.org/2022"
},
{
"year": 2023,
"source_label": "WSDM 2023",
"source_url": "http://www.wsdm-conference.org/2023"
},
{
"year": 2024,
"source_label": "WSDM 2024",
"source_url": "http://www.wsdm-conference.org/2024"
},
{
"year": 2025,
"source_label": "WSDM 2025",
"source_url": "http://www.wsdm-conference.org/2025"
},
{
"year": 2026,
"source_label": "WSDM 2026",
"source_url": "http://www.wsdm-conference.org/2026"
}
],
"source_disagreements": [
{
"year": 2008,
"source_label": "WSDM 2008",
"linked_url": "http://www.wsdm2009.org/wsdm2008.org/",
"interpretation": "The official2008labelandStanforddescriptionlinkto2009domain. Keep badlinkreceipt; yearcomesfromactual2008labelanddescription, notredirecttarget. No2009duplicateedition."
}
],
"scope": "19actualconferenceyearlabels2008–2026, future2027excluded and2028callforproposalsnotaneventrow. Virtual2021/2022distinctfrominpersonclaims. Existing2026limitedpolicyretained; notproofperpaper/publicnegativecompleteness."
}
@@ -0,0 +1,201 @@
{
"format": 1,
"source_cache_sha256": "8a65562f3490497cada2919ec77827134beabd5ec9c3690dec3625e2318aa54e",
"records": [
{
"entry_id": "45",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/45/index.html",
"individual_sha256": "83bede6afc9a7039fae2dd1f28274a394418b34f5d5632590b913617580bda1a",
"title": "WISE - World Wide Information System for R&D; Efforts",
"authors": [
"Fritz Loseries",
"Veronika Samara",
"Bodo Urban"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "16",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/16/index.html",
"individual_sha256": "cf76da903eaeaa27d19857fdaa13220f6821559bf4ac22844fae10abbaa6f3f3",
"title": "The World Wide Web as a Tool for Collaborative Inter-Agency Projects: Creation of an Environmental Metadata Database for the Analysis of the Venice Lagoon Ecosystem.",
"authors": [
"Mirko Labbri"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "17",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/17/index.html",
"individual_sha256": "0578fec9c82e8f2f98c4de0f1bcc44011ebb84c53353fdcc423a69cf70673bc2",
"title": "NetRepreneur",
"authors": [
"Kari-Pekka Turtiainen",
"Antti Auer"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "29",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/29/index.html",
"individual_sha256": "624ad3f685de1163411e33e90488975d848a63243fd7ffbed0862c6fb58c4140",
"title": "Mosaic TueV 2.4.3: Multilingual GUI and Improvements towards User Friendliness",
"authors": [
"Mike Bretz",
"Uwe Koch",
"Paul de Bra"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "13",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/13/index.html",
"individual_sha256": "02409321a3403a94d8362a9862f4960386ea9c344fb47f4bcdf9eae128e8b46e",
"title": "Using a WWW Browser as an Alternative User Interface for Interactive Applications",
"authors": [
"Frank Lonczewski"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "36",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/36/index.html",
"individual_sha256": "ed9dada4ea5903cb8f0a4e75f2958416a6e32647fbf3530e58edd9abf26070ce",
"title": "HyperSource: A Hypermedia Program Development And Documentation System",
"authors": [
"Jan Oliver Borchers"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "57",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/57/index.html",
"individual_sha256": "3ad4206ad28a19823172cd2845f636fe7a461c251940e9a93deb8f6484b8a984",
"title": "Progressive Image Transmission Capability (PROTRAC) on the World Wide Web",
"authors": [
"Vojislav Lalich-Petrich",
"Gaurav Bhatia",
"Larry Davis"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "38",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/38/index.html",
"individual_sha256": "940370acc5e6a954b197053fe451e466a904d1f0ac82c8fe4e6ca455faf2c927",
"title": "Measuring the Web with Lycos",
"authors": [
"Michael L. Mauldin"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": "Official abstract listing has no abstract. Canonical HTML has body sections but no explicit abstract; body is not substituted as a summary."
},
{
"entry_id": "05",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/05/index.html",
"individual_sha256": "1858be87d6e7f47476e1cb8fb4793c0fce3b8a6ff653bcfd4a35089e0520f177",
"title": "Virtual Places - Adding people to the web",
"authors": [
"Yosi Mass"
],
"author_source": "author_index",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": "Official abstract listing and canonical HTML have no abstract. Canonical page identifies a contact and links PostScript; no full-text download. Author identity comes from author index, not inferred from contact role."
},
{
"entry_id": "37",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/37/index.html",
"individual_sha256": "b700a0a51b7a82a5f88373ae0283bb369d1cf6f455acff7d91cd7313fa8b3adf",
"title": "The Internet Public Library: Serving a Global Community",
"authors": [
"Susan Schweitzer"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "41",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/41/index.html",
"individual_sha256": "397b474109f9c1240a77d0f490f2b02dd35fae93febbb7397d1b2a31759a8ec1",
"title": "Graphical Browsing in the WorldWideWeb and the MultiMedia Forum",
"authors": [
"Rainer Pagé",
"Klaus Süllow"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "47",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/47/index.html",
"individual_sha256": "52eb4bfdd658730a222c98170b72dabf9cbcc5ffd2ada1e900b826baf2b02833",
"title": "Interoperating Advanced Hypermedia Systems with WWW",
"authors": [
"Jian Zhang",
"Martin Fruehauf",
"Thomas Kirste"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "50",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/50/index.html",
"individual_sha256": "8dc8b0561bd8b1b106c5b209a973c695c3cc9df5288450d4a01fe32541476b7e",
"title": "Web Enabled Agile Manufacturing",
"authors": [
"S. V. Iyer",
"T. Singh",
"U. Ravaioli",
"R. E. DeVor",
"S. G. Kapoor",
"G. Veknatasubramian"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "55",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/55/index.html",
"individual_sha256": "21780cd4047f513e8c9aeced5247002e27cf71719f08de85c6531b57a9e5058d",
"title": "Weblets: Fundamental Building Blocks for WWW Tools",
"authors": [
"Thomas J. Watt Jr."
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
},
{
"entry_id": "59",
"individual_url": "https://archives.iw3c2.org/www3/proceedings/posters/59/index.html",
"individual_sha256": "fed4cc9dcaee350a12c5e4b6fa9c99be9bead25a81632512d31566400d3d0fad",
"title": "Usenet and the World-Wide Web",
"authors": [
"M. L. Grant"
],
"author_source": "canonical_byline",
"reason": "Reviewed canonical H1 and explicit authorship for this exact linked poster entry; retain abstract-heading and author-index title variants without fuzzy matching.",
"missing_abstract_reason": ""
}
]
}
@@ -0,0 +1,747 @@
{
"checked_at": "2026-11-08",
"status": "primary_source_inventory_complete_not_normalized_or_imported",
"sources": [
{
"url": "https://archives.iw3c2.org/proceedings/www1/index.html",
"resolved": "https://archives.iw3c2.org/proceedings/www1/index.html",
"http_status": 200,
"sha256": "dc0ca83f552c3bb89b5c8cf40a688e41874087a0ac29979720a53120938f818a",
"checked_at": "2026-11-08T13:11:50.509805+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/proceedings/www2/index.html",
"resolved": "https://archives.iw3c2.org/proceedings/www2/index.html",
"http_status": 200,
"sha256": "ead63295f45dc68bbd55e3c1f4f28f5fbaed0a1e902068a0e16073ab277a25cc",
"checked_at": "2026-11-08T13:11:52.335785+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/proceedings/www3/index.html",
"resolved": "https://archives.iw3c2.org/proceedings/www3/index.html",
"http_status": 200,
"sha256": "5a4bfa0e44d3723500ced8c5375bb1d5447838ab91d3c62cf21a3ac5fd533f74",
"checked_at": "2026-11-08T13:11:53.350674+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/proceedings.html",
"resolved": "https://archives.iw3c2.org/www3/proceedings/proceedings.html",
"http_status": 200,
"sha256": "93457641ea3291dc250af40c284f3c9f7df34830d383bc6e972249b7e5c50792",
"checked_at": "2026-11-08T13:11:54.408737+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www1/Proceedings.html",
"resolved": "https://archives.iw3c2.org/www1/Proceedings.html",
"http_status": 200,
"sha256": "ffc8766e1771398988d4c0ef1c648510e4ab6c689a94b675a3e6f068ab88e20d",
"checked_at": "2026-11-08T13:11:55.626468+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www1/PrelimProcs.html",
"resolved": "https://archives.iw3c2.org/www1/PrelimProcs.html",
"http_status": 200,
"sha256": "f2e0e0efcdd748059597a1d82bacd30901a5e7bf72b2d21df2307b79892ca616",
"bytes": 21649,
"checked_at": "2026-11-08T13:12:19.093459+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/WWW2_Proceedings.html",
"resolved": "https://archives.iw3c2.org/www2/Proceedings/WWW2_Proceedings.html",
"http_status": 200,
"sha256": "62bcb038775cdffa50454037cbd0db60255bc52c190691adaab9a286e7c84c76",
"bytes": 3052,
"checked_at": "2026-11-08T13:12:18.071445+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/papers/author.html",
"resolved": "https://archives.iw3c2.org/www3/proceedings/papers/author.html",
"http_status": 200,
"sha256": "19aa53681f21b33e2f126ea4e050a5843cf27b55989fde6b53fca1a5875ecb23",
"bytes": 17760,
"checked_at": "2026-11-08T13:12:18.257055+00:00",
"decoded_as": "iso-8859-1"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/papers/session.html",
"resolved": "https://archives.iw3c2.org/www3/proceedings/papers/session.html",
"http_status": 200,
"sha256": "df9d09c330c6eb30c1138e63175bc2079c417db4a77e8577367d25edf29949a9",
"bytes": 5207,
"checked_at": "2026-11-08T13:12:19.798816+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/papers/abstract.html",
"resolved": "https://archives.iw3c2.org/www3/proceedings/papers/abstract.html",
"http_status": 200,
"sha256": "dd6861a4f9905c690ae59beea8dc2e7214d6349c001f5a6101f17088753d0f2b",
"bytes": 47315,
"checked_at": "2026-11-08T13:12:20.090797+00:00",
"decoded_as": "iso-8859-1"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/posters/author.html",
"resolved": "https://archives.iw3c2.org/www3/proceedings/posters/author.html",
"http_status": 200,
"sha256": "f0d20819e675874b67527675eb96c633117f412790daa1477cb7da17ac0ae679",
"bytes": 17561,
"checked_at": "2026-11-08T13:12:20.189771+00:00",
"decoded_as": "utf-8"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/posters/abstract.html",
"resolved": "https://archives.iw3c2.org/www3/proceedings/posters/abstract.html",
"http_status": 200,
"sha256": "bb1cbbc0391a6168947763e8aa2edc61a0e2a48634dda421b686250c68d693c0",
"bytes": 47202,
"checked_at": "2026-11-08T13:12:21.727587+00:00",
"decoded_as": "utf-8"
}
],
"events": [
{
"year": 1994,
"event_key": "www-1994-spring",
"source_url": "https://archives.iw3c2.org/www1/PrelimProcs.html",
"title_field_occurrences": 50,
"homepage_formal_presentations_claim": 49,
"count_discrepancy": "50 explicit Title fields vs homepage49 formal presentations; per-entry audit required, neither number is an accepted-paper total.",
"track_scope": "Some keyword lines explicitly say BUSINESS TRACK?; preserve raw scope, not all regularmain.",
"abstracts": "Not on this HTML list; PDF files not fetched.",
"journal_boundary": "Official publication note says journal specialissue contains selected fullpapers plus abstracts ofotherpapers; not a full conference acceptance listing."
},
{
"year": 1994,
"event_key": "www-1994-fall",
"source_url": "https://archives.iw3c2.org/www2/Proceedings/WWW2_Proceedings.html",
"top_level_categories": 34,
"scope": "Categories include Birds ofaFeather, DevelopersDay, tutorials, products as well as papers. No individualpaper count inferred from34categories; unlinked title does notmeanReject."
},
{
"year": 1995,
"event_key": "www-1995-spring",
"source_url": "https://archives.iw3c2.org/www3/proceedings/proceedings.html",
"papers": {
"author_index_link_occurrences": 90,
"distinct_author_index_entry_ids": 38,
"session_index_entry_ids": 38,
"abstract_index_entry_ids": 38,
"all_three_id_sets_equal": true,
"entry_ids": [
"44",
"46",
"47",
"48",
"49",
"50",
"51",
"52",
"54",
"55",
"58",
"59",
"60",
"62",
"65",
"67",
"68",
"70",
"72",
"75",
"76",
"77",
"78",
"79",
"80",
"82",
"84",
"86",
"87",
"88",
"89",
"90",
"94",
"95",
"97",
"100",
"104",
"105"
],
"literal_url_sets_equal": false,
"url_discrepancy": {
"entry_id": "80",
"author_and_session": "80/userpatterns/UserPatterns.Paper4.formatted.html",
"abstract": "80/userpatterns/ UserPatterns.Paper4.formatted.html",
"action": "Retain raw malformed href; use exact same event/entry ID corroborated byboth otherindexes, neverfuzzytitle-only join."
}
},
"posters": {
"author_index_link_occurrences": 83,
"distinct_linked_author_index_entry_ids": 47,
"abstract_index_entry_ids": 53,
"abstract_only_entry_ids": [
"37",
"41",
"47",
"50",
"55",
"59"
],
"scope": "53 linked poster abstractentries are not 53 mainpapers; authorindexhasplaceholder#links andsuspectperson/place strings, so missinglinks ornames requireper-entry verification.",
"entry_ids": [
"01",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"26",
"27",
"28",
"29",
"30",
"31",
"32",
"33",
"34",
"35",
"36",
"37",
"38",
"40",
"41",
"42",
"43",
"44",
"45",
"46",
"47",
"48",
"50",
"51",
"52",
"53",
"54",
"55",
"56",
"57",
"58",
"59",
"60"
]
},
"separate_not_fetched": [
"Tutorial notes",
"Workshop proceedings",
"Developers Day notes"
]
}
],
"production_boundary": {
"existing_www1995_fall_edition_id": 1212,
"existing_fall_submissions": 59,
"new_source_rows_imported": 0,
"source_record_ids_assigned": false,
"no_rejected_decision_acquired": true,
"no_pdf_downloaded": true
},
"next_actions": [
"Implementmaintainedcollectorwithsourcecaching,exactevent/trackidentity,sourceevidenceandparserfixtures;build/testonlyremoteapprovedrunner.",
"ResolveWWW1count/scopeandWWW2category-per-itemboundariesbeforeacceptedmainassignment.",
"NormalizeWWW3papers/postersindependently,verifyabstractsauthorsandmalformedhrefhandling,preflightcurrentPGidentitiesbeforeimport.",
"Productioneventmigrationindependentlyaccepted f5dbb8a8;preserve59Fallrows,no reimport. Newearlysourcepapersstillnotnormalizedorimported."
],
"server_raw_cache": {
"status": "46of46HTML_sources_HTTP200",
"directory": "/data/paper-index/collected/www-early-archive-source-v1",
"manifest_sha256": "c9388ccef44486e0684c9ee9e8620a465cdc4574e6bc9ea9391d743e01a3312c",
"html_bytes": 222803,
"sources": [
{
"url": "https://archives.iw3c2.org/proceedings/www1/index.html",
"checked_at": "2026-11-08T13:23:28.781495+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/proceedings/www1/index.html",
"content_type": "text/html",
"file": "source-00.html",
"bytes": 98,
"sha256": "dc0ca83f552c3bb89b5c8cf40a688e41874087a0ac29979720a53120938f818a"
},
{
"url": "https://archives.iw3c2.org/proceedings/www2/index.html",
"checked_at": "2026-11-08T13:23:28.782745+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/proceedings/www2/index.html",
"content_type": "text/html",
"file": "source-01.html",
"bytes": 115,
"sha256": "ead63295f45dc68bbd55e3c1f4f28f5fbaed0a1e902068a0e16073ab277a25cc"
},
{
"url": "https://archives.iw3c2.org/proceedings/www3/index.html",
"checked_at": "2026-11-08T13:23:28.784438+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/proceedings/www3/index.html",
"content_type": "text/html",
"file": "source-02.html",
"bytes": 110,
"sha256": "5a4bfa0e44d3723500ced8c5375bb1d5447838ab91d3c62cf21a3ac5fd533f74"
},
{
"url": "https://archives.iw3c2.org/www1/PrelimProcs.html",
"checked_at": "2026-11-08T13:23:29.910554+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www1/PrelimProcs.html",
"content_type": "text/html",
"file": "source-03.html",
"bytes": 21649,
"sha256": "f2e0e0efcdd748059597a1d82bacd30901a5e7bf72b2d21df2307b79892ca616"
},
{
"url": "https://archives.iw3c2.org/www1/Proceedings.html",
"checked_at": "2026-11-08T13:23:29.911932+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www1/Proceedings.html",
"content_type": "text/html",
"file": "source-04.html",
"bytes": 723,
"sha256": "ffc8766e1771398988d4c0ef1c648510e4ab6c689a94b675a3e6f068ab88e20d"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Agents.html",
"checked_at": "2026-11-08T13:23:29.914010+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Agents.html",
"content_type": "text/html",
"file": "source-05.html",
"bytes": 1197,
"sha256": "556a583cde97ff393ef6cf7358ea823bb943513be9266eb9d4af5e19d20d88dd"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Arts.html",
"checked_at": "2026-11-08T13:23:30.679804+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Arts.html",
"content_type": "text/html",
"file": "source-06.html",
"bytes": 2155,
"sha256": "19226f05834727aee9be6fad4183e5360a4d0307db4bfb86459e0f2495035796"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Astronomy.html",
"checked_at": "2026-11-08T13:23:30.716223+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Astronomy.html",
"content_type": "text/html",
"file": "source-07.html",
"bytes": 1912,
"sha256": "2f8c66b1b175f18367774c407678b71d7f8fcfcd7a5593681e65ce7bf7356bfa"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Autools.html",
"checked_at": "2026-11-08T13:23:30.929960+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Autools.html",
"content_type": "text/html",
"file": "source-08.html",
"bytes": 2386,
"sha256": "e477b77a2c90797fabe3caa5feae81e93f4c1e4c4cc62ee17b9566d3b7630f91"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/BioChem.html",
"checked_at": "2026-11-08T13:23:31.471326+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/BioChem.html",
"content_type": "text/html",
"file": "source-09.html",
"bytes": 1220,
"sha256": "ef6284cb2c65c83b821e2f7b484ff39513223b2a7285d02b4f4cdb63d43c76eb"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/BofF.html",
"checked_at": "2026-11-08T13:23:31.477667+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/BofF.html",
"content_type": "text/html",
"file": "source-10.html",
"bytes": 820,
"sha256": "83405fc3732a470d0c431116d36b0c0f1c0dbdef0e04172891a1ff04034665a1"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/CSCW.html",
"checked_at": "2026-11-08T13:23:31.717781+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/CSCW.html",
"content_type": "text/html",
"file": "source-11.html",
"bytes": 2212,
"sha256": "c1cbf984dca24d81e4547a12307219431ec5d99d041ec126bd981c018ff648e4"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Campus.Infosys.html",
"checked_at": "2026-11-08T13:23:32.251580+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Campus.Infosys.html",
"content_type": "text/html",
"file": "source-12.html",
"bytes": 1488,
"sha256": "cc9c742790f6375ecef16ab291227cc5a66b2a9525306268b788b1b73f2baf72"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/ComEc.html",
"checked_at": "2026-11-08T13:23:32.262571+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/ComEc.html",
"content_type": "text/html",
"file": "source-13.html",
"bytes": 1661,
"sha256": "c64889cfb1b34f0c28429ae5b891dc7864587a790f29badca970e827f0f30bf5"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/CorInfSys.html",
"checked_at": "2026-11-08T13:23:32.472184+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/CorInfSys.html",
"content_type": "text/html",
"file": "source-14.html",
"bytes": 3472,
"sha256": "90de7baec3289086dcc76bb2f2ba8c7cb98237054f0a1a5952f1e9389030d5d1"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/DDay.html",
"checked_at": "2026-11-08T13:23:33.044684+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/DDay.html",
"content_type": "text/html",
"file": "source-15.html",
"bytes": 6461,
"sha256": "de191af59155231919b14aa3d74386e8f41fe38529467f9b33cee6f0f381f7da"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/EarSci.html",
"checked_at": "2026-11-08T13:23:33.051137+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/EarSci.html",
"content_type": "text/html",
"file": "source-16.html",
"bytes": 1869,
"sha256": "b0c1314d65cb8ac4a618aec136e438e8f3af016de9636f33302308ab5675222c"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Educ.html",
"checked_at": "2026-11-08T13:23:33.254789+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Educ.html",
"content_type": "text/html",
"file": "source-17.html",
"bytes": 4982,
"sha256": "318471e7e2b37398752817ae5f8bacbc03c1c3e61f32d50f4aa1e9ae4494aca9"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/EvolvingInter.html",
"checked_at": "2026-11-08T13:23:33.798705+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/EvolvingInter.html",
"content_type": "text/html",
"file": "source-18.html",
"bytes": 1744,
"sha256": "340697fae542f59333c7feb330b251165ace4a69455b48325fb4ac097002c2a5"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Fin.html",
"checked_at": "2026-11-08T13:23:33.803029+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Fin.html",
"content_type": "text/html",
"file": "source-19.html",
"bytes": 1035,
"sha256": "d7e64c662e3961ca1258047ac727e3676f6cb91838ac6c310e20b84e8c6b257b"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/GenSci.html",
"checked_at": "2026-11-08T13:23:34.040529+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/GenSci.html",
"content_type": "text/html",
"file": "source-20.html",
"bytes": 742,
"sha256": "3f3e469dea3dc36877b3a67ecb9389d7c0e3b5d1d1f7835e5be50d5bdca1fac3"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/HCI.html",
"checked_at": "2026-11-08T13:23:34.601259+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/HCI.html",
"content_type": "text/html",
"file": "source-21.html",
"bytes": 1821,
"sha256": "ad75aa91e433101d580552e60831894d2d57904076c090fb5f3511386abd718f"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Int.html",
"checked_at": "2026-11-08T13:23:34.603284+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Int.html",
"content_type": "text/html",
"file": "source-22.html",
"bytes": 987,
"sha256": "63a345fea731b8613afb66e5889b0e66196ae1eaa3cd8b271daafbb84d57bdde"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/LibApps.html",
"checked_at": "2026-11-08T13:23:34.796908+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/LibApps.html",
"content_type": "text/html",
"file": "source-23.html",
"bytes": 1373,
"sha256": "6f8bd049f10d036a5c093a640a8d9d855d038f103dd9204dbfab7106cc5be99d"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/LocalCom.html",
"checked_at": "2026-11-08T13:23:35.361878+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/LocalCom.html",
"content_type": "text/html",
"file": "source-24.html",
"bytes": 937,
"sha256": "1701270af1d2cfc80b8944ebb846374b6d0af5bc7f17c953ac0e25dd048a8466"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/MedEd.html",
"checked_at": "2026-11-08T13:23:35.384200+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/MedEd.html",
"content_type": "text/html",
"file": "source-25.html",
"bytes": 1297,
"sha256": "af813365720e6d57abf015023f3dcb489b30c6e2d69a252497251a46dd712423"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/MedTrack.html",
"checked_at": "2026-11-08T13:23:35.552044+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/MedTrack.html",
"content_type": "text/html",
"file": "source-26.html",
"bytes": 1631,
"sha256": "9fa188317d5ba0ac6f251911e9a5b939431dc7f952706a7229f95a891ad0afe8"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Meta.html",
"checked_at": "2026-11-08T13:23:36.121248+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Meta.html",
"content_type": "text/html",
"file": "source-27.html",
"bytes": 612,
"sha256": "d7726ccc65bddf3c65a5ea96bfe56aba45c2313de25437e641e245dc22630d97"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Museum.html",
"checked_at": "2026-11-08T13:23:36.143441+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Museum.html",
"content_type": "text/html",
"file": "source-28.html",
"bytes": 1004,
"sha256": "b9421c11f64e02b470f643a50f226545256047545f3a6db4a526cd031af67ff0"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/NationWideSites.html",
"checked_at": "2026-11-08T13:23:36.340067+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/NationWideSites.html",
"content_type": "text/html",
"file": "source-29.html",
"bytes": 1457,
"sha256": "bcfe65ee71d714e25bfac73a9e568c4073287ead07198c52e40499d203032e21"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Overviews.html",
"checked_at": "2026-11-08T13:23:36.903238+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Overviews.html",
"content_type": "text/html",
"file": "source-30.html",
"bytes": 1212,
"sha256": "dc4313537799b0e33d95a53183faaec0c1841e1359c2dd27721e33331df53239"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Prod.html",
"checked_at": "2026-11-08T13:23:36.914194+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Prod.html",
"content_type": "text/html",
"file": "source-31.html",
"bytes": 968,
"sha256": "37cf01790b2536ebbaf7ebf6398fc905db1e481bd0bfbabd9a91bd2fb447dab4"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Pub.html",
"checked_at": "2026-11-08T13:23:37.127844+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Pub.html",
"content_type": "text/html",
"file": "source-32.html",
"bytes": 2096,
"sha256": "e5c17f3e74574795c7458da87bc121d95104d5d7e4409a560041c34661ea66f7"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Searching.html",
"checked_at": "2026-11-08T13:23:37.657431+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Searching.html",
"content_type": "text/html",
"file": "source-33.html",
"bytes": 2813,
"sha256": "7aea8a29d7fe7d93da1df5969396c51db42b81517158f7637a0f7816deac8449"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Security.html",
"checked_at": "2026-11-08T13:23:37.668203+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Security.html",
"content_type": "text/html",
"file": "source-34.html",
"bytes": 1223,
"sha256": "75e91b9c97e78af9202d56921116b3897b12d72f2cad34cd969e943a6237198c"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/SocialSci.html",
"checked_at": "2026-11-08T13:23:37.882372+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/SocialSci.html",
"content_type": "text/html",
"file": "source-35.html",
"bytes": 1167,
"sha256": "3c0e1d58b033cfab6de6d507272374f88aa1901ad33b483bc571a89a1d7ede6a"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/Tutor.html",
"checked_at": "2026-11-08T13:23:38.420164+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/Tutor.html",
"content_type": "text/html",
"file": "source-36.html",
"bytes": 2462,
"sha256": "dabe18d58d19b184bcf44ed5b131c08229301ffe6fc3ec641bf025883da007ef"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/VR.html",
"checked_at": "2026-11-08T13:23:38.456039+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/VR.html",
"content_type": "text/html",
"file": "source-37.html",
"bytes": 1226,
"sha256": "ba3d0f123456170a62c201626526b60a1f362aa4f1cd02db0b958da3796e2cfa"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/WWW2_Proceedings.html",
"checked_at": "2026-11-08T13:23:38.673738+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/WWW2_Proceedings.html",
"content_type": "text/html",
"file": "source-38.html",
"bytes": 3052,
"sha256": "62bcb038775cdffa50454037cbd0db60255bc52c190691adaab9a286e7c84c76"
},
{
"url": "https://archives.iw3c2.org/www2/Proceedings/WebProd.html",
"checked_at": "2026-11-08T13:23:39.177032+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www2/Proceedings/WebProd.html",
"content_type": "text/html",
"file": "source-39.html",
"bytes": 862,
"sha256": "a8bf4a7d9dd597c7fc1fe2e782319c2f12e5ddfdb4e823cd1f55c3738af07924"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/papers/abstract.html",
"checked_at": "2026-11-08T13:23:39.239517+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www3/proceedings/papers/abstract.html",
"content_type": "text/html",
"file": "source-40.html",
"bytes": 47315,
"sha256": "dd6861a4f9905c690ae59beea8dc2e7214d6349c001f5a6101f17088753d0f2b"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/papers/author.html",
"checked_at": "2026-11-08T13:23:39.462217+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www3/proceedings/papers/author.html",
"content_type": "text/html",
"file": "source-41.html",
"bytes": 17760,
"sha256": "19aa53681f21b33e2f126ea4e050a5843cf27b55989fde6b53fca1a5875ecb23"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/papers/session.html",
"checked_at": "2026-11-08T13:23:40.476927+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www3/proceedings/papers/session.html",
"content_type": "text/html",
"file": "source-42.html",
"bytes": 5207,
"sha256": "df9d09c330c6eb30c1138e63175bc2079c417db4a77e8577367d25edf29949a9"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/posters/abstract.html",
"checked_at": "2026-11-08T13:23:40.702777+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www3/proceedings/posters/abstract.html",
"content_type": "text/html",
"file": "source-43.html",
"bytes": 47202,
"sha256": "bb1cbbc0391a6168947763e8aa2edc61a0e2a48634dda421b686250c68d693c0"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/posters/author.html",
"checked_at": "2026-11-08T13:23:40.952774+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www3/proceedings/posters/author.html",
"content_type": "text/html",
"file": "source-44.html",
"bytes": 17561,
"sha256": "f0d20819e675874b67527675eb96c633117f412790daa1477cb7da17ac0ae679"
},
{
"url": "https://archives.iw3c2.org/www3/proceedings/proceedings.html",
"checked_at": "2026-11-08T13:23:41.262929+00:00",
"status": 200,
"resolved_url": "https://archives.iw3c2.org/www3/proceedings/proceedings.html",
"content_type": "text/html",
"file": "source-45.html",
"bytes": 1507,
"sha256": "93457641ea3291dc250af40c284f3c9f7df34830d383bc6e972249b7e5c50792"
}
],
"normalized": false,
"imported": false,
"PDF_downloaded": false
}
}
+357
View File
@@ -0,0 +1,357 @@
{
"source_url": "https://www2024.thewebconf.org/about/the-web-conference/",
"resolved_url": "https://www2024.thewebconf.org/about/the-web-conference/",
"http_status": 200,
"checked_at": "2026-11-08T11:54:48.803606+00:00",
"source_sha256": "fefa73c83154fe329f3c85d338fdbcae00c02292d1e8bdd4397561dff20fb20c",
"source_html_sha256": "fefa73c83154fe329f3c85d338fdbcae00c02292d1e8bdd4397561dff20fb20c",
"additional_primary_sources": [
{
"source_url": "https://thewebconf.org/",
"resolved_url": "https://thewebconf.org/",
"http_status": 200,
"checked_at": "2026-11-08T11:54:44.622249+00:00",
"source_sha256": "ed617c308779eaf08458d9d64b02eb01b799c2579812f766d7c6c04811079f3b",
"source_html_sha256": "ed617c308779eaf08458d9d64b02eb01b799c2579812f766d7c6c04811079f3b"
}
],
"cutoff_year": 2026,
"expected_years": [
1994,
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026
],
"excluded_future_years": [
2027,
2028
],
"editions": [
{
"year": 1994,
"dates_label": "May 25-27, 1994",
"location_label": "CERN, Geneva, Switzerland",
"source_url": "https://thewebconf.org/www1",
"census_event_key": "www:1994:may-25-27-1994"
},
{
"year": 1994,
"dates_label": "October 17-20, 1994",
"location_label": "Chicago, IL (USA)",
"source_url": "https://thewebconf.org/www2",
"census_event_key": "www:1994:october-17-20-1994"
},
{
"year": 1995,
"dates_label": "April 10-14, 1995",
"location_label": "Darmstadt, Germany",
"source_url": "https://thewebconf.org/www3",
"census_event_key": "www:1995:april-10-14-1995"
},
{
"year": 1995,
"dates_label": "December 11-14, 1995",
"location_label": "Boston, MA (USA)",
"source_url": "https://thewebconf.org/www4",
"census_event_key": "www:1995:december-11-14-1995"
},
{
"year": 1996,
"dates_label": "May 6-10, 1996",
"location_label": "Paris, France",
"source_url": "https://thewebconf.org/www5",
"census_event_key": "www:1996:may-6-10-1996"
},
{
"year": 1997,
"dates_label": "April 7-11, 1997",
"location_label": "Santa Clara, CA (USA)",
"source_url": "https://thewebconf.org/www6",
"census_event_key": "www:1997:april-7-11-1997"
},
{
"year": 1998,
"dates_label": "April 14-18, 1998",
"location_label": "Brisbane, Australia",
"source_url": "https://thewebconf.org/www7",
"census_event_key": "www:1998:april-14-18-1998"
},
{
"year": 1999,
"dates_label": "May 11-14, 1999",
"location_label": "Toronto, Canada",
"source_url": "https://thewebconf.org/www8",
"census_event_key": "www:1999:may-11-14-1999"
},
{
"year": 2000,
"dates_label": "May 15-19, 2000",
"location_label": "Amsterdam, The Netherlands",
"source_url": "https://thewebconf.org/www9",
"census_event_key": "www:2000:may-15-19-2000"
},
{
"year": 2001,
"dates_label": "May 1-5, 2001",
"location_label": "Hong Kong, China",
"source_url": "https://thewebconf.org/www10",
"census_event_key": "www:2001:may-1-5-2001"
},
{
"year": 2002,
"dates_label": "May 6-11, 2002",
"location_label": "Honolulu, HI (USA)",
"source_url": "https://thewebconf.org/www2002",
"census_event_key": "www:2002:may-6-11-2002"
},
{
"year": 2003,
"dates_label": "May 20-24, 2003",
"location_label": "Budapest, Hungary",
"source_url": "https://thewebconf.org/www2003",
"census_event_key": "www:2003:may-20-24-2003"
},
{
"year": 2004,
"dates_label": "May 17-22, 2004",
"location_label": "New York, NY (USA)",
"source_url": "https://thewebconf.org/www2004",
"census_event_key": "www:2004:may-17-22-2004"
},
{
"year": 2005,
"dates_label": "May 10-14, 2005",
"location_label": "Chiba, Japan",
"source_url": "https://thewebconf.org/www2005",
"census_event_key": "www:2005:may-10-14-2005"
},
{
"year": 2006,
"dates_label": "May 22-26, 2006",
"location_label": "Edinburgh, Scotland (UK)",
"source_url": "https://thewebconf.org/www2006",
"census_event_key": "www:2006:may-22-26-2006"
},
{
"year": 2007,
"dates_label": "May 8-12, 2007",
"location_label": "Banff, Canada",
"source_url": "https://thewebconf.org/www2007",
"census_event_key": "www:2007:may-8-12-2007"
},
{
"year": 2008,
"dates_label": "April 21-25, 2008",
"location_label": "Beijing, China",
"source_url": "https://thewebconf.org/www2008",
"census_event_key": "www:2008:april-21-25-2008"
},
{
"year": 2009,
"dates_label": "April 20-24, 2009",
"location_label": "Madrid, Spain",
"source_url": "https://thewebconf.org/www2009",
"census_event_key": "www:2009:april-20-24-2009"
},
{
"year": 2010,
"dates_label": "April 26-30, 2010",
"location_label": "Raleigh, NC (USA)",
"source_url": "https://thewebconf.org/www2010",
"census_event_key": "www:2010:april-26-30-2010"
},
{
"year": 2011,
"dates_label": "March 28-April 1, 2011",
"location_label": "Hyderabad, India",
"source_url": "https://thewebconf.org/www2011",
"census_event_key": "www:2011:march-28-april-1-2011"
},
{
"year": 2012,
"dates_label": "April 16-20, 2012",
"location_label": "Lyon, France",
"source_url": "https://thewebconf.org/www2012",
"census_event_key": "www:2012:april-16-20-2012"
},
{
"year": 2013,
"dates_label": "May 13-17, 2013",
"location_label": "Rio de Janeiro, Brazil",
"source_url": "https://thewebconf.org/www2013",
"census_event_key": "www:2013:may-13-17-2013"
},
{
"year": 2014,
"dates_label": "May 7-11, 2014",
"location_label": "Seoul, South Korea",
"source_url": "https://thewebconf.org/www2014",
"census_event_key": "www:2014:may-7-11-2014"
},
{
"year": 2015,
"dates_label": "May 18-22, 2015",
"location_label": "Florence, Italy",
"source_url": "https://thewebconf.org/www2015",
"census_event_key": "www:2015:may-18-22-2015"
},
{
"year": 2016,
"dates_label": "April 11-15, 2016",
"location_label": "Montreal, Canada",
"source_url": "https://thewebconf.org/www2016",
"census_event_key": "www:2016:april-11-15-2016"
},
{
"year": 2017,
"dates_label": "April 3-7, 2017",
"location_label": "Perth, Western Australia",
"source_url": "https://thewebconf.org/www2017",
"census_event_key": "www:2017:april-3-7-2017"
},
{
"year": 2018,
"dates_label": "April 23-27, 2018",
"location_label": "Lyon, France",
"source_url": "https://thewebconf.org/www2018",
"census_event_key": "www:2018:april-23-27-2018"
},
{
"year": 2019,
"dates_label": "May 13-17 2019",
"location_label": "San Francisco, California, USA",
"source_url": "https://thewebconf.org/www2019",
"census_event_key": "www:2019:may-13-17-2019"
},
{
"year": 2020,
"dates_label": "April 20-24, 2020",
"location_label": "Taipei",
"source_url": "https://thewebconf.org/www2020",
"census_event_key": "www:2020:april-20-24-2020"
},
{
"year": 2021,
"dates_label": "April 19-23, 2021",
"location_label": "Ljubljana, Slovenia",
"source_url": "https://thewebconf.org/www2021",
"census_event_key": "www:2021:april-19-23-2021"
},
{
"year": 2022,
"dates_label": "April 25-20, 2022",
"location_label": "Lyon, France",
"source_url": "https://www2022.thewebconf.org/",
"census_event_key": "www:2022:april-25-20-2022"
},
{
"year": 2023,
"dates_label": "April 30-May 4, 2023",
"location_label": "Austin, Texas",
"source_url": "https://www2023.thewebconf.org/",
"census_event_key": "www:2023:april-30-may-4-2023"
},
{
"year": 2024,
"dates_label": "May 13-17, 2024",
"location_label": "Singapore",
"source_url": "https://www2024.thewebconf.org/",
"census_event_key": "www:2024:may-13-17-2024"
},
{
"year": 2025,
"source_label": "The ACM Web Conference 2025",
"source_url": "https://archives.iw3c2.org/www2025",
"census_event_key": "www:2025:annual"
},
{
"year": 2026,
"source_label": "The ACM Web Conference 2026",
"source_url": "https://www2026.thewebconf.org",
"census_event_key": "www:2026:annual"
}
],
"event_count": 35,
"multiple_events_in_same_year": {
"1994": 2,
"1995": 2
},
"blocking_model_gap": {
"status": "production_event_identity_migration_independently_accepted",
"code_evidence": "paper_atlas/db/schema.sql UNIQUE(venue_id,year,track), also mirrored by PostgreSQL schema",
"problem": "Two main events in one year cannot be distinguished by the current edition uniqueness. The1995observedyear does not prove both events imported.",
"next_action": "Preserveexisting1212and59Fallhistories. Implementmaintainedcollectorwithpreciseevent/track/sourceidentityforWWW1994and1995Spring;sourcecacheonlyisnotimport."
},
"scope": "35explicitactualevents1994–2026in33years:1994and1995eachhavetwoevents. Official2024historylists33eventrows1994–2024, serieshomepageadds2025/2026. Future2027/2028excluded. Sourceeventkeysarecensusidentifiers,notdatabaseIDsorverifiedcrosssourcealiases. RenamedTheWebConferencefrom2018, ACM/SIGWEBfrom2022; preserveoriginalWWWnames. Workshops/companion/industry/researchtracksandOpenReviewpoliciesseparate.",
"existing_event_identity_preflight": {
"snapshot_at": "2026-11-08 12:13:48.722149+00:00",
"report_path": "/data/paper-index/collected/same-year-event-preflight-v1.json",
"report_sha256": "50e213d5fdc194ae4fee8b74059252fa3f6f9a3bb2d2b593993ba1b95636e3b5",
"database_written": false,
"scope": "All59sourceevidencerowsunderexistingWWW1995editionanchortofallvolume. NoWWW1994editionobservedwithinthiscanonical/aliasvenuequery. Notproofnoexternal1994/spring1995papers.",
"status": "fall_1995_only_observed_spring_still_pending",
"edition_id": 1212,
"venue_id": 53,
"year": 1995,
"track": "main",
"submissions": 59,
"booktitle": "WWW (Fall)",
"dblp_volume": "db/conf/www/www1995f.html",
"next_action": "Preserveexisting1212and59histories; implementdistinctsamevenue/yearmaineventidentitybeforeaddingSpring1995orboth1994events. Noautomaticdeletion/reimport."
},
"early_proceedings_source_inventory": "www-early-proceedings-2026-11-08.json",
"event_identity_production_acceptance": {
"source_commit": "4182070e76dfa13ef7dbb526a0b6a4d155f19cd6",
"snapshot_at": "2026-11-08 13:26:53.095310+00:00",
"report_sha256": "f5dbb8a8e387904adb076896e9c50a89c9e16cc6781ad8a93b7d7f29fe31acdf",
"existing_edition_id": 1212,
"event_key": "www-1995-fall",
"existing_submissions_preserved": 59,
"original_edition_ids_fields_unchanged": 1399,
"global_raw_histories_unchanged": {
"submissions": {
"rows": 512006,
"sha256": "ac9e7cb403b1850a959140fcdbce51900a5e888f8bce12d53f6b861be060a25c"
},
"decisions": {
"rows": 551558,
"sha256": "f507601e2fe09acd84cf32cdd0f07beb57c2bede57246c992408e00f487b6ca2"
},
"decision_sources": {
"rows": 551558,
"sha256": "cb419b2943972c3766585a2b845a00466ec0be955a48dbec1c79d038691d4572"
}
},
"new_source_imported": false,
"optional_annotations_initialized": false
}
}
+12
View File
@@ -41,6 +41,8 @@
这些是领域覆盖候选,不构成统一排名,也不能据此声称已全部入库。逐年目录以真实举办届次和正式出版清单为准:双年会议不补造不存在的年份;主会、Findings、workshop 分开。`edition_sources` 保存实际采集状态,不能用候选名单代替覆盖率报告。
最新已入库基线与逐年公开拒稿核查状态见 [会议覆盖清单](coverage/README.md)。它分开记录政策证据、实际导入和未核实缺口;不是历史覆盖完成声明。
## ACM MM 与 MLSys
会议注册表包含 `MM`(别名 `ACMMM`、`ACM MM`)和 `MLSys`。MLSys 官方根目录目前列出 2019–2026 年的 8 卷,直接采集每篇标题、摘要、公开作者和引用元数据:
@@ -93,6 +95,12 @@ paper-atlas audit public-openreview --db /data/paper-index/papers.sqlite \
输出按会议、届次及 main、position、datasets_benchmarks 分文件。workshop 默认进入单独的 held 清单;有明确 workshop 名称时可通过 `--include-workshops` 单列采集,不合并到主会。Retraction、未映射的轨道或负面标签也保留在 `held-records.jsonl`,不强改为 Reject 或 Withdrawn。当前决定表没有独立 retracted 状态,因此撤回发表记录仍需后续专门建模。
`parser_version=2` 还会将明确负面标签但标题缺失、空白或 null 的记录放入 `held-records.jsonl`,保留原始状态、forum ID、固定来源版本和行号;不制造标题或导入不可识别的论文,也不让这一条缺失阻断其他可用记录。held 文件哈希与各原因数量保存在 inventory;非文本标题、错误身份、冲突届次和哈希不符仍使整批失败。旧年 ICLR 镜像的明确 `Withdraw` 标签归为 `withdrawn`,`Workshop`、`Poster Workshop`、`Oral Workshop` 均不作为拒稿。采集文件与导入主库仍是两个独立步骤。
`parser_version=3` 增加五组已核实身份的 ICLR workshop 标签:2024 ME-FoMo / GenAI4DM 的 Withdrawn Submission、2025 AgenticAI 的 Reject / LMRL 的 Withdrawn Submission,以及 2026 LLM Reasoning 的 Withdrawn Submission。仅在 `--include-workshops` 下输出,并分别保存 `workshop_me_fomo`、`workshop_genai4dm`、`workshop_agenticai`、`workshop_lmrl`、`workshop_llm_reasoning`;默认仍暂存。标签必须与原文件会议、年份和原始 workshop track 一致,错年/错会议使采集失败,错轨道单独暂存,未知标签继续待核查,不用宽泛的 Reject/Withdraw 正则猜测。
[OpenReview 官方 ICLR 活动目录](https://openreview.net/venue?id=ICLR.cc) 确认上述独立 workshop 身份;[ME-FoMo 2024](https://sites.google.com/view/me-fomo2024/call-for-papers)、[GenAI4DM 2024](https://sites.google.com/view/genai4dm-iclr2024)、[AgenticAI 2025](https://iclragenticai.github.io/) 和 [LLM Reasoning 2026](https://sites.google.com/view/iclr-2026-llmreasoning) 的活动网站也提供对应投稿入口。输出在 metadata 保存 `workshop_venueid` 和身份目录证据,决定仍只标为固定镜像的公开分类断言,保留原始标签、forum、来源行号与哈希,不声称核验原始决定签名。2026-11-08 核查时部分原站记录页要求浏览器验证;身份目录和主办方入口可读,不代表逐篇原始决定已可访问,也不外推其他 workshop 的公开政策。采集后仍须经过 PostgreSQL 身份/决定冲突预检、串行导入和独立验收。
该来源明确标记为 `curated_public_status_assertion`:保留源 commit、文件哈希、行号、原标签和 forum ID,不声称已核验原始 PC 签名。只保存标题、摘要、公开作者名、关键词、领域、索引与决定来源,不缓存镜像中的个人资料、邮箱、性别、评审内容或 PDF。所有输出清单均为 partial;盘点中的零条记录仅描述这个固定镜像。
入库前审计核验文件哈希、数量、轨道和来源声明,并用真实 forum ID 对比同届同轨道已有投稿。存在不同决定时阻止整批导入,交由来源和时序核查;另一会议的后续录用属于独立投稿历史,不构成该次拒稿的冲突。同一 forum 的镜像不新增投稿事件,但论文实体的跨平台去重仍须在全量结束后核验。审计通过的报告包含带 SHA-256 的导入队列;应在单写入维护锁下及时串行导入,主库变化后重新审计。
@@ -178,6 +186,10 @@ paper-atlas collect dblp \
输出按会议/年份/track 分文件,附 manifest、`dblp-normalization.json` 范围审查统计和带哈希的 `dblp-import-queue.json`。不能识别的书目、年份或归属会逐类登记,不默认算作主会。DBLP 不含摘要,因此输出摘要为空、清单为 partial;需要通过有证据的跨来源关联补齐论文实体摘要。书目发表证据与原始审稿决定分别保留,不依据书目缺席推断拒稿。已存在其他出版来源的届次,还须先回填其权威身份并核验镜像记录,不能直接累加投稿数。
早期 AISTATS 1995/1997/1999/2001/2003/2005 和 COLT 1988–1991 的主系列名称本身含 Workshop,不能当作附属 workshop 漏掉。识别要求已核对的完整 proceedings key、会议书目名、原始标题前缀、届数和事件年一致;轨道名为 `main` 表示主系列,保留原始 Workshop 名称及官方目录证据,不改造其历史名称或出版形式。参见 [AISTATS 官方历史目录](https://aistats.org/other.html)、[COLT 协会目录](https://www.learningtheory.org/)。1995 AISTATS 的会议年与1996图书出版年分开;[PMLR R0](https://proceedings.mlr.press/r0/) 是后来重发的 pre-proceedings,不与 DBLP 图书条目盲目逐篇等同。
真正附属的 AISTATS 2010 Active Learning and Experimental Design workshop 仍单列。COLT 2003 与 Kernel Workshop 的 [混合论文集](https://doi.org/10.1007/b12006) 缺少逐篇章节信息,使用 `proceedings_unspecified`,不能整卷改成 main 或附属 workshop。输出保存 `track_scope_note` 与 `track_scope_evidence_url`,导入后仍可追查分类理由;这些出版证据不是真实拒稿或原始决定签名,也不自动修正既有主库记录。
部分早期 SIGIR、CIKM、IJCAI 出版卷使用两位年份键;只有论文集标题明确给出唯一完整年份且与短键相符时才采用,不推测世纪。WWW 特殊兴趣、Alternate track 单列;同卷混合 Applied Data Science、Demo、Industrial 且不能逐篇区分时使用 `proceedings_unspecified`,不把整卷归为某一个具体 track。
书目中的前后页、目录组合和明确会务标题不产生论文录用记录;缺作者的赞助、委员会、活动汇总等标题单独排除。WWW 2019 companion 的匿名合成活动条目归入待核查材料,原始快照仍保留。范围报告分别统计这些原因;单纯缺作者并不排除真实研究论文,也不补造作者。
+45
View File
@@ -0,0 +1,45 @@
# 按证据修正既有投稿的轨道
`paper-atlas maintain edition-tracks` 用于已导入整卷论文集、后来取得逐条官方分区证据的情形。它更正原投稿的 edition 归属,保留投稿 ID、所有决定和来源关系;不会重新导入论文、合并实体、生成研究方法标签或推断拒稿。支持独立 SQLite 样本和共享 PostgreSQL;不得写入已冻结的生产 SQLite 备份。
## 证据与完整范围
先核实官方目录、稳定 DOI、原始来源记录和分区,保存原始页面及 SHA256。输入 JSON 为 `{"format":1,"records":[...]}`,每条必须包含:
| 字段 | 含义 |
| --- | --- |
| `submission_id`、`source_record_id`、`external_id` | 原有投稿、主来源记录及主来源投稿标识 |
| `source`、`doi` | 原来源名称及其 metadata.record_identifiers 中的 DOI |
| `from_edition_id`、`year`、`venue` | 原 edition 及其真实年份和规范会议名 |
| `venue_names` | 规范会议名加全部已有别名;必须与库中一致 |
| `track` | 经核实的目标轨道,使用小写字母、数字、下划线;范围未明确可用 proceedings_unspecified |
| `section` | 官方分区原文或明确的未确定说明,不推断研究方法 |
| `evidence_url`、`evidence_sha256` | 已人工/独立核实的 HTTPS 原始证据和内容哈希 |
输入必须列出每个原 edition 的**全部**投稿,包含留在原轨道的记录。工具核对身份、DOI、单来源发表观察、现有别名、完整范围以及目标冲突;不自动解释 HTML,也不把填写了 URL/哈希当成已证明内容。核查者应先独立证明每条分区对应关系。
多来源共同拥有的投稿、有非 accepted 决定历史的投稿、已有分类修订、非空目标 edition、目标已有覆盖或标识等情形会停止,需要专门核对。每个原 edition 须有一个明确来源清单;其他来源或多清单覆盖需先另行协调。本功能不是任意批量移动或跨会合并工具。
## 只读计划、事务执行和验收
```sh
paper-atlas maintain edition-tracks \
--pg-service foundry-research --pg-schema research \
--inventory reviewed-inventory.json --out plan.json
sha256sum plan.json
paper-atlas maintain edition-tracks \
--pg-service foundry-research --pg-schema research \
--plan plan.json --plan-sha256 <上一步的完整SHA256> --out applied.json
```
报告路径必须是已有目录中的新文件。预检只读。执行使用 PostgreSQL 单写入 advisory lock,或 SQLite BEGIN IMMEDIATE;整个分类修正、逐来源证据、标识、覆盖及验收在一个事务中完成。计划绑定数据库身份、全部来源文本/非修订元数据、标签、可选 annotation_events、投稿/决定/来源/标识内容及原覆盖快照;过期即停止。失败回滚数据,PostgreSQL 序列可能留下正常间隙,不能用 max(id) 当数量。
目标 edition 沿用原会议、年份、event_key,不删除或重命名原 edition。只更正既有 submissions.edition_id 和对应 submission_identifiers.edition_id。原文、来源检索时间、决定 ID/状态/证据及各表来源关系不变。
分类证据写入来源元数据的保留字段 `edition_scope_curation_v1`,包括原范围、目标 edition、官方分区、URL、哈希和计划摘要。普通来源导入不能伪造或替换此字段;后续 record 刷新保留修订。相同来源投稿通过旧范围调用 decision 时仍路由到修正后的 edition。旧整卷 main 文件通过 import records 刷新会报错并回滚,要求先按核实轨道重新整理,避免覆盖正确的统计。
覆盖保留原清单 URL、cursor、成功时间,按实际目标分配 expected_count/imported_count 并标 partial;本工具核实分类,未核实摘要或所有来源完整性。原覆盖整行保留在计划中,不能继续将整卷数当 main 论文数。应用后校验原 edition 身份、全部受保护内容、分类、标识、修订字段和覆盖;相同计划再次执行仅在这些验收条件仍成立时返回 already_applied。
生产使用前必须在已确认 runner 完成软件验证。正式数据修正后仍需独立验收,并在最终全库审计中复核;单元测试和应用回执不能代替生产验收。
+44
View File
@@ -0,0 +1,44 @@
# 同年多届会议的事件身份
`venue`、`year`、`track` 描述系列、年份和投稿轨道;`event_key` 区分同系列、同年、同轨道的实际会议事件。例如 WWW 1995 的春季与秋季会议分别使用 `www-1995-spring` 和 `www-1995-fall`,两者仍是 `main`。相同论文可以在两届有不同投稿与决定;论文去重不会把这两次投稿合成一次。
普通单届数据继续使用空键。新输入在同一组已有具名事件或已知同年多届时必须提供明确键;不能任选第一个 edition。已有来源刷新可依据自己的原投稿关系回到原事件,不能被显式改到另一事件。精确固定 DBLP 快照、WWW Fall 书目名、1995 年及 `www1995f.html` 卷共同支持旧秋季文件的归属;不按标题猜年份或季节。
规范 JSONL 行及 manifest 都可提供 `event_key`,非空值限制为最多80个小写字母、数字及 `._:-`,首字符为字母或数字。manifest 提供键时,每行必须一致;一份文件仍仅对应一个事件及轨道。跨行冲突会回滚整份业务导入。身份回填同样按事件选择,不能借机把来源移到另一届。
## 新样本与既有数据
新建 SQLite 样本的 `editions` 唯一键为 `(venue_id, year, track, event_key)`。已有 SQLite/PostgreSQL 不会因普通读写命令自动升级。其普通单届导入继续可用;WWW1994/1995或带事件键的导入会要求先迁移。冻结的 SQLite 生产备份仍受 cutover 标记保护,不能写入或升级。
先在 PostgreSQL 生成只读计划:
```sh
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas maintain event-identity \
--pg-service foundry-research --pg-schema research --out /data/paper-index/event-plan.json
```
检查计划的数据库身份、原 edition IDs、业务表数量、目标来源与历史指纹。计数也包含已显式启用的可选注解表。精确计数在同一快照中按主键分页,每页最多5000行,只读取主键;不使用估计行数。CLI向stderr持续报告计数进度,避免大库长时间无输出。已有未标记 WWW1995 edition 必须逐投稿都有固定 DBLP Fall 卷证据,才会只为原 edition 填入 `www-1995-fall`;缺证或混合卷会拒绝计划。本文命令不表示生产已经迁移。
应用时传入同一文件及命令输出的文件 SHA256:
```sh
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas maintain event-identity \
--pg-service foundry-research --pg-schema research \
--apply-plan /data/paper-index/event-plan.json --plan-sha256 PLAN_FILE_SHA256 \
--out /data/paper-index/event-applied.json
```
原生 PostgreSQL writer 使用现有 schema advisory lock,并在事务中锁定 editions,核对计划后添加列及替换唯一约束。SQLite 样本使用独占写事务,重建父表时保留 IDs,并在提交前检查外键;不级联删除子记录。额外列、未知唯一约束或 SQLite 额外索引会拒绝自动升级,须单独评估。未改变原版四列的排序内容哈希、任何业务表数量或目标投稿/决定/来源内容,才可提交;失败回滚。迁移标记与 DDL 同事务。原计划立即重试为 `already_applied`;若后续业务已经变化,应重新生成计划,不重放旧计划。
ECML 与 PKDD 的联合举办前事件已有不同 venue/edition,保持原身份即可。这项迁移不会把它们合并,也不会创建新的论文、投稿或决定。WWW 春季及1994两届的逐篇采集、来源核验和导入仍须另做。
## 查询与验收
```sh
paper-atlas query --pg-service foundry-research --pg-schema research \
--venue WWW --year 1995 --track main --event-key www-1995-fall
```
详细投稿历史及 `known_acceptances` 返回 `event_key`。`--event-key` 可与 `--status` 一起限定同一事件中的最新已知决定。未迁移的旧库仍可普通查询,其事件键为空;不能声称已经区分季节。`audit histories` 的新库事件输出也保留键。
远程测试应覆盖同一作品的两届独立投稿、拒稿后另一届录用、原 IDs 与 Unicode/NUL 来源内容保留、旧文件刷新、歧义及错误键拒绝、整文件回滚、明确事件的身份回填、旧计划失效、重试与真实 PostgreSQL 迁移。生产应用后还须独立核验约束、来源和历史、全文索引及 foundry-core 健康;单元测试不替代生产或最终全库去重验收。
+67
View File
@@ -0,0 +1,67 @@
# Repairing joint conference membership
EURAI's [official history](https://www.eurai.org/ecai/history) identifies ECAI 2018
and 2022 as joint IJCAI/ECAI conferences. The pinned DBLP volumes
`conf/ijcai/2018` and `conf/ijcai/2022` use `IJCAI` as their booktitle and title.
Existing records can therefore already be present under IJCAI while an ECAI query
shows a missing year. Adding ECAI as a global alias to the ordinary IJCAI venue
would incorrectly include all other IJCAI years.
The existing canonical `ECAI+IJCAI` venue has both member aliases. This maintenance
command changes only the venue reference of the two existing `main` edition rows.
Edition IDs, submission IDs, decisions, source text, authors, identifiers, tags,
source links and coverage records stay intact. It does not merge or create papers
or submissions, resolve per-paper tracks, or turn reviews into negative decisions.
The DBLP collector applies the joint mapping only to these two exact main volume
keys; original booktitle/title remain in source metadata with the membership evidence.
The shared ingestion entry point also resolves these exact pinned source volumes before
creating an edition, so refreshing an older normalized file cannot recreate a separate
IJCAI edition. Other sources, years, workshop volumes and additional tracks retain their existing rules.
## Review a read-only plan
Use a runtime containing this repair command. The configured PostgreSQL writer lock
is used only for the apply operation; do not replace a newer ingestion runtime with
an older main-based feature branch.
```sh
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas maintain joint-editions \
--pg-service foundry-research --pg-schema research --out joint-plan.json
```
The preflight requires the existing joint venue and exactly its two member aliases,
one nonempty unambiguous edition per year, and matching pinned DBLP volume evidence
for every existing submission. A colliding target edition, missing provenance or
unexpected source scope fails closed. The plan binds current database/schema, IDs,
counts and full fingerprints of affected papers, identifiers, source records, tags,
submissions, decisions and their provenance, and coverage rows. Observation time is
recorded separately from conference year. These are scoped checks, not a final global
identity or conference completeness audit.
## Apply the exact reviewed plan
Compute the file's SHA256 after review and pass it explicitly:
```sh
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas maintain joint-editions \
--pg-service foundry-research --pg-schema research --plan joint-plan.json \
--plan-sha256 "$PLAN_SHA256" --out joint-applied.json
```
The plan hash is checked before opening a writer. Current evidence is checked again
under the dataset writer lock; both edition updates and an audit marker commit in one
transaction. Protected row hashes are checked again before commit. Changed evidence
requires a fresh reviewed plan. Existing output reports are preserved; choose a new
path for another run. SQLite samples use `--db sample.sqlite`; the frozen production
backup remains protected.
If a response is lost after commit, rerun with the same plan and a new output path.
When protected evidence is unchanged and both editions already point to the joint
venue, the result is `already_joint` with zero updates. It does not replay imports or
regenerate source records. Keep the plan, apply report and independent postcheck
alongside collection evidence. The audit marker is `joint_ijcai_ecai_2018_2022_v1`.
Publication counts can differ between the DBLP volume and the current publisher
page. This membership repair preserves all existing rows rather than deleting entries
to force an aggregate match; section-level main/invited/other classification and
publication completeness require separate per-paper evidence.
+38 -2
View File
@@ -97,13 +97,16 @@ paper-atlas audit arxiv-tags --db /data/paper-index/papers.sqlite \
采集文件、已入库的来源记录和去重论文实体是不同的计数。来源可能覆盖同一篇论文,同一篇论文也可能有多次投稿;不能把各批文件数量相加作为独立论文总数。实时统计与覆盖报告使用:
```sh
paper-atlas query --db /data/paper-index/papers.sqlite --stats
paper-atlas coverage --db /data/paper-index/papers.sqlite \
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas query --pg-service foundry-research --pg-schema research --stats
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas coverage \
--pg-service foundry-research --pg-schema research \
--out /data/paper-index/collected/venue-coverage-current.json
```
manifest 和采集器状态清单用于确认文件是否齐全及是否缺摘要;`ingest_runs` 和协调器日志用于确认主库导入是否成功。官方程序、书目目录和公开投稿快照分别保留,未出现在某份清单不等于被拒稿;第三方快照也不能代表平台当前全量状态。代码测试成功不能代替最终全库去重、完整性和逐届覆盖核验。
`coverage` 的所有计数来自同一个只读快照。`latest_observed_status_counts` 按每次投稿的最新观察决定统计,`decision_observation_counts` 保留所有历史观察;重复来源不增加投稿数,缺少决定的投稿计入最新状态 unknown,但不凭空制造 unknown 决定。`source_record_counts` 统计来源在该届次的实际记录与缺摘要数,和 `sources` 中逐清单的预期/导入数量分开;身份补充清单与原始论文集清单可以描述同一条记录。来源缺摘要与论文实体从其他来源获得摘要也分别报告。报告仍将历史覆盖标为待独立审计,不能用某个清单 complete 或没有拒稿记录推断全会议覆盖。
当前代码与合并状态以 [Pull Requests](https://gitea.entroia.com/Zayden-Jung/paper-atlas/pulls) 为准;CI 结果以对应提交的 Actions 检查为准。工作分支交付后等待用户手动合并。合并代码不自动部署、不自动启动采集,也不代表数据批次已完成。
## 修正已有 PMLR 投稿的轨道
@@ -120,3 +123,36 @@ paper-atlas maintain pmlr-tracks --db /data/paper-index/papers.sqlite \
检查报告后,在同一命令添加 `--apply` 并使用新的 `--out` 路径执行迁移。计划使用共享维护锁,实际迁移使用独占锁;已有 arXiv 类别修复或其他写入运行时会拒绝启动,不会停止或重启它们。一次事务内核对整个来源集合、原始题目/摘要/作者、forum 身份、已有事件及目标冲突,更新原投稿的 edition 和身份归属,回填官方轨道出处及逐轨道覆盖数,最后复查轨道与外键后提交。论文、来源、投稿、决定的 ID 及决定观察均保留,不重新创建事件、不做实体合并、不改论文正文元数据或标签。
报告记录每个迁移事件的旧 edition、原身份、完整决定观察及新轨道证据。`planned` 是未执行的计划;`complete` 才表示事务已提交;`error` 表示执行失败。若进程在提交前后中断而报告停在 `prepared`,先对照主库和报告核查,不根据日志缺失自行重启任务。新路径重跑会重新核对当前数据库,已正确的轨道不会再次迁移。共享多个来源、重复目标事件或冲突决定会停止迁移,需另行核对,不能直接删掉其中一条。
## 追加同一目录的部分记录
默认 `import records` 把 manifest 当成一份来源快照,覆盖统计使用该文件的数量。
若目录已有2条,之后仅补入1条,不能把这一小批当成完整快照,否则会把目录计数改成1。
为已核验的部分补充批次,在 manifest 显式声明:
```json
{
"coverage_mode": "incremental",
"coverage_previous_count": 2,
"coverage_previous_expected_count": 2,
"coverage_expected_count": 4,
"status": "partial",
"count": 1
}
```
这只是新增字段示例,manifest仍须保留source、venue、year、track、list_url、文件哈希等来源证据。
`count`是本文件行数,`coverage_previous_count`是导入前该来源/届次的实际记录数,
`coverage_previous_expected_count`是旧覆盖行的expected_count(未知时用null),
`coverage_expected_count`是独立目录证据支持的整份来源预期数,不能小于已知旧预期数。
这个例子成功后覆盖统计为预期4、已导入3;文件checkpoint的records_written仍为1。
刷新相同记录不重复累加。初次导入部分来源可声明previous_count为0、previous_expected_count为null。
只支持当前最多一个规范目录URL且旧覆盖状态为partial的来源/届次;多目录、旧状态complete、
旧计数与实际来源记录不符,或前置计数已变化,都会中止,先核对来源范围或重新取得完整快照。
该模式在写入前检查父状态,并在同一文件事务中按实际来源记录重新计数、检查总量界限和乐观更新覆盖行。
失败会回滚本文件的论文、来源、决定、标签和覆盖变化,保留失败运行记录;更早已提交文件不重放。
增量模式始终保留partial,不能靠一个小批次推断完整论文集、摘要或公开拒稿覆盖。
仍需先独立核对新增记录身份与决定,按原生单写入保护串行导入,再独立核验数据与原有历史。
这些计数检查不证明外部目录完整,也不代替最终全库去重。
+49
View File
@@ -0,0 +1,49 @@
# Integrated research runtime
This branch composes the independently reviewed identity guards (PR25), incremental
coverage (PR27), joint-edition refresh guard (PR29), event identity (PR30), and optional
annotation support (PR28). It starts from main 1b81d1a and preserves their commits;
it is an explicit integration dependency, not evidence that those PRs have merged.
Users merge through Gitea manually. Review this combined diff against main, including
its conflict resolutions, before using it as the maintained runtime.
The shared Store preserves stable source/identifier anchors before title matching,
rejects ambiguous unanchored matches, resolves pinned IJCAI/ECAI volumes before event
lookup, and selects same-year events by event_key. Incremental manifests for a named
or ambiguous event must state event_key; their parent count and optimistic update
are checked against that exact event, not the first venue/year/track match.
Query filters compose event_key, status, tags and research type. An earlier rejected
attempt and a later known acceptance remain distinct; neither annotations nor track
names infer a research type. Installing this code does not initialize annotation_events.
Event plans count that optional table when present, alongside the original business
rows. Annotation initialization and event identity upgrade remain explicit commands
with their own transactional checks. Neither command imports historical records.
## Production sequencing
1. Verify the exact integrated commit on the approved ces-control runner, including
the real PostgreSQL interaction tests and wheel/installed CLI checks.
2. Stage that exact source in a separate release directory and verify package hashes;
leave the current runtime and frozen SQLite backup intact.
3. Inspect live writers and coordinate through the existing database writer lock.
Generate a fresh read-only event plan using that integrated release. Check its
database/schema identity, all business counts and preserved history hashes. A plan
from before further data or optional-schema changes must not be reused.
4. Apply only that reviewed file with its actual SHA256, in one transaction. Independently
verify the constraint, original edition IDs and fields, assigned Fall source, source
and history bytes, ordinary queries, full-text queries and foundry health.
5. Use the verified integrated release for subsequent writes. Older writers lacking
event identity support must not resume against the upgraded schema. Annotation
initialization requires a separate explicit operation and acceptance.
These are operational requirements, not claims of completed production deployment.
The production event-key migration and optional annotation activation have not occurred
at preparation time. Existing migration/import/repair acceptance remains valid; do not
rerun those jobs to install source code. Cross-feature tests use disposable fixtures
and PostgreSQL schemas, never the production research tables.
Coverage output also returns event_key for each independent edition ID. Two same-year
main events keep their own status/source counts; venue paper totals remain distinct
work counts rather than sums across events. Legacy datasets without the event column
return an empty event key and remain read-only compatible.
+4 -1
View File
@@ -132,11 +132,14 @@ paper-atlas query --pg-service foundry-research --query '"language model"' --lim
paper-atlas query --pg-service foundry-research --tag arxiv:category=cs.AI
paper-atlas query --pg-service foundry-research --venue ICLR --year 2025 --status rejected
paper-atlas query --pg-service foundry-research --paper 123
paper-atlas coverage --db /data/paper-index/papers.sqlite --out /data/paper-index/collected/coverage.json
PGSERVICEFILE=/etc/paper-atlas/pg_service.conf paper-atlas coverage \
--pg-service foundry-research --pg-schema research --out /data/paper-index/collected/coverage.json
```
`--status rejected` 筛选某次投稿的最新已知决定。它并不表示论文在所有会议均未录用;分析转投情况时查看该论文的完整投稿历史。年份表示会议届次,观察时间和决定日期分别保留。
覆盖报告使用只读一致性快照,标明实际数据库和 schema,并列出零入库目标与注册表外的已入库会议。逐届、逐 track 分别列出最新观察状态的投稿数、全部决定观察数、各来源记录数,以及来源摘要和论文实体摘要的缺失数。摘要缺失指 NULL 或空字符串;有文字不代表内容已经完整核验。同一来源的多个清单 URL 可以重叠,不能把清单计数相加当作来源总量;零条拒稿也不证明该会议没有公开拒稿。SQLite 样本仍可显式使用 `--db`,生产报告应查询当前 PostgreSQL。
例如,查找在 ICLR 有拒稿记录、但在其他已知投稿中已有录用的论文:
```sh
+111
View File
@@ -0,0 +1,111 @@
# Early WWW archive collector
`paper-atlas collect www-archive` is a maintained metadata adapter. It reads official
IW3C2 archive HTML, keeps exact source hashes, and separates importable rows from
program entries that still need review. It fetches no PDF, follows no paper-body or
reference link, and makes no database connection.
For a fresh source snapshot on the server:
```sh
paper-atlas collect www-archive \
--http-cache /data/paper-index/cache/www-archive \
--source-cache /data/paper-index/collected/www-archive-source-v2 \
--out /data/paper-index/collected/www-archive-normalized-v2
```
For reproducible offline replay of the already verified snapshot:
```sh
paper-atlas collect www-archive \
--source-cache /data/paper-index/collected/www-early-archive-source-v1 \
--source-cache-sha256 c9388ccef44486e0684c9ee9e8620a465cdc4574e6bc9ea9391d743e01a3312c \
--out /data/paper-index/collected/www-archive-normalized-v1
```
Use a new output directory for another batch. Existing snapshots and normalized
batches are never overwritten. The manifest hash binds every source URL, byte count,
response hash and cache filename. Plain files must remain directly within the cache;
symlinks, escaping paths, duplicate URLs, non-200 responses and altered bytes fail.
The command uses UTF-8 where valid and explicitly records an ISO-8859-1 fallback for
older pages; original bytes remain authoritative for encoding corrections.
## Evidence and outputs
- WWW3 Spring 1995 papers use `event_key=www-1995-spring`, `track=main`. The author,
session and abstract indexes must have the same nonempty entry-ID set. The ID is
local to this exact event and proceedings section, never a DOI or OpenReview ID.
- Posters remain `track=poster`. An abstract without a linked author-index entry
stays in review even when another index has a placeholder `#` link for it.
- Paper URLs must agree between author and session indexes. A malformed whitespace
URL in the abstract list may use the exact event/entry-ID match only when both
independent indexes corroborate the same clean URL. The original href is retained.
- Canonical names come from the explicitly labeled author index. The source lists
them alphabetically; this is **not** original byline order. Both the raw index names
and the full abstract-page byline/affiliation text remain in metadata. No person ID
or cross-source identity is inferred from a name. Conflicting titles or missing
abstracts stay in review. Topic keywords are not treated as an abstract.
- WWW1 1994 formal presentations and WWW2 1994 mixed categories remain review
candidates. The first list contains uncertain business-track annotations and a
count discrepancy; the second contains panels, tutorials, products and other
activities. Neither presentation listing nor a missing full-text link establishes
a regular-paper acceptance or a rejection. Raw category/title/name claims are kept.
The main and poster JSONL files have independent manifests with explicit event key,
track, count and SHA256. `source_listing_count` records the full recognized abstract
listing, while `held_entry_count` records excluded entries; neither is a ready-row
count. Their status stays `partial`: a verified linked subset does
not prove complete event coverage. `review-candidates.jsonl` contains nested
candidates and reasons, with no importable decision status. It is excluded from
`import-queue.json`. `report.json` accounts for ready/held records and every source
used. Newlines delimit JSONL; Unicode U+2028/U+2029 inside metadata are not line breaks.
The output is published only after all required source and scope checks pass.
## Before importing
This independent collector branch starts from main; it does not include or silently
install the event-aware writer. Its output requires the reviewed integrated runtime
from PR31 (or a main revision containing that implementation). The production event
schema migration has been independently accepted, preserving existing edition1212
and its 59 Fall submissions; that is not an import of the Spring proceedings.
Inspect held entries and original author names, preflight every ready row against
current PostgreSQL stable identifiers and candidate identities, and verify the
source/year/track/event coverage before running `import records`. When a ready subset
excludes held entries, preserve the independently known listing total in the existing
incremental-coverage protocol: bind a freshly checked parent count and expected count,
and set the full expected count from this manifest. A new source uses previous count
0 and previous expected count null; an existing source requires its actual current
values. These live parent values are not guessed by the offline collector. Do not automatically
run this queue against an older writer. Preserve extended versions and independent
submission/decision evidence, and keep unresolved identities held. A normalization
report or passing tests alone do not establish production import, complete historical
coverage or final global deduplication.
Initial fixed-cache replay (64ced7a, CI1057): 38 main papers and38 posters ready;
372 entries held (50 first-conference fields,307 mixed program entries,15 posters).
Independent report44dfd070 verified source hashes,counts and author evidence, finding
one existing exact-title candidate. That publication is explicitly linked to
arXiv1811.12161 by its WWW1995/journal-reference declaration; arXiv1810.07232 is a
different1997 invited chapter and remains separate despite the overlap note. This
is a preparation observation, not evidence of completed production import or final
global deduplication.
## 以单篇官方页面核实待处理 poster
作者索引漏链接、摘要目录使用短标题或标题存在拼写差异时,不放宽全局标题匹配。可以先取得单篇官方 HTML,人工核对 H1、署名区与原目录同一 entry URL,再提供带 SHA256 的逐条核查文件:
```sh
paper-atlas collect www-archive \
--source-cache /data/paper-index/collected/www-poster-reviewed-source-v2 \
--source-cache-sha256 8a65562f3490497cada2919ec77827134beabd5ec9c3690dec3625e2318aa54e \
--reviewed-posters docs/coverage/www-1995-posters-reviewed-2026-11-09.json \
--reviewed-posters-sha256 <核查文件的SHA256> \
--out <新的输出目录>
```
[1995 年15条poster的核查输入](coverage/www-1995-posters-reviewed-2026-11-09.json) 绑定61页来源快照:原46页和补取的15页单篇HTML。程序验证输入文件及快照哈希、单篇页面哈希、完全一致的 canonical H1、原摘要目录中的同一URL/entry ID及作者证据,不通过相似标题猜身份。规范标题采用单篇H1,摘要目录标题及作者索引标题均在 metadata 中保留。
`author_source=canonical_byline` 表示名字出现在H1之后、摘要/关键词或下一节标题之前的署名区域,由逐条核查明确选出,不从全文引用或机构猜作者;保留原始缩写、顺序、重音和拼写。只有 `author_source=author_index` 时使用原作者索引顺序并逐项核对;05的单篇页面写的是联系人,作者身份使用原作者索引证据,不由联系人角色推断。核查输入是审阅后的数据声明,程序的字符串/哈希检查不代替人工识别署名语义。
38和05的来源没有可明确引用的摘要。保留 `abstract=null` 和逐条缺失原因,manifest准确报告 missing_abstract_count,继续标partial;正文、联系方式及PostScript链接不当作摘要,也不下载正文。缺摘要不等于拒稿或未发表。本批输出仍包含原先已验收记录,正式导入前必须只取新增external ID,检查实时覆盖父记录并按incremental模式准备,不能直接重导入全部输出。
+120 -27
View File
@@ -1,45 +1,138 @@
"""Show every target venue, including those with no imported records."""
"""Describe imported venue coverage without implying a complete census."""
import argparse
from paper_atlas.config import DEFAULT_REGISTRY
from collections import defaultdict
import json
from pathlib import Path
import sqlite3
from paper_atlas.config import DEFAULT_REGISTRY
from paper_atlas.db.backend import database_arguments, open_read_connection
from paper_atlas.db.submissions import timestamp
from paper_atlas.querying import LATEST_DECISION
def report(db,registry):
registry=json.loads(Path(registry).read_text());targets=registry['venues']
names=[row['acronym'].casefold() for row in targets]
if len(names)!=len(set(names)):raise ValueError('Duplicate target venue')
scope='(v.acronym=? COLLATE NOCASE OR EXISTS(SELECT 1 FROM venue_aliases a WHERE a.venue_id=v.id AND a.alias=? COLLATE NOCASE))'
c=sqlite3.connect(Path(db).resolve().as_uri()+'?mode=ro',uri=True);c.row_factory=sqlite3.Row
STATUSES = ('accepted', 'rejected', 'desk_rejected', 'withdrawn', 'under_review', 'unknown')
def _status_counts(connection, *, latest):
if latest:
query = '''SELECT s.edition_id,COALESCE(d.status,'unknown') AS status,count(*) AS count
FROM submissions s LEFT JOIN decisions d ON d.submission_id=s.id AND ''' + LATEST_DECISION
else:
query = '''SELECT s.edition_id,COALESCE(d.status,'unknown') AS status,count(*) AS count
FROM submissions s JOIN decisions d ON d.submission_id=s.id'''
counts = defaultdict(dict)
for row in connection.execute(query + " GROUP BY s.edition_id,COALESCE(d.status,'unknown')"):
counts[row[0]][row[1]] = row[2]
return counts
def report(db, registry, *, pg_service=None, pg_schema=None):
started_at = timestamp()
registry = json.loads(Path(registry).read_text())
targets = registry['venues']
names = [row['acronym'].casefold() for row in targets]
if len(names) != len(set(names)):
raise ValueError('Duplicate target venue')
scope = '''(lower(v.acronym)=lower(?) OR EXISTS(
SELECT 1 FROM venue_aliases a WHERE a.venue_id=v.id AND lower(a.alias)=lower(?)))'''
connection = open_read_connection(db, pg_service=pg_service, pg_schema=pg_schema)
if not pg_service:
connection.row_factory = sqlite3.Row
try:
c.execute('BEGIN');venues=[]
if pg_service:
identity = connection.execute('SELECT current_database(),current_schema()').fetchone()
database, schema = identity[0], identity[1]
else:
database, schema = str(Path(db).resolve()), None
from paper_atlas.db.events import has_event_key
event = 'e.event_key' if has_event_key(connection) else "''"
latest = _status_counts(connection, latest=True)
observations = _status_counts(connection, latest=False)
# Aggregate the paper join once for the whole snapshot. Repeating it
# for each registry target caused repeated scans on the production DB.
edition_counts = {}
for row in connection.execute('''SELECT s.edition_id,count(s.id) AS submissions,
count(DISTINCT s.paper_id) AS papers,
count(DISTINCT CASE WHEN p.abstract IS NULL OR p.abstract='' THEN s.paper_id END)
AS papers_without_abstract_text
FROM submissions s LEFT JOIN papers p ON p.id=s.paper_id GROUP BY s.edition_id'''):
entry = dict(row)
edition_counts[entry.pop('edition_id')] = entry
source_counts = defaultdict(list)
for row in connection.execute('''SELECT s.edition_id,so.name AS source,
count(DISTINCT sr.id) AS source_records,
count(DISTINCT CASE WHEN sr.abstract IS NULL OR sr.abstract='' THEN sr.id END)
AS source_records_without_abstract_text
FROM submission_sources ss JOIN submissions s ON s.id=ss.submission_id
JOIN source_records sr ON sr.id=ss.source_record_id JOIN sources so ON so.id=sr.source_id
GROUP BY s.edition_id,so.name ORDER BY s.edition_id,so.name'''):
entry = dict(row)
source_counts[entry.pop('edition_id')].append(entry)
venues, covered_venue_ids = [], set()
for target in targets:
acronym=target['acronym'];params=(acronym,acronym)
editions=[]
for row in c.execute('SELECT e.id,v.acronym AS canonical_venue,e.year,e.track,count(s.id) AS submissions,count(DISTINCT s.paper_id) AS papers FROM editions e JOIN venues v ON v.id=e.venue_id LEFT JOIN submissions s ON s.edition_id=e.id WHERE '+scope+' GROUP BY e.id ORDER BY e.year,e.track',params):
edition=dict(row)
edition['sources']=[dict(source) for source in c.execute('SELECT so.name,es.status,es.expected_count,es.imported_count,es.list_url,es.last_success_at,es.last_error FROM edition_sources es JOIN sources so ON so.id=es.source_id WHERE es.edition_id=? ORDER BY so.name',(row['id'],))]
acronym = target['acronym']
params = (acronym, acronym)
editions = []
for row in connection.execute('''SELECT e.id,v.id AS venue_id,v.acronym AS canonical_venue,
e.year,e.track,''' + event + ''' AS event_key FROM editions e JOIN venues v ON v.id=e.venue_id
WHERE ''' + scope + '''
ORDER BY e.year,e.track,event_key,v.acronym,e.id''', params):
edition = dict(row)
edition.update(edition_counts.get(row['id'], {
'submissions': 0, 'papers': 0, 'papers_without_abstract_text': 0}))
covered_venue_ids.add(edition['venue_id'])
edition['latest_observed_status_counts'] = {status: latest[row['id']].get(status, 0) for status in STATUSES}
edition['decision_observation_counts'] = {status: observations[row['id']].get(status, 0) for status in STATUSES}
edition['source_record_counts'] = source_counts[row['id']]
edition['sources'] = [dict(source) for source in connection.execute('''SELECT so.name,
es.status,es.expected_count,es.imported_count,es.list_url,es.last_success_at,es.last_error
FROM edition_sources es JOIN sources so ON so.id=es.source_id
WHERE es.edition_id=? ORDER BY so.name,es.list_url''', (row['id'],))]
editions.append(edition)
totals=c.execute('SELECT count(s.id),count(DISTINCT s.paper_id) FROM submissions s JOIN editions e ON e.id=s.edition_id JOIN venues v ON v.id=e.venue_id WHERE '+scope,params).fetchone()
venues.append({'acronym':acronym,'field':target['field'],'imported_submissions':totals[0],'distinct_papers':totals[1],
'history_status':'partial_history_pending_independent_audit' if totals[0] else 'no_imported_records',
'discovery_sources':target.get('discovery_sources',[]),'editions':editions})
return {'checked_at':timestamp(),'target_venue_count':len(targets),'venues_with_imported_records':sum(bool(v['imported_submissions']) for v in venues),
'scope_note':registry['scope_note'],'interpretation':'All registry targets are listed. Edition source complete means that source file passed import checks; it does not prove full historical or abstract coverage. Papers can appear in multiple venues/years, so do not sum venue paper counts as a global total.',
'venues':venues}
finally:c.close()
totals = connection.execute('''SELECT count(s.id),count(DISTINCT s.paper_id)
FROM submissions s JOIN editions e ON e.id=s.edition_id
JOIN venues v ON v.id=e.venue_id WHERE ''' + scope, params).fetchone()
venues.append({'acronym': acronym, 'field': target['field'],
'imported_submissions': totals[0], 'distinct_papers': totals[1],
'history_status': 'partial_history_pending_independent_audit' if totals[0] else 'no_imported_records',
'discovery_sources': target.get('discovery_sources', []), 'editions': editions})
outside_registry = [dict(row) for row in connection.execute('''SELECT v.id AS venue_id,
v.acronym,count(s.id) AS submissions,count(DISTINCT s.paper_id) AS papers
FROM submissions s JOIN editions e ON e.id=s.edition_id JOIN venues v ON v.id=e.venue_id
GROUP BY v.id,v.acronym ORDER BY v.acronym''') if row[0] not in covered_venue_ids]
return {'report_started_at': started_at, 'checked_at': timestamp(),
'engine': 'postgresql' if pg_service else 'sqlite', 'database': database, 'schema': schema,
'pg_service': pg_service, 'target_venue_count': len(targets),
'venues_with_imported_records': sum(bool(v['imported_submissions']) for v in venues),
'scope_note': registry['scope_note'],
'interpretation': 'All registry targets are listed, including zero imports. '
'Latest status counts use the latest observed decision for each attempt; decision observations retain history. '
'Source record totals are per source and edition, not per list URL; multiple list entries may describe overlapping records. '
'Missing abstract text means NULL or empty string; nonempty text does not prove a complete abstract. '
'An edition source marked complete is not a proof of complete conference history or public rejection coverage. '
'Zero imported rejections does not establish that no rejections are public. '
'Papers can appear in several venues/years; do not sum venue paper counts as a global total.',
'venues': venues, 'imported_venues_outside_registry': outside_registry}
finally:
connection.close()
def main(argv=None, *, prog=None):
parser=argparse.ArgumentParser(prog=prog);parser.add_argument('--db',required=True)
parser.add_argument('--registry',default=str(DEFAULT_REGISTRY));parser.add_argument('--out')
args=parser.parse_args(argv);result=report(args.db,args.registry);text=json.dumps(result,ensure_ascii=False,indent=2)
parser = argparse.ArgumentParser(prog=prog)
database_arguments(parser)
parser.add_argument('--registry', default=str(DEFAULT_REGISTRY))
parser.add_argument('--out')
args = parser.parse_args(argv)
result = report(args.db, args.registry, pg_service=args.pg_service, pg_schema=args.pg_schema)
text = json.dumps(result, ensure_ascii=False, indent=2)
if args.out:
path=Path(args.out);stage=path.with_suffix('.part');stage.write_text(text+'\n');stage.replace(path)
else:print(text)
path = Path(args.out)
stage = path.with_suffix('.part')
stage.write_text(text + '\n')
stage.replace(path)
else:
print(text)
if __name__ == '__main__':
+5 -1
View File
@@ -124,7 +124,11 @@ def report(db=None, *, pg_service=None, pg_schema=None, examples=20):
sample_attempts.append(rows)
current = []
for raw in connection.execute(ATTEMPTS):
from paper_atlas.db.events import has_event_key
attempts_sql = ATTEMPTS
if has_event_key(connection):
attempts_sql = attempts_sql.replace('e.year,e.track,', 'e.year,e.track,e.event_key,', 1).replace('e.year,e.track\n', 'e.year,e.track,e.event_key\n')
for raw in connection.execute(attempts_sql):
row = dict(raw)
if current and row['paper_id'] != current[0]['paper_id']:
consume(current)
+6
View File
@@ -6,6 +6,7 @@ from paper_atlas import __version__
COMMANDS = {
('annotate',): ('paper_atlas.curation.annotations', {}, '管理独立的研究类型与自定义标签证据'),
('curate','identifiers'): ('paper_atlas.curation.identifiers', {}, '按证据补充稳定标识并生成独立待导入文件'),
('query',): ('paper_atlas.querying', {}, '查询论文、标签和投稿历史'),
('coverage',): ('paper_atlas.audits.coverage', {}, '查看全部候选会议的覆盖情况'),
@@ -22,10 +23,15 @@ COMMANDS = {
('collect','mlsys'): ('paper_atlas.collectors.proceedings', {'source':'mlsys'}, 'MLSys 官方历年标题与摘要'),
('collect','cvf'): ('paper_atlas.collectors.vision', {'source':'cvf'}, 'CVPR / ICCV 官方开放目录'),
('collect','ecva'): ('paper_atlas.collectors.vision', {'source':'ecva'}, 'ECCV 官方开放目录'),
('collect','aamas-proceedings'): ('paper_atlas.collectors.aamas', {}, '按官方目录区分 AAMAS 发表形式和摘要'),
('collect','www-archive'): ('paper_atlas.collectors.www_archive', {}, '核验早期WWW官方档案并分开待核查条目'),
('collect','dblp'): ('paper_atlas.collectors.dblp_records', {}, '核对并整理 DBLP 历史发表记录'),
('catalogue','dblp'): ('paper_atlas.collectors.dblp', {}, '盘点 DBLP 历史会议目录'),
('import','arxiv'): ('paper_atlas.ingestion.arxiv', {}, '导入 arXiv 元数据 ZIP'),
('import','records'): ('paper_atlas.ingestion.records', {}, '导入核验过的会议文件'),
('maintain','edition-tracks'): ('paper_atlas.ingestion.edition_tracks', {}, '按逐条来源证据修正既有投稿轨道并保护刷新'),
('maintain','joint-editions'): ('paper_atlas.ingestion.joint_editions', {}, '按已核验计划修正既有联合会议届次归属'),
('maintain','event-identity'): ('paper_atlas.ingestion.event_identity', {}, '按核验计划增加同年会议事件身份'),
('maintain','merge'): ('paper_atlas.ingestion.maintenance', {}, '协调单写入合并与恢复'),
('maintain','backfill'): ('paper_atlas.ingestion.backfill', {}, '回填既有投稿的来源身份'),
('maintain','arxiv-tags'): ('paper_atlas.ingestion.arxiv_tags', {}, '恢复逐来源记录的 arXiv 类别证据'),
+210
View File
@@ -0,0 +1,210 @@
"""Official AAMAS proceedings metadata, with publication format separate from track."""
import argparse
from collections import Counter, defaultdict
import fcntl
import hashlib
import json
from pathlib import Path
import re
import tempfile
from urllib.parse import urljoin, urlsplit
from paper_atlas.db.submissions import timestamp
from paper_atlas.io.html import Document, Node, clean
from paper_atlas.io.http import fetch
SOURCE = 'aamas_proceedings'
ROOT = 'https://www.ifaamas.org/Proceedings/aamas2012/'
# Counts independently checked against the frozen publisher sections. This
# adapter deliberately refuses other editions/layouts until they are reviewed.
SECTIONS = {
'fullpapers': ('Full Papers', 'full_paper', 'proceedings_unspecified', 136),
'extabstracts': ('Extended Abstracts', 'extended_abstract', 'proceedings_unspecified', 146),
'demos': ('Demos', 'demo', 'demo', 28),
'doctorals': ('Doctorial Consortium Abstracts', 'doctoral_abstract', 'doctoral', 24),
}
def classes(node):
return set(node.attrs.get('class', '').split())
def text_without(node, omitted):
if node.tag in ('script', 'style') or classes(node) & omitted:
return ''
parts = [text_without(child, omitted) if isinstance(child, Node) else child
for child in node.children]
value = ''.join(parts)
return ' '+value+' ' if node.tag in ('p', 'div', 'section', 'li', 'br') else value
def one(nodes, description):
if len(nodes) != 1:
raise ValueError('Expected one '+description)
return nodes[0]
def parse_section(html, section, observed_at, evidence):
heading, publication_format, track, _ = SECTIONS[section]
document = Document(html)
titles = [clean(n.text()) for n in document.root.walk() if n.tag == 'title']
if titles != [heading+' - AAMAS 2012']:
raise ValueError('Unexpected proceedings edition or section title')
headings = [clean(n.text()) for n in document.root.walk() if n.tag == 'h1']
if headings != [heading]:
raise ValueError('Unexpected proceedings section heading')
url = ROOT+'resources/'+section+'.html'
records = []
seen = set()
session = None
for node in document.root.walk():
if node.tag == 'h2' and 'section' in classes(node):
session = {'id': node.attrs.get('id'), 'title': clean(node.text())}
if node.tag != 'div' or 'paper' not in classes(node):
continue
paper_id = node.attrs.get('id', '')
if not re.fullmatch(r'[A-Za-z0-9]+_[0-9]+', paper_id) or paper_id in seen:
raise ValueError('Missing or repeated publisher paper ID')
seen.add(paper_id)
title_node = one([n for n in node.walk() if n.tag == 'span' and 'title' in classes(n)], 'paper title')
link = one([n for n in title_node.children if isinstance(n, Node) and n.tag == 'a'], 'paper link')
paper_url = urljoin(url, link.attrs.get('href', ''))
if paper_url != ROOT+'papers/'+paper_id+'.pdf':
raise ValueError('Paper link differs from publisher ID or official host')
title = clean(text_without(link, {'abstract'}))
abstract_nodes = [n for n in link.walk() if n.tag == 'span' and 'abstract' in classes(n)]
if len(abstract_nodes) > 1:
raise ValueError('Multiple abstracts for one paper')
abstract = (clean(abstract_nodes[0].text()) or None) if abstract_nodes else None
author_node = one([n for n in node.walk() if n.tag == 'span' and 'authors' in classes(n)], 'author list')
author_display = clean(text_without(author_node, {'amount'}))
authors = [clean(name) for name in author_display.split(',')]
if not title or not author_display or any(not name for name in authors):
raise ValueError('Empty paper title or author')
tags = [{'namespace': 'aamas_proceedings:publication_format', 'value': publication_format}]
if session:
tags.append({'namespace': 'aamas_proceedings:session', 'value': session['title']})
records.append({
'source': SOURCE, 'external_id': '2012/'+paper_id,
'url': url+'#'+paper_id, 'title': title, 'abstract': abstract,
'authors': authors, 'identifiers': {}, 'venue': 'AAMAS', 'venue_aliases': [],
'year': 2012, 'track': track, 'status': 'accepted',
'observed_at': observed_at,
'raw_decision': 'listed in official AAMAS 2012 proceedings '+heading,
'metadata': {'publisher_paper_id': paper_id, 'paper_url': paper_url,
'section_url': url, 'section_heading': heading,
'publication_format': publication_format, 'session': session,
'authors_display': author_display, 'source_evidence': evidence,
'publication_evidence': 'official published proceedings entry; not an original decision note',
'track_scope_note': ('Full papers and extended abstracts include general and special submission tracks; '
'session topics do not establish an individual submission track.'
if track == 'proceedings_unspecified' else 'Explicit publisher section.'),
'decision_date_precision': 'not_supplied'},
'tags': tags})
if not records:
raise ValueError('No publisher paper entries found')
return records
def read_pages(cache=None, snapshots=None):
if bool(cache) == bool(snapshots):
raise ValueError('Choose exactly one HTTP cache or frozen snapshot directory')
urls = {'introduction': ROOT, **{key: ROOT+'resources/'+key+'.html' for key in SECTIONS}}
pages = {}
receipts = []
frozen = json.loads((Path(snapshots)/'receipts.json').read_text())['receipts'] if snapshots else []
for key, url in urls.items():
if snapshots:
receipt = one([r for r in frozen if r['url'] == url], 'frozen response receipt')
filename = Path(receipt['file'])
if filename.is_absolute() or '..' in filename.parts or receipt.get('status') != 200:
raise ValueError('Unsafe or unsuccessful frozen response')
data = (Path(snapshots)/filename).read_bytes()
if len(data) > 8*1024**2 or hashlib.sha256(data).hexdigest() != receipt['sha256'] or len(data) != receipt['bytes']:
raise ValueError('Frozen publisher response checksum or size mismatch')
observed = receipt['finished_at']
else:
data = fetch(url, cache, 8*1024**2, delay=1)
receipt = json.loads((Path(cache)/hashlib.sha256(url.encode()).hexdigest()).with_suffix('.json').read_text())
observed = receipt['retrieved_at']
evidence = {'url': url, 'sha256': hashlib.sha256(data).hexdigest(), 'bytes': len(data),
'file': 'evidence/'+hashlib.sha256(data).hexdigest()+'.html', 'observed_at': observed,
'http_status': 200, 'response_receipt': receipt}
pages[key] = (data, evidence)
receipts.append(evidence)
return pages, receipts
def _collect(year, out, *, cache=None, snapshots=None):
if year != 2012:
raise ValueError('Only the independently reviewed AAMAS 2012 layout is supported')
pages, receipts = read_pages(cache, snapshots)
intro = Document(pages['introduction'][0].decode('utf-8'))
if [clean(n.text()) for n in intro.root.walk() if n.tag == 'title'] != ['AAMAS 2012']:
raise ValueError('Unexpected proceedings introduction')
records = []
for section, (_, _, _, expected) in SECTIONS.items():
data, evidence = pages[section]
group = parse_section(data.decode('utf-8'), section, evidence['observed_at'], evidence)
if len(group) != expected:
raise ValueError('Publisher section count differs from reviewed inventory: '+section)
records.extend(group)
if len({r['external_id'] for r in records}) != len(records):
raise ValueError('Paper IDs collide across publisher sections')
grouped = defaultdict(list)
for record in records:
grouped[record['track']].append(record)
out = Path(out)
out.mkdir(parents=True, exist_ok=True)
files = []
with tempfile.TemporaryDirectory(prefix='.aamas-', dir=out) as temporary:
stage = Path(temporary)
(stage/'evidence').mkdir()
for data, evidence in pages.values():
(stage/evidence['file']).write_bytes(data)
for track, group in sorted(grouped.items()):
path = stage/f'aamas-proceedings-2012-{track}.jsonl'
path.write_text(''.join(json.dumps(r, ensure_ascii=False)+'\n' for r in group))
manifest = {'source': SOURCE, 'parser_version': 1, 'venue': 'AAMAS', 'year': 2012, 'track': track,
'count': len(group), 'file': str(out/path.name), 'file_sha256': hashlib.sha256(path.read_bytes()).hexdigest(),
'list_url': ROOT, 'status': 'partial', 'missing_abstract_count': sum(not r['abstract'] for r in group),
'publication_format_counts': dict(Counter(r['metadata']['publication_format'] for r in group)),
'note': 'Publisher sections verified; individual full/extended submission track, decision history and independent identities still need review.'}
path.with_suffix('.manifest.json').write_text(json.dumps(manifest, ensure_ascii=False, indent=2)+'\n')
files.append(manifest)
result = {'source': SOURCE, 'year': year, 'finished_at': timestamp(), 'status': 'collected_pending_identity_review',
'records': len(records), 'files': files, 'source_receipts': receipts,
'publication_format_counts': dict(Counter(r['metadata']['publication_format'] for r in records)),
'database_written': False, 'pdfs_downloaded': False,
'note': 'Aggregate submission/withdrawal totals do not identify individual rejected or withdrawn papers.'}
(stage/'aamas-proceedings-2012.json').write_text(json.dumps(result, ensure_ascii=False, indent=2)+'\n')
# Validated files first; write the completed collection report last.
(out/'evidence').mkdir(exist_ok=True)
for path in (stage/'evidence').iterdir():
path.replace(out/'evidence'/path.name)
for path in stage.iterdir():
if path.is_file() and path.name != 'aamas-proceedings-2012.json':
path.replace(out/path.name)
(stage/'aamas-proceedings-2012.json').replace(out/'aamas-proceedings-2012.json')
return result
def collect(year, out, *, cache=None, snapshots=None):
if year != 2012:
raise ValueError('Only the independently reviewed AAMAS 2012 layout is supported')
out = Path(out)
out.mkdir(parents=True, exist_ok=True)
with (out/'aamas.collect.lock').open('a') as lock:
fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
return _collect(year, out, cache=cache, snapshots=snapshots)
def main(argv=None, *, prog=None):
parser = argparse.ArgumentParser(prog=prog)
parser.add_argument('--year', type=int, choices=[2012], required=True)
parser.add_argument('--out', required=True)
source = parser.add_mutually_exclusive_group(required=True)
source.add_argument('--cache')
source.add_argument('--snapshots')
args = parser.parse_args(argv)
print(json.dumps(collect(args.year, args.out, cache=args.cache, snapshots=args.snapshots), ensure_ascii=False))
+4
View File
@@ -88,8 +88,12 @@ def normalize_row(row,volumes,targets,include_workshops=False,through_year=2026)
'scope_rule':edition['rule'],'author_names_raw':fields.get('author',[]),'publtype':row.get('publtype'),
'bibliography':{key:value for key,value in fields.items() if key in ('booktitle','year','ee','url','pages','volume','number','publisher','series','isbn')},
'ambiguous_identifiers':ambiguous,'publication_evidence':'inproceedings bibliography; not an original decision note'}
if edition.get('joint_edition_evidence'):
metadata['joint_edition_evidence'] = edition['joint_edition_evidence']
if edition.get('track_scope_note'):
metadata['track_scope_note']=edition['track_scope_note']
if edition.get('track_scope_evidence_url'):
metadata['track_scope_evidence_url']=edition['track_scope_evidence_url']
flagged=bool(re.search(r'\b(?:withdrawn|retracted)\b',row.get('publtype') or '',re.I))
result={'source':'dblp','external_id':row['key'],'url':'https://dblp.org/rec/'+row['key']+'.html',
'title':title,'abstract':None,'authors':authors,'identifiers':own,
+73 -1
View File
@@ -38,6 +38,66 @@ BOOKS = {
}
# These are the historical primary series themselves, not co-located workshops.
# Exact proceedings keys, original names, ordinals and event years must agree.
HISTORICAL_WORKSHOP_TITLES = {
**{('aistats', year): prefix + ordinal + ' International Workshop on Artificial Intelligence and Statistics'
for year, ordinal, prefix in [
(1995, 'Fifth', 'Learning from Data - '),
(1997, 'Sixth', 'Proceedings of the '),
(1999, 'Seventh', 'Proceedings of the '),
(2001, 'Eighth', 'Proceedings of the '),
(2003, 'Ninth', 'Proceedings of the '),
(2005, 'Tenth', 'Proceedings of the ')]},
**{('colt', year): 'Proceedings of the ' + ordinal + ' Annual Workshop on Computational Learning Theory'
for year, ordinal in [(1988, 'First'), (1989, 'Second'), (1990, 'Third'), (1991, 'Fourth')]},
}
# Exact pinned volume titles corroborated by official series histories. The
# original title (including Workshop) remains in source metadata. In particular
# ML91 has no four-digit year in its title; its exact key/title and bibliographic
# year are checked independently, rather than guessing a title year.
HISTORICAL_PRIMARY_EVIDENCE = {
'icml': ('ML', 'https://icml.cc/Conferences/2008/past_icmls.shtml.html'),
'iros': ('IROS', 'https://www.ieee-ras.org/conferences-workshops/financially-co-sponsored/iros/iros-past-and-future-venues/'),
}
HISTORICAL_PRIMARY_TITLES = {
('icml', 1988): 'Machine Learning, Proceedings of the Fifth International Conference on Machine Learning, Ann Arbor, Michigan, USA, June 12-14, 1988',
('icml', 1989): 'Proceedings of the Sixth International Workshop on Machine Learning (ML 1989), Cornell University, Ithaca, New York, USA, June 26-27, 1989',
('icml', 1990): 'Machine Learning, Proceedings of the Seventh International Conference on Machine Learning, Austin, Texas, USA, June 21-23, 1990',
('icml', 1991): 'Proceedings of the Eighth International Workshop (ML91), Northwestern University, Evanston, Illinois, USA',
('icml', 1992): 'Proceedings of the Ninth International Workshop on Machine Learning (ML 1992), Aberdeen, Scotland, UK, July 1-3, 1992',
('iros', 1988): "IEEE International Workshop on Intelligent Robots and Systems '88, Proceedings. IROS 1988, Tokyo, Japan, October 31 - November 2, 1988",
('iros', 1989): "IEEE International Workshop on Intelligent Robots and Systems '89, Proceedings. IROS 1989, September 4-6, 1989, Tsukuba, Japan",
('iros', 1990): "IEEE International Workshop on Intelligent Robots and Systems '90, Towards a New Frontier of Applications, Proceedings. IROS 1990, July 3-6, 1990, Ibaraki, Japan",
}
def historical_track(family, base, suffix, volume_key, year, title):
primary = HISTORICAL_PRIMARY_EVIDENCE.get(family)
if (primary and not suffix and base.casefold() == primary[0].casefold()
and volume_key == f'conf/{family}/{year}'
and title == HISTORICAL_PRIMARY_TITLES.get((family, year))):
return ('main',
'Historical primary series; exact proceedings key, complete title and bibliographic/event year corroborated by official series history. Workshop in this original title is not an affiliated track.',
primary[1])
if suffix or base.casefold() != family or volume_key != f'conf/{family}/{year}':
return None
prefix = HISTORICAL_WORKSHOP_TITLES.get((family, year))
if (prefix and title.casefold().startswith(prefix.casefold() + ',')
and re.search(r'\b' + str(year) + r'\b', title)):
url = 'https://aistats.org/other.html' if family == 'aistats' else 'https://www.learningtheory.org/'
return ('main', 'Historical primary series named Workshop; exact proceedings key, ordinal, title and event year verified.', url)
if (family == 'colt' and year == 2003
and title.startswith('Computational Learning Theory and Kernel Machines, 16th Annual Conference on Computational Learning Theory and 7th Kernel Workshop, COLT/Kernel 2003,')
and title.endswith('Proceedings')):
return ('proceedings_unspecified',
'Combined COLT 2003 and Kernel Workshop volume; per-paper section absent from DBLP XML. Do not infer a main or workshop track.',
'https://doi.org/10.1007/b12006')
return None
def scope(row,volume,through_year=2026):
fields=row['fields'];books=fields.get('booktitle',[])
if len(books)!=1:return None,'ambiguous_booktitle'
@@ -75,7 +135,9 @@ def scope(row,volume,through_year=2026):
if len(bibliographic)!=1 or not re.fullmatch(r'\d{4}',bibliographic[0]):return None,'ambiguous_bibliographic_year'
if int(bibliographic[0])!=year and not re.search(r'\b'+str(year)+r'\b',title):return None,'unverified_year_difference'
text=(suffix+' '+title).casefold();track='main'
if 'findings' in text:track='findings'
historical = historical_track(family, base, suffix, volume['key'], year, title)
if historical:track=historical[0]
elif 'findings' in text:track='findings'
elif 'shared task' in text:track='shared_task'
elif 'student research' in text or 'workshop' in text or 'wokshop' in text or base in ('ICCVW','EWSL'):track='workshop'
elif ('demo track' in text and ('industrial track' in text or 'applied data science track' in text)):track='proceedings_unspecified'
@@ -96,8 +158,18 @@ def scope(row,volume,through_year=2026):
elif suffix.casefold() in ('poster','posters') and venue not in ('ICLR','ACL','EMNLP','NAACL','EACL','COLING','CoNLL'):track='poster'
if venue=='AAAI+IAAI':track='proceedings_unspecified'
if venue=='AAMAS' and year<2002:return None,'predecessor_not_aamas'
joint_evidence = None
if (family == 'ijcai' and base == 'IJCAI' and track == 'main'
and year in (2018, 2022) and volume['key'] == 'conf/ijcai/' + str(year)):
venue, aliases = 'ECAI+IJCAI', ['ECAI', 'IJCAI']
joint_evidence = 'https://www.eurai.org/ecai/history'
result = {'venue':venue,'venue_aliases':aliases,'year':year,'track':track,'bibliographic_year':int(bibliographic[0]),
'rule':family+':'+base,'proceedings_title':title,'edition_year_basis':year_basis}
if joint_evidence:
result['joint_edition_evidence'] = joint_evidence
if historical:
result['track_scope_note'] = historical[1]
result['track_scope_evidence_url'] = historical[2]
if venue=='MM' and track=='main':
# A main MM volume also includes doctoral, tutorials, companion papers
# and other sections. DBLP XML omits the per-paper TOC section.
+35 -4
View File
@@ -27,11 +27,25 @@ RAW_ROOT = 'https://raw.githubusercontent.com/papercopilot/openreview/' + REVISI
TREE_URL = 'https://api.github.com/repos/papercopilot/openreview/git/trees/' + REVISION + '?recursive=1'
NEGATIVE = {'reject': 'rejected', 'rejected': 'rejected',
'desk reject': 'desk_rejected', 'desk rejected': 'desk_rejected',
'withdrawn': 'withdrawn', 'withdrawal': 'withdrawn'}
'withdraw': 'withdrawn', 'withdrawn': 'withdrawn', 'withdrawal': 'withdrawn'}
TRACKS = {'main': 'main', 'Position': 'position',
'Datasets & Benchmarks': 'datasets_benchmarks'}
WORKSHOP_REJECT_LABELS = {"aim-fm workshop @ neurips'24 reject",
'coginterp @ neurips 2025 reject'}
# Exact curated labels, tied to the year and raw workshop track. The official
# venue directory establishes workshop identity, not an original decision signature.
ICLR_WORKSHOP_LABELS = {
'iclr 2024 workshop mefomo withdrawn submission':
(2024, 'workshop_me_fomo', 'withdrawn', 'ME-FoMo'),
'iclr 2024 workshop genai4dm withdrawn submission':
(2024, 'workshop_genai4dm', 'withdrawn', 'GenAI4DM'),
'iclr 2025 workshop agenticai reject':
(2025, 'workshop_agenticai', 'rejected', 'AgenticAI'),
'iclr 2025 workshop lmrl withdrawn submission':
(2025, 'workshop_lmrl', 'withdrawn', 'LMRL'),
'iclr 2026 workshop llm reasoning withdrawn submission':
(2026, 'workshop_llm_reasoning', 'withdrawn', 'LLM_Reasoning'),
}
def download(url, limit):
@@ -63,6 +77,20 @@ def normalize(row, family, year, provenance, include_workshops=False):
"""Return a normalized assertion or a reason requiring separate review."""
raw_status = row.get('status', '')
status = negative_status(raw_status)
workshop = ICLR_WORKSHOP_LABELS.get(' '.join(raw_status.casefold().split()))
workshop_metadata = {}
if workshop:
expected_year, expected_track, status, group_name = workshop
if family != 'iclr' or year != expected_year:
raise ValueError('Workshop status label conflicts with source conference year')
if row.get('track') != expected_track:
return None, 'conflicting_workshop_track'
if not include_workshops:
return None, 'separate_workshop'
workshop_metadata = {
'workshop_venueid': f'ICLR.cc/{year}/Workshop/{group_name}',
'workshop_identity_evidence_url': 'https://openreview.net/venue?id=ICLR.cc',
}
if status is None:
if re.search(r'\bretract\w*\b', raw_status, re.I):
return None, 'retracted'
@@ -90,7 +118,9 @@ def normalize(row, family, year, provenance, include_workshops=False):
return None, 'unmapped_venue'
title = row.get('title')
abstract = row.get('abstract')
if not isinstance(title, str) or not title.strip():
if title is None or (isinstance(title, str) and not title.strip()):
return None, 'missing_title'
if not isinstance(title, str):
raise ValueError('Public submission lacks a title')
if abstract is not None and not isinstance(abstract, str):
raise ValueError('Abstract must be text or null')
@@ -116,7 +146,8 @@ def normalize(row, family, year, provenance, include_workshops=False):
'venue': venue, 'year': year, 'track': normalized_track,
'status': status, 'raw_decision': raw_status, 'evidence_url': evidence,
'observed_at': AS_OF, 'tags': tags,
'metadata': {**provenance, 'raw_track': track, 'raw_status': raw_status,
'metadata': {**provenance, **workshop_metadata,
'raw_track': track, 'raw_status': raw_status,
'evidence_kind': 'curated_public_status_assertion',
'original_decision_signature_verified': False,
'source_snapshot_upper_bound': AS_OF}}, None
@@ -215,7 +246,7 @@ def _collect_files(out, selected, include_workshops, fetcher):
name = f'public-openreview-{family}-{year}-{track}.jsonl'
path = stage / name
path.write_text(''.join(json.dumps(row, ensure_ascii=False) + '\n' for row in records))
manifest = {'source': SOURCE, 'parser_version': 1, 'venue': records[0]['venue'],
manifest = {'source': SOURCE, 'parser_version': 3, 'venue': records[0]['venue'],
'year': year, 'track': track, 'count': len(records), 'status': 'partial',
'file': str(out / name), 'file_sha256': hashlib.sha256(path.read_bytes()).hexdigest(),
'list_url': REPOSITORY + '/tree/' + REVISION, 'source_revision': REVISION,
+3 -2
View File
@@ -7,7 +7,7 @@ import re
import time
from datetime import date
from urllib.error import HTTPError
from urllib.parse import parse_qs, unquote, urljoin, urlsplit
from urllib.parse import parse_qs, unquote, urldefrag, urljoin, urlsplit
from paper_atlas.io.http import fetch
from paper_atlas.io.html import Document, Node, clean
@@ -147,7 +147,8 @@ def read_index(index,cache):
links=set()
for node in Document(html).root.walk():
if node.tag!='a':continue
link=urljoin(url,node.attrs.get('href',''));day=parse_qs(urlsplit(link).query).get('day',[])
# Fragments select positions within a page, not separate HTTP resources.
link=urldefrag(urljoin(url,node.attrs.get('href','')))[0];day=parse_qs(urlsplit(link).query).get('day',[])
if index_identity(link)!=index_identity(url) or index_identity(url) is None or len(day)!=1:continue
if day[0]!='all':
try:valid=date.fromisoformat(day[0]).year==index['year']
+340
View File
@@ -0,0 +1,340 @@
"""Reproducible early WWW metadata; unresolved program entries stay outside imports."""
import argparse
from collections import defaultdict
import hashlib
from html.parser import HTMLParser
import json
from pathlib import Path
import re
import tempfile
from urllib.parse import urljoin, urlsplit
from paper_atlas.io.html import Document, clean
from paper_atlas.io.http import fetch
ROOT = 'https://archives.iw3c2.org/'
SPRING = ROOT+'www3/proceedings/'
FALL = ROOT+'www2/Proceedings/WWW2_Proceedings.html'
SEEDS = [ROOT+'www1/PrelimProcs.html', ROOT+'www1/Proceedings.html', FALL,
SPRING+'proceedings.html', *[SPRING+'papers/'+x+'.html' for x in ('author','session','abstract')],
*[SPRING+'posters/'+x+'.html' for x in ('author','abstract')]]
def decode(raw):
try:
return raw.decode('utf-8-sig'), 'utf-8'
except UnicodeDecodeError:
return raw.decode('iso-8859-1'), 'iso-8859-1 fallback; original bytes retained'
def text(html):
return re.sub(r'[ \t\r\n\f\v]+',' ',Document(html).root.text()).strip(' \t\r\n\f\v')
def anchors(html):
return [(n.attrs.get('href',''),clean(n.text())) for n in Document(html).root.walk() if n.tag=='a']
def source_url(url):
p=urlsplit(url)
if p.scheme!='https' or p.netloc!='archives.iw3c2.org' or p.query or p.fragment or not p.path.endswith('.html'):
raise ValueError('Only exact official archive HTML source URLs are allowed')
return url
class Sources:
def __init__(self, directory, expected_sha256):
self.root=Path(directory).resolve();manifest=self.root/'manifest.json';raw=manifest.read_bytes()
if hashlib.sha256(raw).hexdigest()!=expected_sha256:
raise ValueError('Source cache manifest checksum mismatch')
self.rows={};self.used=set()
for row in json.loads(raw)['sources']:
url=source_url(row['url'])
if url in self.rows or row.get('status')!=200:
raise ValueError('Duplicate or incomplete source response')
p=self.root/row['file']
if p.is_symlink() or p.parent!=self.root or not p.is_file():
raise ValueError('Source cache paths must be plain files directly within the cache')
data=p.read_bytes()
if len(data)>2*1024**2 or len(data)!=row['bytes'] or hashlib.sha256(data).hexdigest()!=row['sha256']:
raise ValueError('Source response checksum or size mismatch')
self.rows[url]={'raw':data,'receipt':row}
def read(self,url):
source_url(url)
if url not in self.rows:
raise ValueError('Required source missing from cache: '+url)
self.used.add(url)
return decode(self.rows[url]['raw'])[0]
def proof(self,urls):
return [{'url':url,'sha256':self.rows[url]['receipt']['sha256'],
'encoding':decode(self.rows[url]['raw'])[1]} for url in sorted(set(urls))]
def download_sources(http_cache, directory):
directory=Path(directory)
if directory.exists():
raise ValueError('Refusing to overwrite a source snapshot')
directory.mkdir(parents=True)
responses={url:fetch(url,http_cache,2*1024**2) for url in SEEDS}
html=decode(responses[FALL])[0]
for href,label in anchors(html):
if href!='Author_Inst.html' and href.endswith('.html'):
url=source_url(urljoin(FALL,href))
if not url.startswith(ROOT+'www2/Proceedings/'):
raise ValueError('Unexpected fall category source')
responses[url]=fetch(url,http_cache,2*1024**2)
receipts=[]
for i,(url,raw) in enumerate(sorted(responses.items())):
name='source-'+str(i).zfill(2)+'.html';(directory/name).write_bytes(raw)
receipts.append({'url':url,'status':200,'file':name,'bytes':len(raw),'sha256':hashlib.sha256(raw).hexdigest()})
manifest=directory/'manifest.json';manifest.write_text(json.dumps({'sources':receipts},indent=2)+'\n')
return hashlib.sha256(manifest.read_bytes()).hexdigest()
def identity(href,track):
url=urljoin(SPRING+track+'/',href);p=urlsplit(url)
match=re.fullmatch(r'/www3/proceedings/'+track+r'/(\d+)/[^?#]+',p.path)
if p.scheme=='https' and p.netloc=='archives.iw3c2.org' and not p.query and not p.fragment and match:
return match[1],url
return None
class AuthorIndex(HTMLParser):
def __init__(self,html,track):
super().__init__(convert_charrefs=True);self.track=track;self.name='';self.bold=None;self.link=None;self.link_text=[]
self.entries=defaultdict(lambda:{'authors':[],'urls':set(),'titles':set()});self.feed(html)
def handle_starttag(self,tag,attrs):
if tag=='b':self.bold=[]
if tag=='a':self.link=dict(attrs).get('href');self.link_text=[]
def handle_data(self,data):
if self.bold is not None:self.bold.append(data)
if self.link is not None:self.link_text.append(data)
def handle_endtag(self,tag):
if tag=='b' and self.bold is not None:
self.name=clean(''.join(self.bold));self.bold=None
if tag=='a' and self.link is not None:
own=identity(self.link,self.track)
if own:
key,url=own;entry=self.entries[key];entry['urls'].add(url);entry['titles'].add(clean(''.join(self.link_text)))
if not self.name:raise ValueError('Paper link has no archive author context')
if self.name not in entry['authors']:entry['authors'].append(self.name)
self.link=None
def sections(html):
"""Use explicit h3 boundaries; old HTML omits many p/li closing tags."""
result=[]
for chunk in re.split(r'<h3\b[^>]*>',html,flags=re.I)[1:]:
parts=re.split(r'</h3\s*>',chunk,maxsplit=1,flags=re.I)
if len(parts)!=2:raise ValueError('Unclosed archive entry heading')
heading,body=parts
body=re.split(r'<(?:hr|h2|address)\b',body,maxsplit=1,flags=re.I)[0]
author=re.search(r'<i\b[^>]*>(.*?)</i\s*>',body,re.I|re.S)
paragraphs=[]
for paragraph in re.findall(r'<p\b[^>]*>(.*?)(?=</p\s*>|<p\b|$)',body,re.I|re.S):
value=text(paragraph)
if value and not value.casefold().startswith('keywords:'):paragraphs.append(value)
result.append({'heading':heading,'title':text(heading),'abstract':'\n\n'.join(paragraphs)or None,
'author_byline_raw':text(author[1])if author else None})
if not result:raise ValueError('No explicit archive entry headings')
return result
def reviewed_posters(sources, path, expected_sha256, cache_sha256):
if path is None:
if expected_sha256:raise ValueError('Reviewed poster path required')
return {},None
raw=Path(path).read_bytes()
if hashlib.sha256(raw).hexdigest()!=expected_sha256:raise ValueError('Reviewed poster checksum mismatch')
review=json.loads(raw)
if set(review)!={'format','source_cache_sha256','records'} or review['format']!=1 or review['source_cache_sha256']!=cache_sha256:
raise ValueError('Reviewed poster snapshot binding differs')
if not isinstance(review['records'],list) or not 0<len(review['records'])<=100:
raise ValueError('Bounded nonempty poster review required')
result={}
for row in review['records']:
if set(row)!={'entry_id','individual_url','individual_sha256','title','authors','author_source','reason','missing_abstract_reason'}:
raise ValueError('Unexpected reviewed poster fields')
key=row['entry_id'];own=identity(row['individual_url'],'posters')
if not isinstance(key,str) or not own or own[0]!=key or key in result:
raise ValueError('Reviewed poster identity duplicated or outside canonical entry')
if row['author_source'] not in ('canonical_byline','author_index') or not isinstance(row['authors'],list) or not row['authors'] or any(not isinstance(a,str) or not a.strip()for a in row['authors']):
raise ValueError('Explicit author evidence required')
if len(set(row['authors']))!=len(row['authors']) or not isinstance(row['reason'],str) or not row['reason'].strip():
raise ValueError('Reviewed author order/reason invalid')
if sources.rows.get(own[1],{}).get('receipt',{}).get('sha256')!=row['individual_sha256']:
raise ValueError('Individual poster page checksum differs')
page=sources.read(own[1]);headings=re.findall(r'<h1\b[^>]*>(.*?)</h1\s*>',page,re.I|re.S)
if len(headings)!=1 or text(headings[0])!=row['title']:
raise ValueError('Reviewed title differs from exact canonical H1')
header=re.split(r'</h1\s*>',page,maxsplit=1,flags=re.I)[1]
header=re.split(r'<h[23]\b',header,maxsplit=1,flags=re.I)[0]
header=re.split(r'\b(?:keywords|abstract)\s*:',text(header),maxsplit=1,flags=re.I)[0]
if row['author_source']=='canonical_byline' and any(a.casefold() not in header.casefold()for a in row['authors']):
raise ValueError('Reviewed author absent from canonical byline region')
result[key]={**row,'canonical_byline_region_raw':header}
return result,hashlib.sha256(raw).hexdigest()
def reviewed_row(sources,key,url,item,authors,review):
if url!=review['individual_url']:
raise ValueError('Reviewed canonical page differs from abstract-entry URL')
if authors and authors['urls']!={url}:
raise ValueError('Reviewed poster author-index URL disagrees')
if review['author_source']=='author_index':
names=[]
for name in authors['authors']if authors else []:
parts=name.split(',');names.append(clean(parts[1]+' '+parts[0])if len(parts)==2 else name)
if names!=review['authors']:raise ValueError('Reviewed author-index evidence differs')
missing=review['missing_abstract_reason']
if not isinstance(missing,str) or bool(missing.strip())==bool(item['abstract']):
raise ValueError('Missing abstract requires explicit reason; never invent a summary')
urls=[SPRING+'posters/author.html',SPRING+'posters/abstract.html',url]
return {'source':'www_archive','external_id':'www3:posters:'+key,'url':url,'title':review['title'],
'abstract':item['abstract'],'authors':review['authors'],'identifiers':{},'venue':'WWW','year':1995,
'track':'poster','event_key':'www-1995-spring','status':'accepted','raw_decision':'listed in official posters proceedings',
'metadata':{'entry_id':key,'source_evidence':sources.proof(urls),'abstract_heading_title_raw':item['title'],
'author_byline_raw':item['author_byline_raw'],'author_index_raw':authors['authors']if authors else [],
'author_index_titles_raw':sorted(authors['titles'])if authors else [],'abstract_href_raw':url,
'author_order':review['author_source'],'reviewed_poster_identity':review,
'missing_abstract_reason':missing or None},
'tags':[{'namespace':'www_archive:proceedings_section','value':'posters'}]}
def spring_rows(sources,track,reviews=None):
base=SPRING+track+'/';author_url=base+'author.html';abstract_url=base+'abstract.html'
authors=AuthorIndex(sources.read(author_url),track).entries
listing=sections(sources.read(abstract_url));by_id={};held=[];session={}
if track=='papers':
session_url=base+'session.html'
for href,title in anchors(sources.read(session_url)):
own=identity(href,track)
if own:
key,url=own
if key in session:raise ValueError('Duplicate main session entry ID')
session[key]=url
for item in listing:
links=[identity(h,track)for h,t in anchors(item['heading'])if identity(h,track)]
if len(links)!=1:
held.append({'reason':'unverified_heading_identity','evidence':abstract_url,'candidate':item});continue
key,url=links[0]
if key in by_id:raise ValueError('Duplicate abstract entry ID')
by_id[key]=(url,item)
if not by_id:raise ValueError('No stable abstract entry IDs')
if track=='papers' and (set(authors)!=set(by_id) or set(session)!=set(by_id)):
raise ValueError('Main author/session/abstract entry ID sets disagree')
if set(authors)-set(by_id):raise ValueError('Author index has entries outside the abstract listing')
reviews=reviews or {}
if set(reviews)-set(by_id):raise ValueError('Reviewed poster outside abstract listing')
rows=[]
for key,(url,item) in by_id.items():
if key in reviews:
if track!='posters':raise ValueError('Reviews only apply to poster entries')
rows.append(reviewed_row(sources,key,url,item,authors.get(key),reviews[key]));continue
if key not in authors:
held.append({'reason':'abstract_entry_missing_linked_author_index','entry_id':key,'evidence':abstract_url,'candidate':item});continue
alternatives=authors[key]['urls']
if len(alternatives)!=1:raise ValueError('Ambiguous author-index paper URL')
canonical=next(iter(alternatives))
if track=='papers' and session[key]!=canonical:raise ValueError('Main author/session paper URLs disagree')
if url!=canonical and (track!='papers' or not re.search(r'\s',url)):
raise ValueError('Uncorroborated archive URL discrepancy')
if not item['abstract']:
held.append({'reason':'missing_abstract','entry_id':key,'evidence':abstract_url,'candidate':item});continue
if item['title'].casefold() not in {t.casefold() for t in authors[key]['titles']}:
held.append({'reason':'abstract_and_author_index_titles_disagree','entry_id':key,'evidence':abstract_url,'candidate':item,'author_index_titles':sorted(authors[key]['titles'])});continue
names=[]
for name in authors[key]['authors']:
parts=name.split(',')
names.append(clean(parts[1]+' '+parts[0])if len(parts)==2 else name)
proof_urls=[author_url,abstract_url]+([session_url]if track=='papers'else[])
rows.append({'source':'www_archive','external_id':'www3:'+track+':'+key,'url':canonical,
'title':item['title'],'abstract':item['abstract'],'authors':names,'identifiers':{},
'venue':'WWW','year':1995,'track':'main'if track=='papers'else'poster','event_key':'www-1995-spring',
'status':'accepted','raw_decision':'listed in official '+track+' proceedings',
'metadata':{'entry_id':key,'source_evidence':sources.proof(proof_urls),
'author_index_raw':authors[key]['authors'],'author_index_titles_raw':sorted(authors[key]['titles']),'author_order':'archive author-index order, not original byline rank',
'author_byline_raw':item['author_byline_raw'],'abstract_href_raw':url,
'url_corroborated_by_author_and_session':url!=canonical},
'tags':[{'namespace':'www_archive:proceedings_section','value':track}]})
return rows,held,{'abstract_entries':len(by_id),'linked_author_entries':len(authors),'ready':len(rows),'held':len(held)}
def early_review(sources):
held=[];url=ROOT+'www1/PrelimProcs.html';html=sources.read(url)
for ordinal,chunk in enumerate(re.split(r'<li\b[^>]*>',html,flags=re.I)[1:],1):
title=re.search(r'<em>Title:</em>\s*<b>(.*?)</b>',chunk,re.I|re.S)
if not title:raise ValueError('Unclassified first-conference entry')
names=re.findall(r'<em>Author:</em>(.*?)(?=<br\b)',chunk,re.I|re.S)
held.append({'reason':'formal_presentation_scope_and_count_need_review','event_key':'www-1994-spring',
'ordinal':ordinal,'evidence':url,'candidate':{'title':text(title[1]),
'authors_raw':[re.sub(r'\s*<[^>]+>','',text(n)).strip()for n in names],
'keywords_raw':text(re.search(r'<em>Keywords:</em>(.*?)(?=<br\b)',chunk,re.I|re.S)[1]) if re.search(r'<em>Keywords:</em>(.*?)(?=<br\b)',chunk,re.I|re.S)else None},
'source_evidence':sources.proof([url])})
if not held:raise ValueError('First-conference presentation listing empty')
category_urls={}
for href,label in anchors(sources.read(FALL)):
if href!='Author_Inst.html' and href.endswith('.html'):
category_url=source_url(urljoin(FALL,href))
if not category_url.startswith(ROOT+'www2/Proceedings/'):raise ValueError('Unexpected fall category')
category_urls[category_url]=label
if not category_urls:raise ValueError('Fall archive category listing empty')
for url,label in sorted(category_urls.items()):
html=sources.read(url)
for ordinal,chunk in enumerate(re.split(r'<dt\b[^>]*>',html,flags=re.I)[1:],1):
fields=re.split(r'<dd\b[^>]*>',chunk,maxsplit=1,flags=re.I)
title=text(fields[0]);raw_byline=text(re.split(r'</dl\b',fields[1],maxsplit=1,flags=re.I)[0]) if len(fields)==2 else None
if title:
held.append({'reason':'mixed_program_category_not_verified_paper_acceptance','event_key':'www-1994-fall',
'category':label,'ordinal':ordinal,'evidence':url,'candidate':{'title':title,'authors_raw':raw_byline},
'source_evidence':sources.proof([FALL,url])})
return held,{'first_conference_fields':sum(r['event_key']=='www-1994-spring'for r in held),'fall_categories':len(category_urls),
'fall_program_entries':sum(r['event_key']=='www-1994-fall'for r in held)}
def collect(source_cache,cache_sha256,out,*,reviewed=None,reviewed_sha256=None):
out=Path(out)
if out.exists():raise ValueError('Refusing to overwrite an existing normalized batch')
sources=Sources(source_cache,cache_sha256);groups={};held=[];counts={}
reviews,review_sha=reviewed_posters(sources,reviewed,reviewed_sha256,cache_sha256)
for track in ('papers','posters'):
rows,review,counts[track]=spring_rows(sources,track,reviews if track=='posters'else None);groups[track]=rows;held.extend(review)
review,counts['earlier']=early_review(sources);held.extend(review)
for item in held:
if 'source_evidence' not in item:item['source_evidence']=sources.proof([item['evidence']])
out.parent.mkdir(parents=True,exist_ok=True)
with tempfile.TemporaryDirectory(prefix='.www-archive-',dir=out.parent)as tmp:
stage=Path(tmp);queue=[]
for track,rows in groups.items():
if not rows:continue
filename='www-1995-spring-'+('main'if track=='papers'else'poster')+'.jsonl';raw=''.join(json.dumps(r,ensure_ascii=False)+'\n'for r in rows).encode();(stage/filename).write_bytes(raw)
manifest={'source':'www_archive','parser_version':2 if review_sha else 1,'venue':'WWW','year':1995,'track':rows[0]['track'],'event_key':'www-1995-spring',
'list_url':SPRING+track+'/abstract.html','count':len(rows),'status':'partial','file_sha256':hashlib.sha256(raw).hexdigest(),
'missing_abstract_count':sum(not bool((r['abstract']or '').strip())for r in rows),'source_listing_count':counts[track]['abstract_entries'],'held_entry_count':counts[track]['held'],'source_cache_sha256':cache_sha256,'scope':'Verified linked archive entries; held entries and other event tracks excluded, not complete event coverage.'}
(stage/filename).with_suffix('.manifest.json').write_text(json.dumps(manifest,indent=2)+'\n');queue.append(str(out/filename))
(stage/'review-candidates.jsonl').write_text(''.join(json.dumps(r,ensure_ascii=False)+'\n'for r in held))
report={'status':'normalized_not_imported','source_cache_sha256':cache_sha256,'counts':counts,'ready':sum(len(r)for r in groups.values()),'held':len(held),
'source_evidence':sources.proof(sources.used),'files':queue,'scope':'Early WWW archive only; no PDF fetching, no rejected/withdrawn inference, no database access. Event-aware importer required.'}
if review_sha:report['reviewed_posters_sha256']=review_sha
(stage/'report.json').write_text(json.dumps(report,ensure_ascii=False,indent=2)+'\n')
(stage/'import-queue.json').write_text(json.dumps({'files':queue},indent=2)+'\n')
stage.rename(out)
return report
def main(argv=None,*,prog=None):
p=argparse.ArgumentParser(prog=prog);p.add_argument('--source-cache',required=True);p.add_argument('--source-cache-sha256');p.add_argument('--http-cache');p.add_argument('--out',required=True)
p.add_argument('--reviewed-posters');p.add_argument('--reviewed-posters-sha256')
args=p.parse_args(argv)
if bool(args.http_cache)==bool(args.source_cache_sha256):p.error('Choose a fresh --http-cache download or an existing --source-cache-sha256 snapshot')
sha=download_sources(args.http_cache,args.source_cache)if args.http_cache else args.source_cache_sha256
if bool(args.reviewed_posters)!=bool(args.reviewed_posters_sha256):p.error('Reviewed poster file and SHA256 must be supplied together')
print(json.dumps(collect(args.source_cache,sha,args.out,reviewed=args.reviewed_posters,reviewed_sha256=args.reviewed_posters_sha256),ensure_ascii=False),flush=True)
if __name__=='__main__':main()
+1 -1
View File
@@ -1 +1 @@
"""Offline, evidence-bound preparation of metadata for separate ingestion."""
"""Evidence-bound identity preparation and independent type/tag annotations."""
+218
View File
@@ -0,0 +1,218 @@
"""Append-only tag/type assertions and explicit retractions; no inferred labels."""
import argparse
from contextlib import closing
from importlib.resources import files
import json
import re
from urllib.parse import urlparse
from paper_atlas.db.backend import database_arguments, inserted_id, open_read_connection, open_store
from paper_atlas.db.submissions import timestamp
TABLE = 'annotation_events'
MIGRATION = 'annotation_events_v1'
COLUMNS = ('id', 'request_id', 'paper_id', 'original_paper_id', 'kind', 'namespace',
'value', 'source_record_id', 'evidence_key', 'evidence_url', 'reason',
'actor', 'observed_at', 'retracts_id')
ACTIVE = '''a.retracts_id IS NULL AND NOT EXISTS
(SELECT 1 FROM annotation_events removed WHERE removed.retracts_id=a.id)'''
def available(conn):
if getattr(conn, 'postgres', False):
if hasattr(conn, 'has_table'):
return conn.has_table(TABLE)
return bool(conn.execute("SELECT 1 FROM information_schema.tables WHERE table_schema=current_schema() AND table_name=?", (TABLE,)).fetchone())
return bool(conn.execute("SELECT 1 FROM sqlite_master WHERE type='table' AND name=?", (TABLE,)).fetchone())
def _begin_write(conn):
if not getattr(conn, 'postgres', False) and not conn.in_transaction:
conn.execute('BEGIN IMMEDIATE')
def initialize(conn):
"""Explicit transactional schema extension; does not rescan or rewrite papers."""
_begin_write(conn)
exists = available(conn)
marker = conn.execute('SELECT 1 FROM schema_migrations WHERE name=?', (MIGRATION,)).fetchone()
if exists != bool(marker):
raise RuntimeError('Annotation table/upgrade marker mismatch; inspect before changing schema')
if exists:
result = conn.execute('SELECT * FROM annotation_events LIMIT 0')
description = result.cursor.description if getattr(conn, 'postgres', False) else result.description
if tuple(d[0] for d in description) != COLUMNS:
raise RuntimeError('Unexpected annotation schema')
return False
ddl = files('paper_atlas.db').joinpath('annotations.sql').read_text()
if getattr(conn, 'postgres', False):
ddl = re.sub(r'\bINTEGER\b', 'BIGINT', ddl)
ddl = re.sub(r'\bTEXT\b', 'TEXT COLLATE "C"', ddl)
ddl = ddl.replace('id BIGINT PRIMARY KEY', 'id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY', 1)
for statement in ddl.split(';'):
if statement.strip():
conn.execute(statement)
conn.execute('INSERT INTO schema_migrations(name) VALUES(?)', (MIGRATION,))
return True
def _text(value, name, limit=512):
if not isinstance(value, str) or not value.strip() or len(value) > limit:
raise ValueError(name + ' must be nonempty text of at most ' + str(limit) + ' characters')
return value
def _id(value, name):
if type(value) is not int or value <= 0:
raise ValueError(name + ' must be a positive integer')
return value
def _url(value):
if value is not None:
_text(value, 'evidence_url', 4096)
parsed = urlparse(value)
if parsed.scheme not in ('https', 'http') or not parsed.hostname or parsed.username or parsed.password:
raise ValueError('evidence_url must be an HTTP(S) URL without credentials')
return value
def _require(conn):
if not available(conn) or not conn.execute('SELECT 1 FROM schema_migrations WHERE name=?', (MIGRATION,)).fetchone():
raise RuntimeError('Run paper-atlas annotate init explicitly before adding annotations')
def _row(row):
return dict(zip(COLUMNS, (row[i] for i in range(len(COLUMNS)))))
def _replay(conn, request_id, payload):
old = conn.execute('SELECT * FROM annotation_events WHERE request_id=?', (request_id,)).fetchone()
if old is None:
return None
old = _row(old)
if any(old[k] != value for k, value in payload.items()):
raise ValueError('request_id already identifies different annotation content')
return old['id']
def assert_annotation(conn, paper, kind, namespace, value, *, request_id, evidence_key,
reason, actor, evidence_url=None, source_record_id=None):
_begin_write(conn)
_require(conn)
paper = _id(paper, 'paper')
if kind not in ('tag', 'research_type'):
raise ValueError('kind must be tag or research_type')
_text(namespace, 'namespace', 128)
if not re.fullmatch(r'[a-z][a-z0-9_]*:[a-z][a-z0-9_.-]*', namespace):
raise ValueError('namespace must have an explicit source:scope')
payload = dict(original_paper_id=paper, kind=kind, namespace=namespace,
value=_text(value, 'value'), request_id=_text(request_id, 'request_id', 128),
source_record_id=source_record_id, evidence_key=_text(evidence_key, 'evidence_key', 256),
reason=_text(reason, 'reason', 8192), actor=_text(actor, 'actor', 256),
evidence_url=_url(evidence_url), retracts_id=None)
if source_record_id is not None:
_id(source_record_id, 'source_record_id')
replay = _replay(conn, request_id, payload)
if replay is not None:
return replay
if not conn.execute('SELECT 1 FROM papers WHERE id=?', (paper,)).fetchone():
raise ValueError('Existing canonical paper required; no automatic identity merge')
prefix = namespace.split(':', 1)[0]
if prefix != 'custom' and source_record_id is None:
raise ValueError('Platform annotations require their own source record')
if source_record_id is not None:
source = conn.execute('''SELECT r.paper_id,s.name FROM source_records r
JOIN sources s ON s.id=r.source_id WHERE r.id=?''', (source_record_id,)).fetchone()
if not source or source[0] != paper or (prefix != 'custom' and prefix != source[1]):
raise ValueError('Annotation source record/namespace must belong to this paper and platform')
payload.update(paper_id=paper, observed_at=timestamp())
fields = tuple(payload)
return inserted_id(conn, 'INSERT INTO annotation_events(' + ','.join(fields) + ') VALUES(' +
','.join('?' for _ in fields) + ')', tuple(payload[k] for k in fields))
def retract_annotation(conn, event, *, request_id, reason, actor, evidence_url=None, custom_only=False):
_begin_write(conn)
_require(conn)
event = _id(event, 'event')
payload = dict(request_id=_text(request_id, 'request_id', 128), retracts_id=event,
reason=_text(reason, 'reason', 8192), actor=_text(actor, 'actor', 256), evidence_url=_url(evidence_url))
target = conn.execute('SELECT * FROM annotation_events WHERE id=?', (event,)).fetchone()
if target is None or target[-1] is not None:
raise ValueError('Retraction must reference an existing assertion')
target = _row(target)
if custom_only and not target['namespace'].startswith('custom:'):
raise ValueError('Manual CLI cannot retract platform evidence')
replay = _replay(conn, request_id, payload)
if replay is not None:
return replay
if conn.execute('SELECT 1 FROM annotation_events WHERE retracts_id=?', (event,)).fetchone():
raise ValueError('Assertion already retracted; its history is retained')
payload.update({k: target[k] for k in ('paper_id', 'original_paper_id', 'kind', 'namespace', 'value', 'source_record_id', 'evidence_key')})
payload['observed_at'] = timestamp()
fields = tuple(payload)
return inserted_id(conn, 'INSERT INTO annotation_events(' + ','.join(fields) + ') VALUES(' +
','.join('?' for _ in fields) + ')', tuple(payload[k] for k in fields))
def observations(conn, paper, *, kind=None, history=False):
if not available(conn):
return []
where = ['a.paper_id=?']; params = [_id(paper, 'paper')]
if not history:
where.append(ACTIVE)
if kind is not None:
if kind not in ('tag', 'research_type'):
raise ValueError('Invalid annotation kind')
where.append('a.kind=?'); params.append(kind)
return [_row(r) for r in conn.execute('SELECT a.* FROM annotation_events a WHERE ' +
' AND '.join(where) + ' ORDER BY a.id', params)]
def main(argv=None, *, prog=None):
parser = argparse.ArgumentParser(prog=prog, description='显式初始化、追加或撤回带证据的自定义标签和研究类型')
actions = parser.add_subparsers(dest='action', required=True)
for action in ('init', 'assert', 'retract', 'list'):
p = actions.add_parser(action)
database_arguments(p)
if action in ('assert', 'retract'):
for field in ('request-id', 'reason', 'actor'):
p.add_argument('--' + field, required=True)
p.add_argument('--evidence-url')
if action in ('assert', 'list'):
p.add_argument('--paper', type=int, required=True)
p.add_argument('--kind', choices=('tag', 'research_type'), required=action == 'assert')
if action == 'assert':
for field in ('namespace', 'value', 'evidence-key'):
p.add_argument('--' + field, required=True)
p.add_argument('--source-record', type=int)
if action == 'retract':
p.add_argument('--event', type=int, required=True)
if action == 'list':
p.add_argument('--history', action='store_true')
args = parser.parse_args(argv)
if args.action == 'list':
with closing(open_read_connection(args.db, pg_service=args.pg_service, pg_schema=args.pg_schema)) as conn:
result = observations(conn, args.paper, kind=args.kind, history=args.history)
else:
if args.action == 'assert' and not args.namespace.startswith('custom:'):
parser.error('Manual CLI requires custom:* namespace; platform assertions use validated source APIs')
with closing(open_store(args.db, pg_service=args.pg_service, pg_schema=args.pg_schema).conn) as conn:
try:
if not getattr(conn, 'postgres', False):
conn.commit()
conn.execute('BEGIN IMMEDIATE')
if args.action == 'init':
result = {'initialized': initialize(conn)}
else:
kwargs = dict(request_id=args.request_id, reason=args.reason, actor=args.actor, evidence_url=args.evidence_url)
event = (assert_annotation(conn, args.paper, args.kind, args.namespace, args.value,
evidence_key=args.evidence_key, source_record_id=args.source_record, **kwargs)
if args.action == 'assert' else retract_annotation(conn, args.event, custom_only=True, **kwargs))
result = {'event_id': event}
conn.commit()
except BaseException:
conn.rollback()
raise
print(json.dumps(result, ensure_ascii=False, indent=2))
+15
View File
@@ -0,0 +1,15 @@
CREATE TABLE annotation_events (
id INTEGER PRIMARY KEY,
request_id TEXT NOT NULL UNIQUE,
paper_id INTEGER NOT NULL REFERENCES papers(id),
original_paper_id INTEGER NOT NULL,
kind TEXT NOT NULL CHECK(kind IN ('tag','research_type')),
namespace TEXT NOT NULL, value TEXT NOT NULL,
source_record_id INTEGER REFERENCES source_records(id),
evidence_key TEXT NOT NULL, evidence_url TEXT,
reason TEXT NOT NULL, actor TEXT NOT NULL, observed_at TEXT NOT NULL,
retracts_id INTEGER UNIQUE REFERENCES annotation_events(id),
CHECK(retracts_id IS NULL OR retracts_id<>id)
);
CREATE INDEX annotation_events_paper ON annotation_events(paper_id,kind,id);
CREATE INDEX annotation_events_label ON annotation_events(kind,namespace,value,paper_id);
+38
View File
@@ -0,0 +1,38 @@
"""Retain reviewed event scopes when a source refresh repeats a whole-volume label."""
import json
KEY = 'edition_scope_curation_v1'
def preserve(metadata, previous):
old = json.loads(previous).get(KEY) if previous else None
if KEY in metadata and metadata[KEY] != old:
raise ValueError('Source import cannot supply or replace reviewed edition scope')
if old is not None:
metadata[KEY] = old
return metadata
def resolve(c, record, external, venue, year, track, event_key):
row = c.execute('SELECT metadata_json FROM source_records WHERE id=?', (record,)).fetchone()
entries = json.loads(row[0]).get(KEY, []) if row else []
if not isinstance(entries, list):
raise ValueError('Invalid reviewed edition scope')
applicable = []
for entry in entries:
if entry['external_id'] != external:
continue
old, target = entry['from'], entry['target']
if int(year) != old['year'] or venue not in entry['venue_names']:
continue
if track not in (old['track'], target['track']):
continue
if event_key is not None and event_key != old['event_key']:
continue
current = c.execute('SELECT venue_id,year,track,event_key FROM editions WHERE id=?', (target['edition_id'],)).fetchone()
if not current or [current[i] for i in range(4)] != [target[k] for k in ('venue_id','year','track','event_key')]:
raise ValueError('Reviewed target edition has changed')
applicable.append(target['edition_id'])
if len(applicable) > 1:
raise ValueError('Ambiguous reviewed edition scope')
return applicable[0] if applicable else None
+71
View File
@@ -0,0 +1,71 @@
"""Stable event identity within a venue/year/track, independent of paper identity."""
import json
import re
def has_event_key(c):
if getattr(c, 'postgres', False):
return bool(c.execute("SELECT 1 FROM information_schema.columns WHERE table_schema=current_schema() AND table_name='editions' AND column_name='event_key'").fetchone())
return any(row[1] == 'event_key' for row in c.execute('PRAGMA table_info(editions)'))
def validate_event_key(value):
if value is not None and (not isinstance(value, str) or
(value != '' and not re.fullmatch(r'[a-z0-9][a-z0-9._:-]{0,79}', value))):
raise ValueError('Invalid conference event_key')
return value
def pinned_www_fall(source, metadata):
from paper_atlas.collectors.dblp import XML_SHA
b = metadata.get('bibliography') or {}
urls = b.get('url') or []
return (source == 'dblp' and metadata.get('snapshot_sha256') == XML_SHA
and metadata.get('bibliographic_year') == 1995
and str(metadata.get('proceedings_key', '')).startswith('conf/www/')
and b.get('booktitle') == ['WWW (Fall)'] and len(urls) == 1
and urls[0].split('#')[0] == 'db/conf/www/www1995f.html')
def find_edition(store, venue_id, venue, year, track, record, external_id,
event_key=None, *, create=True):
c = store.conn
validate_event_key(event_key)
enabled = has_event_key(c) if getattr(store, 'event_identity', None) is None else store.event_identity
known_multi = venue.upper() == 'WWW' and int(year) in (1994, 1995)
source = c.execute('SELECT src.name,r.metadata_json FROM source_records r JOIN sources src ON src.id=r.source_id WHERE r.id=?', (record,)).fetchone()
inferred = ('www-1995-fall' if known_multi and int(year) == 1995 and source
and pinned_www_fall(source[0], json.loads(source[1])) else None)
if inferred:
if event_key is not None and event_key != inferred:
raise ValueError('event_key conflicts with pinned WWW Fall source evidence')
event_key = inferred
if not enabled:
if event_key or known_multi:
raise ValueError('Explicit event identity migration required before this conference import')
row = c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=?', (venue_id, year, track)).fetchone()
if row or not create:
return row[0] if row else None
c.execute('INSERT INTO editions(venue_id,year,track) VALUES(?,?,?) ON CONFLICT DO NOTHING', (venue_id, year, track))
return c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=?', (venue_id, year, track)).fetchone()[0]
anchored = c.execute('''SELECT DISTINCT e.id,e.event_key FROM editions e JOIN submissions s ON s.edition_id=e.id
JOIN submission_sources ss ON ss.submission_id=s.id WHERE e.venue_id=? AND e.year=? AND e.track=?
AND ss.source_record_id=? AND ss.source_submission_id=?''', (venue_id, year, track, record, external_id)).fetchall()
if len(anchored) > 1:
raise ValueError('Source record already has ambiguous conference events')
if anchored:
if event_key is not None and event_key != anchored[0][1]:
raise ValueError('Cannot move an existing source to another conference event')
event_key = anchored[0][1]
if event_key is None:
rows = c.execute('SELECT event_key FROM editions WHERE venue_id=? AND year=? AND track=?', (venue_id, year, track)).fetchall()
if len(rows) > 1 or any(row[0] for row in rows):
raise ValueError('Explicit event_key required; conference event is ambiguous')
event_key = ''
if known_multi and not event_key:
raise ValueError('Explicit event_key required for same-year WWW events')
row = c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=? AND event_key=?', (venue_id, year, track, event_key)).fetchone()
if row or not create:
return row[0] if row else None
c.execute('INSERT INTO editions(venue_id,year,track,event_key) VALUES(?,?,?,?) ON CONFLICT DO NOTHING', (venue_id, year, track, event_key))
return c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=? AND event_key=?', (venue_id, year, track, event_key)).fetchone()[0]
+2 -1
View File
@@ -29,7 +29,8 @@ CREATE TABLE IF NOT EXISTS venues (
CREATE TABLE IF NOT EXISTS editions (
id INTEGER PRIMARY KEY, venue_id INTEGER NOT NULL REFERENCES venues(id),
year INTEGER NOT NULL, track TEXT NOT NULL DEFAULT 'main',
UNIQUE(venue_id,year,track)
event_key TEXT NOT NULL DEFAULT '',
UNIQUE(venue_id,year,track,event_key)
);
CREATE TABLE IF NOT EXISTS venue_aliases (
venue_id INTEGER NOT NULL REFERENCES venues(id), alias TEXT NOT NULL,
+27 -3
View File
@@ -36,6 +36,8 @@ class Store:
self.conn.execute('PRAGMA synchronous=NORMAL')
self.conn.execute('PRAGMA cache_size=-32768')
migrate_sources(self.conn)
from paper_atlas.db.events import has_event_key
self.event_identity = has_event_key(self.conn)
def source(self,name,url):
self.conn.execute('INSERT INTO sources(name,homepage) VALUES(?,?) ON CONFLICT DO NOTHING',(name,url))
@@ -55,6 +57,9 @@ class Store:
c.execute('UPDATE identifiers SET paper_id=? WHERE paper_id=?',(target,other))
c.execute('UPDATE source_records SET paper_id=? WHERE paper_id=?',(target,other))
c.execute('UPDATE submissions SET paper_id=? WHERE paper_id=?',(target,other))
from paper_atlas.curation.annotations import available
if available(c):
c.execute('UPDATE annotation_events SET paper_id=? WHERE paper_id=?', (target,other))
c.execute('INSERT INTO paper_tags SELECT ?,tag_id,source_record_id,evidence_key FROM paper_tags WHERE paper_id=? ON CONFLICT DO NOTHING',(target,other))
c.execute('DELETE FROM paper_tags WHERE paper_id=?',(other,))
c.execute('UPDATE paper_merges SET surviving_paper_id=? WHERE surviving_paper_id=?',(target,other))
@@ -91,6 +96,8 @@ class Store:
if found:
matches.add(found[0])
old = c.execute('SELECT paper_id,title,abstract,retrieved_at,metadata_json FROM source_records WHERE source_id=? AND external_id=?',(source_id:=self.source(source,url),external_id)).fetchone()
from paper_atlas.db.edition_scopes import preserve
metadata = preserve(dict(metadata or {}), old[4] if old else None)
if old:
matches.add(old[0])
key = normalized(title)
@@ -148,15 +155,32 @@ class Store:
tag=c.execute('SELECT id FROM tags WHERE namespace=? AND value=?',(namespace,value)).fetchone()[0]
c.execute('INSERT INTO paper_tags VALUES(?,?,?,?) ON CONFLICT DO NOTHING',(paper,tag,record,evidence))
def decision(self,paper,record,venue,year,track,external_id,url,status,raw_value,aliases=None,identities=None,observed_at=None,decision_date=None,source_decision_id='',submitted_at=None,guard_status=False):
def decision(self,paper,record,venue,year,track,external_id,url,status,raw_value,aliases=None,identities=None,observed_at=None,decision_date=None,source_decision_id='',submitted_at=None,guard_status=False,event_key=None):
c = self.conn
# An already collected file may still call these exact pinned volumes
# IJCAI. Resolve membership before finding/creating an edition so a
# later refresh cannot split the repaired joint event again.
if venue == 'IJCAI' and year in (2018,2022) and track == 'main':
from paper_atlas.collectors.dblp import XML_SHA
evidence=c.execute('SELECT src.name,r.metadata_json FROM source_records r JOIN sources src ON src.id=r.source_id WHERE r.id=?',(record,)).fetchone()
if evidence and evidence[0] == 'dblp':
metadata=json.loads(evidence[1])
if (metadata.get('snapshot_sha256') == XML_SHA
and metadata.get('proceedings_key') == 'conf/ijcai/'+str(year)
and metadata.get('bibliographic_year') == year
and (metadata.get('bibliography') or {}).get('booktitle') in (['IJCAI'],['IJCAI/ECAI'])):
venue='ECAI+IJCAI'
aliases=sorted(set(aliases or []) | {'ECAI','IJCAI'})
existing=c.execute('SELECT id FROM venues WHERE lower(acronym)=lower(?)',(venue,)).fetchone()
if existing:venue_id=existing[0]
else:venue_id=inserted_id(c,"INSERT INTO venues(acronym,name,field,venue_type) VALUES(?,?,?,'conference')",(venue,venue,'unclassified'))
for alias in aliases or []:
c.execute('INSERT INTO venue_aliases VALUES(?,?) ON CONFLICT DO NOTHING',(venue_id,alias))
c.execute('INSERT INTO editions(venue_id,year,track) VALUES(?,?,?) ON CONFLICT DO NOTHING',(venue_id,int(year),track))
edition = c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=?',(venue_id,int(year),track)).fetchone()[0]
from paper_atlas.db.events import find_edition
from paper_atlas.db.edition_scopes import resolve
edition = resolve(c,record,external_id,venue,year,track,event_key)
if edition is None:
edition = find_edition(self,venue_id,venue,int(year),track,record,external_id,event_key)
# A previous event in this row may already have merged the input paper.
paper=c.execute('SELECT paper_id FROM source_records WHERE id=?',(record,)).fetchone()[0]
submission=attach_submission(self,edition,paper,record,external_id,identities or [])
+6 -1
View File
@@ -37,9 +37,14 @@ def backfill(db,files, *, pg_service=None, pg_schema=None):
seen.add(row['external_id'])
if any(row.get(key)!=manifest.get(key) for key in ('source','venue','year','track')):
raise ValueError('Evidence row differs from edition manifest')
if 'event_key' in manifest and row.get('event_key')!=manifest['event_key']:
raise ValueError('Event identity differs from manifest')
require_track_record(row, manifest)
record=c.execute('SELECT r.id,r.paper_id,r.metadata_json FROM source_records r JOIN sources s ON s.id=r.source_id WHERE s.name=? AND r.external_id=?',(row['source'],row['external_id'])).fetchone()
edition=c.execute('SELECT e.id FROM editions e JOIN venues v ON v.id=e.venue_id WHERE lower(v.acronym)=lower(?) AND e.year=? AND e.track=?',(row['venue'],row['year'],row['track'])).fetchone()
from paper_atlas.db.events import find_edition
venue=c.execute('SELECT id FROM venues WHERE lower(acronym)=lower(?)',(row['venue'],)).fetchone()
eid=find_edition(store,venue[0],row['venue'],row['year'],row['track'],record[0],row['external_id'],row.get('event_key'),create=False) if record and venue else None
edition=(eid,) if eid is not None else None
if not record or not edition:raise ValueError('Evidence backfill requires an already imported record and edition')
if not c.execute('SELECT 1 FROM submission_sources ss JOIN submissions s ON s.id=ss.submission_id WHERE ss.source_record_id=? AND ss.source_submission_id=? AND s.edition_id=?',(record[0],row['external_id'],edition[0])).fetchone():
raise ValueError('No existing submission to backfill')
+245
View File
@@ -0,0 +1,245 @@
"""Snapshot-bound reclassification of existing attempts, without reimport or merge."""
import argparse
from collections import Counter
from contextlib import closing
import hashlib
import json
from pathlib import Path
import re
from paper_atlas.db.backend import database_arguments, open_read_connection, open_store, inserted_id
from paper_atlas.db.edition_scopes import KEY
from paper_atlas.ingestion.event_identity import database_identity, digest, values
MARKER = 'edition_tracks_v1:'
def validate(inventory):
if (not isinstance(inventory, dict) or inventory.get('format') != 1
or not isinstance(inventory.get('records'), list) or not 0 < len(inventory['records']) <= 10000):
raise ValueError('Nonempty bounded reviewed inventory required')
ids = set(); records = set()
for row in inventory['records']:
required = {'submission_id','source_record_id','external_id','source','doi','from_edition_id',
'year','venue','venue_names','track','section','evidence_url','evidence_sha256'}
if not isinstance(row, dict) or set(row) != required:
raise ValueError('Unexpected inventory record fields')
for field in ('submission_id','source_record_id','from_edition_id','year'):
if type(row[field]) is not int or row[field] <= 0:
raise ValueError('Positive integer inventory identity required')
if row['submission_id'] in ids or row['source_record_id'] in records:
raise ValueError('Repeated submission/source identity in inventory')
ids.add(row['submission_id']); records.add(row['source_record_id'])
for field in ('external_id','source','doi','venue','section','evidence_url'):
if not isinstance(row[field], str) or not row[field].strip():
raise ValueError('Missing inventory evidence field')
if (not isinstance(row['venue_names'], list) or not row['venue_names']
or not all(isinstance(v,str) and v for v in row['venue_names'])
or row['venue'] not in row['venue_names']
or not re.fullmatch(r'[a-z][a-z0-9_]{0,63}', row['track'])
or not re.fullmatch(r'[0-9a-f]{64}', row['evidence_sha256'])
or not row['evidence_url'].startswith('https://')):
raise ValueError('Invalid scope or evidence binding')
return inventory
def bounded(c, sql, params):
rows = values(c.execute(sql+' LIMIT 100001', params))
if len(rows) > 100000:
raise ValueError('Protected scope exceeds bounded reclassification limit')
return rows
def protect(c, ids):
marks = ','.join('?' for _ in ids)
subs = 'SELECT id FROM submissions WHERE id IN ('+marks+')'
papers = 'SELECT paper_id FROM submissions WHERE id IN ('+marks+')'
decisions = 'SELECT id FROM decisions WHERE submission_id IN ('+subs+')'
queries = {
'submissions': ('SELECT id,paper_id,source_record_id,source_submission_id,submitted_at FROM submissions WHERE id IN ('+marks+') ORDER BY id'),
'submission_identifiers': ('SELECT scheme,value,submission_id FROM submission_identifiers WHERE submission_id IN ('+subs+') ORDER BY submission_id,scheme,value'),
'submission_sources': ('SELECT * FROM submission_sources WHERE submission_id IN ('+subs+') ORDER BY submission_id,source_record_id,source_submission_id'),
'decisions': ('SELECT * FROM decisions WHERE submission_id IN ('+subs+') ORDER BY id'),
'decision_sources': ('SELECT * FROM decision_sources WHERE decision_id IN ('+decisions+') ORDER BY decision_id,source_record_id,source_decision_id'),
'papers': ('SELECT * FROM papers WHERE id IN ('+papers+') ORDER BY id'),
'identifiers': ('SELECT * FROM identifiers WHERE paper_id IN ('+papers+') ORDER BY scheme,value'),
'paper_tags': ('SELECT * FROM paper_tags WHERE paper_id IN ('+papers+') ORDER BY paper_id,tag_id,evidence_key'),
}
from paper_atlas.curation.annotations import available
if available(c):
queries['annotation_events'] = 'SELECT * FROM annotation_events WHERE paper_id IN ('+papers+') ORDER BY id'
result = {table: {'rows':len(rows), 'sha256':digest(rows)} for table, sql in queries.items()
for rows in [bounded(c,sql,ids)]}
rows = bounded(c, 'SELECT r.* FROM source_records r WHERE r.id IN (SELECT source_record_id FROM submission_sources WHERE submission_id IN ('+subs+')) ORDER BY r.id', ids)
# Only the reviewed curation field may change; every other metadata value
# and all raw text/IDs/retrieval times remain protected.
for row in rows:
metadata = json.loads(row[8]); metadata.pop(KEY,None); row[8] = metadata
result['source_records'] = {'rows':len(rows), 'sha256':digest(rows)}
return result
def inspect(c, inventory):
validate(inventory); changes=[]; ids=tuple(sorted(r['submission_id']for r in inventory['records']))
original = sorted({r['from_edition_id'] for r in inventory['records']})
actual_ids = {r[0] for r in c.execute('SELECT id FROM submissions WHERE edition_id IN ('+','.join('?'for _ in original)+')', original)}
if actual_ids != set(ids):
raise ValueError('Inventory must cover every attempt in each original edition')
for row in inventory['records']:
current = c.execute('''SELECT s.edition_id,s.source_record_id,s.source_submission_id,s.paper_id,
e.venue_id,e.year,e.track,e.event_key,v.acronym,r.external_id,r.metadata_json,src.name
FROM submissions s JOIN editions e ON e.id=s.edition_id JOIN venues v ON v.id=e.venue_id
JOIN source_records r ON r.id=s.source_record_id JOIN sources src ON src.id=r.source_id WHERE s.id=?''',(row['submission_id'],)).fetchone()
if not current or [current[i]for i in (0,1,2,5,8,9,11)] != [row[k]for k in ('from_edition_id','source_record_id','external_id','year','venue','external_id','source')]:
raise ValueError('Submission identity/scope differs from inventory')
aliases={r[0]for r in c.execute('SELECT alias FROM venue_aliases WHERE venue_id=?',(current[4],))}|{current[8]}
if set(row['venue_names'])!=aliases:
raise ValueError('Venue names differ from current aliases')
metadata=json.loads(current[10])
if KEY in metadata:
raise ValueError('Existing curated scope requires explicit reconciliation')
if (metadata.get('record_identifiers') or {}).get('doi') != row['doi']:
raise ValueError('Stable DOI differs from reviewed source evidence')
links=values(c.execute('SELECT source_record_id,source_submission_id FROM submission_sources WHERE submission_id=?',(row['submission_id'],)))
if links != [[row['source_record_id'],row['external_id']]]:
raise ValueError('Shared-source attempt requires separate reconciliation')
decisions=values(c.execute('SELECT status FROM decisions WHERE submission_id=?',(row['submission_id'],)))
if not decisions or any(d[0]!='accepted'for d in decisions):
raise ValueError('Only publication observations can use this track correction')
target=c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=? AND event_key=?',(current[4],current[5],row['track'],current[7])).fetchone()
if target and target[0] != current[0]:
if c.execute('SELECT 1 FROM submissions WHERE edition_id=? LIMIT 1',(target[0],)).fetchone():
raise ValueError('Nonempty target edition requires separate reconciliation')
if c.execute('SELECT 1 FROM submission_identifiers WHERE edition_id=? LIMIT 1',(target[0],)).fetchone():
raise ValueError('Target identifier scope already exists')
if c.execute('SELECT 1 FROM edition_sources WHERE edition_id=? LIMIT 1',(target[0],)).fetchone():
raise ValueError('Target coverage already exists; reconcile first')
if c.execute('SELECT 1 FROM submission_identifiers WHERE submission_id=? AND edition_id<>? LIMIT 1',(row['submission_id'],current[0])).fetchone():
raise ValueError('Existing identifier edition is inconsistent')
changes.append({**row,'from_track':current[6],'event_key':current[7], 'venue_id':current[4],
'target_edition_id':target[0]if target else None})
coverage=bounded(c,'SELECT * FROM edition_sources WHERE edition_id IN ('+','.join('?'for _ in original)+') ORDER BY edition_id,source_id,list_url',original)
if Counter(row[0]for row in coverage)!=Counter({edition:1 for edition in original}):
raise ValueError('Exactly one original coverage listing per edition required')
return {'records':changes, 'protected':protect(c,ids), 'coverage':coverage,
'editions':bounded(c,'SELECT * FROM editions WHERE id IN ('+','.join('?'for _ in original)+') ORDER BY id',original)}
def proposal(c, inventory, identity):
return {'format':1,'database':identity,'inventory':inventory,'before':inspect(c,inventory)}
def verify(c, plan):
records=plan['before']['records']; ids=tuple(sorted(r['submission_id']for r in records))
if protect(c,ids)!=plan['before']['protected']:
raise ValueError('Protected history/text/tags/identities changed; roll back')
for row in records:
event=c.execute('''SELECT e.id,e.venue_id,e.year,e.track,e.event_key FROM submissions s JOIN editions e ON e.id=s.edition_id WHERE s.id=?''',(row['submission_id'],)).fetchone()
if not event or [event[i]for i in range(1,5)] != [row['venue_id'],row['year'],row['track'],row['event_key']]:
raise ValueError('Target track assignment failed')
if c.execute('SELECT 1 FROM submission_identifiers WHERE submission_id=? AND edition_id<>? LIMIT 1',(row['submission_id'],event[0])).fetchone():
raise ValueError('Target identifier assignment failed')
metadata=json.loads(c.execute('SELECT metadata_json FROM source_records WHERE id=?',(row['source_record_id'],)).fetchone()[0])
if row['track'] != row['from_track']:
if metadata.get(KEY) != [curation(row,event[0],digest(plan))]:
raise ValueError('Reviewed refresh protection missing or changed')
elif KEY in metadata:
raise ValueError('Unexpected scope revision on unchanged track')
original=sorted({r['from_edition_id']for r in records})
if bounded(c,'SELECT * FROM editions WHERE id IN ('+','.join('?'for _ in original)+') ORDER BY id',original)!=plan['before']['editions']:
raise ValueError('Original edition identities changed')
for old in plan['before']['coverage']:
edition,source,url,_,_,_,cursor,success,_=old
expected=Counter()
for row in records:
if row['from_edition_id']==edition:
target=c.execute('SELECT edition_id FROM submissions WHERE id=?',(row['submission_id'],)).fetchone()[0]
expected[target]+=1
for target,number in expected.items():
actual=c.execute('SELECT status,expected_count,imported_count,cursor,last_success_at,last_error FROM edition_sources WHERE edition_id=? AND source_id=? AND list_url=?',(target,source,url)).fetchone()
note='Track scope corrected from reviewed per-record evidence; original whole-volume coverage retained in plan '+digest(plan)
if actual is None or [actual[i]for i in range(6)]!=['partial',number,number,cursor,success,note]:
raise ValueError('Corrected coverage differs from reviewed scope')
return {'records_verified':len(records),'protected':plan['before']['protected']}
def curation(row, target, signature):
return {'external_id':row['external_id'], 'venue_names':sorted(set(row['venue_names'])),
'from':{'edition_id':row['from_edition_id'],'year':row['year'],'track':row['from_track'],'event_key':row['event_key']},
'target':{'edition_id':target,'venue_id':row['venue_id'],'year':row['year'],'track':row['track'],'event_key':row['event_key']},
'section':row['section'],'evidence_url':row['evidence_url'],'evidence_sha256':row['evidence_sha256'],'plan_digest':signature}
def apply_plan(c, plan):
if plan.get('format') != 1:
raise ValueError('Unsupported plan format')
signature=digest(plan);marker=MARKER+signature
if c.execute('SELECT 1 FROM schema_migrations WHERE name=?',(marker,)).fetchone():
return {'status':'already_applied','events_moved':0,**verify(c,plan)}
if inspect(c,plan['inventory']) != plan['before']:
raise ValueError('Stale track plan; create and review a fresh plan')
targets={}; counts=Counter(); moved=0
for row in plan['before']['records']:
key=(row['venue_id'],row['year'],row['track'],row['event_key'])
if key not in targets:
found=c.execute('SELECT id FROM editions WHERE venue_id=? AND year=? AND track=? AND event_key=?',key).fetchone()
targets[key]=found[0]if found else inserted_id(c,'INSERT INTO editions(venue_id,year,track,event_key) VALUES(?,?,?,?)',key)
target=targets[key];counts[(row['from_edition_id'],target)]+=1
if target != row['from_edition_id']:
c.execute('UPDATE submission_identifiers SET edition_id=? WHERE submission_id=?',(target,row['submission_id']))
if c.execute('UPDATE submissions SET edition_id=? WHERE id=? AND edition_id=?',(target,row['submission_id'],row['from_edition_id'])).rowcount!=1:
raise ValueError('Concurrent submission change')
metadata=json.loads(c.execute('SELECT metadata_json FROM source_records WHERE id=?',(row['source_record_id'],)).fetchone()[0]);metadata[KEY]=[curation(row,target,signature)]
c.execute('UPDATE source_records SET metadata_json=? WHERE id=?',(json.dumps(metadata,ensure_ascii=False),row['source_record_id']));moved+=1
# Preserve each original source URL and timestamps, but do not retain its
# old whole-volume count as main-track coverage. Partial is deliberate:
# this operation verifies scope, not abstracts or all possible sources.
for old in plan['before']['coverage']:
edition,source,url,status,expected,imported,cursor,success,error=old
own={r['submission_id'] for r in plan['before']['records']if r['from_edition_id']==edition}
source_name=c.execute('SELECT name FROM sources WHERE id=?',(source,)).fetchone()[0]
if {r['source']for r in plan['before']['records']if r['submission_id']in own}!={source_name}:
raise ValueError('Coverage includes a source outside the reviewed inventory')
for (origin,target),number in counts.items():
if origin!=edition:continue
note='Track scope corrected from reviewed per-record evidence; original whole-volume coverage retained in plan '+signature
c.execute('''INSERT INTO edition_sources(edition_id,source_id,list_url,status,expected_count,imported_count,cursor,last_success_at,last_error)
VALUES(?,?,?,?,?,?,?,?,?) ON CONFLICT(edition_id,source_id,list_url) DO UPDATE SET status=excluded.status,
expected_count=excluded.expected_count,imported_count=excluded.imported_count,last_error=excluded.last_error''',
(target,source,url,'partial',number,number,cursor,success,note))
result=verify(c,plan)
c.execute('INSERT INTO schema_migrations(name) VALUES(?)',(marker,))
return {'status':'applied','events_moved':moved,**result}
def run(db,out,*,pg_service=None,pg_schema=None,inventory=None,plan=None,plan_sha256=None):
out=Path(out)
if out.exists() or not out.parent.is_dir():raise ValueError('New report path in existing directory required')
expected=None
if plan:
raw=Path(plan).read_bytes()
if hashlib.sha256(raw).hexdigest()!=plan_sha256:raise ValueError('Plan hash differs')
expected=json.loads(raw);validate(expected['inventory'])
elif plan_sha256:raise ValueError('Plan path required')
if bool(expected)==bool(inventory):raise ValueError('Choose inventory preflight or apply plan')
if expected is None:
with closing(open_read_connection(db,pg_service=pg_service,pg_schema=pg_schema))as c:
result=proposal(c,validate(json.loads(Path(inventory).read_bytes())),database_identity(c,db))
else:
store=open_store(db,pg_service=pg_service,pg_schema=pg_schema)
with closing(store.conn)as c:
try:
if expected['database']!=database_identity(c,db):raise ValueError('Plan belongs to another database')
if not getattr(c,'postgres',False):c.commit();c.execute('BEGIN IMMEDIATE')
result=apply_plan(c,expected);c.commit()
except BaseException:c.rollback();raise
out.write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n');return result
def main(argv=None,*,prog=None):
p=argparse.ArgumentParser(prog=prog);database_arguments(p)
p.add_argument('--inventory');p.add_argument('--plan');p.add_argument('--plan-sha256');p.add_argument('--out',required=True)
a=p.parse_args(argv)
if bool(a.plan)!=bool(a.plan_sha256):p.error('--plan and --plan-sha256 must be supplied together')
r=run(a.db,a.out,pg_service=a.pg_service,pg_schema=a.pg_schema,inventory=a.inventory,plan=a.plan,plan_sha256=a.plan_sha256)
print(json.dumps({'status':r.get('status','planned'),'events_moved':r.get('events_moved',0),'out':a.out}),flush=True)
+221
View File
@@ -0,0 +1,221 @@
"""Explicit, plan-bound edition event-key upgrade; never reimport submissions."""
import argparse
from contextlib import closing
import hashlib
import json
from pathlib import Path
import sqlite3
import sys
from paper_atlas.db.backend import database_arguments, open_read_connection, require_sqlite_writable
from paper_atlas.db.events import has_event_key, pinned_www_fall
from paper_atlas.postgres.schema import TABLES, OPTIONAL_TABLES, quote
MARKER = 'edition_event_identity_v1:'
def digest(value):
return hashlib.sha256(json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(',', ':')).encode()).hexdigest()
def values(rows):
return [[r[i] for i in range(len(r))] for r in rows]
def exact_counts(c, *, page_size=5000, progress=None):
"""Count every row in the same snapshot through bounded primary-key pages."""
if not isinstance(page_size, int) or page_size < 1:
raise ValueError('Positive count page size required')
result = {}
if getattr(c, 'postgres', False):
optional = [table for table in OPTIONAL_TABLES if c.execute("SELECT 1 FROM information_schema.tables WHERE table_schema=current_schema() AND table_name=?", (table,)).fetchone()]
else:
optional = [table for table in OPTIONAL_TABLES if c.execute("SELECT 1 FROM sqlite_master WHERE type='table' AND name=?", (table,)).fetchone()]
for table in (*TABLES, *optional):
if table == 'schema_migrations':
continue
if getattr(c, 'postgres', False):
columns = [r[0] for r in c.execute("SELECT a.attname FROM pg_constraint pc JOIN pg_attribute a ON a.attrelid=pc.conrelid AND a.attnum=ANY(pc.conkey) WHERE pc.conrelid=?::regclass AND pc.contype='p' ORDER BY array_position(pc.conkey,a.attnum)", (table,))]
else:
columns = [r[1] for r in sorted(c.execute('PRAGMA table_info('+quote(table)+')'), key=lambda r:r[5]) if r[5]]
if not columns:
raise ValueError('Primary key required for exact count: '+table)
fields = ','.join(quote(column) for column in columns)
last = None; count = 0; pages = 0
if progress:
progress({'table':table, 'rows_counted':0, 'complete':False})
while True:
where = (' WHERE ('+fields+') > ('+','.join('?' for _ in columns)+')') if last is not None else ''
batch = values(c.execute('SELECT '+fields+' FROM '+quote(table)+where+' ORDER BY '+fields+' LIMIT ?', (*last, page_size) if last is not None else (page_size,)).fetchall())
count += len(batch); pages += 1
complete = len(batch) < page_size
if progress and (complete or pages % 20 == 0):
progress({'table':table, 'rows_counted':count, 'complete':complete})
if complete:
break
last = batch[-1]
result[table] = count
return result
def inspect(c, *, progress=None):
enabled = has_event_key(c)
if getattr(c, 'postgres', False):
columns = [r[0] for r in c.execute("SELECT column_name FROM information_schema.columns WHERE table_schema=current_schema() AND table_name='editions' ORDER BY ordinal_position")]
unique = [r[0] for r in c.execute("SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conrelid='editions'::regclass AND contype='u'")]
expected_unique = ['UNIQUE (venue_id, year, track, event_key)' if enabled else 'UNIQUE (venue_id, year, track)']
else:
columns = [r[1] for r in c.execute('PRAGMA table_info(editions)')]
indexes = list(c.execute('PRAGMA index_list(editions)'))
unique = [tuple(r[2] for r in c.execute('PRAGMA index_info('+quote(index[1])+')')) for index in indexes if index[2]]
expected_unique = [('venue_id','year','track','event_key') if enabled else ('venue_id','year','track')]
if len(indexes) != 1:
raise ValueError('Unexpected edition indexes; require a reviewed migration')
if columns != ['id','venue_id','year','track'] + (['event_key'] if enabled else []) or unique != expected_unique:
raise ValueError('Unexpected edition schema; require a reviewed migration')
rows = values(c.execute('SELECT id,venue_id,year,track FROM editions ORDER BY id'))
keys = values(c.execute('SELECT id,event_key FROM editions ORDER BY id')) if enabled else [[r[0], ''] for r in rows]
counts = exact_counts(c, progress=progress)
targets = values(c.execute("SELECT e.id FROM editions e JOIN venues v ON v.id=e.venue_id WHERE v.acronym='WWW' AND e.year=1995 AND e.track='main' ORDER BY e.id"))
assignments = []
for (eid,) in targets:
current_key = dict(keys)[eid]
if current_key:
continue
evidence = values(c.execute('''SELECT s.id,src.name,r.id,r.external_id,r.metadata_json FROM submissions s
JOIN submission_sources ss ON ss.submission_id=s.id JOIN source_records r ON r.id=ss.source_record_id
JOIN sources src ON src.id=r.source_id WHERE s.edition_id=? ORDER BY s.id,r.id''', (eid,)))
count = c.execute('SELECT count(*) FROM submissions WHERE edition_id=?', (eid,)).fetchone()[0]
supported = {r[0] for r in evidence if pinned_www_fall(r[1], json.loads(r[4]))}
if not count or len(supported) != count:
raise ValueError('Existing unlabelled WWW1995 edition lacks complete pinned Fall evidence')
assignments.append({'edition_id':eid, 'event_key':'www-1995-fall', 'submissions':count,
'source_evidence_sha256':digest(evidence)})
# Protect all rows in the affected attempt history, including non-DBLP evidence.
target_ids = [r[0] for r in targets]
protected = {}
for table,sql in {
'submissions': 'SELECT s.* FROM submissions s WHERE s.edition_id IN ({}) ORDER BY s.id',
'decisions': 'SELECT d.* FROM decisions d JOIN submissions s ON s.id=d.submission_id WHERE s.edition_id IN ({}) ORDER BY d.id',
'submission_sources': 'SELECT ss.* FROM submission_sources ss JOIN submissions s ON s.id=ss.submission_id WHERE s.edition_id IN ({}) ORDER BY ss.submission_id,ss.source_record_id,ss.source_submission_id',
'decision_sources': 'SELECT ds.* FROM decision_sources ds JOIN decisions d ON d.id=ds.decision_id JOIN submissions s ON s.id=d.submission_id WHERE s.edition_id IN ({}) ORDER BY ds.decision_id,ds.source_record_id,ds.source_decision_id',
'source_records': 'SELECT DISTINCT r.* FROM source_records r JOIN submission_sources ss ON ss.source_record_id=r.id JOIN submissions s ON s.id=ss.submission_id WHERE s.edition_id IN ({}) ORDER BY r.id',
}.items():
records = values(c.execute(sql.format(','.join('?' for _ in target_ids)), target_ids)) if target_ids else []
protected[table] = {'count':len(records), 'sha256':digest(records)}
return {'event_column':enabled, 'editions_sha256':digest(rows), 'edition_ids':[r[0] for r in rows],
'event_keys':keys, 'counts':counts, 'assignments':assignments, 'protected':protected}
def database_identity(c, db=None):
if getattr(c, 'postgres', False):
r = c.execute('SELECT current_database(),current_schema()').fetchone()
return {'engine':'postgres', 'database':r[0], 'schema':r[1]}
return {'engine':'sqlite', 'path':str(Path(db).resolve())}
def plan(db=None, *, pg_service=None, pg_schema=None, progress=None):
with closing(open_read_connection(db, pg_service=pg_service, pg_schema=pg_schema)) as c:
return {'format':1, 'database':database_identity(c, db), 'before':inspect(c, progress=progress)}
def apply_plan(c, proposal, *, progress=None):
before = proposal['before']
if proposal.get('format') != 1:
raise ValueError('Unsupported event identity plan')
if getattr(c, 'postgres', False):
c.execute('LOCK TABLE editions IN ACCESS EXCLUSIVE MODE')
current = inspect(c, progress=progress)
signature = digest(proposal)
marker = MARKER + signature
if c.execute('SELECT 1 FROM schema_migrations WHERE name=?', (marker,)).fetchone():
expected_keys = dict(before['event_keys'])
expected_keys.update({a['edition_id']:a['event_key'] for a in before['assignments']})
if (not current['event_column'] or current['editions_sha256'] != before['editions_sha256']
or current['protected'] != before['protected'] or current['counts'] != before['counts']
or dict(current['event_keys']) != expected_keys):
raise ValueError('Applied plan no longer matches current data; generate a new plan')
return {'status':'already_applied', 'updated_editions':0, 'after':current}
if current != before:
raise ValueError('Event identity plan is stale; generate a new plan')
if not current['event_column']:
if getattr(c, 'postgres', False):
constraints = c.execute("SELECT conname,pg_get_constraintdef(oid) FROM pg_constraint WHERE conrelid='editions'::regclass AND contype='u'").fetchall()
matches = [name for name,definition in constraints if definition == 'UNIQUE (venue_id, year, track)']
if len(matches) != 1 or len(constraints) != 1:
raise ValueError('Unexpected legacy edition uniqueness')
c.execute("ALTER TABLE editions ADD COLUMN event_key TEXT COLLATE \"C\" NOT NULL DEFAULT ''")
c.execute('ALTER TABLE editions DROP CONSTRAINT '+quote(matches[0]))
c.execute('ALTER TABLE editions ADD CONSTRAINT editions_event_identity_unique UNIQUE(venue_id,year,track,event_key)')
else:
unique = [tuple(r[2] for r in c.execute('PRAGMA index_info('+quote(index[1])+')'))
for index in c.execute('PRAGMA index_list(editions)') if index[2]]
if unique != [('venue_id','year','track')]:
raise ValueError('Unexpected legacy edition uniqueness')
c.execute("CREATE TABLE editions_event_upgrade(id INTEGER PRIMARY KEY,venue_id INTEGER NOT NULL REFERENCES venues(id),year INTEGER NOT NULL,track TEXT NOT NULL DEFAULT 'main',event_key TEXT NOT NULL DEFAULT '',UNIQUE(venue_id,year,track,event_key))")
c.execute('INSERT INTO editions_event_upgrade(id,venue_id,year,track) SELECT id,venue_id,year,track FROM editions')
c.execute('DROP TABLE editions')
c.execute('ALTER TABLE editions_event_upgrade RENAME TO editions')
for item in before['assignments']:
result = c.execute("UPDATE editions SET event_key=? WHERE id=? AND event_key=''", (item['event_key'],item['edition_id']))
if result.rowcount != 1:
raise ValueError('Edition assignment changed during upgrade')
c.execute('INSERT INTO schema_migrations(name) VALUES(?)', (marker,))
after = inspect(c, progress=progress)
expected_keys = dict(before['event_keys'])
expected_keys.update({a['edition_id']:a['event_key'] for a in before['assignments']})
if (after['editions_sha256'] != before['editions_sha256'] or after['protected'] != before['protected']
or after['counts'] != before['counts'] or dict(after['event_keys']) != expected_keys):
raise ValueError('Event upgrade changed protected data')
if not getattr(c, 'postgres', False) and c.execute('PRAGMA foreign_key_check').fetchall():
raise ValueError('Foreign key violation after event upgrade')
return {'status':'applied', 'updated_editions':len(before['assignments']), 'after':after}
def upgrade(proposal, db=None, *, pg_service=None, pg_schema=None, progress=None):
if pg_service:
from paper_atlas.postgres.writer import WriteConnection
with closing(WriteConnection(pg_service, pg_schema)) as c:
if proposal['database'] != database_identity(c):
raise ValueError('Plan targets a different database')
try:
result = apply_plan(c, proposal, progress=progress); c.commit(); return result
except BaseException:
c.rollback(); raise
require_sqlite_writable(db)
if not Path(db).is_file():
raise ValueError('Existing SQLite sample required')
with closing(sqlite3.connect(db, timeout=30)) as c:
if proposal['database'] != database_identity(c, db):
raise ValueError('Plan targets a different database')
c.execute('PRAGMA foreign_keys=OFF') # Outside the transaction; no cascading deletes.
try:
c.execute('BEGIN IMMEDIATE')
result = apply_plan(c, proposal, progress=progress); c.commit(); return result
except BaseException:
c.rollback(); raise
finally:
c.execute('PRAGMA foreign_keys=ON')
def main(argv=None, *, prog=None):
p = argparse.ArgumentParser(prog=prog); database_arguments(p)
p.add_argument('--out', required=True)
p.add_argument('--apply-plan'); p.add_argument('--plan-sha256')
args = p.parse_args(argv)
if bool(args.apply_plan) != bool(args.plan_sha256):
p.error('--apply-plan and --plan-sha256 must be supplied together')
target = Path(args.out)
if target.exists():
raise ValueError('Refusing to overwrite an existing plan/report')
progress = lambda event: print(json.dumps({'phase':'exact_row_count', **event}), file=sys.stderr, flush=True)
if args.apply_plan:
raw = Path(args.apply_plan).read_bytes()
if hashlib.sha256(raw).hexdigest() != args.plan_sha256:
raise ValueError('Plan file SHA256 differs from approved bytes')
result = upgrade(json.loads(raw), args.db, pg_service=args.pg_service, pg_schema=args.pg_schema, progress=progress)
else:
result = plan(args.db, pg_service=args.pg_service, pg_schema=args.pg_schema, progress=progress)
target.write_text(json.dumps(result, ensure_ascii=False, indent=2)+'\n')
print(json.dumps({'out':str(target), 'sha256':hashlib.sha256(target.read_bytes()).hexdigest(),
'status':result.get('status','planned')}), flush=True)
+204
View File
@@ -0,0 +1,204 @@
"""Evidence-bound repair of two existing IJCAI/ECAI edition memberships."""
import argparse
from contextlib import closing
import hashlib
import json
from pathlib import Path
from paper_atlas.db.backend import database_arguments, open_read_connection, open_store
from paper_atlas.db.submissions import timestamp
from paper_atlas.collectors.dblp import XML_SHA
YEARS = (2018, 2022)
TARGET = 'ECAI+IJCAI'
MEMBERS = {'ECAI', 'IJCAI'}
EVIDENCE = 'https://www.eurai.org/ecai/history'
MARKER = 'joint_ijcai_ecai_2018_2022_v1'
def _digest(c, sql, params=()):
sha = hashlib.sha256(); count = 0
for row in c.execute(sql, params):
sha.update((json.dumps([row[i] for i in range(len(row))], ensure_ascii=False,
separators=(',', ':')) + '\n').encode())
count += 1
if count > 100000:
raise ValueError('Joint repair evidence scope exceeded bounded row limit')
return {'rows': count, 'sha256': sha.hexdigest()}
def fingerprints(c, ids):
marks = ','.join('?' for _ in ids)
submissions = 'SELECT id FROM submissions WHERE edition_id IN (' + marks + ')'
papers = 'SELECT paper_id FROM submissions WHERE edition_id IN (' + marks + ')'
decisions = 'SELECT id FROM decisions WHERE submission_id IN (' + submissions + ')'
checks = {
'papers': ('id IN (' + papers + ')', 'id'),
'identifiers': ('paper_id IN (' + papers + ')', 'scheme,value'),
'source_records': ('paper_id IN (' + papers + ')', 'id'),
'paper_tags': ('paper_id IN (' + papers + ')', 'paper_id,tag_id,evidence_key'),
'submissions': ('edition_id IN (' + marks + ')', 'id'),
'decisions': ('submission_id IN (' + submissions + ')', 'id'),
'submission_sources': ('submission_id IN (' + submissions + ')', 'submission_id,source_record_id,source_submission_id'),
'submission_identifiers': ('edition_id IN (' + marks + ')', 'edition_id,scheme,value'),
'decision_sources': ('decision_id IN (' + decisions + ')', 'decision_id,source_record_id,source_decision_id'),
'edition_sources': ('edition_id IN (' + marks + ')', 'edition_id,source_id,list_url'),
}
return {table: _digest(c, 'SELECT * FROM ' + table + ' WHERE ' + where + ' ORDER BY ' + order, ids)
for table, (where, order) in checks.items()}
def inspect(c):
target = c.execute('SELECT id FROM venues WHERE acronym=?', (TARGET,)).fetchall()
if len(target) != 1:
raise ValueError('Exactly one existing canonical joint venue required')
target = target[0][0]
aliases = {r[0] for r in c.execute('SELECT alias FROM venue_aliases WHERE venue_id=?', (target,))}
if aliases != MEMBERS:
raise ValueError('Joint target must already have exactly ECAI and IJCAI aliases')
editions = []
for year in YEARS:
rows = c.execute('''SELECT e.id,e.venue_id,v.acronym FROM editions e JOIN venues v ON v.id=e.venue_id
WHERE v.acronym IN ('IJCAI','ECAI+IJCAI') AND e.year=? AND e.track='main' ''', (year,)).fetchall()
if len(rows) != 1:
raise ValueError('Expected one existing edition per year; missing or colliding editions require separate review')
edition, venue, acronym = (rows[0][i] for i in range(3))
count = c.execute('SELECT count(*) FROM submissions WHERE edition_id=?', (edition,)).fetchone()[0]
if not 0 < count <= 5000:
raise ValueError('Existing edition must have a nonempty bounded submission scope')
# Every existing submission must be supported by its own pinned DBLP
# volume record. No title/author matching, new attempts or text writes.
evidence = c.execute('''SELECT s.id,r.external_id,r.metadata_json FROM submissions s
JOIN submission_sources ss ON ss.submission_id=s.id
JOIN source_records r ON r.id=ss.source_record_id JOIN sources src ON src.id=r.source_id
WHERE s.edition_id=? AND src.name='dblp' ORDER BY s.id,r.id''', (edition,)).fetchall()
seen = set()
for row in evidence:
sid, external, metadata = (row[i] for i in range(3))
meta = json.loads(metadata)
bibliography = meta.get('bibliography') or {}
if (meta.get('snapshot_sha256') != XML_SHA
or meta.get('proceedings_key') != 'conf/ijcai/' + str(year)
or meta.get('bibliographic_year') != year
or bibliography.get('booktitle') not in (['IJCAI'], ['IJCAI/ECAI'])
or not external.startswith('conf/ijcai/')):
raise ValueError('Source evidence outside the exact verified IJCAI/ECAI volume')
seen.add(sid)
if len(seen) != count:
raise ValueError('Every submission must have matching original volume evidence')
editions.append({'id': edition, 'year': year, 'track': 'main', 'from_venue_id': venue,
'from_venue': acronym, 'target_venue_id': target, 'submissions': count,
'evidence_url': EVIDENCE, 'proceedings_key': 'conf/ijcai/' + str(year)})
ids = tuple(e['id'] for e in editions)
return {'format_version': 1, 'kind': MARKER, 'checked_at': timestamp(), 'editions': editions,
'content_fingerprints': fingerprints(c, ids), 'target_aliases': sorted(aliases),
'status': 'already_joint' if all(e['from_venue_id'] == target for e in editions) else 'ready',
'scope': 'Only these two existing edition venue references; no source text, paper, submission, decision, track, identifier or tag change.'}
def validate_plan(expected):
if not isinstance(expected, dict):
raise ValueError('Repair plan must be a JSON object')
if set(expected) != {'format_version','kind','checked_at','editions','content_fingerprints','target_aliases','status','scope','database'}:
raise ValueError('Unexpected repair plan fields')
if (type(expected['format_version']) is not int or expected['format_version'] != 1
or expected['kind'] != MARKER or expected['status'] not in ('ready','already_joint')):
raise ValueError('Unsupported repair plan')
if (not isinstance(expected['database'],dict) or not isinstance(expected['content_fingerprints'],dict)
or not isinstance(expected['editions'],list) or len(expected['editions']) != 2
or expected['target_aliases'] != sorted(MEMBERS)):
raise ValueError('Invalid repair plan structure')
for edition, year in zip(expected['editions'], YEARS):
if not isinstance(edition,dict) or edition.get('year') != year:
raise ValueError('Repair plan must name the two exact ordered years')
for key in ('id','year','from_venue_id','target_venue_id','submissions'):
if type(edition.get(key)) is not int or edition[key] <= 0:
raise ValueError('Repair plan IDs/counts must be positive integers')
def apply_plan(c, expected):
validate_plan(expected)
actual = inspect(c)
if actual['content_fingerprints'] != expected['content_fingerprints'] or actual['target_aliases'] != expected['target_aliases']:
raise ValueError('Stale repair plan: protected content or aliases changed')
if len(expected['editions']) != 2:
raise ValueError('Exactly two editions required')
for old, now in zip(expected['editions'], actual['editions']):
if set(old) != set(now):
raise ValueError('Unexpected edition fields')
for key in ('id','year','track','target_venue_id','submissions','evidence_url','proceedings_key'):
if old[key] != now[key]:
raise ValueError('Stale repair plan: edition differs')
if now['from_venue_id'] != old['from_venue_id'] and now['from_venue_id'] != now['target_venue_id']:
raise ValueError('Edition membership differs from plan')
if actual['status'] == 'already_joint':
return {**actual, 'status':'already_joint', 'updated_editions':0}
for edition in actual['editions']:
if edition['from_venue_id'] == edition['target_venue_id']:
continue
changed = c.execute('''UPDATE editions SET venue_id=? WHERE id=? AND venue_id=? AND year=? AND track=?''',
(edition['target_venue_id'],edition['id'],edition['from_venue_id'],edition['year'],edition['track']))
if changed.rowcount != 1:
raise ValueError('Concurrent edition change; entire repair must roll back')
after = inspect(c)
if after['status'] != 'already_joint' or after['content_fingerprints'] != actual['content_fingerprints']:
raise ValueError('Postcheck changed protected content; entire repair must roll back')
c.execute('INSERT INTO schema_migrations(name) VALUES(?) ON CONFLICT DO NOTHING', (MARKER,))
return {**after, 'status':'applied', 'updated_editions':sum(e['from_venue_id'] != e['target_venue_id'] for e in actual['editions'])}
def database_identity(c, db):
if getattr(c, 'postgres', False):
row = c.execute('SELECT current_database(),current_schema()').fetchone()
return {'engine':'postgresql','database':row[0],'schema':row[1]}
return {'engine':'sqlite','path':str(Path(db).resolve())}
def run(db, out, *, pg_service=None, pg_schema=None, plan=None, plan_sha256=None):
out = Path(out).resolve()
if not out.parent.is_dir():
raise ValueError('Report parent directory must already exist')
if out.exists():
raise ValueError('Preserve existing evidence report; choose a new output path')
expected = None
if plan:
raw = Path(plan).read_bytes()
if hashlib.sha256(raw).hexdigest() != plan_sha256:
raise ValueError('Repair plan hash differs before opening database')
expected = json.loads(raw)
validate_plan(expected)
elif plan_sha256:
raise ValueError('Plan hash requires an existing plan')
if db and out == Path(db).resolve():
raise ValueError('Report must not overwrite database')
writer = open_store(db, pg_service=pg_service, pg_schema=pg_schema) if expected is not None else None
c = writer.conn if writer else open_read_connection(db, pg_service=pg_service, pg_schema=pg_schema)
with closing(c):
try:
if expected is not None and not getattr(c, 'postgres', False):
c.commit(); c.execute('BEGIN IMMEDIATE')
identity = database_identity(c, db)
if expected is not None and expected['database'] != identity:
raise ValueError('Plan belongs to another database/schema')
report = apply_plan(c, expected) if expected is not None else inspect(c)
report['database'] = identity
if expected is not None:
report['plan_sha256'] = plan_sha256
if expected is not None:
c.commit()
except BaseException:
if expected is not None: c.rollback()
raise
out.write_text(json.dumps(report,ensure_ascii=False,indent=2)+'\n')
print(json.dumps({'status':report['status'],'editions':len(report['editions']),
'updated_editions':report.get('updated_editions',0),'report':str(out)}))
return report
def main(argv=None, *, prog=None):
parser = argparse.ArgumentParser(prog=prog); database_arguments(parser)
parser.add_argument('--out', required=True)
parser.add_argument('--plan', help='Apply an already reviewed plan; omitted means read-only preflight')
parser.add_argument('--plan-sha256', help='Required exact plan SHA256 when applying')
args = parser.parse_args(argv)
run(args.db,args.out,pg_service=args.pg_service,pg_schema=args.pg_schema,plan=args.plan,plan_sha256=args.plan_sha256)
+95 -4
View File
@@ -12,6 +12,69 @@ from paper_atlas.collectors.public_openreview import SOURCE as PUBLIC_SOURCE
from paper_atlas.collectors.icml_public_archive import SOURCE as ARCHIVE_SOURCE
def coverage_options(manifest):
mode = manifest.get('coverage_mode', 'snapshot')
if mode not in ('snapshot', 'incremental'):
raise ValueError('Unsupported coverage mode')
if mode == 'snapshot':
return None
required = ('venue', 'year', 'track', 'count', 'coverage_previous_count',
'coverage_previous_expected_count', 'coverage_expected_count')
if any(key not in manifest for key in required) or manifest.get('status') != 'partial':
raise ValueError('Incremental coverage requires a partial, explicitly scoped manifest')
previous = manifest['coverage_previous_count']
expected = manifest['coverage_expected_count']
prior_expected = manifest['coverage_previous_expected_count']
if (type(previous) is not int or previous < 0 or type(expected) is not int or expected < 1
or type(manifest['count']) is not int or manifest['count'] < 1
or expected < max(previous, manifest['count'])
or (prior_expected is not None and (type(prior_expected) is not int or prior_expected < 0
or expected < prior_expected))):
raise ValueError('Invalid incremental coverage counts')
return previous, prior_expected, expected
def source_record_count(c, source, edition):
return c.execute('''SELECT count(DISTINCT ss.source_record_id) FROM submission_sources ss
JOIN submissions s ON s.id=ss.submission_id
JOIN source_records sr ON sr.id=ss.source_record_id
WHERE s.edition_id=? AND sr.source_id=?''', (edition, source)).fetchone()[0]
def require_incremental_parent(c, source, manifest, options):
from paper_atlas.db.events import has_event_key, validate_event_key
key = validate_event_key(manifest.get('event_key'))
enabled = has_event_key(c)
if key and not enabled:
raise ValueError('Event identity migration required for incremental coverage')
field = 'e.event_key' if enabled else "''"
rows = c.execute('SELECT e.id,'+field+""" FROM editions e JOIN venues v ON v.id=e.venue_id
WHERE lower(v.acronym)=lower(?) AND e.year=? AND e.track=?""",
(manifest['venue'], manifest['year'], manifest['track'])).fetchall()
if key is None:
if len(rows) > 1 or any(r[1] for r in rows) or (manifest['venue'] == 'WWW' and manifest['year'] in (1994,1995)):
raise ValueError('Explicit manifest event_key required for incremental coverage')
else:
rows = [r for r in rows if r[1] == key]
if len(rows) > 1:
raise ValueError('Ambiguous incremental coverage event')
edition = rows[0] if rows else None
entries = c.execute('''SELECT list_url,status,expected_count,imported_count
FROM edition_sources WHERE edition_id=? AND source_id=?''',
(edition[0], source)).fetchall() if edition else []
previous, prior_expected, _ = options
if entries:
if len(entries) != 1 or entries[0][0] != manifest['list_url']:
raise ValueError('Incremental coverage requires one unambiguous source listing')
if tuple(entries[0][1:]) != ('partial', prior_expected, previous):
raise ValueError('Incremental coverage parent changed or is not partial')
elif previous != 0 or prior_expected is not None:
raise ValueError('Incremental coverage parent is absent')
actual = source_record_count(c, source, edition[0]) if edition else 0
if actual != previous:
raise ValueError('Incremental coverage parent differs from actual source records')
def ingest_file(db,path, *, pg_service=None, pg_schema=None):
path = Path(path)
manifest_path = path.with_suffix('.manifest.json')
@@ -24,6 +87,7 @@ def ingest_file(db,path, *, pg_service=None, pg_schema=None):
source_name = manifest.get('source')
if not source_name:
raise ValueError('A source manifest is required')
incremental = coverage_options(manifest)
store = open_store(db, pg_service=pg_service, pg_schema=pg_schema)
c = store.conn
run = None
@@ -35,6 +99,8 @@ def ingest_file(db,path, *, pg_service=None, pg_schema=None):
source_id = store.source(source_name,manifest['list_url'])
run = inserted_id(c,'INSERT INTO ingest_runs(source_id,checkpoint_json) VALUES(?,?)',(source_id,json.dumps({'file':str(path),'expected_sha256':manifest.get('file_sha256')})))
c.commit()
if incremental is not None:
require_incremental_parent(c, source_id, manifest, incremental)
digest = hashlib.sha256()
with path.open('rb') as stream:
for line in stream:
@@ -42,9 +108,11 @@ def ingest_file(db,path, *, pg_service=None, pg_schema=None):
row = json.loads(line)
if row['source'] != source_name:
raise ValueError('Source differs from manifest')
if any(key in manifest and manifest[key]!=row[key] for key in ('venue','year','track')):
if any(key in manifest and manifest[key]!=row.get(key) for key in ('venue','year','track','event_key')):
raise ValueError('Conference edition differs from manifest')
require_track_record(row, manifest)
from paper_atlas.db.events import validate_event_key
validate_event_key(row.get('event_key'))
external = row['external_id']
if external in seen:
raise ValueError('Duplicate external ID in one collected file: '+external)
@@ -65,7 +133,13 @@ def ingest_file(db,path, *, pg_service=None, pg_schema=None):
status=event['status']
if events and status is None:raise ValueError('Explicit decision event requires a status')
if status is not None and status not in ('accepted','rejected','desk_rejected','withdrawn','under_review','unknown'):raise ValueError('Unsupported decision event')
edition=store.decision(paper,record,row['venue'],row['year'],row['track'],external,event.get('evidence_url',row['url']),status,event.get('raw_value',''),row.get('venue_aliases'),identities=identities,observed_at=event.get('observed_at') or row_observed,decision_date=event.get('decision_date'),source_decision_id=event.get('source_decision_id',''),submitted_at=row.get('submitted_at'),guard_status=source_name in (PUBLIC_SOURCE,ARCHIVE_SOURCE))
edition=store.decision(paper,record,row['venue'],row['year'],row['track'],external,event.get('evidence_url',row['url']),status,event.get('raw_value',''),row.get('venue_aliases'),identities=identities,observed_at=event.get('observed_at') or row_observed,decision_date=event.get('decision_date'),source_decision_id=event.get('source_decision_id',''),submitted_at=row.get('submitted_at'),guard_status=source_name in (PUBLIC_SOURCE,ARCHIVE_SOURCE),event_key=row.get('event_key'))
from paper_atlas.db.edition_scopes import KEY
scope_metadata=json.loads(c.execute('SELECT metadata_json FROM source_records WHERE id=?',(record,)).fetchone()[0])
if scope_metadata.get(KEY):
actual_track=c.execute('SELECT track FROM editions WHERE id=?',(edition,)).fetchone()[0]
if row['track']!=actual_track:
raise ValueError('Recollect this whole-volume source with reviewed per-record tracks before refresh')
editions.add(edition)
else:
raise ValueError('This importer requires an explicit supported decision status')
@@ -82,8 +156,25 @@ def ingest_file(db,path, *, pg_service=None, pg_schema=None):
if expected is not None and expected != count:
raise ValueError(f'Manifest count {expected} differs from records {count}')
complete=expected==count and manifest.get('status') not in ('partial','blocked') and not manifest.get('missing_abstract_count',0) and not missing_abstracts
c.execute('INSERT INTO edition_sources(edition_id,source_id,list_url,status,expected_count,imported_count,last_success_at) VALUES(?,?,?,?,?,?,?) ON CONFLICT(edition_id,source_id,list_url) DO UPDATE SET status=excluded.status,expected_count=excluded.expected_count,imported_count=excluded.imported_count,last_success_at=excluded.last_success_at,last_error=NULL',(edition,source_id,manifest['list_url'],'complete' if complete else 'partial',expected,count,time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime())))
c.execute("UPDATE ingest_runs SET status='complete',finished_at=?,records_seen=?,records_written=?,checkpoint_json=? WHERE id=?",(timestamp(),count,count,json.dumps({'file':str(path),'file_sha256':digest.hexdigest()}),run))
imported = count
condition = ''
condition_params = ()
if incremental is not None:
previous, prior_expected, expected = incremental
imported = source_record_count(c, source_id, edition)
if imported < previous or imported > expected:
raise ValueError('Incremental coverage exceeds the declared source bounds')
complete = False
condition = " WHERE edition_sources.imported_count=? AND COALESCE(edition_sources.expected_count,-1)=? AND edition_sources.status='partial'"
condition_params = (previous, -1 if prior_expected is None else prior_expected)
result = c.execute('INSERT INTO edition_sources(edition_id,source_id,list_url,status,expected_count,imported_count,last_success_at) VALUES(?,?,?,?,?,?,?) ON CONFLICT(edition_id,source_id,list_url) DO UPDATE SET status=excluded.status,expected_count=excluded.expected_count,imported_count=excluded.imported_count,last_success_at=excluded.last_success_at,last_error=NULL'+condition,(edition,source_id,manifest['list_url'],'complete' if complete else 'partial',expected,imported,time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime()),*condition_params))
if incremental is not None and result.rowcount != 1:
raise ValueError('Incremental coverage parent changed during import')
checkpoint = {'file':str(path),'file_sha256':digest.hexdigest()}
if incremental is not None:
checkpoint['coverage'] = {'mode':'incremental','previous_count':previous,
'expected_count':expected,'imported_count':imported}
c.execute("UPDATE ingest_runs SET status='complete',finished_at=?,records_seen=?,records_written=?,checkpoint_json=? WHERE id=?",(timestamp(),count,count,json.dumps(checkpoint),run))
c.commit()
print(json.dumps({'file':str(path),'status':'imported','records':count,'missing_abstract_count':missing_abstracts}),flush=True)
except BaseException as exc:
+2 -2
View File
@@ -143,7 +143,7 @@ def migrate(db, service, out, *, schema='research', storage_path=None, min_free_
free_space(storage_path, min_free_gib)
control = schema + '_migration'
report = {'status': 'preflight', 'source': str(db), 'service': service, 'schema': schema,
'started_at': timestamp(), 'tables': {}, 'scope': 'All 21 business tables; FTS5 internals rebuilt as native PostgreSQL GIN.'}
'started_at': timestamp(), 'tables': {}, 'scope': 'All baseline business tables and recognized installed extensions; FTS5 rebuilt as native PostgreSQL GIN.'}
with Path(str(db) + '.maintenance.lock').open('a') as lock:
fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
if Path(str(db) + '-wal').exists() and Path(str(db) + '-wal').stat().st_size:
@@ -240,7 +240,7 @@ def migrate(db, service, out, *, schema='research', storage_path=None, min_free_
JOIN pg_am am ON am.oid=ix.relam WHERE ns.nspname=%s AND ix.relname='papers_search_gin' ''', (stage,)).fetchone()
if search != ('gin', True, True, 'papers'):
raise ValueError('Native full-text index is not valid and ready')
for table in TABLES:
for table in plan:
pg.execute('ANALYZE ' + qualify(stage, table))
invalid = pg.execute('''SELECT count(*) FROM pg_constraint co JOIN pg_class cl ON cl.oid=co.conrelid
JOIN pg_namespace ns ON ns.oid=cl.relnamespace WHERE ns.nspname=%s AND NOT co.convalidated''', (stage,)).fetchone()[0]
+4 -2
View File
@@ -8,7 +8,9 @@ TABLES = ('sources', 'papers', 'identifiers', 'source_records', 'venues', 'editi
'submission_sources', 'submission_identifiers', 'decision_sources',
'submission_merges', 'decision_merges', 'schema_migrations', 'tags',
'paper_tags', 'match_candidates', 'paper_merges', 'ingest_runs')
OPTIONAL_TABLES = ('annotation_events',)
CHECKS = {
'annotation_events': ["kind IN ('tag','research_type')", 'retracts_id IS NULL OR retracts_id<>id'],
'venues': ["venue_type IN ('conference','journal','review_platform')"],
'edition_sources': ["status IN ('pending','running','complete','partial','blocked','unavailable','not_yet_published')"],
'decisions': ["status IN ('accepted','rejected','desk_rejected','withdrawn','under_review','unknown')"],
@@ -50,10 +52,10 @@ def quote(name):
def inspect(connection):
business = {name for schema, name, kind, *_ in connection.execute('PRAGMA table_list')
if schema == 'main' and kind == 'table' and not name.startswith('sqlite_')}
if business != set(TABLES):
if not set(TABLES) <= business or business - set(TABLES) - set(OPTIONAL_TABLES):
raise ValueError('Unexpected business tables: ' + repr(sorted(business ^ set(TABLES))))
result = {}
for table in TABLES:
for table in (*TABLES, *(name for name in OPTIONAL_TABLES if name in business)):
columns = [{'name': r[1], 'type': r[2].upper(), 'notnull': bool(r[3]),
'default': r[4], 'pk': r[5]}
for r in connection.execute('PRAGMA table_info(' + quote(table) + ')')]
+2
View File
@@ -85,3 +85,5 @@ class WriteConnection:
class PostgresStore(Store):
def __init__(self, service, schema=None):
self.conn = WriteConnection(service, schema)
from paper_atlas.db.events import has_event_key
self.event_identity = has_event_key(self.conn)
+38 -4
View File
@@ -14,7 +14,9 @@ ACCEPTED_PAPERS = "SELECT s.paper_id FROM submissions s JOIN decisions d ON d.su
def known_acceptances(conn,paper):
return [dict(row) for row in conn.execute('''SELECT s.id AS submission_id,v.acronym AS venue,e.year,e.track,
from paper_atlas.db.events import has_event_key
event = 'e.event_key' if has_event_key(conn) else "''"
return [dict(row) for row in conn.execute('''SELECT s.id AS submission_id,v.acronym AS venue,e.year,e.track,'''+event+''' AS event_key,
d.id AS decision_id,d.decision_date,d.observed_at,d.evidence_url
FROM submissions s JOIN editions e ON e.id=s.edition_id JOIN venues v ON v.id=e.venue_id
JOIN decisions d ON d.submission_id=s.id WHERE s.paper_id=? AND d.status='accepted' AND '''+LATEST_DECISION+
@@ -29,10 +31,13 @@ def main(argv=None, *, prog=None):
parser.add_argument('--pg-schema', help='Optional PostgreSQL schema override; otherwise use the configured search_path')
parser.add_argument('--query', help='Title/abstract search: FTS5 for SQLite, web-search syntax for PostgreSQL')
parser.add_argument('--paper',type=int,help='Paper ID; include sources, tags and submission history')
parser.add_argument('--research-type', help='Independent type filter as namespace=value; no type inferred from track')
parser.add_argument('--annotation-history', action='store_true', help='Include retraction evidence for --paper')
parser.add_argument('--tag', help='Filter as namespace=value, e.g. arxiv:category=cs.AI')
parser.add_argument('--venue', help='Conference acronym')
parser.add_argument('--year', type=int)
parser.add_argument('--track',help='Exact track, e.g. main, findings, workshop')
parser.add_argument('--event-key',help='Exact event within a venue/year/track')
parser.add_argument('--status', choices=['accepted','rejected','desk_rejected','withdrawn','under_review','unknown'])
parser.add_argument('--outcome',choices=['accepted','no_known_acceptance'],help='跨会议的已知录用情况;未查到录用不等于从未录用')
parser.add_argument('--limit', type=int, default=20)
@@ -47,6 +52,13 @@ def main(argv=None, *, prog=None):
conn = sqlite3.connect(Path(args.db).resolve().as_uri()+'?mode=ro', uri=True)
conn.row_factory = sqlite3.Row
conn.execute('BEGIN') # One consistent read snapshot while ingestion continues.
from paper_atlas.db.events import has_event_key
event = 'e.event_key' if has_event_key(conn) else "''"
if args.event_key is not None and event == "''":
conn.close()
raise ValueError('Event identity migration required for event-key queries')
from paper_atlas.curation.annotations import available, observations, ACTIVE
has_annotations = available(conn)
if args.stats:
result = {name:conn.execute('SELECT count(*) FROM '+name).fetchone()[0] for name in ('papers','source_records','submissions','decisions','tags','match_candidates')}
result['records_by_source'] = [dict(r) for r in conn.execute('SELECT s.name,count(r.id) AS imported_records FROM sources s LEFT JOIN source_records r ON r.source_id=s.id GROUP BY s.id ORDER BY s.name')]
@@ -69,17 +81,35 @@ def main(argv=None, *, prog=None):
where.append('p.id IN (SELECT rowid FROM papers_fts WHERE papers_fts MATCH ?)')
params.append(args.query)
if args.tag:
if '=' not in args.tag:
parser.error('--tag requires namespace=value')
namespace,value = args.tag.split('=',1)
where.append('EXISTS(SELECT 1 FROM paper_tags pt JOIN tags t ON t.id=pt.tag_id WHERE pt.paper_id=p.id AND t.namespace=? AND t.value=?)'); params.extend([namespace,value])
platform = 'EXISTS(SELECT 1 FROM paper_tags pt JOIN tags t ON t.id=pt.tag_id WHERE pt.paper_id=p.id AND t.namespace=? AND t.value=?)'
params.extend([namespace,value])
if has_annotations:
platform = '(' + platform + ' OR EXISTS(SELECT 1 FROM annotation_events a WHERE a.paper_id=p.id AND a.kind=\'tag\' AND a.namespace=? AND a.value=? AND ' + ACTIVE + '))'
params.extend([namespace,value])
where.append(platform)
if args.research_type:
if '=' not in args.research_type:
parser.error('--research-type requires namespace=value')
namespace,value = args.research_type.split('=',1)
if has_annotations:
where.append('EXISTS(SELECT 1 FROM annotation_events a WHERE a.paper_id=p.id AND a.kind=\'research_type\' AND a.namespace=? AND a.value=? AND ' + ACTIVE + ')')
params.extend([namespace,value])
else:
where.append('1=0')
if args.outcome:
where.append('p.id '+('IN' if args.outcome=='accepted' else 'NOT IN')+' ('+ACCEPTED_PAPERS+')')
if args.venue or args.year or args.status or args.track:
if args.venue or args.year or args.status or args.track or args.event_key is not None:
clause = ['1=1']
if args.venue:
if conn.execute("SELECT 1 FROM sqlite_master WHERE type='table' AND name='venue_aliases'").fetchone():
clause.append('(lower(v.acronym)=lower(?) OR EXISTS(SELECT 1 FROM venue_aliases va WHERE va.venue_id=v.id AND lower(va.alias)=lower(?)))'); params.extend([args.venue,args.venue])
else:
clause.append('lower(v.acronym)=lower(?)');params.append(args.venue)
if args.event_key is not None:
clause.append('e.event_key=?');params.append(args.event_key)
if args.track:
clause.append('e.track=?');params.append(args.track)
if args.year:
@@ -98,10 +128,14 @@ def main(argv=None, *, prog=None):
paper['known_acceptances']=known_acceptances(conn,row['id'])
paper['publication_outcome']='accepted' if paper['known_acceptances'] else 'no_known_acceptance'
if args.paper is not None:
paper['research_types'] = observations(conn, row['id'], kind='research_type')
paper['annotation_tags'] = observations(conn, row['id'], kind='tag')
if args.annotation_history:
paper['annotation_history'] = observations(conn, row['id'], history=True)
paper['tags'] = [dict(r) for r in conn.execute('SELECT t.namespace,t.value,pt.evidence_key FROM paper_tags pt JOIN tags t ON t.id=pt.tag_id WHERE pt.paper_id=?',(row['id'],))]
paper['sources'] = [dict(r) for r in conn.execute('SELECT s.name,r.external_id,r.url,r.title,r.abstract,r.retrieved_at FROM source_records r JOIN sources s ON s.id=r.source_id WHERE r.paper_id=?',(row['id'],))]
submissions = []
for sub in conn.execute('SELECT s.id,s.source_submission_id,s.submitted_at,v.acronym,e.year,e.track FROM submissions s JOIN editions e ON e.id=s.edition_id JOIN venues v ON v.id=e.venue_id WHERE s.paper_id=? ORDER BY e.year,s.id',(row['id'],)):
for sub in conn.execute('SELECT s.id,s.source_submission_id,s.submitted_at,v.acronym,e.year,e.track,'+event+' AS event_key FROM submissions s JOIN editions e ON e.id=s.edition_id JOIN venues v ON v.id=e.venue_id WHERE s.paper_id=? ORDER BY e.year,s.id',(row['id'],)):
submission = dict(sub)
submission['decisions'] = []
for d in conn.execute('SELECT id,status,raw_value,evidence_url,observed_at,decision_date FROM decisions WHERE submission_id=? ORDER BY observed_at,COALESCE(decision_date,observed_at),id',(sub['id'],)):
+1 -1
View File
@@ -21,5 +21,5 @@ include = ["paper_atlas*"]
exclude = ["tests*"]
[tool.setuptools.package-data]
"paper_atlas.db" = ["schema.sql"]
"paper_atlas.db" = ["schema.sql", "annotations.sql"]
"paper_atlas.resources" = ["venues.json"]

Some files were not shown because too many files have changed in this diff Show More