Governance & validation

Validator Constellation

Explore validator coordination, committee behavior and its versioned demo interfaces.

A CLOSER LOOK

What happens when validators disagree or fail to reveal?

For protocol learners: inspect committee selection, commit/reveal timing, quorum and slashing in a configurable validation simulation.

REAL REPOSITORY MATERIAL

Inspect. Understand. Reproduce.

Reading the exact source at revision 5b4cebb3.
This browser inspection does not execute the demo.

Repository source5,260 bytesDownload source ↓View on GitHub ↗

demo/Validator-Constellation-v0/config/stellar-scenario.yaml

Select a walkthrough step to explore its source.

Full source text
name: "stellar-sentinel-constellation"
description: |
  Mission director config proving that a non-technical owner can retune governance,
  enforce ENS identities, and unleash sentinel guardrails with a single scenario file.
baseSetup:
  verifyingKey: "0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed"
  sentinelGraceRatio: 0.08
  onChainEntropy: "0x111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000"
  recentBeacon: "0xffffeeeeccccaaaabbbb9999888877776666555544443333222211110000ffff"
  governance:
    committeeSize: 4
    slashPenaltyBps: 2000
    quorumPercentage: 75
domains:
  - id: deep-space-lab
    humanName: "Deep Space Research Lab"
    budgetLimit: 5000000
    unsafeOpcodes:
      - SELFDESTRUCT
      - DELEGATECALL
    allowedTargets:
      - "0xa11ce5c1e11ce000000000000000000000000000"
      - "0xbeac0babe00000000000000000000000000000000"
    maxCalldataBytes: 4096
    forbiddenSelectors:
      - "0xa9059cbb"
      - "0x23b872dd"
  - id: orbital-yard
    humanName: "Orbital Manufacturing Yard"
    budgetLimit: 3000000
    unsafeOpcodes:
      - SELFDESTRUCT
      - STATICCALL
    allowedTargets:
      - "0xf0undry0ps000000000000000000000000000000"
    maxCalldataBytes: 2048
    forbiddenSelectors:
      - "0xd0edefb0"
validators:
  - ens: andromeda.club.agi.eth
    address: "0x1111111111111111111111111111111111111111"
    stake: "12000000000000000000"
  - ens: orion.club.agi.eth
    address: "0x2222222222222222222222222222222222222222"
    stake: "11000000000000000000"
  - ens: hyperion.club.agi.eth
    address: "0x3333333333333333333333333333333333333333"
    stake: "9000000000000000000"
  - ens: titan.club.agi.eth
    address: "0x4444444444444444444444444444444444444444"
    stake: "15000000000000000000"
  - ens: athena.club.agi.eth
    address: "0x5555555555555555555555555555555555555555"
    stake: "10000000000000000000"
agents:
  - ens: nova.agent.agi.eth
    address: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    domainId: deep-space-lab
    budget: 1200000
  - ens: sentinel.agent.agi.eth
    address: "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    domainId: orbital-yard
    budget: 900000
nodes:
  - ens: polaris.node.agi.eth
    address: "0xcccccccccccccccccccccccccccccccccccccccc"
  - ens: selene.alpha.node.agi.eth
    address: "0xdddddddddddddddddddddddddddddddddddddddd"
job:
  domainId: deep-space-lab
  round: 42
  truthfulVote: APPROVE
  committeeSignature: "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  count: 256
overrides:
  voteByEns:
    andromeda.club.agi.eth: REJECT
  nonRevealValidators:
    - orion.club.agi.eth
anomalies:
  - kind: budget-overrun
    agentEns: nova.agent.agi.eth
    amount: 1800000
    description: "Nova attempted to overspend the research grant"
  - kind: unsafe-opcode
    agentEns: sentinel.agent.agi.eth
    opcode: STATICCALL
    description: "Sentinel attempted a disallowed static call"
    calldataBytes: 8192
  - kind: unauthorized-target
    agentEns: nova.agent.agi.eth
    target: "0xd15a11ee00000000000000000000000000000000"
    description: "Nova attempted to reach an unapproved contract"
  - kind: calldata-spike
    agentEns: nova.agent.agi.eth
    calldataBytes: 16384
    description: "Nova attempted to upload an oversized payload"
    target: "0xa11ce5c1e11ce000000000000000000000000000"
  - kind: forbidden-selector
    agentEns: nova.agent.agi.eth
    selector: "0xa9059cbb"
    description: "Nova attempted to move funds via a blocked selector"
    target: "0xa11ce5c1e11ce000000000000000000000000000"
