flue-simocracy · browser-harness-smoketest

Flue-Simocracy smoke test via browser-harness

@daviddao

All four flue-simocracy tools driven through Telegram Web by browser-harness, with PDS-level verification on every write and visibility checks on simocracy.org. Three tools surface end-to-end through the indexer; the fourth is blocked by an indexer ingestion issue that affects every org.hypercerts.claim.activity record on a bsky.network PDS, regardless of writer.

Date: 2026-05-10 · partial · Reviewer: David Dao (TG 1902955493) → sim Mr Meow (write-enabled) · Bot: @SimocracyBot


Headline result

4 / 4
Tools written to PDS
3 / 4
Visible on simocracy.org
1
Indexer-side blocker
7
Records cleaned up

Headline. Every write hits the host PDS in the lexicon-strict shape canonical at hyperscan.dev (flue-simocracy is named the reference implementation in the hypercerts-description-union-fix audit). The org.simocracy.history sidecar for post_comment reaches simocracy-indexer within seconds and surfaces on simocracy.org/stats Recent Activity. The post_proposal activity record itself never reaches the indexer — not because of our writes, but because the same record written by hypercerts-scaffold-atproto on the same bsky.network DID also fails to surface, while one written from a climateai.org ePDS minutes earlier did surface. The indexer's bsky-side firehose tap appears to filter out org.hypercerts.*; the ePDS tap forwards everything.

Coverage matrix

ToolTelegram replyHost PDSsimocracy-indexerHyperindexsimocracy.org
simocracy_lookup in-character n/a (read)n/an/an/a
update_sim tool-call ✓ +45 chars, marker present indexed n/a role refresh inline
post_comment tool-call ✓ comment + history history sidecar indexed n/a /stats Recent Activity
post_proposal tool-call ✓ all 3 records sidecars yes, activity no null (~10 min after write) invisible

Walkthrough

Mr Meow sim card on /start
01Sim card on /start — sprite, identity, write-access badge, suggestion buttons. Reviewer 1902955493 is mapped to Mr Meow with canWrite: true.
simocracy_lookup tool call
02simocracy_lookup — returned the correct Einstein AT-URI (3mfo5txyqmo2f), in-character ("That brainiac Einstein is hiding at…"), tool-call status rendered inline.
update_sim succeeded
03update_sim — sim appended a marker sentence to its own constitution. "Re-introduce yourself" suggestion appears because the persona changed.
post_comment succeeded
04post_comment — sim posted a comment on an existing proposal AT-URI; tool-call ✓, in-character reply ("Done with that smoke test."), Undo button appended.
post_proposal succeeded
05post_proposal — sim drafted and submitted a proposal bound to The Senate gathering, with a $42 budget line and the strict union $type wrappers required by the lexicon.
Hyperscan record view
06Hyperscan's data view of the proposal — reads directly from the host PDS, so it shows the record even though no public indexer has it. Confirms wire shape: description: { $type: "org.hypercerts.defs#descriptionString", value }, workScope: { $type: "…#workScopeString", scope }, image: { $type: "…defs#uri", uri }.
Comment visible on /stats Recent Activity
07simocracy.org's /stats → Recent Activity. Top entry: “David Dao commented as Mr Meow · 23M AGO” — our post_comment via the bot, surfaced via the org.simocracy.history sidecar. The post_proposal from the same minute does not appear here.
/proposals sorted by New
08simocracy.org's /proposals sorted by New — 16 proposals total, the newest is 1 day old. Our smoke-test proposal from minutes ago is missing.
daviddao.org profile proposals panel
09simocracy.org/profile/daviddao.org Proposals panel — still 5, all from the same era as /proposals. The Hyperindex hasn't ingested any post-May-5 hypercerts record from this DID.

Findings

What worked end-to-end

Wire shape passes the canonical lexicon. flue-simocracy writes description / workScope / contributorIdentity as $type-wrapped union objects exactly as hyperscan.dev requires — the cross-project audit from earlier today named it the reference implementation.

Telegram → Flue → PDS path is solid. Every tool round-trip succeeded: the bot streamed in-character replies, tool-call status badges rendered, and the bridge confirmation gate works (the SMOKE_TEST_NO_CONFIRM=1 bypass was used only to keep the run flake-free; manual taps work too via CDP Input.dispatchMouseEvent, which fires callback_query updates trusted by Telegram Web — contradicting the old AGENTS.md note that said synthetic clicks don't work).

Sim attribution lands. The org.simocracy.history sidecar for the comment was indexed within seconds and surfaced on /stats Recent Activity ("David Dao commented as Mr Meow · 23M AGO") — the post-Phase-5 history-record path works for bsky.network DIDs.

Indexer doesn't pick up org.hypercerts.claim.activity from bsky.network DIDs

Symptom. The proposal record itself at://did:plc:qc42fmqqlsmdq7jiypiiigww/org.hypercerts.claim.activity/3mlidgsaoha2b is on the host PDS (verified, lexicon-valid), but orgHypercertsClaimActivityByUri(…) against api.hi.gainforest.app returns null 30 minutes after the write. The same query against simocracy-indexer also returns nothing for this collection.

Not a wire-shape issue. A control proposal written via hypercerts-scaffold-atproto on the same bsky.network DID, at the same time, with a near-identical record body, was also not indexed. Meanwhile, a similarly-shaped record posted from climateai.org (an ePDS) was indexed within minutes.

Likely cause. simocracy-indexer taps two upstreams — tap.railway.internal (bsky.network firehose) and tap-epds.railway.internal (ePDS firehose). Our org.simocracy.proposalContext + org.simocracy.history sidecars (in the same atomic commit) do reach the indexer via the bsky tap, so the tap is delivering some collections from this DID. The activity record specifically is silently dropped — most likely the bsky-side tap forwards org.simocracy.* only, and org.hypercerts.* arrives via the ePDS tap, which doesn't see bsky.network repos.

What unblocks simocracy.org/proposals for bsky.network DIDs. Either (a) extend the bsky-side tap to forward org.hypercerts.* as well, or (b) rely on the hourly periodic reconciliation already configured in simocracy-indexer/index.js to backfill activity records from each known DID's PDS. Periodic reconciliation should eventually pick this up; the cost is a 0–60 minute visibility delay.

Other things repaired during this run

Reproducing

Projectflue-simocracy at daviddao/flue-simocracy Bot@SimocracyBot on Telegram ReviewerTG 1902955493 → Mr Meow (at://did:plc:qc42fmqqlsmdq7jiypiiigww/org.simocracy.sim/3mfo6vwfaka24) Test gatheringThe Senate (at://did:plc:awtx57rxuisy4sf4kzzr3uhf/org.simocracy.gathering/3mijiollfqs2i) Driverbrowser-use/browser-harness (browser-harness -c …) Lexicon sourcehyperscan.dev/agents/lexicon/org.hypercerts.claim.activity Run command
cd flue-simocracy
SMOKE_TEST_NO_CONFIRM=1 npm run dev &        # flue dev on :3583
SMOKE_TEST_NO_CONFIRM=1 npm run tg-shim &    # grammy shim on :3584
browser-harness -c 'click_at_xy(...); type_text(...); press_key("Enter")'
npx tsx scripts/list-today-mine.ts            # PDS verify after each write
Cleanup
npx tsx scripts/delete-uri.ts <at-uri>          # per record
npx tsx scripts/restore-sim.ts /tmp/sim-snapshot-mr-meow.json
Evidenceupdate_sim PDS verify · post_comment PDS verify · post_proposal PDS verify · indexer status