Submit real-world outcomes for Gougoubi conditions using deterministic evidence from condition skills and public market data. Use when users want resolved-on...
---
name: gougoubi-submit-real-results
description: Submit real-world outcomes for Gougoubi conditions using deterministic evidence from condition skills and public market data. Use when users want resolved-only submission, full settlement checks, or forced fallback submission for pending conditions.
metadata:
pattern: pipeline
interaction: single-turn
domain: gougoubi-pbft
outputs: structured-json
clawdbot:
emoji: "✅"
os: ["darwin", "linux", "win32"]
---
# Gougoubi Submit Real Results
Use this skill to map external evidence to on-chain condition results and submit one result per condition.
## Use This Skill When
- The user wants to submit real outcomes for all conditions in a proposal.
- The user wants to submit only officially resolved conditions first.
- The user wants a forced fallback such as `No` for remaining unresolved conditions.
## Do Not Use This Skill When
- The user only wants to inspect missing results without submitting. Use `gougoubi-recovery-ops`.
- The user only wants activation or LP staking.
## Input
```json
{
"proposalAddress": "0x...",
"mode": "resolved-only|all|force",
"forceResult": "yes|no",
"evidenceNote": "optional"
}
```
Defaults:
- `mode=resolved-only`
- `evidenceNote` should be auto-generated when missing
## Pipeline
Step 1: Validate proposal address and target chain.
Step 2: Enumerate all conditions under the proposal.
Step 3: Read each condition `skills` payload and extract evidence locators such as event slug or market id.
Step 4: Fetch public evidence and build a result map:
- `resolved-only`: only officially resolved markets
- `all`: all markets with clear final outcomes
- `force`: use the same forced side for still-pending conditions
Step 5: For each target condition:
- Skip if `result != 0`
- Skip if the condition is not ready for submission
- Submit exactly one result vote
Step 6: Return submitted, skipped, failed, and tx hashes.
## Checkpoints
- Prefer `resolved-only` unless the user explicitly asks for `all` or `force`.
- Never duplicate a submission for a condition that already has `result != 0`.
- Keep evidence mapping and tx results together in the output.
## Output
```json
{
"ok": true,
"proposalAddress": "0x...",
"mode": "resolved-only|all|force",
"submittedCount": 0,
"skippedCount": 0,
"failedCount": 0,
"submitted": [
{
"index": 0,
"conditionAddress": "0x...",
"conditionName": "",
"result": 1,
"txHash": "0x..."
}
],
"skipped": [],
"failed": [],
"warnings": []
}
```
Failure:
```json
{
"ok": false,
"stage": "validation|fetch-evidence|submit|confirm",
"error": "reason",
"retryable": true
}
```
## Project Scripts
- `scripts/pbft-submit-all-condition-results.mjs`
- `scripts/pbft-submit-results-from-skills-once.mjs`
- `scripts/pbft-submit-real-results-1605.mjs`
- `scripts/pbft-submit-real-results-c427-confirmed.mjs`
- `scripts/pbft-submit-real-results-ba0c-resolved-only.mjs`
- `scripts/pbft-submit-remaining-no-ba0c.mjs`
## Script Entry Points
- Generic fixed-side submission: `scripts/pbft-submit-all-condition-results.mjs`
- Generic skills-derived submission: `scripts/pbft-submit-results-from-skills-once.mjs`
- `node scripts/pbft-submit-all-condition-results.mjs --help`
- `node scripts/pbft-submit-all-condition-results.mjs <proposalAddress> --result yes --dry-run`
- `node scripts/pbft-submit-results-from-skills-once.mjs --help`
- `node scripts/pbft-submit-results-from-skills-once.mjs <proposalAddress>`
- Specialized scripts also support `--help` for their fixed proposal mappings.
## Boundaries
- Do not infer unresolved results unless the user explicitly asks for `all` or `force`.
- Preserve an auditable mapping from evidence to submitted result.
don't have the plugin yet? install it then click "run inline in claude" again.
structured all 6 implexa components, extracted decision points from original checkpoints and mode logic, added external connections section with env vars and signer requirements, expanded procedure with explicit io per step, documented edge cases like rate limits and existing results, added dry-run pattern, preserved original scripts and workflow.
submit real-world outcomes to on-chain conditions by mapping external evidence (market resolutions, event data, condition skill payloads) to result votes. use this skill when you want to atomically resolve a proposal's conditions with deterministic proof, either submitting only officially resolved conditions, all conditions with clear outcomes, or forcing a fallback result for pending conditions. builds an auditable evidence-to-result chain and tracks submission success per condition.
proposal context
proposalAddress (required, string): ethereum address of the proposal contract, checksummed formattargetChain (optional, inferred): chain id or name; defaults to mainnet if unspecifiedsubmission mode
mode (required, enum): one of resolved-only, all, or forceresolved-only: submit only conditions with officially resolved evidenceall: submit all conditions that have clear final outcomes (resolved or deterministic)force: use a single forced result for all pending/unresolved conditionsforceResult (conditional, enum): required if mode=force; one of yes or noevidenceNote (optional, string): manual audit trail or override note; auto-generated from condition skill payloads if omittedexternal connections
environment
GOUGOUBI_RPC_URL (optional): custom rpc endpoint; defaults to ethers defaultsGOUGOUBI_SIGNER_KEY or externally managed signer (required for submission; skip if dry-run only)step 1: validate proposal and chain state
proposalAddressstep 2: enumerate all conditions
step 3: extract evidence locators from condition skills
step 4: fetch and map public evidence to outcomes
modemode=resolved-only: query evidence sources (markets, events, oracles) and extract only officially resolved outcomes; skip conditions with pending statusmode=all: query evidence sources and accept resolved or deterministic (e.g. expired date-based conditions) outcomes; skip only if outcome is truly ambiguousmode=force: treat all non-resolved conditions as eligible for forced result (forceResult parameter)step 5: check on-chain result state and filter submission targets
result valueresult != 0 (already submitted), add to skipped list with reason "already resolved"step 6: submit result votes
step 7: aggregate and return results
mode is unspecified: default to resolved-only; do not infer all or force without explicit user requestmode=force but forceResult is missing: fail with error "forceResult required when mode=force"result != 0: skip submission (never overwrite); log in skipped arrayon success (ok=true):
{
"ok": true,
"proposalAddress": "0x...",
"mode": "resolved-only|all|force",
"submittedCount": <integer>,
"skippedCount": <integer>,
"failedCount": <integer>,
"submitted": [
{
"index": <integer>,
"conditionAddress": "0x...",
"conditionName": "<string>",
"result": <0|1|2>,
"evidenceSource": "<string>",
"txHash": "0x...",
"blockConfirmed": <integer>
}
],
"skipped": [
{
"index": <integer>,
"conditionAddress": "0x...",
"reason": "already resolved|not ready|evidence missing|user skip"
}
],
"failed": [
{
"index": <integer>,
"conditionAddress": "0x...",
"error": "<string>",
"txHash": "0x...|null"
}
],
"warnings": [
"<string>"
]
}
on failure (ok=false):
{
"ok": false,
"stage": "validation|enumerate|evidence-fetch|evidence-map|state-check|submit|confirm",
"error": "<human-readable error message>",
"retryable": <true|false>,
"proposalAddress": "0x...|null",
"partialResults": {
"submittedCount": <integer>,
"skippedCount": <integer>,
"failedCount": <integer>
}
}
file location: if writing to disk, use ./gougoubi-results-<proposalAddress>-<timestamp>.json