1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package policytest
import (
"time"
"github.com/johnandersen777/socialweb-computer-kcp/internal/atproto/market"
"github.com/johnandersen777/socialweb-computer-kcp/internal/policyengine/trust"
)
const (
Bidder = "did:plc:policytestbidder"
BidderOperator = "did:plc:policytestbidop"
Requester = "did:plc:policytestrequester"
ReqOperator = "did:plc:policytestreqop"
Stranger = "did:plc:policyteststranger"
Forger = "did:plc:policytestforger"
OtherBidder = "did:plc:policytestbidder2"
createdAt = "2026-10-30T00:00:00Z"
)
type Ref struct {
URI string
CID string
}
func (w *World) put(repo, collection, rkey string, value map[string]any) Ref {
uri := URI(repo, collection, rkey)
return Ref{URI: uri, CID: w.Put(uri, value)}
}
func (w *World) Vouch(voucher, subject string) Ref {
return w.put(voucher, trust.VouchNSID, subject, map[string]any{"$type": trust.VouchNSID, "subject": subject, "createdAt": createdAt})
}
func (w *World) Denounce(voucher, subject string) Ref {
return w.put(voucher, trust.VouchNSID, subject, map[string]any{"$type": trust.VouchNSID, "subject": subject, "kind": "denounce",
"createdAt": createdAt})
}
func (w *World) Unvouch(voucher, subject string) {
w.Delete(URI(voucher, trust.VouchNSID, subject))
}
func claimValue(operator, subject, service string) map[string]any {
return map[string]any{"$type": trust.BadgeBlueKeysNSID, "service": service, "keyId": subject, "challenge": operator, "createdAt": createdAt}
}
func (w *World) Mirror(subject, operator, service string) Ref {
return w.put(subject, trust.BadgeBlueKeysNSID, trust.MirrorRKey, claimValue(operator, subject, service))
}
func (w *World) Claim(operator, subject, service string) Ref {
return w.put(operator, trust.BadgeBlueKeysNSID, trust.ClaimRKey(service, subject), claimValue(operator, subject, service))
}
func (w *World) Associate(subject, operator, service string) {
w.Mirror(subject, operator, service)
w.Claim(operator, subject, service)
}
type Contract struct {
Accept Ref
Receipt Ref
Bidder string
}
func (w *World) HeldContract(operator, bidder string) Contract {
bid := w.put(bidder, market.BidNSID, "policytest-bid", map[string]any{"$type": market.BidNSID, "createdAt": createdAt})
accept := w.put(operator, market.AcceptNSID, "policytest-accept", map[string]any{"$type": market.AcceptNSID,
"bid": map[string]any{"uri": bid.URI, "cid": bid.CID}, "createdAt": createdAt})
receipt := w.put(bidder, market.ReceiptNSID, market.ReceiptRKey(accept.URI, accept.CID), map[string]any{"$type": market.ReceiptNSID,
"accept": map[string]any{"uri": accept.URI, "cid": accept.CID}, "createdAt": createdAt})
return Contract{Accept: accept, Receipt: receipt, Bidder: bidder}
}
func (w *World) ContractAssociation(subject, operator, service string, contract Contract, expiresAt time.Time) Ref {
w.Mirror(subject, operator, service)
return w.put(operator, trust.AssociationNSID, trust.ClaimRKey(service, subject), map[string]any{
"$type": trust.AssociationNSID,
"subject": subject,
"service": service,
"contract": map[string]any{"uri": contract.Accept.URI, "cid": contract.Accept.CID},
"expiresAt": expiresAt.UTC().Format(time.RFC3339Nano),
"createdAt": createdAt,
})
}
func (w *World) Release(operator string, contract Contract) {
w.put(operator, market.ComputeEventsVMDeleteNSID, market.ReleasePayloadRKey(contract.Receipt.URI),
map[string]any{"$type": market.ComputeEventsVMDeleteNSID, "createdAt": createdAt})
}
func (w *World) Terminate(contract Contract) {
rkey, _ := market.EventRKeys(market.TerminationKey(contract.Receipt.URI))
w.put(contract.Bidder, market.ComputeEventsVMTerminatedNSID, rkey,
map[string]any{"$type": market.ComputeEventsVMTerminatedNSID, "createdAt": createdAt})
}
func (w *World) PolicyRecord(repo, rkey, name, workflowText string) Ref {
return w.put(repo, PolicyGhaLiteNSID, rkey, map[string]any{"$type": PolicyGhaLiteNSID, "name": name, "workflow": workflowText,
"createdAt": createdAt})
}
func (w *World) RecordOfType(repo, collection, rkey string, value map[string]any) Ref {
return w.put(repo, collection, rkey, value)
}
func (w *World) RFP(repo, rkey string, policies ...Ref) Ref {
attached := make([]any, 0, len(policies))
for _, policy := range policies {
attached = append(attached, map[string]any{"uri": policy.URI, "cid": policy.CID})
}
return w.put(repo, market.RFPNSID, rkey, map[string]any{"$type": market.RFPNSID, "policies": attached, "createdAt": createdAt})
}
func (w *World) Bid(bidder, rkey string, free bool, cost float64) Ref {
payloadNSID := market.BidsX402NSID
payloadValue := map[string]any{"$type": payloadNSID, "cost": cost, "createdAt": createdAt}
if free {
payloadNSID = market.BidsFreeNSID
payloadValue = map[string]any{"$type": payloadNSID, "reason": "free", "createdAt": createdAt}
}
payload := w.put(bidder, payloadNSID, rkey+"-payload", payloadValue)
return w.put(bidder, market.BidNSID, rkey, map[string]any{"$type": market.BidNSID,
"payload": map[string]any{"uri": payload.URI, "cid": payload.CID}, "createdAt": createdAt})
}