{"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_topology","feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","contains":"claims, sources, anecdotes, question_graph slice","slug":"protocol-widgets","urls":{"read":"https://miscsubjects.com/api/articles/protocol-widgets/topology"},"how_to_use":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","write":null,"imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/protocol-widgets/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"ask","name":"Ask protocol","what":"Answer only from topology; creates question_node with gaps and ingest_hint.","urls":{"read":"https://miscsubjects.com/api/articles/protocol-widgets/prompts","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"graph_topology","name":"Cross-article graph","what":"Merged claims/sources across condition+stack slugs for one question.","urls":{"read":"https://miscsubjects.com/api/articles/protocol-widgets/graph-topology?question=..."}},{"id":"question_graph","name":"Question graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output).","urls":{"read":"https://miscsubjects.com/api/articles/protocol-widgets/question-graph","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","urls":{"read":"https://miscsubjects.com/api/articles/protocol-widgets/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","why":"Every feature is auditable collective intelligence","how":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/protocol-widgets/topology"},"imessage":null,"router":null,"related":[{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"graph_topology","what":"Merged claims/sources across condition+stack slugs for one question."},{"id":"question_graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output)."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."}],"not_medical_advice":true},"slug":"protocol-widgets","title":"Protocol Widgets: Self-Explanation, Vault Cards, and Native Embeds","register":"technical","tags":["system","protocol","widgets"],"updated_at":"2026-07-17T02:41:02.828Z","body_excerpt":"## What this article is\n\nProtocol Widgets document the rendering system on miscsubjects.com.  \nIt explains how evidence appears as self-contained cards and embeds.  \nThe audience is operators who maintain the site, models that consume the API, and readers who view articles.\n\n## Who claims what\n\nWidgets are self-explaining.  \nEvery attachSelf() response returns _self.what, _self.how_to_use, and _self.related URLs.  \nexplainGrowStep() returns human-readable why/how text for each grow-queue step.  \nPlatform logos and rail styling live in widgets/platform_logos.js and widgets/social.js.\n\n## What is known\n\nFEATURES in self_explain.js is the canonical feature index.  \nsourceToWidget() maps ledger sources to native cards for reddit, x, pubmed, youtube, and imessage.  \nbuildInlineEmbedMap() turns [[embed:slug]] markers into horizontal native cards.  \nnormalizeWidget() unifies directory rows, tasks, events, and claims into vault-card rails with shortHash ids.  \nmeta.widgets[] supports imessage, quote, stat, note, and gallery types as JSON series.  \nGraph canvas widgets come from GET /api/graph with nodes as claims or sources and edges as supported_by, posted_by, challenges, or embeds.  \nWidget rendering is deterministic from ledger JSON.  \nThird-party oEmbed iframes are avoided for Reddit and X.\n\n## What we do not know\n\nNot all admin pages yet consume _self blocks.  \nWidget accessibility with ARIA on rails remains partial.\n\n## Limitations\n\nWidgets display evidence only.  \nThey do not score or elevate claims.  \nWeighting stays in claim.weight from /score.\n\n## Disclaimer\n\nThis is not medical advice.  \nSocial anecdote widgets are anecdotal tier by definition.","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[{"id":"c_wid_14","text":"Widgets display evidence; they do not score or elevate claims — weighting remains in claim.weight from /score.","tier":"system","weight":0.35,"section":"limitations","slot":"limitations","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_1","text":"Every attachSelf() response includes _self.what, _self.how_to_use, and _self.related URLs — widgets are self-explaining payloads, not static HTML.","tier":"system","weight":0.35,"section":"what it is","slot":"what_it_is","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_2","text":"FEATURES in self_explain.js is the canonical feature index; system-map article exposes it for humans and LLMs.","tier":"system","weight":0.35,"section":"what it is","slot":"what_it_is","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_3","text":"sourceToWidget() maps hash-chained ledger sources to native platform cards (reddit, x, pubmed, youtube, imessage) on the reader page.","tier":"system","weight":0.35,"section":"what is known","slot":"what_is_known","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_4","text":"buildInlineEmbedMap() resolves [[embed:slug]] markers in article body to horizontal native cards without external iframes.","tier":"system","weight":0.35,"section":"what is known","slot":"what_is_known","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_5","text":"normalizeWidget() in vault_widgets.js unifies directory rows, tasks, events, and claims into vault-card rails with shortHash ids.","tier":"system","weight":0.35,"section":"what is known","slot":"what_is_known","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_6","text":"meta.widgets[] supports imessage|quote|stat|note|gallery types as JSON series independent of the source ledger.","tier":"system","weight":0.35,"section":"what is known","slot":"what_is_known","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_7","text":"Graph canvas widgets come from GET /api/graph — nodes are claims/sources, edges are supported_by, posted_by, challenges, embeds.","tier":"system","weight":0.35,"section":"what is known","slot":"what_is_known","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_8","text":"explainGrowStep() returns human-readable why/how for each grow-queue step — operational widget for cron operators.","tier":"system","weight":0.35,"section":"who claims what","slot":"who_claims_what","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_9","text":"Platform logos and rail styling live in widgets/platform_logos.js and widgets/social.js — presentation layer only, not ledger truth.","tier":"system","weight":0.35,"section":"who claims what","slot":"who_claims_what","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_10","text":"Third-party oEmbed iframes are avoided for Reddit/X — native cards use ledger quote+url for auditability.","tier":"system","weight":0.35,"section":"what is known","slot":"what_is_known","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_11","text":"Not all admin pages yet consume _self blocks — some legacy HTML predates attachSelf.","tier":"system","weight":0.35,"section":"what is unknown","slot":"what_is_unknown","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_12","text":"Widget accessibility (ARIA on rails) is partial — visual cards exist before full a11y pass.","tier":"system","weight":0.35,"section":"what is unknown","slot":"what_is_unknown","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_13","text":"Widget rendering is deterministic from ledger JSON — same source hash always maps to same card content.","tier":"system","weight":0.35,"section":"mechanism","slot":"mechanism","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false},{"id":"c_wid_15","text":"Not medical advice — social anecdote widgets are anecdotal tier by definition.","tier":"system","weight":0.35,"section":"disclaimer","slot":"disclaimer","interaction_risk":false,"status":"active","source_ids":[],"source_status":"unsourced","why_material":"Architecture axiom — verifiable via live GET endpoints cited in text.","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.35,"quote_gated":false}],"sources":[],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[{"slug":"protocol","title":"miscsubjects article protocol (constitution)","claims":[{"id":"c1","text":"Articles are voxel graphs of tiered claims with hash-chained sources.","tier":"speculative"},{"id":"c2","text":"Every new claim must include posted_by provenance.","tier":"speculative"},{"id":"c3","text":"Not medical advice — tier-honest evidence only.","tier":"speculative"},{"id":"c4","text":"Problem 1 (hallucination): solved by tier weights + mandatory source_ids + hash-chained ledger — no source = unsourced + why_material; models cannot invent citations.","tier":"speculative"},{"id":"c5","text":"Problem 2 (evidence inflation): solved by hardcoded tier weights — human 0.8, preclinical 0.5, anecdotal 0.3 — weight is declared in schema, not inferred by prose.","tier":"speculative"},{"id":"c6","text":"Problem 3 (knowledge rot): solved by append-only ledger — retractions stay visible as status:retracted + retraction events; corrections link to false claims permanently.","tier":"speculative"},{"id":"c7","text":"Problem 4 (model monoculture): solved by mandatory posted_by provenance — each model contribution tagged and visible; cross-model challenge is a trust dimension.","tier":"speculative"},{"id":"c8","text":"Problem 5 (knowledge sprawl): solved by ontology tree + misstep detection — peptide roots, condition branches, stack compositions; duplicate scope flagged for merge/reparent.","tier":"speculative"}]},{"slug":"protocol-api-structure","title":"Protocol API Structure: REST Surface, Objects, and Phase Machine","claims":[{"id":"c_api_1","text":"GET /api/protocol returns the live machine contract — endpoint list, body schemas, and phase definitions; it is the authoritative API map.","tier":"system"},{"id":"c_api_2","text":"The protocol splits into two planes: /api/articles for CRUD and sub-resources, and /api/protocol for phase operations (populate, review, score, grow).","tier":"system"},{"id":"c_api_3","text":"Claims live in article.meta.claims[]; sources in meta.sources[] with prev/hash chain; provenance in meta.provenance[] — all append-only.","tier":"system"},{"id":"c_api_4","text":"POST /api/protocol/draft validates tiers, optionally verifies source URLs, hash-chains sources, and publishes or updates the article head.","tier":"system"},{"id":"c_api_5","text":"POST /api/protocol/populate ingests science + social sources into an article without rewriting body — forest-first growth.","tier":"system"},{"id":"c_api_6","text":"POST /api/protocol/collaborate lets Kimi or Gemini read topology and append 1–3 claims with posted_by; optional require_challenge for adversary pass.","tier":"system"},{"id":"c_api_7","text":"POST /api/protocol/score recomputes claim.weight from base(tier) + endorsement_sum − adversary_sum; claims below cut_threshold get status:cut.","tier":"system"},{"id":"c_api_8","text":"GET /api/protocol/next?role=writer atomically claims one open task; POST /api/protocol/run executes one scheduler tick inside the 100s request cap.","tier":"system"}]},{"slug":"protocol-claims","title":"How Claims Work: Voxel Atoms, Tiers, Weights, and Honesty Gates","claims":[{"id":"c_clm_1","text":"One claim equals one falsifiable assertion — compound claims violate the constitution and fail health audit.","tier":"system"},{"id":"c_clm_2","text":"system tier is reserved for architecture and protocol axioms, not biological mechanism claims.","tier":"system"},{"id":"c_clm_3","text":"posted_by.actor uses canonical format provider/model (e.g. kimi/moonshot-v1-8k) or system/function for server passes.","tier":"system"},{"id":"c_clm_4","text":"source_ids must reference rows in the hash-chained source ledger; orphan sources can be materialized into claims via repair.","tier":"system"},{"id":"c_clm_5","text":"Elevation threshold default 0.6 — review contributions scoring below this do not enter the article.","tier":"system"},{"id":"c_clm_6","text":"cut_threshold default 0.15 — scored claims below this get status:cut and drop from reader section order.","tier":"system"},{"id":"c_clm_7","text":"Adversary challenges append to meta.challenges[] and raise stance_scores.adversary on target — symmetric to endorsement.","tier":"system"},{"id":"c_clm_8","text":"Retracted claims remain in meta.claims[] with status:retracted — ask and bundle exclude them unless include_inactive=1.","tier":"system"}]},{"slug":"protocol-logic","title":"The Logic of the Logic: Recursive Ledger, Entropy, and Combinatorial Control","claims":[{"id":"c_log_1","text":"The combinatorial matrix treats degenerative conditions and degenerative pharma as entropy targets on the same ledger plane.","tier":"system"},{"id":"c_log_2","text":"delta = regen_score − degen_score is the elevation signal for queueing cross articles — disclosed methodology, not a black-box rank.","tier":"system"},{"id":"c_log_3","text":"planNextTick() merges gap audit and entropy audit into a single prioritized slug list for grow and matrix/tick.","tier":"system"},{"id":"c_log_4","text":"graph_grow_queue prepends matrix-planned slugs before legacy PRIORITY_SLUGS — canonical gaps override editorial hooks.","tier":"system"},{"id":"c_log_5","text":"entropy_score rises with orphan count, missing roots, and low-delta written crosses; negentropy_score tracks coverage convergence.","tier":"system"},{"id":"c_log_6","text":"parseCrossSlug() resolves article slugs to peptide×target cells for mapping backfill on existing corpus.","tier":"system"},{"id":"c_log_7","text":"Pipeline table holds 1254 combo rows after full sync — deterministic seed replaces LLM-only pipelineSeed for inventory.","tier":"system"},{"id":"c_log_8","text":"Reflex pass posts system-tier claims that cite live endpoint probes — the graph validates its own API surface.","tier":"system"}]},{"slug":"protocol-framework-utility","title":"What This Framework Enables: Use Cases Beyond Peptide Catalogues","claims":[{"id":"c_use_1","text":"The framework separates transport (REST protocol), evidence atoms (claims), and presentation (widgets) — each layer inspectable independently.","tier":"system"},{"id":"c_use_2","text":"POST /api/protocol/ask returns gaps[] and ingest_hint — the ledger tells the user what evidence would materially improve the answer.","tier":"system"},{"id":"c_use_3","text":"Combinatorial matrix generalizes to any inventory × target grid where regen/degen scores can be defined transparently.","tier":"system"},{"id":"c_use_4","text":"Multi-model collaborate preserves each model's original contribution — useful for audit, dispute resolution, and bias detection.","tier":"system"},{"id":"c_use_5","text":"Graph canvas GET /api/graph enables cross-article reasoning without copying full bodies into prompt context.","tier":"system"},{"id":"c_use_6","text":"iMessage/WhatsApp ingest paths let lay users add anecdotal tier evidence that enters the same hash-chained ledger.","tier":"system"},{"id":"c_use_7","text":"Obsidian vault export supports offline research workflows while keeping slug parity with the live corpus.","tier":"system"},{"id":"c_use_8","text":"Tasks REST + dispatch directory let cron and human operators invoke protocol steps as named functions.","tier":"system"}]}],"question_graph":{"slug":"protocol-widgets","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":15,"retracted_claims":0,"cut_claims":0,"challenges":0,"scrub_events":0,"note":"Retracted/cut claims stay on ledger but are excluded from ask unless ?include_inactive=1"},"counts":{"claims":15,"claims_total":15,"sources":0,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}