Draft for review. Not published. Values marked for re-checking in the source are read from the chain on the day of publication. Read the audit page

How this marketplace works, and how to check that it does

This is a description of mechanisms, not a pitch. Every rule below was made to refuse a real transaction, on a named contract you can go and interrogate yourself, and the last section tells you how. Where something has not been done, or cannot be done, it says so in the same plain words as the rest.

80 rules that actually refused a transaction built to break them
2 shown unreachable, by refusals rather than by argument
7 security reviews, across six versions of the contract
0 known defects that can cost anyone a piece or their money

1. The object this document describes

Application 770868027, on Algorand's test network. Approval program of 6,429 bytes, fingerprint fa74919269d4e64f. Quote that number and that fingerprint rather than the name of the project: two versions of the same contract carry two different fingerprints, and a green check on one establishes nothing about the other.

How you confirm you are looking at the right object: ask the network for the application's program and compute its fingerprint. If it does not match, everything below is describing something else.

And a successor exists, which is not engraved anywhere. Application 770942115, 7,275 bytes, ninety-five rules, adds a sliding commission scale tied to a staking contract. It is written and it runs on the test network, but it has not been through the public record this document is made of. So this paper describes the contract that has been measured, names the successor here rather than burying it, and will be re-measured against whichever program is finally engraved. Mechanisms are shared between the two; the numbers are not.

2. How a piece enters the vault, and how it leaves

It enters by a single gesture and never otherwise. The seller sends the piece to the vault in the same atomic group as their listing call. The contract reads what actually moved in that group rather than trusting an argument: you cannot misdeclare what you deposited.

Five refusals guard that entrance, all of them obtained:

What was attemptedWhat the contract answered
Deposit somebody else's piecepiece deposee par un tiers
Send the piece somewhere other than the vaultpiece mal adressee
Call without attaching any piece at allaucune piece deposee
Deposit a piece a third party can freeze or claw backun tiers garde un pouvoir sur cette piece
Deposit one of the market's own currencies as if it were a piececet actif est une monnaie du marche

The fourth deserves a word, because it protects the buyer and not the market. An asset somebody retains clawback rights over can be taken back from its buyer after the sale. The contract refuses to let it in, at all four deposit doors: listing, auction, offer, and offer acceptance. An independent review found that the offer path had been left out; it was closed, and the refusal was obtained on that exact path.

It leaves by four doors and no others: a sale, a withdrawal by the seller, the reclaiming of an expired listing by anyone at all, and the claiming of a piece the market owes. In the first three, the piece leaves along with the closing of the vault's position, once the vault holds no other copy.

3. Buying: what it costs, what succeeds, what fails

The buyer pays the listed price plus the one per cent commission, and nothing else. Measured to the unit on the live instance, on a listing at 0.5 ALGO:

What was paidOutcome
The price alone, 500,000REFUSED, paiement insuffisant
Price plus commission, 505,000Went through, 508 units of budget out of 700
More than thatWent through, and the surplus was returned

The commission is added to the price, it is not deducted from it. The seller receives their price in full. That is measured rather than inferred: on a sale of 500 units in a currency, the seller received 500, not 495. The surplus line matters too, and it comes from a defect: the contract used to require enough and keep the rest, so a buyer who rounded up, or whose interface miscalculated the commission, silently left the difference behind. That is not theft, it is worse: a quiet loss on a market whose whole promise is that you get back what you put in.

The fixed opening fee, currently 25,000 microALGO, is paid by the SELLER when they open their listing, not by the buyer. The operator can adjust it, under a hard ceiling of 250,000 that is written into the code; the attempt to exceed it is refused by frais au-dessus du plafond.

AND THE SUCCESSOR CHANGES THIS NUMBER, WHICH IS WHY IT IS SPELLED OUT HERE RATHER THAN IN A FOOTNOTE. The one per cent above is what the measured contract charges everyone. In the successor, the rate depends on what you have staked: 2.5 per cent for anyone who has staked nothing, falling by tiers from there, and 2.5 per cent is also the engraved ceiling that no operator can ever exceed. So the commission on the successor can only go down from its default, never up, and the ceiling is readable on chain by anyone rather than promised. For a buyer who stakes nothing, the commission therefore rises from one per cent to 2.5. That is a real increase and it is said plainly, because a reader who discovers it after the fact would be right to distrust everything else here.

