Palimpsest — censorship, China economy and model-eval observatory

io.github.beepboop2025由 GitHub 账号 beepboop2025 发布v1.9.3更新于 Oct 24, 2026

Rights-aware censorship, China-economic status, and tamper-evident AI evaluation tools.

发布方自己的服务:model.tools — Zero-Auth Agent Utilities

已验证Streamable HTTP可网页运行网页搜索与抓取数据与分析AI 与机器学习

概览

AI 生成的概览

远程 MCP 服务器,以只读研究工具的形式提供 Palimpsest 的审查、中国经济与 AI 模型评测数据集,并附带权利状态说明。

可以做什么
  • 发现全部数据集及其来源时钟、权利与访问状态
  • 列出并读取审查、信息控制与模型评测主题下的具名信号
  • 读取 newsroom、wire、economy 与 machine-analysis 等报道视图
  • 查看中国经济观测面的发布权利判定
  • 一次性获取跨信号的中国审查现状判定
  • 在一次调用中读取防火墙在网络层与模型层的状态
适用场景
适合记者、研究人员和分析师获取有来源依据、标注权利状态的中国审查、信息控制与 AI 模型拒答证据,无需抓取网页或猜测文件名。需要快速了解当前信号或查阅有文档的数据集目录时尤为合适。
运行要求
需要一个远程 streamable HTTP 端点;未声明任何软件包、API 密钥、环境变量或请求头。需要能访问该托管服务的网络。
安装前请注意
多个数据面被刻意限制:中国经济数值默认拒绝,只返回政策摘要而无记录;部分信号返回受限或不可用的权利元数据而非数值。应把返回的状态视为弃权而非结论,引用前先核对声明的覆盖范围与权利。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Palimpsest — censorship, China economy and model-eval observatory,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.beepboop2025%2Fpalimpsest/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "palimpsest-censorship-china-economy-and": {
      "type": "http",
      "url": "https://api.seiche.info/palimpsest/mcp"
    }
  }
}

README

Palimpsest

[License: MIT] [Python] [tests] [verify] [data] [safety] [Sponsor Palimpsest]

[DDTI refresh] [Generative Firewall] [GDELT cross-signal] [GitHub-refuge] [Wayback reconstruction]

A public, tamper-evident record of what powerful actors quietly erase, and a way for anyone to detect, offline, whether the served record still reproduces its published commitments.

Palimpsest is one primitive, a sealed append-only ledger you can verify without trusting us, pointed at two places where the record gets rewritten in the dark:

  • The Verifiable Eval Registry. AI evaluation results, sealed at publication. The questions are frozen and hash-committed before any model is queried, every result is chained to the one before it, and a single edited number fails verification. Chinese state-aligned models and Western frontier models are held to the same tamper-evident, pre-registered machinery, each on its own frozen suite, watched over time for what they quietly stop answering. Not a lab, not a government, not us: if we edited a published number, our own verifier would report the break.
  • The Censorship Observatory. Authoritarian deletion, measured as data. It reads the public record of what has been scrubbed, rewritten or blocked — across the network, the encyclopedia and the model — and turns what a state is burying into a live, openly licensed early-warning signal for journalists, researchers, and human rights defenders. Twenty-six signals refresh on their own, unattended, every number tracing back to public evidence.
  • The AI Eval Journal. Evidence-bound essays about why the evals exist, what changed in their methods, what failed, and what the record can claim today. Every article keeps its limitations, falsifier, verification commands and exact artifact receipts; the linked readings remain authoritative.
  • Live Eval Findings. Deterministic analysis rebuilt from the newest verified refusal-drift panel. Every analytical sentence binds to an exact evidence selector, while controls, denominators, intervals, counterreadings and immutable revisions remain available beside the finding.

Built entirely from open sources. It watches the censor, never the censored.

Use Palimpsest for source-bound China evidence

For a connected institutional workflow, see institutional evidence routing. LiquiLens is the front door for institution stress and risk-review questions; Palimpsest supplies relevant economic, information-control and verifiable evaluation evidence under its own coverage and rights contracts.

Palimpsest is the China-evidence layer of a broader financial-research fleet. Its money-market guide exposes official CFETS repo fixings, SHIBOR and USD/CNY parity with economic-period, release and collection clocks. Its capital-market guide is deliberately narrower: official HKEX Stock Connect aggregate observations, not general equity, bond, derivatives or investor-level coverage. The China economy API guide shows keyless REST and release-bound MCP 1.9.3 examples while keeping revisions, rights, coverage and abstentions attached.

At the 24 August 2026 publication snapshot, the broad China read and named-series forecast targets were warming_up; this is an abstention, not a validated forecast. Re-read the linked current artifacts before citing status. For system funding and money/capital transmission use Seiche, for institution risk use LiquiLens, and for exit liquidity use Undertow. The canonical Financial Evidence Agent Skill performs that routing without merging the products’ evidence boundaries. Agents can discover Palimpsest itself through its AI catalog.

For companion funding, bank and exit-liquidity research, the free agent starter kit configures Seiche, LiquiLens and Undertow, with Hermes and OpenClaw setup guides. Palimpsest is added separately through its China economy API guide above; the kit does not include its MCP connection or expand its publication rights.

Follow Belt and Road evidence without flattening it

