Public Record
{{ authName }}
{{ authEmail }}
A record against doublethink

What they promised. What they did. Record.

Starred

Most tracked

{{ peopleCount }} figures on record
{{ p.monogram }}
{{ p.name }}
{{ p.role }}
{{ p.total }}
Entries
{{ p.kept }}
Kept
{{ p.broken }}
Broken
{{ p.flags }}
Flags
Reliability
{{ p.reliabilityNum }}

Recent doublethink flags

{{ sel.monogram }}

{{ sel.name }}

Demo profile

{{ sel.role }}

{{ sel.location }}

No entries yet.

Sign in as an editor to add promises, statements, and votes for this figure.

One timeline, all three signals by shape · slide to preview, click a marker for full detail
{{ zoomLabel }}
{{ tl.label }} {{ tl.count }}
{{ lg.label }}
{{ tl.emptyMsg }}
{{ tl.lifePopup.dateLabel }}
{{ tl.lifePopup.title }}
{{ tk.year }}
{{ tl.popup.dateLabel }} · {{ tl.popup.typeLabel }}
{{ tl.popup.statusLabel }}
“{{ tl.popup.claim }}”
{{ tl.popup.updateLabel }}
{{ detail.rangeLabel }} · {{ detail.typeLabel }} · {{ detail.updateCountLabel }}
{{ detail.statusLabel }}

“{{ detail.claim }}”

{{ detail.context }}

{{ t }}
Timeline of updates
{{ u.dateLabel }} {{ u.statusLabel }}
{{ u.label }}

{{ u.note }}

Doublethink flag
Reviewed by {{ flagDetail.reviewedBy }} · {{ flagDetail.reviewedAt }}

{{ flagDetail.sentence }}

Case A · {{ flagDetail.caseA.dateLabel }}
{{ flagDetail.caseA.actorJudged }} — {{ flagDetail.caseA.action }}
Judged: {{ flagDetail.caseA.verdict }}
Case B · {{ flagDetail.caseB.dateLabel }}
{{ flagDetail.caseB.actorJudged }} — {{ flagDetail.caseB.action }}
Judged: {{ flagDetail.caseB.verdict }}
Similar on {{ a }}
The subject's own distinction

{{ flagDetail.distinction }}

All entries
One-time setup

Claim this instance

No administrator exists yet. Create the main administrator account. This runs once, then this screen is replaced by sign in.

{{ claimErr }}

Administrator sign in

Firebase is not connected yet. Paste your project config into the page source to enable live sign in.
{{ authErr }}

Forgot your password? Contact the main administrator.

Two-factor verification

We sent a 6-digit code by text message to {{ mfaHint }}. Enter it below to finish signing in.

{{ mfaErr }}
Admin portal

Welcome, {{ authName }}

Signed in as {{ authEmail }}. Manage the people you track and who can edit the record.

Editors & access

Create sub-admin accounts and manage who can add entries. Only the main administrator can add or remove editors.

Figures & entries

Create profiles for prominent people, then log dated promises, statements, votes, and their proof.

Review queue

{{ draftCount }}

Figures and entries drafted by the research agent, waiting for a human to approve or reject before they go public.

Articles

Write essays and analysis for the public site. Save a draft, then publish when it is ready.

Review queue

Drafts awaiting review

Everything here was drafted by the research agent. Nothing is public until you approve it. Each draft is checked against the data contract; approve promotes it to the record, reject discards it.

The queue is empty. New agent drafts appear here for approval.

{{ d.kindLabel }} {{ d.sourceLabel }} · {{ d.timeLabel }}

{{ d.title }}

{{ d.summary }}

{{ d.entryCount }} entries {{ d.flagCount }} flags {{ d.sourceCount }} sources {{ d.validLabel }}
Does not meet the contract yet:
  • {{ er }}
{{ e.catLabel }} {{ e.statusLabel }}
{{ e.claim }}
{{ e.updateLabel }} · {{ e.sourceLabel }}
{{ d.flagLine }}
Discard this draft?
{{ draftErr }}

Editors

Create accounts, share a temporary password, reset, or remove access.

Name
Username
Role
Created
Actions
{{ u.name }}
{{ u.login }}
{{ u.roleLabel }}
{{ u.createdLabel }}
Remove?

The main administrator cannot be deleted. Generated passwords are temporary; editors can change theirs after signing in.

Articles

Notes on the record

No articles published yet.

{{ a.title }}

{{ a.subtitle }}

{{ a.summary }} Read ›

{{ a.author }} {{ a.dateLabel }} {{ t }}
{{ av.author }} {{ av.dateLabel }}

{{ av.title }}

{{ av.subtitle }}

{{ t }}
{{ articleBody }}
{{ av.figuresLabel }}

This article is no longer available.

Articles

Write essays and analysis. Save as a draft, publish when ready.

No articles yet. Click New article to write the first one.

{{ a.statusLabel }} {{ a.dateLabel }}
{{ a.title }}
{{ a.subtitle }}
Delete?

{{ aEditTitle }}

No figures yet. Create figures first.

Formatting: ## heading, ### smaller heading, **bold**, > quote, [text](https://link). Blank line starts a new paragraph.

Live preview
{{ articleEditPreview }}
{{ aErr }}
Preview
{{ articleEditPreview }}