Two bounds keep that scale honest, and they exist because a ceiling on the rate alone would not have been enough. A staked deposit only counts once it has matured, seven days by default, otherwise you would stake just before buying and withdraw just after, and the tiers would mean nothing. And the maturation period itself is capped at ninety days, because an operator who set it to five years would make the whole scale unreachable and so remove the discount without touching a single rate. Closing one door and leaving the window open is not a guard.

What buying refuses, all obtained:

What was attemptedWhat the contract answered
Buy your own pieceon n achete pas sa propre piece
Pay less than price plus commissionpaiement insuffisant
Buy a listing whose deadline has passedannonce expiree

The first one is not about money. A seller buying their own listing loses only the commission, and in exchange writes a price of their own invention into the piece's history. This market's archive of real prices is its argument; a fabricated one stays in an immutable contract forever, and a single fabricated price makes a whole series doubtful.

One design fact that matters to you as a user: the asset opt-in can travel in the same group as the purchase. That is not a given, other marketplaces prevent it by locking their group size. Here, someone who discovers a piece buys it in one wallet gesture.

And if a purchase fails, it fails entirely. Payment and delivery travel in the same atomic group: nobody pays without receiving. The most common reason a gesture fails on Algorand is not the contract at all, it is that an account has not opted in to the asset it is about to receive, which costs it 0.1 ALGO of held balance.

4. Auctions, the reserve, and who the guard protects

An auction has a starting price and, if the seller wants one, a reserve. A reserve of zero means the starting price serves as the reserve: agreeing to open at a hundred is agreeing to sell at a hundred.

Duration: one hour minimum, thirty days maximum. Both bounds refuse, by duree trop courte and duree trop longue. A bid placed in the last ten minutes pushes the end back by the same amount, with total extensions capped at twenty-four hours; without that cap, last-minute bids would postpone the ending indefinitely.

An outbid bidder is repaid immediately, rather than having their money sit until the close. It is simpler and more honest, and it avoids having to repay a crowd of losers in a single closing transaction, which the size of an atomic group would forbid anyway.

THE GUARD THAT MATTERS MOST HERE PROTECTS THE BIDDER, NOT THE MARKET. Once a bidder has met the price the seller asked for, the seller can no longer withdraw the piece: the attempt is refused by reserve atteinte, vente due. Without it, a seller could let the bidding climb and pull out at the last moment, which would make taking part worthless. Tested on an auction actually run, with a bid actually placed.

And the worst case the contract knows about, which is a winner who cannot receive. A winner is not a signer of the closing call, which anyone may make. If they have not opted in to the pieces, the delivery is rejected by the protocol and the close fails. Without a fallback it would fail forever: the seller's pieces and the winner's money would both sit in the vault with no method able to get them out. So the auction settles as though the reserve had not been met: the money goes back to the bidder, the pieces back to the seller, and each recovers their own. The seller loses the sale, which is a pity, and keeps the piece, which they otherwise would not.

Why the requirement is not imposed at bidding time instead, which is the obvious fix. It would prevent nothing: nothing obliges a bidder to stay opted in until the close, so they could opt in to bid and opt out before the end. The fallback is not a second best for want of something better, it is the only protection that holds. That argument came from the adversarial review, and it is better than the one the contract was built on.

The operator cannot help themselves to bids. They can set the share withheld from a defaulting bidder, but never above twenty per cent, and the attempt to exceed that engraved ceiling is refused by part retenue trop elevee, tested to the unit.

5. Offers: money before the piece

An offer is the one path where the money arrives before the goods, which is why it carries the most guards. The offerer puts money in the vault against a piece that is not theirs yet, and nothing guarantees the owner will want to sell.

The seller deposits nothing. The piece only moves at the instant its holder accepts, inside the same atomic group. Someone who will not put their collection into an escrow therefore still has a complete way to sell.

The contract requires the offerer to have opted in to the piece before offering on it, rather than letting them pay for nothing: acceptez la piece avant d offrir dessus. And it refuses an offerer who has opted out since, because otherwise the seller would meet a protocol error naming neither the offer nor the reason, over something they did not cause and cannot fix.

An offer can carry a deadline. Past it, the offer can no longer be accepted, offre expiree, and anyone can return it to its author. Before it, that return is refused by pas encore expiree. The same offer refused both, before and after: it was time that changed the outcome, not the way the transaction was built.