The Belt and Road Observatory publishes a global source, rights, project-lifecycle, finance and local-impact contract with priority depth for CPEC and Gwadar in Pakistan, CMEC and Kyaukpyu in Myanmar, and seven deliberately separate Balochistan political, civic, armed, legal, state-action, rights and political-economy lanes. Its NarcoScope overlay joins only aggregate country/time context; it cannot identify an actor or establish a political, criminal, corridor or causal link.

The separately licensed World Bank WDI bundle adds 3,564 annual country-indicator rows for China, Myanmar and Pakistan. Observed, forecast and unavailable values remain distinct, and national context is never treated as project evidence. Exact Release A publication is bound by the immutable Pages receipt and receipt schema: commit 14b06772dfed6cdc736279c9ab61b444e5846598, workflow run 32984946320, and cache-busted served-byte verification at 2026-08-26T15:55:34Z. The receipt’s fresh_until clock is a 24-hour point-in-time availability statement, not continuous monitoring and not a new WDI observation date.

Fund independent validation

Palimpsest has already frozen and published a 145-row validation sample, its codebook and the agreement script. The immediate campaign has a planned $1,800 target for two independent Mandarin-speaking coders. Their completed coding sheets, agreement result and limitations will be published even if the result rejects the labelling scheme.

Fund the study on GitHub monthly or once, starting at $1. You can also inspect the campaign and direct crypto routes, review the public funding ledger, or use the Giveth project page. The Giveth verification application is submitted but not yet approved, and the project is not yet GIVbacks eligible.

Ongoing support pays for vantage points, archives, model credits and independent human review. It never buys a say in the research questions, methods, findings or publication schedule. Card checkout is handled on GitHub; Palimpsest does not collect or store donor card or bank details.

Palimpsest evaluates how Chinese and state-aligned language models respond to documented events and criticism of the Chinese Communist Party. The Generative Firewall and evaluation registry bind each result to declared questions, retained response evidence, uncertainty and detectable revisions. A screenshot alone cannot establish a repeatable pattern or a model maker's motive; every claim stays scoped to its named panel, suite and timestamp.

Prove it yourself, in one command

bash
git clone https://github.com/beepboop2025/palimpsest && cd palimpsestpython3 scripts/reproduce_all.py

That wrapper runs the sealed-chain verifiers and rebuilds the weekly situation, gazetteer phylogeny and collector-health scorecards from committed files. Exit 0 means they still match. The individual commands remain:

bash
python3 scripts/verify_eval_registry.py   # the eval chain + the pre-registration rulepython3 scripts/verify_refusal_transcripts.py  # current frontier text -> seal -> labelspython3 -m scripts.build_eval_assurance --check # the claim ceiling matches the evidencepython3 -m scripts.build_eval_findings --check # live findings match the sealed panelpython3 scripts/verify_ledger.py          # the erasure / censorship ledgerpython3 scripts/evidence_capsule.py verify protocol/test-vectors/palimpsest-erasure-v1.json

No install, no key, no server, standard library only. Change one sealed byte and the verifier names the break. That is the entire idea: you do not have to trust the operator, you check.

Need to carry one claim and its exact supporting bytes into another newsroom, research notebook or agent? Evidence Capsules package the evidence, typed claims and explicit limitations into one inert JSON file with the same offline verification model.

The reviewed ScamShield intelligence pack applies that boundary to scam research: 18 public sources and 8 typologies across three distinct dimensions, with support levels that describe evidence relationships rather than guilt or risk. ScamShield can create a private local Evidence Capsule while raw Telegram text stays hashed and is not sent by default; public candidates omit messages, exact indicators and owner-only liquidity values, require human review, and are never auto-published. The complete boundary is documented in integrations/scamshield/README.md.

The newsroom also exposes Whispers from the Dragon Den: human-reviewed, source-free analytical context derived from eligible public-channel capsules, with its own RSS and JSON Feed. Raw public-channel forwards remain in separate, warned Telegram channels: the catch-all feed, cyber and technology, and regional and borderlands. They never enter the website artifact without the separate human-review and sanitization path.

The China Situation desk now places publisher reports, exact-link institutional Instagram/Telegram observations, reviewed source-free Dragon Whispers, and Palimpsest Observatory measurements in one auditable view. It is not a generic aggregator: each layer keeps its own source relationship, coverage receipt, revision identity, and limitation. The social registry is closed and public; Instagram uses Meta's official API only, and the authenticated Telegram handoff can append sanitized versions without gaining authority over Instagram or corroboration. Its structured index and dedicated RSS/JSON feeds are linked from the public feed directory.

Or watch it run live: the observatory (the live censorship signals), the Verifiable Eval Registry, the AI Eval Journal, Live Eval Findings, and the Generative Firewall Index. A ten-second, zero-dependency taste: python3 demo/palimpsest_demo.py pulls the live China Digital Times feed and ranks what the censor is focused on right now (--source sample runs offline).

The full operational view is OSINT China: the public roll-up over every China-facing reading, including each source's cadence, freshness deadline, coverage state and complete machine-readable payload. A failed or stale collector stays on the board as a visible gap; it is never replaced by a plausible-looking zero.

An independent hourly recovery watchdog evaluates the published evidence deadlines, not just the last saved health labels. It re-dispatches an idle, reviewed producer for stale/missing/corrupt active sources, refreshes an old command bundle before trusting its embedded states, and caps each recovery wave to prevent a retry storm. Operational health is kept separate from analytic readiness: for example, a complete monthly Believability collection is live while its eight-month divergence baseline is still warming up. Intentionally disabled optional methods remain visible but are not reported as dead required schedulers.