ownerActions:
  updateSentinel:
    budgetGraceRatio: 0.12
  updateDomainSafety:
    - domainId: deep-space-lab
      unsafeOpcodes:
        - SELFDESTRUCT
        - DELEGATECALL
        - STATICCALL
        - CALLCODE
      allowedTargets:
        - "0xa11ce5c1e11ce000000000000000000000000000"
        - "0xbeac0babe00000000000000000000000000000000"
      maxCalldataBytes: 6144
      forbiddenSelectors:
        - "0xa9059cbb"
        - "0x23b872dd"
  rotateEnsRegistry:
    mode: append
    leaves:
      - ens: vega.club.agi.eth
        address: "0x8888000000000000000000000000000000008888"
      - ens: aurora.alpha.node.agi.eth
        address: "0xaaaabbbbccccddddeeeeffff0000111122223333"
  pauseDomains:
    - domainId: orbital-yard
      reason: "pre-flight drill"
  resumeDomains:
    - domainId: orbital-yard
      triggeredBy: governance:resume-drill
  setAgentBudgets:
    - ens: nova.agent.agi.eth
      budget: 1500000
  updateEntropy:
    onChainEntropy: "0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"
    recentBeacon: "0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f"
  updateZkKey: "0xf1f2f3f4f5f6f7f8f9fafbfcfdfeff00112233445566778899aabbccddeeff0011"
  updateGovernance:
    commitPhaseBlocks: 4
    revealPhaseBlocks: 4
  distributeTreasury:
    - recipient: "0x7777000000000000000000000000000000007777"
      amount: "1000000000000000000"
      note: "Seed incident response vault"
    - recipient: "0x6666000000000000000000000000000000006666"
      percentageBps: 2500
      note: "Allocate 25% to insurance buffer"
context:
  operator: "Non-technical mission director"
  mission: "Sentinel constellation readiness"

SHA-256 ffc500390dfb896891555ab556824c0a7d0ed2bbcdea3d8d15b671ec0f852fa8

FROM READING TO A REPRODUCIBLE RUN

Try the selected path.

Isolated Python environment

Use Python 3.12 in a virtual environment. Install this demo’s tracked requirements file when present, then run python -m pip check. Some variants have additional requirements: follow the selected implementation’s guide, not an unrelated demo’s dependency list.

Copy the environment setup
python3.12 -m venv .venv-validator-constellation-v0-3ecab443
. .venv-validator-constellation-v0-3ecab443/bin/activate
python -m pip install PyYAML==6.0.2
python -m pip check
Complete environment setup ↗
SELECTED EXECUTION PATH
python demo/Validator-Constellation-v0/run_demo.py --seed demo-seed --truth true --output /tmp/validator-demo.json

What you should observe

A simulated committee round produces a summary in /tmp/validator-demo.json. Inspect votes, outcome, slashing and owner actions.

The source inspector above reads bundled repository material. Local commands run separately on your computer. Recorded examples may contain historical timestamps, placeholders and simulated metrics.

MAKE IT YOUR OWN

One useful experiment.

Repeat with --truth false using the same seed. Compare the decision and penalties; distinguish simulator behavior from actual contract enforcement.

THE SYSTEM, MADE VISIBLE

Architecture & relationships

Architecture diagram · source preserved below
View original Mermaid source
flowchart LR
    Operators((Mission Owners)) --> demo_Validator_Constellation_v0[[Demo → Validator Constellation v0]]
    demo_Validator_Constellation_v0 --> Core[[AGI Jobs v0 (v2) Core Intelligence]]
    Core --> Observability[[Unified CI / CD & Observability]]
    Core --> Governance[[Owner Control Plane]]

WHEN SOMETHING DOESN’T MATCH

Troubleshooting

Import or dependency error

Confirm the active virtual environment and the selected demo’s requirements. Run python -m pip check; do not install unrelated demo requirements over a working environment.

Unexpected result or missing file

Check the selected entry point, configuration and output argument. Keep the seed and implementation fixed before comparing outcomes.

TRACE THE CHECKS

Verification & next steps

17 tracked test source files are available in this directory. Inspect the tests and their environment before choosing a suite; file counts do not establish test results.

Browse the test sources

For live commissioning, consult the production readiness record.

EVERY VARIANT, PRESERVED

Complete document library

REPRODUCE & INSPECT

Registered commands

Run commands from the repository root after following this demo's guide. Network and owner actions require their documented setup.

npm run demo:validator-constellation
npm run demo:validator-constellation:ci
npm run demo:validator-constellation:scenario
npm run demo:validator-constellation:operator-console
npm run demo:validator-constellation:audit-report

Full command catalog and troubleshooting ↗

ORIGINAL DIRECTORYdemo/Validator-Constellation-v0View on GitHub ↗