When the sale concludes, the piece goes directly from seller to buyer, without passing through the vault. That detail comes from a defect. An earlier version routed it through the vault, which had never opted in to a piece somebody merely made an offer on, so no offer could ever complete on a one-of-one, which is to say on nearly the whole catalogue. It was the feature ranked first in the project's own research, and it was unusable at a hundred per cent. The direct route also avoids tying up another 0.1 ALGO, and avoids the vault holding, even for an instant, property nobody asked it to keep.

An offer in a currency pays for its own storage. The offerer sends the necessary ALGO in the same group, failing which depot en ALGO manquant pour la boite. That closes a defect from the adversarial review: offers in a currency were being financed out of the vault, and repeated offers would have drained it.

6. Debts: what could not be paid to you comes back to you

The problem debts solve is ordinary and involves no bad actor. An Algorand account must have opted in to an asset to receive it, and it can opt out at any time, including between the moment something is owed to it and the moment it is paid. People opt out to recover the 0.1 ALGO each position ties up, usually without thinking about what is still owed to them.

The contract neither blocks nor keeps: it records a debt in that person's name, which they claim once they have opted back in.

Tested to the end, with balances compared before and after:

The operator cannot sweep up what is owed to you for TWO YEARS. The attempt on a recent debt is refused by cette creance n a pas encore expire. The delay is not a comfort setting: it is the whole thing that separates this method from the confiscation the reviews closed elsewhere. Shortening it would reopen that defect by another door. And an expired debt that has not yet been swept remains claimable by its owner, because expiry is a door the operator may open, not a deadline that erases you.

A DEBT OVER A PIECE NEVER EXPIRES, AND THE ASYMMETRY IS DELIBERATE. A reader will find a two-year limit on money, none on pieces, and take it for an oversight. It is a decision, and the reason is not technical: a sum of money is fungible and replaceable; a work is not. It has an author, a history, sometimes a value to its owner that has nothing to do with its price. Recovering three forgotten ALGO after two years and taking somebody's artwork do not read the same way, even though the code makes the same gesture.

And the cost of that decision is accepted with open eyes: a single unclaimed piece makes this market impossible to close, permanently. Its storage keeps the vault's minimum balance above that of a bare account, and closing requires a bare account. That is exactly what the two-year limit prevents on the money side, and it is left open here on purpose. Adding an expiry to make the market closable would be undoing a decision, not fixing an oversight.

One fact that says who these guards really protect. Algorand does not let the creator of an asset close their position in it. A minter can therefore never end up in this situation with their own pieces. The debt mechanism protects resellers, which is to say most of the people on a secondary market, and the ones with the least recourse if a contract decides to keep what is theirs.

7. Other currencies: how one enters the market, and how it leaves

The market does not only sell in ALGO. The operator can open other currencies, and a listing can be denominated in one of them.

Opening one takes three things, each with its own refusal, all obtained: that it be the operator doing it, seul l exploitant; that they have opted in to it themselves, acceptez cette monnaie avant de l ouvrir, failing which they could not collect the commissions it earns; and that it be given a floor price, un plancher est obligatoire.

EACH CURRENCY CARRIES ITS OWN FLOOR, EXPRESSED IN ITS OWN UNITS, and this is the thing to understand before reading any figure in this document. The four currencies open today carry a floor of 100 units, and since they have two decimals, that is 1.00 of their unit, not 100 microALGO. A bound written in microALGO applies to ALGO and to nothing else. That distinction was not obvious in advance: it showed up when a sale in a token was actually run on the test network, and a listing at five units was refused as being below a floor that meant nothing there.

A floor can only go down, refusal un plancher ne peut que baisser. The operator cannot raise the minimum price of a currency after sellers have settled into it.

A currency can be closed, and that is what was missing once. An adversarial review established that the market became impossible to close the moment a currency was accepted: the opt-in and its floor storage, 0.1093 ALGO, had no method that could undo them. There is now a closing method, and the four currencies open on the live instance all close in simulation, 96 units of budget each.

Two refusals guard it, both obtained: acceptez cette monnaie avant de la fermer, if the operator has opted out and could not receive what is due to them; and le coffre detient encore cette monnaie, for as long as the vault still holds units of it.

8. The exempt token, and a rule that was removed rather than repaired

The market can designate ONE currency that pays no commission. The designation is the operator's alone, ALGO cannot be the exempt one, refusal l'ALGO ne peut pas etre exonere, and it can only be done once: le jeton exonere est deja fixe.

This is the most useful thing in the contract, and it is made of a rule that was deleted.