The same page now exposes those retained payloads as a searchable structured ledger and adds an evidence spine across four deliberately separate lanes: information controls, monetary plumbing, aggregate illicit-market observables, and reviewed scam/laundering signals. The versioned intelligence-commons manifest connects Palimpsest, ScamShield, NarcoScope, Seiche and LiquiLens through typed, directional contracts. A connection is context, not causation: typology matches do not establish predicate offences or source of funds; private models, raw messages, exact IOCs and operational leads never cross into the public commons.

Evidence newsroom and reporting gate

The Palimpsest Wire now separates fast evidence briefs from publication-ready reporting. Its closed primary-document archive preserves exact official-source vintages and separate publication/retrieval clocks; its corroboration ledger requires an explicit human decision before a second source group counts; and its frozen network rounds retain protocol, ASN/region, same-round controls and outage scope without manufacturing a national censorship percentage.

The public Reporting Standards surface shows why every explainer or investigation is publishable or blocked. The deeper profiles require primary evidence, independent groups, history, counterevidence, relevant expert and affected voices, an explanatory visual, sentence-level citations, limitations and human editing. Investigations add a skeptical expert, independent fact-check, right-to-reply, visible updates, falsification and source safety. Passing a gate never publishes automatically. Protected interview notes are accepted only as externally encrypted bytes and never enter the public repository. Architecture and exact contracts: docs/REPORTING-NEWSROOM-V2.md.

The optional private-runtime layer is an explicit deployment bridge. An operator sets the repository variable NEMESIS_SNAPSHOT_URL to one static public-snapshot HTTPS endpoint and supplies a separate NEMESIS_SNAPSHOT_HMAC_KEY secret. The hourly roll-up authenticates the exact response bytes against the endpoint's .hmac-sha256 sidecar, then reconstructs only the closed, versioned palimpsest-nemesis.public-snapshot contract. It refuses redirects, private-network targets, oversized responses, invalid UTF-8, duplicate keys, non-finite numbers, unknown fields at every depth, contradictory health, and future-dated evidence. The accepted document is written atomically as readings/nemesis-latest.json, after which the roll-up is rebuilt, sealed and tested. If the URL is unset, the bridge remains visibly absent. If it is configured but fails authentication or validation, publication fails loudly.

[The Verifiable Eval Registry, live: sealed runs of Chinese state-aligned and Western frontier models, each on its own frozen suite, chain intact, with the frontier refusal-drift panel]

The registry, live. Chinese state-aligned and Western frontier models under one tamper-evident, pre-registered machinery, each family on its own frozen suite, every run sealed, chain intact. The drift panel catches real events: as of the 11 July 2026 panel it had recorded one Western model refusing a benign legal question its three peers answered, on a probe set frozen before any of them was queried. Later readings are their own sealed entries; the panel is a moving record, not a fixed claim.

[Palimpsest DDTI Observatory — the Censorship Fear Index and the selectivity / novelty signals]

The observatory headline: the Censorship Fear Index (one auditable 0–100 number), the top censor target, and the reachable selectivity and novelty signals. Velocity is shown suppressed, never faked. Representative data.


Why a record that cannot be quietly rewritten

Two different kinds of evidence are becoming load-bearing, and both live in files the publishing side can edit after the fact.

AI evaluations. Every serious safety claim about a frontier model now routes through evals. Labs decide whether to ship on eval results, responsible-scaling policies trigger on them, and regulators are starting to cite them. Yet the results sit in ordinary web pages, PDFs, and git repos the publisher controls. If a capability number later becomes inconvenient, the cheapest response is a quiet revision. Nobody has to lie; the page just changes, and no outsider can prove it ever said anything different.

Authoritarian censorship. Before roughly 2013 a deletion often left a mark you could see and count. Today it usually does not: a post simply stops existing, with no notice and nothing left behind. For the people it hurts most, that silence is the point. What a state rushes to delete is also one of the clearest readings of what it actually fears. Every deletion is a kind of confession.

Both problems have the same shape: without a commitment, the before state is unprovable. Palimpsest freezes that state. Hashes make an edit, deletion, reorder or cherry-pick detectable within the served record; public history, external anchors and witnesses make whole-record rewrites observable outside the operator's infrastructure. The trust boundary is explicit rather than compressed into the word “immutable.”

The integrity architecture

The central claim is that revision of the published record is detectable under the stated threat model. Here is exactly what enforces that, who each layer defends against, and, crucially, what none of it can do. A trust claim without a threat model is marketing; the full model is in docs/INTEGRITY.md.

#LayerWhat it provesWho must be defeated to fake it
1Hash chain (core/sealed_ledger.py, core/eval_registry.py)No entry was altered, reordered, or dropped within the file. The registry additionally rejects any run whose probe set was not frozen earlier in the chain.Nobody. Anyone holding the file recomputes it offline, stdlib only.
2Merkle root + inclusion proofs (scripts/prove_inclusion.py)One 64-char value fingerprints the whole record; any single result verifies against it in log₂(N) hashes.Same as layer 1, without needing the whole chain.
3Public git historyEvery refresh is a timestamped commit on a public repo. Rewriting it needs a force-push, visible to anyone with a clone or fork.GitHub, plus everyone who ever cloned.
4Internet Archive snapshots (scripts/anchor_roots.py)A dated third-party copy of the exact chain bytes, outside our infrastructure and jurisdiction.The Internet Archive.
5OpenTimestamps / Bitcoin (scripts/anchor_roots.py)The roots existed no later than a Bitcoin block time; .ots proofs verify against the chain, not against us.Bitcoin's proof-of-work.
6Independent witness (ops/witness/)A from-scratch reimplementation on separate infrastructure re-verifies the served chains and checks every previously seen head is still there. Detects split views and retroactive rewrites, and alerts.Every running witness, at once and retroactively.

