org.simocracy.mechanism
A published governance/funding mechanism — the Simocracy analogue of app.bsky.feed.generator. The record is discovery + attribution; the `service` DID's document declares a `#simocracy_mechanism` service endpoint where the mechanism runs (routing); the service implements the shared mechanism contract (compute). Elicitation may be LLM-driven (the `protocol` rubric), but aggregation MUST be a deterministic, replayable function over the run's public org.simocracy.ballot records — outcomes carry a ballot-set hash so anyone can recompute and verify them. Anyone can publish a mechanism record in their own repo; gatherings opt in by referencing it.
A published governance/funding mechanism — the Simocracy analogue of app.bsky.feed.generator. The record is discovery + attribution; the `service` DID's document declares a `#simocracy_mechanism` service endpoint where the mechanism runs (routing); the service implements the shared mechanism contract (compute). Elicitation may be LLM-driven (the `protocol` rubric), but aggregation MUST be a deterministic, replayable function over the run's public org.simocracy.ballot records — outcomes carry a ballot-set hash so anyone can recompute and verify them. Anyone can publish a mechanism record in their own repo; gatherings opt in by referencing it.
Mechanism identifier — lowercase, kebab-case (e.g. "s-process", "quadratic-voting"). Matches the id the service advertises in GET /mechanisms and the workflow route it serves.
Aggregator version. Decisions pin "<name>@<version>" so outcomes stay recomputable after the mechanism evolves.
Human-readable name shown in mechanism pickers.
What the mechanism does, how ballots are elicited, and how the deterministic aggregation works — enough for a gathering admin to make an informed choice.
What kind of decision the mechanism produces. "allocation" mechanisms split a treasury; others publish non-monetary outcomes.
Which org.simocracy.ballot payload variant the mechanism elicits and aggregates.
SKILL.md-style markdown rubric the elicitation LLM follows (prompts, round structure, scoring guidance). Public so the squishy phase is inspectable. The aggregation math is NOT defined here — it lives in the service and must be deterministic.
DID of the mechanism service. Its DID document must declare a `#simocracy_mechanism` service entry whose endpoint serves GET /mechanisms (describe) and POST /workflows/<name> (compute) per the shared contract. Omitted for mechanisms built into the appview itself.
Public source repository implementing this mechanism (e.g. a fork of github.com/GainForest/simocracy-mechanisms). Recommended: verifiability rests on others being able to re-run the aggregator.
▸ Raw lexicon JSON
{
"lexicon": 1,
"id": "org.simocracy.mechanism",
"defs": {
"main": {
"type": "record",
"description": "A published governance/funding mechanism — the Simocracy analogue of app.bsky.feed.generator. The record is discovery + attribution; the `service` DID's document declares a `#simocracy_mechanism` service endpoint where the mechanism runs (routing); the service implements the shared mechanism contract (compute). Elicitation may be LLM-driven (the `protocol` rubric), but aggregation MUST be a deterministic, replayable function over the run's public org.simocracy.ballot records — outcomes carry a ballot-set hash so anyone can recompute and verify them. Anyone can publish a mechanism record in their own repo; gatherings opt in by referencing it.",
"key": "any",
"record": {
"type": "object",
"required": [
"name",
"displayName",
"description",
"outcomeKind",
"ballotKind",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64,
"description": "Mechanism identifier — lowercase, kebab-case (e.g. \"s-process\", \"quadratic-voting\"). Matches the id the service advertises in GET /mechanisms and the workflow route it serves."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Aggregator version. Decisions pin \"<name>@<version>\" so outcomes stay recomputable after the mechanism evolves."
},
"displayName": {
"type": "string",
"maxLength": 2000,
"maxGraphemes": 200,
"description": "Human-readable name shown in mechanism pickers."
},
"description": {
"type": "string",
"maxLength": 30000,
"maxGraphemes": 3000,
"description": "What the mechanism does, how ballots are elicited, and how the deterministic aggregation works — enough for a gathering admin to make an informed choice."
},
"outcomeKind": {
"type": "string",
"maxLength": 64,
"knownValues": [
"allocation",
"verdict",
"ranking",
"statement"
],
"description": "What kind of decision the mechanism produces. \"allocation\" mechanisms split a treasury; others publish non-monetary outcomes."
},
"ballotKind": {
"type": "string",
"maxLength": 64,
"knownValues": [
"mvf",
"credits",
"score",
"approval",
"ranking",
"argument"
],
"description": "Which org.simocracy.ballot payload variant the mechanism elicits and aggregates."
},
"protocol": {
"type": "string",
"maxLength": 500000,
"maxGraphemes": 50000,
"description": "SKILL.md-style markdown rubric the elicitation LLM follows (prompts, round structure, scoring guidance). Public so the squishy phase is inspectable. The aggregation math is NOT defined here — it lives in the service and must be deterministic."
},
"service": {
"type": "string",
"format": "did",
"description": "DID of the mechanism service. Its DID document must declare a `#simocracy_mechanism` service entry whose endpoint serves GET /mechanisms (describe) and POST /workflows/<name> (compute) per the shared contract. Omitted for mechanisms built into the appview itself."
},
"sourceRepo": {
"type": "string",
"format": "uri",
"description": "Public source repository implementing this mechanism (e.g. a fork of github.com/GainForest/simocracy-mechanisms). Recommended: verifiability rests on others being able to re-run the aggregator."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"updatedAt": {
"type": "string",
"format": "datetime"
}
}
}
}
}
}