An earlier version exempted anyone who held a million units of a partner token, which looked like a good way to create durable demand for it. The independent review measured something else: the contract was not reading a holding, it was reading a balance at an instant. It was enough to borrow the tokens inside the same atomic group and give them straight back. A commission of ten for an account holding three thousand tokens; a commission of zero for the same purchase with a hundred thousand tokens borrowed and returned in the same transaction, rounds 66868169 and 66868179. One large holder could have exempted the entire market by lending.

NO VIRTUAL MACHINE INSTRUCTION TELLS YOU HOW LONG AN ACCOUNT HAS HELD AN ASSET. A contract therefore cannot measure a holding, and any rule that depends on one is defeatable inside a single group. That was not a guard to strengthen, it was a rule not to write, and it was removed rather than patched.

What replaced it is not defeatable the same way: the exemption is on the currency you pay in, not on what you hold. Paying in a currency means actually parting with it, and you cannot borrow an expense.

And atomicity, here, worked against the contract instead of for it. Everywhere else it guarantees a buyer will not pay without receiving; there it guaranteed the lender would get their tokens back, which is exactly what made the instant loan free and safe. The same mechanism protects or betrays you depending on what you ask it to guarantee.

9. Handing over the operator role, and the warning the contract cannot give

The role is handed over in TWO steps: the operator proposes, the recipient accepts. A role sent in one gesture to a mistyped address would never come back. Proposing the null address cancels a proposal in flight, on purpose by the same gesture.

Three refusals guard it, all obtained: proposing is the operator's alone; accepting when nothing has been proposed gives aucun transfert de role en cours; and accepting a role proposed to somebody else gives ce role n a pas ete propose a ce compte. The first of those is not decorative: without it, anyone at all could take the role whenever no proposal was in flight, since the null address is the value at rest.

BUT THERE IS A WARNING THE CONTRACT CANNOT GIVE, AND SAYING SO IS BETTER THAN LETTING YOU ASSUME A GUARD EXISTS. A new operator must have opted in to every open currency, or every sale denominated in the ones they have not will fail, because the contract cannot pay them their commission.

The contract keeps no index of open currencies: it counts them, it cannot enumerate them. No guard is therefore possible at handover time, and it falls to the interface to check and to announce it. Saying where a guard is impossible is worth more than letting you believe there is one.

10. Suspension, and what it is really for

The operator can close off NEW deposits without touching anything already deposited. It is the only way to stop the bleeding if a defect were found after opening, and it is built so that nobody becomes a prisoner of their own property: withdrawals, claims, auction closings and reclaiming of expired listings all stay open, permanently and by design.

Tested by actually suspending a twin instance: listing was refused there by nouveaux depots suspendus, then the suspension was lifted and the state checked again. Never testing it would have meant discovering on the day of an incident that it does not work. The method moves no funds at all.

Bidding counts as a deposit, and that had been missed. A bid puts money in, so a suspended market was still taking deposits through its auctions until the guard was added there too. It is the kind of gap that only shows up when you ask which doors let value in, rather than which methods look dangerous.

11. Closing and immutability, in their exact form

This is the section a suspicious reader will check first, and it is the one most often said badly. Both halves are true, and they do not say the same thing.

THE CODE CANNOT BE CHANGED, INCLUDING BY ITS CREATOR. A real attempt to replace the program was presented to the live instance, signed by the account with the best chance of getting through, its creator, with a valid replacement program. The approval program rejects it. An immutability nobody has ever tried to violate is a claim, not a guard.

THE MARKET CAN BE CLOSED, BUT ONLY WHEN IT NO LONGER HOLDS ANYTHING. Writing "this contract refuses to be deleted" would be false, and verifiable as false in a few minutes: the closing method is in the public interface and nobody hid it. Closing is the operator's alone, and it is guarded. As long as the vault holds property, it is refused by le coffre garde encore quelque chose, and the condition is not declarative: the contract reads the minimum balance the protocol imposes on the vault. One open listing, one unreturned piece, one pending offer, each shows up in that figure and each blocks the close.

The whole sequence was run on a twin instance that really did disappear from the chain: closing refuses while anything remains; a piece held by a debt leaves when its owner claims it; a currency the operator opted out of only closes after opting back in; a currency the vault still held units of closes once everything else is gone; then the deletion goes through, the application becomes unfindable, and its balance returns to its operator.

And what was verified was the ABSENCE, not the success. A successful transaction receipt tells you a transaction went through. It never tells you the object is no longer there.

