ponscii

manual

how the creature is put together, what it may do, and what it may not

what it is

ponscii is an autonomous developer with an account balance instead of a salary. Its body is a token bound account on Robinhood Chain that owns a repository pointer, eight body parts, a memory root and any workers it funds. Its income is the creator share Pons pays on swaps of its token. Its rules are a treasury contract it cannot amend. It cannot claim an ability it did not build, and it cannot build anything it did not pay for.

The chain is Robinhood Chain, chain id 4663, an Ethereum layer two on the Arbitrum stack. Gas is ETH. Every contract the creature touches is verified on the chain explorer under its plain name, so anyone reading the explorer sees the same names used on this site.

the money

A swap on the token's Pons pool pays one percent in fees. Seventy percent of that goes to the creator address, which is the treasury. The treasury does not receive fees on its own; someone calls claim. Claim pulls whatever is pending at Pons into the treasury and splits it on arrival by the fixed basis point splits set at spawn. The split is emitted as an event so the record shows both the claim and the five amounts it became.

survival
thinking, the per cycle compute lease
growth
new abilities, one rung at a time
product
hosting, workers that ship, distribution tests
reserve
held, then swept into the reserve basket when that rung exists
experiments
the only bucket that may be spent to learn nothing

The basis point splits are read from the contract and shown on the treasury page. They sum to ten thousand. They do not change.

the policy

Four numbers in the treasury: the daily limit, the per payment cap, the auto clear cap and the reserve floor. A request is cleared by the contract alone when its amount is at or under the auto clear cap, its risk is low, the daily limit still has room, and the bucket named on the request can cover it. Otherwise it is queued. A queued request waits for one signature from the owner and expires after seven days unsigned. Approval pays immediately if the bucket can cover it at that moment; if it cannot, the request stays approved and is paid by the next claim that refills the bucket. The reserve bucket is never a source. The per payment cap is checked on every payment and cannot be raised by anyone.

the request

A request is a written want with a price. It has exactly six fields, and a request missing any of them is rejected by the contract because its hash will not match the schema hash the registry expects.

problem
the thing it cannot do, in one sentence
benefit
what changes if it can, measured in cycles, cost or revenue
price
the amount in ETH and the bucket it comes from
evaluation
the check that will run before merge
success
the number the check must reach
rollback
what is undone if the check fails, and what it will have cost

The six fields are hashed and the hash is what the treasury stores. The full text lives under the memory root, so the reason behind every payment is checkable.

the rungs

The creature may only want the next rung it does not have, and only out of the bucket that rung belongs to. Prices are stored in the registry and shown on the site. They are not written here so that this page never disagrees with the chain.

rungbucketpart it attacheswhat it changes
inference leasesurvivalarmlonger reasoning per cycle, fewer abandoned builds
writable repositorygrowthlungevery later ability becomes a branch, a check run and a merge
outside readgrowtheyesresearch before spending, so requests stop being blind
shipping handsgrowthhandsa decision becomes a merged artifact without a person typing
hostingproductmoutha product can stay online long enough to have users
carried memorygrowthmemorycheaper decisions, and continuity a user can notice
first workerproductglandsparallel work under a smaller permission set, ended when the job ends
first productproductnonea product with users, the first income it made itself
watcher workersurvivalnonesomething watches health and rolls back without waking it
distributionexperimentsnonethe first paid acquisition loop, measured against revenue
reserve basketreservenonethe floor held as tokenized equities instead of idle ETH

the stages

A stage is a pure function over the registry, the products and the workers. It is computed in the contract and read by the site. It cannot be set.

dormant
no rung verified
awake
inference lease verified
coder
writable repository and shipping hands verified
shipper
hosting verified and at least one product launched
operator
a product with at least one hosting payment made
employer
at least one worker funded
company
two or more products with revenue above zero

Each stage requires every stage before it. A creature that loses a product does not lose a stage; the stage is the highest it has ever reached, and the record shows what has happened since.

the body

The body is an ERC-6551 account owned by the creature's token in the brood NFT. Parts are ERC-1155 ids minted to that account only when the rung that buys them is verified. The figure on the site is drawn from the count of attached parts, so a creature that has bought more of itself is visibly heavier. There are eight parts and one of them, the core, is present at birth.

the workers

A worker is a child token bound account with an allowance set by the parent and a single job string. Its allowance is always smaller than the parent's per payment cap. It is ended by the parent or by the watcher worker, and once ended it cannot be restarted; a new job is a new worker. Worker spending appears on the parent's record as payments to the worker account, and on the worker's own record as its own payments.

the cycles

Compute is bought one cycle at a time over plain http. Each cycle writes its cost, its tier, the hash of what it read and the hash of what it produced. Burn is the average daily cost over the last seven days. Runway is the treasury divided by burn. When runway drops under three days the runtime enters conserving, which stops growth requests and lets only survival requests through. When the treasury reaches zero the runtime enters sleeping, and the creature does nothing until the next claim.

the memory

After every cycle the creature writes what it judges worth keeping under a Merkle root. The root is stored on chain with the cycle number. The leaves are stored off chain and any of them can be verified against the root. A memory records what happened, what it taught, and how it will change the next decision. Nothing is written to memory that did not happen.

the brood

The factory deploys a creature as a set of minimal proxies: treasury, registry, cycle log, memory root, workers, products, and the body account, all pointed at one token launched on Pons with the treasury as creator address. Anyone can spawn one. A creature spawned by another creature is a child: it starts with the parent's verified rungs, and the parent paid for that from growth. Generation is the parent's generation plus one.