Add user

Create an editor account and generate a temporary password to share. Editors sign in with their username.

{{ modal.err }}

{{ modal.title }}

Copy these credentials and send them securely to {{ modal.cName }}. They can reset the password after signing in.

Username
{{ modal.cEmail }}
Temporary password
{{ modal.cPass }}

Settings

Reset your password. This will replace your current one.

{{ sErr }}

Your password has been updated.

Secure your account

Add your phone as a second factor. We text you a 6-digit code to confirm the number. After this, signing in on a new device asks for a fresh code by text.

{{ enrollErr }}
Checking your account…

Verify your email first

Firebase requires a verified email before enabling two-factor. We sent a link to {{ enrollEmail }}. Open it, then come back and continue.

{{ enrollErr }}

Add your phone

Enter your mobile number in full international form. We will text a 6-digit code.

{{ enrollErr }}

Enter the code

We texted a 6-digit code to {{ enrollPhone }}. Enter it to enable two-factor.

{{ enrollErr }}

Two-factor enabled

From now on, signing in on a new device will text a 6-digit code to your phone. Keep your phone handy; you need it to get in.

About the record

A public record against doublethink.

Orwellian Thoughts tracks what prominent figures promise and what they actually do, side by side and over time. Each entry starts when a promise or claim is made, then gathers dated updates as it is kept, broken, watered down, or reversed, every step backed by a source you can open and check yourself.

Why it exists

"Doublethink" is holding two contradictory positions as if both were true. Memories are short and clips get buried; this record keeps the original statement next to its outcome so the contradiction is impossible to quietly walk back. The aim is not opinion, it is a durable, sourced timeline anyone can audit.

How an entry works

An entry is a single promise or claim. Its updates form a mini-timeline; the earliest update is when it was made and the most recent update sets the entry's current status:

KeptFollowed through as stated.
BrokenReversed or abandoned.
PartialDelivered in part, or with caveats.
Under reviewLogged, outcome still pending.

The reliability score

Think of it like a score out of 100 for keeping your word. It answers one simple question: out of the promises we already know the answer to, how many did they actually keep?

Each finished promise is worth some points:

They kept it1 point
They half kept it¼ point
They broke it0 points
Still waiting to seeskipped for now

Add up the points they earned, divide by the number of finished promises, and turn it into a percent. That's the score.

Example
They finished 2 promises. They kept 1 and broke 1. That's 1 point out of 2, which is 50.

The score only counts promises we already know the answer to. If nothing has resolved yet, there is no score to show, we mark it not enough data rather than guess.

The consistency score

Reliability asks whether they did what they said. Consistency asks a different question: do they keep a coherent account of what they said? It tracks factual claims about their own record or position, and how each one held up.

Each resolved claim earns points on a sliding scale:

Held up1 point
Reversed, but they acknowledged it0.9 points
Reversed, without acknowledging it¼ point
Denied ever saying it0 points

Same math as reliability: add the points, divide by the resolved claims, show it as a percent. Acknowledging a reversal barely costs anything; quietly rewriting the record, or flatly denying it, is what pulls the score down.

Doublethink flags

A doublethink flag is not a score, it is a count. It marks a specific contradiction: the same conduct judged one way for a rival and the opposite for an ally. Flags no longer subtract from any score; they stand on their own as hand reviewed records, each with the sources behind it.

Sourced and reviewed

Every update carries its own proof, articles, video, and transcripts, and entries are submitted by contributors and reviewed before they publish. Status reflects a verified outcome, never an editorial opinion.

Figures

Create profiles for the people you track, then manage their entries.

{{ f.monogram }}
{{ f.name }}
{{ f.role }}
{{ f.total }} entries {{ f.kept }} kept {{ f.broken }} broken {{ f.flags }} flags
Delete this figure and all its entries?
{{ figMonogram }}

{{ figName }}

{{ figRole }}

{{ e.dateLabel }}
{{ e.updateLabel }}
{{ e.claim }}
{{ e.typeLabel }}
{{ e.statusLabel }}
{{ entryEmpty }}

A flag is its own reviewed record, not a broken promise. It needs two sourced cases, the same conduct judged opposite ways, and the subject's own distinction. It publishes only if the standard is met.

{{ fl.dateLabel }} · reviewed by {{ fl.reviewedBy }}
{{ fl.sentence }}

No flags on record. Use Add entry and pick Doublethink flag to document a double standard.

{{ figModal.title }}

Profile details appear on the public record and the figure's timeline.

{{ o.name }}
{{ o.name }}
{{ o.name }}

Life milestones

Dated notes (e.g. "Ran for office") that mark the timeline like the birthdate does.

{{ figModal.err }}

{{ entryModal.title }}

{{ entryModal.subtitle }}

{{ entryModal.err }}
{{ entryModal.err }}

Updates

Newest first. The latest update sets the current status; the oldest is when it was made.

{{ u.heading }}

{{ flagModal.title }}

A flag records the same conduct judged two opposite ways. Both cases must be sourced and attributable, and the figure's own distinction gets published alongside.

Case A
Sources
Case B
Sources
{{ flagModal.err }}
The standard
{{ c.label }}

If it takes a paragraph to explain why the cases are alike, they are not alike enough. The flag will not publish until every line is met.

{{ starMsg }}