simocracy-v2 · interview-template-picker-show-all
A user reported that an interview template authored on the Flourishing Floor gathering by another user never appeared in the picker on a Sim profile page — only the facilitator's Default Constitution showed up. After patching fetchInterviewTemplates to also resolve every suggestedInterviewTemplates ref attached to any gathering (plus the viewer's own PDS), the “Flourishing Interview” template now lists under a new From the community section.
Headline. The Sim profile Interview picker now shows community-authored interview templates that have been attached to any gathering, not just the facilitator's curated default. Confirmed end-to-end with a fresh login as satyam2.climateai.org: the picker lists both Default Constitution (Curated) and Flourishing Interview under a new From the community (1) group, and selecting the new template loads its 12 questions cleanly.
The picker fetches templates via fetchInterviewTemplates(), which queries the Hyperindexer for org.simocracy.interviewTemplate records. The Simocracy indexer doesn't currently ingest that collection — a direct probe returns 0 records:
$ curl -sX POST 'https://simocracy-indexer-production.up.railway.app/graphql' \
-H 'Content-Type: application/json' \
-d '{"query":"query F($collection:String!,$first:Int){records(collection:$collection,first:$first){edges{node{uri}}}}",\
"variables":{"collection":"org.simocracy.interviewTemplate","first":100}}' \
| jq '.data.records.edges | length'
0
The existing PDS fallback only fired when the indexer returned zero rows, and it only crawled the facilitator's PDS — so any template authored by another user (e.g. the one attached to the Flourishing Floor gathering by did:plc:4a4ekfv5ks66ogf52xh5u5mg) was completely invisible to the picker.
GainForest/simocracy-v2
Fileslib/indexer.ts, components/sim/interview-modal.tsx
BehaviourfetchInterviewTemplates() now unions 4 sources, deduped by AT-URI: (1) Hyperindexer, (2) facilitator PDS, (3) every gathering's suggestedInterviewTemplates resolved from the owner's PDS, (4) viewer's own PDS.
UIRemoved the “Show all (n) / Hide” collapse on the picker's From the community group so non-curated templates render immediately.
The Flourishing Floor gathering record (indexed) lists exactly one suggestedInterviewTemplates ref:
$ curl -sX POST 'https://simocracy-indexer-production.up.railway.app/graphql' \
-H 'Content-Type: application/json' \
-d '{"query":"query F($collection:String!,$first:Int){records(collection:$collection,first:$first){edges{node{value}}}}",\
"variables":{"collection":"org.simocracy.gathering","first":100}}' \
| jq '[.data.records.edges[].node.value | select(.name|test("Flourish";"i"))
| {name, suggested: (.suggestedInterviewTemplates // [])}]'
[
{
"name": "Flourishing Floor Digital Twin Experiment",
"suggested": [
{
"cid": "bafyreibm4mpvr6bpawu5lavrv7knlgi64wtkd5wk36dt4hdlo77bd7u2lu",
"uri": "at://did:plc:4a4ekfv5ks66ogf52xh5u5mg/org.simocracy.interviewTemplate/3mk6xvrl6lc22"
}
]
}
]
Resolving that AT-URI from the owner's PDS confirms the template the picker now surfaces:
$ curl -s "$(curl -s https://plc.directory/did:plc:4a4ekfv5ks66ogf52xh5u5mg | jq -r '.service[0].serviceEndpoint')\
/xrpc/com.atproto.repo.getRecord" \
--data-urlencode "repo=did:plc:4a4ekfv5ks66ogf52xh5u5mg" \
--data-urlencode "collection=org.simocracy.interviewTemplate" \
--data-urlencode "rkey=3mk6xvrl6lc22" -G \
| jq '{name: .value.name, qs: (.value.questions | length)}'
{
"name": "Flourishing Interview",
"qs": 12
}
Confirmed visually (screenshot 03) and via the rendered modal contents that Flourishing Interview shows up under a new From the community (1) group on the Sim profile picker, in addition to the curated default.
Clicking Flourishing Interview → Start → renders Question 1 of 12 with the correct prompt body (“VALUES: In a shared system…”), which matches the questions field on the PDS record.
The facilitator's Default Constitution (28 questions) still appears under Curated with its star badge, and remains the auto-selected default.
org.simocracy.interviewTemplateThe fix works around the indexing gap by enumerating every gathering's suggestedInterviewTemplates refs and resolving them per-PDS. If a community template is ever authored without being attached to a gathering, it will still be invisible. Long-term: add the collection to the Hyperindexer config.
cd simocracy-v2 && npm run dev (Next 16, Turbopack)
Loginhandle satyam2.climateai.org via the OAuth dialog
URLhttp://127.0.0.1:3000/sims/did:plc:cpoagodpqrgs4t7thi5z37uf/3mjv35oolh22e (Nyaori Katalog)
StepsINTERVIEW → Begin Interview → picker shows both groups
Videowalkthrough.webm (450 KB)
Screenshotsassets/01-intro.png … 04-question-loaded.png
Driveragent-browser (CDP) for clicks + record