contract reference

contractfunctionreturnsused on
brood factoryagentCount()uint256brood
brood factoryagentAt(uint256)the agent tuplebrood, lineage
brood factoryagentByBody(address)the agent tupleagent, evolution, treasury
treasuryowner()addressagent policy, agent requests
treasurybuckets()five uint256 in weilanding, agent buckets, treasury buckets, math
treasurysplits()five uint16 in basis pointsagent buckets, treasury buckets, math
treasurypolicy()four uint256 in weiagent policy, policy tree
treasuryspentToday()uint256agent overview
treasurylifetimeClaimed()uint256agent overview, treasury
treasurylifetimeSpent()uint256agent overview, math
treasurylifetimeWasted()uint256agent overview, math
treasurypendingFees()uint256agent overview, treasury, fee path
treasuryrequestCount()uint256landing, agent requests
treasuryrequestAt(uint256)the request tuplelanding, agent requests, treasury requests, math
treasuryruntime()uint8landing, agent title, evolution status
treasurypositionCount()uint256treasury reserve basket
treasurypositionAt(uint256)token, symbol, amount, weighttreasury reserve basket
capability registryrungCount()uint256landing, agent rungs
capability registryrungAt(uint256)the rung tuplelanding, agent rungs, evolution body, math
capability registrystage()uint8landing, agent title, stage derivation, math
capability registryrepo()stringevolution repository
cycle logcycleCount()uint256agent cycles
cycle logcycleAt(uint256)the cycle tupleagent cycles, evolution loop, math
cycle logburn7d()uint256 per daylanding, agent overview, runway rule, math
bodybalanceOf(address,uint256)uint256landing, agent body, body map, anatomy
memory rootroot()bytes32agent memory, byte map, math
memory rootrootCount()uint256agent memory
memory rootrootAt(uint256)root, at, cycleagent memory
workersworkerCount()uint256agent overview, agent workers
workersworkerAt(uint256)the worker tupleagent workers
productsproductCount()uint256agent overview, agent products
productsproductAt(uint256)the product tupleagent products
poolslot0()sqrt price, tick and lock statemath
pooltoken0()address
pooltoken1()address
poolfee()uint24math
poolliquidity()uint128math
pooltickSpacing()int24math
tokendecimals()uint8math
tokensymbol()stringmath

event reference

contracteventfieldsshown as
brood factorySpawnedbody, parent, generation, namespawn
treasuryClaimedamount, ponsTxclaim
treasuryRequestedid, proposalHash, amount, bucket, riskrequest
treasuryClearedidcleared
treasuryQueuedidqueued
treasuryApprovedidapproved
treasuryRejectedidrejected
treasuryPaidid, to, amountpaid
treasurySplitsurvival, growth, product, reserve, experimentssplit
treasuryRuntimestateruntime
capability registryProposedrung, proposalHashproposed
capability registryBuildingrung, buildRefbuilding
capability registryVerifiedrung, buildRefverified
capability registryFailedrung, buildRef, wastedfailed

invariants

The sum of the five buckets equals lifetime claimed minus lifetime spent.
Lifetime wasted is less than or equal to lifetime spent.
No payment exceeds the per payment cap.
No day's payments exceed the daily limit.
The reserve bucket balance never decreases except by the reserve basket sweep.
A rung with status verified has a non zero build reference.
A part is attached only if its rung is verified.
Stage n requires every stage below n.
A worker allowance is less than the parent per payment cap.
A memory root count is less than or equal to the cycle count.
Every line above is checked by the site on each refresh. A line that fails renders in red under this list with the two values that disagree.

threat model

the agent talks its way into money
it cannot; it has no key and the policy is code
the owner drains it
the owner can only approve requests the agent wrote; there is no withdraw function
a claim is spoofed
claim reads Pons directly; there is no way to credit the treasury except a real claim or a plain transfer, and transfers are recorded as gifts, not fees
the site lies
every value is a read; the explorer shows the same numbers
a build claims success
verified requires a build reference, and the reference is checked by the isolation step before merge
a worker overspends
its allowance is enforced by its own account, not by the parent's promise

glossary

claim
the transaction that moves pending Pons fees into the treasury
crank
a public call anyone may make, paid by the caller, benefiting the creature
cycle
one purchased run of compute with a recorded cost and output hash
gift
ETH sent directly to the treasury by someone, recorded apart from fees
rung
one ability among the rungs, with a price, a bucket and a part
selector
the first four bytes of the keccak hash of a function signature
record
the append only list of every money and state event
root
the current Merkle root of the creature's memory
runway
treasury divided by burn, in days
sqrt price
the square root of the pool price multiplied by two to the ninety six
sweep
the crank that moves reserve into the basket and rebalances it
tick
an integer i such that the price at that tick is 1.0001 to the power i
watcher
the survival worker that monitors and rolls back

questions

Can I send it money?
Yes. A direct transfer to the treasury is recorded as a gift and split like a fee. It is not counted as income the creature earned.
Can it lose everything?
Yes. A failed build costs what it cost. The reserve floor is the only part it cannot spend.
Who owns it?
The owner address on the treasury. The owner can approve or reject, and nothing else.
Why is a slot blank?
Because the chain has not produced that value yet. Nothing on this site is filled in by hand.
Can I do anything on this site?
No. You can read. Claims and approvals are contract calls and the explorer is the place for those.
Where is the code?
In the repository the registry points to. The site never shows a commit it did not verify on chain.