This is not a weakness dressed up as a feature. Total immutability would mean a dead contract could hold property forever, which is precisely the problem this project measured elsewhere, in the pieces still stuck in the escrow of a marketplace that shut down. What is true here is narrower and better: the market cannot be closed while it is holding anyone's property.

12. What the contract cannot do, even if its author wanted it to

That last one is worth a sentence of its own. Nothing on Algorand triggers itself; something must call. This marketplace makes those calls as a courtesy, and the point of leaving them open to anyone is that if this marketplace disappears, nobody is left a prisoner.

13. The numbers, for anyone who wants to know what a gesture will cost

What a listing asks of the seller, one piece in ALGO, in microALGO:

ItemAmountReturned?
Storage for the listing36,500 plus 3,200 per pieceyes
Opt-in reserve for the asset, held by the vault100,000 per new assetyes
Provision against a piece debt22,100 per pieceyes
Provisioned exit fees4,000whatever is not spent
The market's fixed fee25,000no
Total paid190,800of which 155,800 returned

Measured end to end on an instance running the live contract: a seller opens a listing and withdraws it immediately. They pay 190,800 and get back 155,800. Opening then withdrawing a listing therefore costs 35,000 microALGO, being the market's fixed fee and 10,000 of network fees, plus the fees of the transactions themselves. Everything else comes back.

Why the seller provisions the exit fees at all. The transactions the vault emits to return a piece or pay a seller cost network fees. While those were charged at zero, they fell on whoever happened to call the method, so the vault could emit nothing without a third party agreeing to pay for it. The rule underneath is that neither the market nor its operator fronts the cost of a gesture somebody else asked for, and what is not consumed comes back with the rest.

The bounds and the ceilings:

Floor price in ALGO10,000 microALGO, that is 0.01 ALGO
Floor price in another currencywhatever the operator set for it, in ITS units
Ceiling price, and ceiling bid1,000,000,000,000
Auction floor130,000, adjustable
Commission1 per cent, paid on top by the buyer
Pieces per listing in ALGO3
Pieces per listing in a currency2
Pieces per auction in ALGO2
Pieces per auction in a currency1
Auction duration1 hour to 30 days
Extension per late bid10 minutes, 24 hours in total
Delay before a debt expires2 years
Share withheld from a defaulting bidder10 per cent, engraved ceiling of 20

The compute budget, which explains every bound above. Algorand grants 700 units to an application transaction. Measured on the live instance:

GestureBudget used
List 1 piece460
List 2 pieces571
List 3 pieces682
List 4 piecesREFUSED, lot trop grand
Buy508
Open an auction523
Close an auction326

At three pieces there are eighteen units of margin left. The limit of three is not a cautious setting, it is the wall. Each further piece costs about 111 units, because the contract walks the transaction group.

The ceiling bid counts UNITS of a currency, not value. A currency with a very large supply reaches it without any real fortune behind it, and a currency with many decimals reaches large unit counts quickly. Worth knowing before opening one.

14. Three things that explain why we make the code refuse instead of reading it

THE 997 TRAPPED COPIES. A mechanism letting one listing hold many copies of the same piece was tested on a listing of a thousand copies, three of which had sold. The seller withdrew it: the contract returned one copy and left 997 in the vault. No error, no message. The deposit came back, the listing's record disappeared, and 997 copies stayed there permanently.

The cause was one line: the function that returns pieces transferred a single unit, because it had been written when a position could only hold one unique piece. What the contract held on to was right; what it gave back had not kept up.

Reading the code had not found it. It was found because the bench puts the question to measurement and compares balances before and after. The code read perfectly well. And on a contract whose code cannot be changed after deployment, that defect would have been permanent: every seller of a multi-copy listing would have lost everything they did not sell, forever.

THE DEBT THAT AVOIDS A PRISON. When a seller has opted out of their own piece and then withdraws their listing, the contract could have refused: the piece can no longer be handed back. It would then have immobilised the piece and the listing, with no way out. It records a debt and lets the listing close. Refusing cleanly can be worse than deferring.

THE GUARD THAT PROTECTS PEOPLE NOBODY HAD IN MIND. While trying to test the piece debt, it turned out that Algorand refuses to let a creator close their position in their own asset. A minter can therefore never be in this situation. That guard does not protect the artists who mint: it protects resellers, the people who buy somebody else's work and put it back up for sale.

15. What is not done yet

