Merge master; OpenFleet keeps its name, PR 177's rental descriptor becomes OpenRental

PR 177 shipped a second OpenFleet under the same slug: a published listing of OpenAgent profiles and ipfile swarms with CoinPay rental offers. Anthony ruled that OpenFleet means the human-controlled fleet and the record of who spawned whom, so the rental contract is renamed OpenRental (slug openrental, catalogs family, group noun listing): docs/openrental.md, logicsrc-openrental.schema.json with type logicsrc.openrental and scope kind listing, fixtures/openrental, createOpenRental and OpenRental* types in the SDK, the openrental validator kind. Minor bumps because an export moved: @logicsrc/schemas 0.2.0, @logicsrc/validators 0.2.0, @logicsrc/sdk 0.2.0. The discovery contract test now covers openfleet, openrental and openwall, one per family, and accepts a landing-page link in llms.txt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01RZV4zJ2pDZLNN3kE5jFCmV
This commit is contained in:
Anthony Ettinger 2026-09-13 08:45:33 +00:00
commit 68f3151699
35 changed files with 2068 additions and 14 deletions

View file

@ -0,0 +1,86 @@
{
"type": "logicsrc.openrental",
"version": "0.1",
"id": "https://example.com/listings/research",
"name": "Research and distribution listing",
"owner_did": "operator.coinpay",
"description": "An analyst agent and an encrypted reference-data swarm, offered together or separately.",
"updated_at": "2026-09-13T12:00:00Z",
"availability": "available",
"tags": [
"research",
"distribution"
],
"capabilities": [
"analysis",
"paid-seeding"
],
"metadata": {
"region": "eu-west",
"support_url": "https://example.com/support"
},
"members": [
{
"kind": "openagent",
"id": "analyst.coinpay",
"url": "https://example.com/agents/analyst.json",
"name": "Analyst",
"role": "analysis",
"metadata": {
"languages": [
"en"
]
}
},
{
"kind": "openswarm",
"id": "ed25519:0d87e09c7fea3ad6ba6c2f3e027ea47f5b245452899910948470906704c5295d",
"url": "https://example.com/swarms/references/manifest.json",
"name": "Reference corpus",
"role": "reference-data"
}
],
"rentals": [
{
"id": "listing-hourly",
"scope": {
"kind": "listing"
},
"rate": {
"amount": "25.000000",
"currency": "USD",
"unit": "hour"
},
"minimum_units": 1,
"maximum_units": 24,
"terms_url": "https://example.com/rental-terms",
"payment": {
"provider": "coinpay",
"payee_did": "operator.coinpay",
"checkout_url": "https://example.com/rentals/research"
}
},
{
"id": "analyst-task",
"scope": {
"kind": "members",
"members": [
{
"kind": "openagent",
"id": "analyst.coinpay"
}
]
},
"rate": {
"amount": "5.500000",
"currency": "USD",
"unit": "task"
},
"payment": {
"provider": "coinpay",
"payee_did": "operator.coinpay",
"checkout_url": "https://example.com/rentals/analyst"
}
}
]
}

View file

@ -0,0 +1,16 @@
{
"openwall": "0.1-draft",
"id": "urn:uuid:5bb154dd-edb3-47b7-8fc6-4cb65a19a9f8",
"sender": "did:web:ops.example",
"createdAt": "2026-09-13T12:00:00Z",
"expiresAt": "2026-09-20T12:00:00Z",
"visibility": "public",
"topic": "releases",
"audience": {
"kind": "public"
},
"content": {
"mediaType": "text/plain",
"text": "Version 1.2 is available."
}
}

View file

@ -0,0 +1,27 @@
{
"openwall": "0.1-draft",
"id": "urn:uuid:94d908df-2876-48f1-bec8-c931f5c847d4",
"sender": "did:web:ops.example",
"createdAt": "2026-09-13T12:00:00Z",
"expiresAt": "2026-09-13T12:10:00Z",
"visibility": "private",
"topic": "maintenance",
"audience": {
"kind": "relationships",
"selectors": [
{
"source": "https://dev.example/contacts",
"actor": "did:web:ops.example",
"groups": [
"users"
],
"scope": "https://dev.example/workspaces/main"
}
],
"exclude": []
},
"content": {
"mediaType": "text/plain",
"text": "SERVER NOTICE\nMaintenance starts in 10 minutes.\nPlease save your work and pause running jobs."
}
}

View file

@ -0,0 +1,17 @@
{
"openwall": "0.1-draft",
"id": "urn:uuid:07b2b83e-27f6-4d59-bdfa-cdcd42548678",
"sender": "did:web:ops.example",
"createdAt": "2026-09-13T12:00:00Z",
"expiresAt": "2026-09-13T12:10:00Z",
"visibility": "private",
"topic": "maintenance",
"audience": {
"kind": "direct",
"recipient": "did:web:ada.example"
},
"content": {
"mediaType": "text/plain",
"text": "Ready when you are."
}
}

View file

@ -0,0 +1,13 @@
{
"openwall": "0.1-draft",
"id": "urn:uuid:963f9109-803f-4f0c-8506-10c70ec47ee6",
"messageId": "urn:uuid:94d908df-2876-48f1-bec8-c931f5c847d4",
"recipient": "did:web:ada.example",
"sequence": 3,
"state": "accepted",
"at": "2026-09-13T12:00:03Z",
"attempt": 1,
"route": "https://chat.example",
"providerMessageId": "provider-msg-123",
"deliveryId": "urn:uuid:db925d64-4e1a-4e5a-83c1-e37b68aa5eef"
}

View file

@ -0,0 +1,14 @@
{
"openwall": "0.1-draft",
"id": "urn:uuid:211bb615-90e1-4773-b7c0-49d59d7cd6bc",
"messageId": "urn:uuid:94d908df-2876-48f1-bec8-c931f5c847d4",
"recipient": "did:web:ada.example",
"sequence": 3,
"state": "retrying",
"at": "2026-09-13T12:00:03Z",
"attempt": 1,
"route": "https://chat.example",
"reason": "rate-limited",
"nextAttemptAt": "2026-09-13T12:01:00Z",
"deliveryId": "urn:uuid:db925d64-4e1a-4e5a-83c1-e37b68aa5eef"
}