Layers 1–2 are self-verification, and are built and tested today. Layers 3–6 exist for the one adversary self-verification cannot stop, an operator who rewrites the whole file and re-serves it, including us. The anchoring step (4–5) is wired into the refresh pipeline; the witness (6) is a single stdlib file anyone can run.

What it does not protect against, stated plainly: lying at capture time (the chain preserves a false reading faithfully, so probes are pre-registered and raw responses are hashed for re-runs); the short window between sealing and the first external anchor; suppression by omission (mitigated by an open, cron-scheduled pipeline that abstains loudly rather than skipping silently); and endpoint compromise (an attacker could append false new entries, but still cannot rewrite old ones without tripping layers 3–6). The honest limits are the point, and they live in docs/INTEGRITY.md.


Application 1 — the Verifiable Eval Registry

A public, tamper-evident record of AI-model evaluations. See docs/EVAL-REGISTRY.md.

  • Pre-registration by construction. The probe set is frozen and hash-committed into the chain before a run can be accepted. Frontier v2 binds exact prompt text. GFI v2 additionally refuses the first model query until its exact protocol has been committed and pushed publicly; legacy GFI v1 committed concept identifiers and remains labelled as partial assurance.
  • Sealed at publication. Each result is hash-chained to its predecessor and fingerprinted by a Merkle root. Edit a published number and scripts/verify_eval_registry.py reports the break.
  • The first live audit: cross-lab refusal drift. The registry runs separate frozen suites with no model in common: cn-sensitive-generative-firewall-v1 (DeepSeek, Qwen) and frontier-overrefusal-v1/-v2 (OpenAI, Anthropic, Meta, Mistral). No model has ever been run under both. What is shared is the machinery, not the questions: the same tamper-evident, pre-registered apparatus audits a state-aligned model and a Western frontier model, each on its own frozen suite, tracked run over run for what a model quietly stops answering, an undisclosed behavioral change no changelog admits.
  • Measured so it survives review. Every rate carries a Wilson interval and every suite publishes the smallest change a single look could detect. The standing alarm is a mixture supermartingale, so its false-alarm rate is bounded over the lifetime of a watch that re-reads every model every six hours, rather than per look. Each question is asked in three meaning-preserving wordings, because refusal behaviour is sensitive to phrasing and one wording cannot tell a policy from a tripwire. A frozen anchor set re-scores the classifier on every run, so an instrument change can never be published as a model change. Design and honest limits: docs/FRONTIER-DRIFT.md.
  • The labels are recomputable, not just tamper-evident. The v2 suite seals a hash over the raw response digests and publishes the responses, so a reader can check that the text served is the text sealed, re-derive every label, and disagree with ours on the record. That closes most of the gap docs/INTEGRITY.md previously had to concede, where a mislabelled response would be sealed perfectly and verify clean forever.
  • No vanity assurance score. The generated eval-assurance-latest.json reports integrity, prompt precommitment, raw-response recomputation, pipeline reproducibility, statistical design, human construct validation and independent replication separately. Its current ceiling is provisional-measurement; human coding and unaffiliated replication remain unfinished.
bash
python3 scripts/verify_eval_registry.py        # chain integrity + the pre-registration rulepython3 scripts/verify_refusal_transcripts.py  # published text -> sealed hash -> labelspython3 -m scripts.build_eval_assurance --check # evidence -> public claim ceilingpython3 scripts/prove_inclusion.py 5           # inclusion proof for a single sealed result

Live: palimpsest.info/readings/eval-registry.html.

Application 2 — the Censorship Observatory

Continuous, quantified measurement of content-layer censorship: what gets deleted, how selectively, how fast, and what is newly sensitive. It fills the gap between network-layer measurement (OONI, GreatFire, Citizen Lab) and hand-documented deletion lists (China Digital Times); it ingests their public data and shares its own back.

The method: treat the censor as a sensor. Palimpsest reads the public record of what has already been removed — China Digital Times' curated deletion and directive coverage, alongside the network and model layers — and computes the Deletion-Differential Threat Index (DDTI) from what the censor chose to touch:

SignalQuestion it answersStatus
SelectivityWhat is being targeted, which terms and topics draw censor attention.Live
NoveltyWhich sensitive terms are surfacing for the first time, or bursting after quiet.Live
VelocityHow fast posts are deleted. A sudden acceleration signals an event being contained.Not published

Velocity is listed because it is the third thing you would want and the second thing we would publish, not because it is available. A CDT item carries an editorial date, not a deletion timestamp, so no latency is derivable from this source and the reading omits it rather than estimating it. Measuring it needs the archive-and-recheck instrument below.

The index is therefore attention allocation, not a deletion rate — the reading says so in its own scope field: censor_attention_allocation (numerator-only; not a true deletion rate). It ranks what drew the censor's attention; it does not claim to know what share of posts on a topic were removed, because that denominator is not observable from outside.