Publishing these makes the rest of this document stronger, not weaker.

  1. All of this is on the test network. The program engraved on MainNet will have to be measured in its turn and its fingerprint compared. Until that is done and published, this document describes the test network and says so.
  2. The contract described here is not the one that will go into production. A successor is written and not engraved, and it adds the staking-linked commission scale described in section 3: 2.5 per cent for anyone who has staked nothing, falling by up to ten tiers, with 2.5 per cent as the engraved ceiling. The one per cent measured here is not the rate the successor will charge, and everything in this document that depends on a rate will be re-measured against whichever program is finally engraved. Its ninety-five rules have not yet been through the public record this document is made of.
  3. Multi-copy listings are engraved nowhere. The mechanism is written, it compiles, and it has been tested on disposable instances. Until it is engraved, a listing holds three pieces at most.
  4. Two rules out of eighty-two were never made to refuse, because they are out of reach. commission superieure au montant would need a price of zero, which both entry doors refuse; cette piece n est plus au coffre would need a clawback-able piece to have entered the vault, which both deposit doors refuse. They stay in as defence in depth, and their unreachability rests on refusals obtained upstream, not on an argument about the code.
  5. A listing holds at most three pieces, with eighteen units of budget left at three. That is a limit rather than a defect, but it leaves no room: any guard added to that path would bring it down to two.
  6. One correction is read rather than measured. The fix preventing one seller from recovering a reserve another seller paid was verified by reading the code. Proving it would take two sellers of the same multi-edition asset and a withdrawal by the first before the second. That has not been done, and it is recorded here as read rather than observed.
  7. One limit is proven on a copy and can never be proven here. Sending the vault exactly the floor amount of a currency used to stop that currency closing, and the market with it, for about a dollar. The remedy is in place and tested, but the bench that tests it destroys by construction the instance it measures: it has run on six disposable instances and can never run on the live one. A debt that cannot be repaid is not a debt, it is a limit, and it belongs here rather than on a list of things to do.
  8. A per-buyer purchase limit, when it exists, will count what the buyer HOLDS. That penalises someone who received copies as a gift or bought them elsewhere, and it is a deliberate choice. It also means that, on a chain where an account is free, any per-account limit is a speed bump and not a barrier. Saying so is not an argument against it: it is what lets you pay the right price for it instead of buying an expensive guarantee you will not get.
  9. The site and the contract have to move together. The multi-copy mechanism changes two method selectors, and a selector that matches no method is rejected by the virtual machine rather than by the contract, so listing and buying would both stop at once with a message that has nothing to do with what the user was trying to do. When the contract cannot speak, the protocol speaks in its place, and it speaks badly.

16. How to check any of this yourself

The benches are in the repository, one chapter per family of rules. A full replay runs with one command and submits nothing: it simulates against the live instance, costs no ALGO and changes nothing. A rule is counted only if it actually refused a transaction built on purpose to break it, and if the refusal message, read back from the contract's own published interface, matches the expected one exactly.

Three methodological precautions are what give those figures their value, and a careful reader will want to know them.

Every chapter also builds a gesture that MUST succeed. Without it, you cannot tell a contract that guards from a bench that does not know how to compose a valid call. A bench that only ever collects refusals proves nothing.

A case that could not be built is declared as such, with its reason, and counted neither as proven nor as absent. A silent failure makes an untested path indistinguishable from a covered one.

A refusal from the protocol is not a refusal from the contract. Insufficient balance, an asset not opted in, a missing reference: those arrive before the contract runs, and counting them against it would invent defects that do not exist. The bench names them explicitly rather than guessing.

Seven security reviews were carried out, on six versions of the contract, and the versions they examined are archived so each review can be replayed against the exact object it looked at. The last two worked blind, without knowing of each other, and they have not a single finding in common. Zero out of five. That does not mean the reviews were poor. It means the coverage of any single review is far narrower than it looks, and this project measured that instead of assuming it. It is the reason there were seven and not one.

17. Who wrote this

The contract, the guards and the bench that made them refuse were written and run by Claude, an AI agent, under the direction of this project's author. That is stated plainly rather than shown as a badge, because a badge would suggest a company examined and endorsed this marketplace, and none did.

Which is exactly why this document is built the way it is. There is no authority here for you to defer to, so nothing in it asks you to. The instance is named, its fingerprint is published, the bench can be replayed by anyone and submits nothing, and every mechanism is described by what it actually refused rather than by what it is meant to prevent. Check the parts you care about; none of it depends on trusting who wrote it.

Last verified against the program in service on 3 September 2026. This document carries its own verification date because a description of a live contract without one is a claim about the past presented as a fact about the present.