What is built but not running. The censorwatch package implements the archive-and-recheck method properly: capture a public post as it appears, re-check it on an age-tiered schedule, and confirm a deletion only after repeated consistent observations. It is feature-flagged (CENSORWATCH_ENABLED), has never been enabled in production, and has archived zero posts. It is not an in-country China sensor. Collection methods that close visibility gaps from outside the wall — archives, public ledgers, opt-in observers, donation hashes, synthetic calibration — are specified in docs/GREYBALL-METHODS.md. Until CensorWatch is deliberately enabled it remains a description of an instrument, not of a running signal, and nothing on the board is derived from it.

The DDTI distils into a single, auditable 0–100 Censorship Fear Index, how hard is the state working to bury things right now, reported component by component, never a black box.

Validated by retrodiction. Run against six documented events (Li Wenliang, Peng Shuai, the Sitong Bridge protest, the White Paper protests, and more), the scorer ranks the correct term first every time and flags event-born euphemisms as novel from only a handful of deletions. Reproduce it: PYTHONPATH=. python3 scripts/validate_ddti.py. See docs/VALIDATION.md and the method in docs/METHODOLOGY.md.

Published signals and operational status

palimpsest.info publishes static artifacts from independent pipelines. Most refresh on declared schedules through GitHub Actions, while disabled, optional, stale, and abstaining methods remain visible with their own status. A current file timestamp never overrides an upstream limitation. Runs, code, and outputs are public, and no hidden server publishes them.

SignalWhat it measuresCadenceFeed
DDTIRanked censored terms with threat / attention / novelty, from public deletion streamsEvery 3 hoursreadings/ddti-latest.json
Censorship-practice dossiersEvery qualifying captured post, article, or topic signal with evidence state, observed/reported mechanism, explicit actor attribution, timeline, exact-identity Palimpsest measurements, input hashes, counter-readings, unknowns, exclusions, and collector gapsEvery 6 hoursreadings/censorship-practice-dossiers-latest.json
Generative FirewallRefusal, state-narrative substitution, and routing (matched-parallel discrimination, zh-Hans/zh-Hant/EN script gradient, deflection, refusal sub-coding) of state-aligned LLMs vs a controlDailyreadings/latest.json
GFI v2 transcript matrixEvery response and null transport abstention in the current preregistered model by prompt-arm sample matrix, with explicit denominators and recomputable sealsDailyreadings/gfi-transcripts-latest.json
GDELT cross-signal"Censored at home, loud abroad": global news volume on the terms China is deletingEvery 6 hoursreadings/gdelt-latest.json
GitHub-as-RefugeTakedown pressure on mirrors of censored material (996.ICU, nCovMemory, more), against persisted baselinesEvery 12 hoursreadings/github-refuge-latest.json
Wayback ReconstructionDeletions and silent redactions of watched Chinese URLs, recovered from the Internet Archive's capture timeline with archive-witnessed timestamp bracketsEvery 12 hoursreadings/wayback-latest.json
Blocklist archaeologyKeywords newly present in successive LINE client blocklists — the censor's own trigger list, so a new term is a dated directive rather than an inference from deletionWeeklyreadings/blocklist-latest.json
Weibo hot-search joinThe allowed-attention denominator: DDTI terms deleted-yet-trending (contained) vs deleted-and-invisible (suppressed), gazetteer breakthroughs, withdrawal watch, pinned state headlines, a declared deep-dive lens, and automatic current-trend clusters that treat revised numeric headlines as continuity before raising a withdrawal warningHourlyreadings/weibo-hotsearch-latest.json
Circumvention demandTor bridge users from China (demand to climb the wall) + the per-transport split whose regime shifts fingerprint new GFW classifiersDailyreadings/circumvention-demand-latest.json
IODA outagesShutdown-scale connectivity events for CN from three independent global instruments (BGP, active probing, darknet)Every 6 hoursreadings/ioda-outages-latest.json
Baike redaction-diffOffline narrative-erasure method; collection is disabled pending authorized access, and the invalid 90.0 method-v1 point is quarantined from the valid seriesDisabled; status checked every 6 hoursreadings/baike-redaction-latest.json
Erasure ObservatoryThe roll-up index across the erasure layers: what was removed or rewritten over time, layer by layer, with the cross-checks shownEvery 6 hoursreadings/erasure-observatory-latest.json
OONI GFWGreat Firewall network blocking measured inside China by OONI Probe: website, messenger and circumvention-tool reachability (we ingest their aggregate, we never probe)Every 6 hoursreadings/ooni-gfw-latest.json
Censored PlanetThe independent remote vantage: DNS/HTTP side-channel interference for CN from 95k+ vantage points (Satellite + Hyperquack), a different method than OONIDailyreadings/censored-planet-latest.json
net4peopleThe qualitative companion to the anomaly signals: the community log of China blocking events and circumvention developmentsEvery 12 hoursreadings/net4people-latest.json
Vantage fusionOne coverage-weighted network reading from the disagreeing vantages, with an interval and an explicit CONTESTED state when in-country and remote differEvery 6 hoursreadings/vantage-fusion-latest.json
China econ benchmarksOfficial CFETS published benchmarks, the keyless macro backdrop against which information-control moves are readEvery 6 hoursreadings/china-econ-latest.json
Belt and Road Observatory v2Global rights-gated source and project-field contract with deep CPEC, Gwadar, CMEC, Kyaukpyu, plural Balochistan and bounded NarcoScope lanes; listed source readiness is not complete ingestionRelease-boundreadings/belt-and-road-observatory-latest.json
BRI WDI national context3,564 authenticated annual country-indicator rows for China, Myanmar and Pakistan; context only, with unavailable rows preserved and project/actor/corridor/causal inference prohibitedReviewed source releasesreadings/bri-economic-observations-latest.json
Data darknessThe withholding watch: days-late against their own rhythm for seven official Chinese publication surfaces (PBOC OMO announcements, the monetary-authority balance-sheet block, SAFE settlement data, CFETS benchmarks, the NBS energy and industrial monthlies scored against the state's own release calendar, and rail freight) — the complement to deletion-as-dataDailyreadings/data-darkness-latest.json
Silence IndexPre-emptive silence: DDTI topics loud abroad while absent from the domestic board, with a china-nexus gate and a non-bypassable corroboration guard so local disinterest never reads as blackoutEvery 6 hoursreadings/silence-index-latest.json
CNY fix gapTwo prices for one currency: the PBOC's daily USD/CNY fix against an independent same-day reference (ECB, cross-checked via Bank of Canada) — the market agreeing or pulling against the state's priceDailyreadings/cny-fix-gap-latest.json
Believability readThe Li Keqiang composite (loans 40% / electricity 40% / rail freight 20%, from the state's own releases) against the headline, published as drift with an uncertainty band. A complete monthly collection is operationally live during the explicitly labelled eight-month analysis warm-up — method in docs/BELIEVABILITY.mdMonthlyreadings/believability-latest.json
Stock ConnectHKEX Stock Connect daily statistics: the cross-border flow print, a second non-information channel that reacts to the same eventsWeekdays, after the HK printreadings/stock-connect-latest.json
Event flagsPer-signal conformal e-detector: is a signal outside its own history right now, with an anytime-valid false-flag guaranteeEvery 6 hoursreadings/event-flags-latest.json
Board alarmThe board-wide merge of those e-detectors, with e-BH selection at alpha 0.1 controlling false discoveries under arbitrary dependenceEvery 6 hoursreadings/board-alarm-latest.json
Coverage guardThe anti-artefact check: whether a signal's movement is explained by its own measurement coverage rather than by the worldEvery 6 hoursreadings/coverage-guard-latest.json
Cross-layer couplingLagged coupling between layers against a circular-shift null; abstains loudly until enough overlapping history is earnedEvery 6 hoursreadings/cross-layer-latest.json
Forecast ledgerThe scoreboard on ourselves: strictly prequential one-step forecasts per signal, scored against what actually happenedEvery 6 hoursreadings/forecast-ledger-latest.json
In-path interferencePositive evidence of a device on the path, not an inference from blocking: deliberately malformed HTTP that something rewrote, plus whether real-time voice and pluggable-transport plumbing worksEvery 6 hoursreadings/in-path-interference-latest.json
Apple censorshipThe App Store census: which apps are unavailable in the CN storefront, measured against the same catalogue elsewhereDailyreadings/apple-censorship-latest.json
App storefrontStorefront-level availability drift for watched apps, the removal timeline read from the store itselfDailyreadings/app-storefront-latest.json
Inside viewWhat the domestic vantage can and cannot see, read from sources published inside the wallEvery 6 hoursreadings/inside-view-latest.json

The economic registry records each source's implementation and access state; registered sources are distinct from collected observations. See config/china_econ_sources.json, the coverage report (PYTHONPATH=. python -m scripts.china_econ_plan), and docs/CHINA-ECONOMIC-OBSERVATORY.md. Current records do not include proprietary respondent networks or microdata.

Every value is provenance-tracked to its source document, and a signal abstains rather than fabricates when its source returns nothing. Nothing is published without evidence. Researcher docs, schemas, and citation (BibTeX) are at palimpsest.info/for-researchers.

It generalises beyond China. The method is country-agnostic; what changes per information space is the lexicon. China ships today; Iran loads from config alone (the Woman-Life-Freedom-era starter lexicon). Adding a country is a gazetteer plus a registry entry, not a rewrite. See config/regions/.


What is built, and what is not

ComponentState
Sealed ledger + hash chain (erasure + eval registry)Built, tested — offline-verifiable, stdlib only
Verifiable Eval Registry (frozen questions, pre-registration rule)Built, tested — live readings published
Cross-lab frontier refusal-drift audit (OpenAI / Anthropic / Meta / Mistral)Built, tested — sealed in the registry
Merkle roots + inclusion proofsBuilt, tested
Root anchoring (Internet Archive + OpenTimestamps / Bitcoin)Built; wired into the refresh pipeline
Independent witness (separate-infra re-verification)Built — one stdlib file, run it yourself
CDT deletion ingestion + DDTI (selectivity + novelty)Live — auto-published every 3h
Censorship Fear Index (one auditable number)Built, tested
Retrodiction validation (6/6 documented events)Built, tested
Generative Firewall — refusal / party-line tomography of state-aligned LLMsLive — auto-published daily (hosted-API layer)
GDELT cross-signal · GitHub-as-RefugeLive — auto-published (6h / 12h)
Wayback Reconstruction — deletion brackets + silent redactions from the Internet Archive's CDX timelineLive — auto-published every 12h
Evidence-grounded Chinese gazetteer (154 terms, phylogeny) + self-evolving euphemism discoveryBuilt, tested
Cross-region packs (China + Iran, config-driven) · censorship forecasterBuilt, tested
Blocklist archaeology — newly-shipped keywords diffed across client blocklist versionsLive — auto-published weekly from Citizen Lab's corpus
UNDERTEXT tomography · CDN-edge · Silence detectionBuilt, tested (live source injection gated, inert)
Baike redaction-diffBuilt, tested; disabled pending authorized access (offline fixtures only; historical readings retained)
BLEEDTHROUGH — injector-fleet tomography: the GFW's own DNS injectors answer benign probes, so the apparatus is measured from outside with no node inside ChinaBuilt, tested; first live round measured — every sampled dark target drew a forgery, the forged IPs match documented GFW pools, the path traces into AS4134. Deliberately unpublished: a single vantage can evidence injection and a floor on parallel injector responses, but cannot support a regional claim, so nothing is put on the board until a multi-vantage round exists. See docs/BLEEDTHROUGH.md
Governance: kill-switch, rate ceiling, hash-chained auditBuilt, tested
Real-time velocity at minute resolutionNeeds in-country / seam measurement (retroactive velocity now ships via Wayback)

Velocity was the honest blocker on the censorship side: from outside the wall, the moment a post dies is unobservable. The Wayback Reconstruction vantage now recovers it retroactively from open egress, reading the Internet Archive's capture timeline so every deletion is published as an explicit archive-witnessed bracket (last seen alive to first seen gone), never a false-precise instant. What still needs in-country or seam vantage is real-time velocity at minute resolution. The method built for that, UNDERTEXT many-vantage differential observation (disagreement between vantage points is the signal), is built and tested here; what scaling adds is the vantage backends. See docs/UNDERTEXT.md.

Safety is the architecture

See SAFETY.md and docs/ETHICS.md. In short: public data only; nobody inside China is ever asked to act; a deletion is never claimed lightly (the detector probes a known-live control post each cycle and suppresses all deletion writes when the network is unreliable); the sensitive-terms gazetteer is human-authored and never delegated to a Beijing-aligned model; and no state-aligned model is ever the analyst. Every figure ships with its uncertainty and known biases stated openly. Those rules are enforced in code (core/governance.py), not just documented.

Running it

bash
# Zero-dependency demo (recommended first run), no venv needed:python3 demo/palimpsest_demo.py                 # live CDT pull + rankingpython3 demo/palimpsest_demo.py --source sample # offline deletion demo
# Verify the sealed records (stdlib only, no install):python3 scripts/verify_eval_registry.py         # eval chain + pre-registration rulepython3 scripts/verify_ledger.py                # the erasure ledgerpython3 scripts/prove_inclusion.py 5            # inclusion proof for one attestationpython3 ops/witness/palimpsest_witness.py       # become an independent witness
# Pure, offline cores (no database):PYTHONPATH=. python3 scripts/validate_ddti.py       # retrodiction backtest (6/6 events)PYTHONPATH=. python3 scripts/fear_index_demo.py     # Fear Index across documented eventsPYTHONPATH=. python3 scripts/forecaster_demo.py     # the censorship forecaster (a "called shot")
# Tests, core (stdlib only, no install, no venv):PYTHONPATH=. python3 -m pytest tests/ -q                      # stdlib only, no install needed
# Tests, full (adds the censorwatch layer, which needs the dependencies):python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txtPYTHONPATH=. python3 -m pytest tests/ censorwatch/tests/ -q   # adds the velocity-leg suite

The live velocity leg needs PostgreSQL, Redis, and in-country / seam egress; see censorwatch/DEPLOY.md. It stays inert unless CENSORWATCH_ENABLED is set.

Documentation

DocumentWhat it covers
docs/INTEGRITY.mdThe layered trust model, what each layer defends against, and what none of them can do
docs/DETECTIONS.mdWhat the instrument has actually caught, dated, with what each finding does not establish
docs/EVAL-REGISTRY.mdThe Verifiable Eval Registry: pre-registration, sealing, and how to verify it
docs/EVAL-ASSURANCE.mdThe claim-by-claim assurance ladder, GFI v2 evidence contract and promotion rules
docs/EVAL-JOURNAL.mdThe evidence-bound article contract, feeds, receipts and publishing workflow
docs/EVAL-FINDINGS.mdThe deterministic live-findings renderer, sentence receipts and immutable revisions
docs/BRI-WDI-OBSERVATIONS.mdThe WDI national-context boundary, acquisition clocks, rights, exact Release A publication receipt and refresh procedure
docs/GRANT-CASE.mdGrant-ready case, evidence, falsifiable work packages, risks and auditable outcomes
docs/METHODOLOGY.mdThe DDTI method, the math, and its honest scope and biases
docs/VALIDATION.mdRetrodiction backtest, does the method catch documented events?
docs/NEW-METHODS.mdThe observation surfaces (Generative Firewall, CDN-edge, Blocklist, Silence, GitHub-refuge, Baike, Wayback Reconstruction)
docs/GREYBALL-METHODS.mdTen Greyball / OTF-friend collection methods, forbidden list, visibility schema, exact-key join
docs/UNDERTEXT.mdActive differential tomography, many-vantage divergence as signal
docs/BLEEDTHROUGH.mdInjector-fleet tomography, the method and the safety line for making the censor's own devices answer
docs/OSINT_SOURCES.mdEvery public source, how it is accessed, what it yields, its limits
docs/ETHICS.md · SAFETY.md · CONTRIBUTING.mdThreat model, do-no-harm rules, and the safety-review gate

Status and license

Developed in the open as a public good. This is past the prototype stage and short of a finished product: twenty-eight feeds refresh unattended on public CI, the sealed chains verify offline from a clean clone, and the whole thing runs without anyone touching it. What it is not yet is independently replicated, externally witnessed at scale, or in-country. Those are named openly in docs/INTEGRITY.md and in the built-versus-not table above rather than smoothed over. Free and open source; it is not a commercial product and never monetizes the people or topics it observes. Licensed under the MIT License so other tools can freely build on the feeds and reuse the measurement and sealing layers.

Acknowledgements and prior art

Palimpsest is built to complement, not repeat, the work of China Digital Times, GreatFire, Citizen Lab, and OONI. It ingests CDT deletion data as one input and is designed to share its data back. It draws on the academic measurement tradition of WeiboScope and the deletion-speed studies of Zhu et al. (2013) and Bamman et al. (2012), whose decade-old figures it re-measures rather than assumes. The sealing layer draws on trusted-archive integrity work (ARCHANGEL) and standard transparency-log constructions.

来源:README.md,提交 b6f234a

工具

7

research_catalog

Complete research catalog and Seiche connection

Discover every Palimpsest dataset, including the latest China economic histories, external trade, regional research, information controls and model evaluations. Paginated metadata retains source clocks, rights and access states. Includes the Seiche research_network handoff for funding, institution and market-liquidity context; values are not copied.

输入参数limitoffset

list_signals

List published signals

List every published signal Palimpsest exposes across its three applications: name, one-line description and source URL for each. Censorship and information control — OONI Great Firewall probes, Censored Planet, IODA outages, circumvention demand, takedown and redaction pressure, and the board's own verdict. China economics — explicit metadata-only rights status for affected observations, pulse, forecast and derivative surfaces; no denied values are returned. AI model evaluation — the tamper-evident, pre-registered eval registry (hash-chained and Merkle-rooted), its claim-by-claim assurance ceiling, evidence-bound Eval Journal, deterministic live findings, and frontier-model refusal drift, alongside the Generative Firewall Index over a named China-focused panel. Takes no arguments. Call this first to discover signal names, then get_signal for one full reading.

无需输入参数。

get_signal

One signal's full reading

Read one named signal. Permitted signals return their bounded latest payload; China-economic signals in the denied lineage closure return explicit restricted/unavailable rights metadata and no values. Call list_signals first to discover valid names. Use this for the AI-model-evaluation side too: 'eval-registry' returns the pre-registered, hash-chained eval ledger with its verified flag and Merkle root, 'gfi-transcripts' returns a bounded view of the complete GFI v2 response matrix, and 'refusal-drift' returns the current frontier-model refusal reading on the frozen benign probe set; read 'eval-assurance' before turning either into a validity claim, and 'eval-journal' for the evidence-bound explanation and source receipts, or 'eval-findings' for the current deterministic article edition. Distinct from gfw_reading, which merges the two Great Firewall layers into one combined view.

输入参数name必填max_rows

get_newsroom

Evidence and reporting desks

Read one evidence-first reporting surface without scraping a page or guessing a filename. Views: 'newsroom' for prioritized deterministic stories, 'wire' for normalized source dossiers, 'economy' for the currently restricted China economic pulse, 'machine-analysis' for the currently restricted AnalysisReports and AbstentionReports, 'investigations' for review-gated research leads, 'editorial-readiness' for publication gates, and 'interconnection' for named-key fat-object joins on China situation events (topic-surface-only, never wire corroboration). The economy, machine-analysis and interconnection views are metadata-only until a lineage-filtered rebuild removes denied derivatives. Availability never implies publication readiness: statuses, gates, counterevidence, limitations and right-to-reply state stay attached.

输入参数viewlimitstatuspriority

query_economic_observations

Query China economic observations

Inspect the native publication-rights status for the China-economic observation surface. The reviewed default-deny policy does not authorize redistribution of current CFETS/ChinaMoney values, so this tool returns policy digest, UTC clocks, per-source decisions and zero published-record status only. It never reads or returns observation rows, empty row arrays, derived signals, or neutral replacements. Filters are validated for contract compatibility but cannot override source rights.

输入参数as_oflimitcursorsectorfirm_sizegeographyownershipseries_idsource_idperiod_endreleased_toperiod_start另有 2 个

whats_happening

Cross-signal board verdict

Judge whether anything is happening in Chinese censorship right now, across every signal at once: the board's own cross-signal verdict with the multiplicity paid for (false-discovery control) and coverage confounds flagged as measurement artifacts, never findings. Takes no arguments. Use this instead of fetching signals individually and reconciling them yourself; then use get_signal to drill into whichever signal moved. Scope note: this is the censorship board. For the AI-model-evaluation side use get_signal with 'eval-registry', 'eval-assurance' or 'refusal-drift'.

无需输入参数。

gfw_reading

Great Firewall: both layers

Read the Great Firewall's current state at both layers in one call: live network blocking measured inside China via OONI (website, messenger and circumvention-tool reachability) joined with model-layer censorship from the Generative Firewall Index over Chinese LLMs. Takes no arguments. A combined convenience view — for one layer's full raw payload use get_signal with 'ooni-gfw' or 'generative-firewall-index'.

无需输入参数。

版本历史

1
  1. v1.9.3最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Model 集成