Nodes read anchor, home-server, laptop, workstation (in the order the node names sorted) and a person reads alice. Builds: design 47 G A-296 (review round 2 D3) Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
523 lines
14 KiB
JSON
523 lines
14 KiB
JSON
[
|
|
{
|
|
"name": "pull asks",
|
|
"of": "verb:pull.input",
|
|
"given": {
|
|
"repository": "novox/mesh-sdk",
|
|
"merge-commit": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
}
|
|
},
|
|
{
|
|
"name": "pull answers",
|
|
"of": "verb:pull.answer",
|
|
"given": {
|
|
"pull": {
|
|
"repository": "novox/mesh-sdk",
|
|
"number": 178,
|
|
"title": "One wiring of the seat list",
|
|
"author": "alice",
|
|
"branch": "feat/47-G",
|
|
"head": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"base": "main",
|
|
"state": "merged",
|
|
"merge-commit": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"merged-at": "2026-11-09T19:40:00Z",
|
|
"url": "https://forge.test/novox/mesh-sdk/pulls/178"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "pull answers an open one with what the forge would merge now",
|
|
"of": "verb:pull.answer",
|
|
"given": {
|
|
"pull": {
|
|
"repository": "novox/mesh-sdk",
|
|
"number": 179,
|
|
"title": "One wiring of the seat list",
|
|
"author": "alice",
|
|
"branch": "feat/47-G",
|
|
"head": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"base": "main",
|
|
"state": "open",
|
|
"url": "https://forge.test/novox/mesh-sdk/pulls/179"
|
|
},
|
|
"merging": {
|
|
"mergeable": false,
|
|
"protected": true,
|
|
"required": [
|
|
"mesh/check"
|
|
],
|
|
"writes": true
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "pull answers an error, never none",
|
|
"of": "verb:pull.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge holds no pull request novox/mesh-sdk#999",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "open-pulls asks",
|
|
"of": "verb:open-pulls.input",
|
|
"given": {}
|
|
},
|
|
{
|
|
"name": "open-pulls answers",
|
|
"of": "verb:open-pulls.answer",
|
|
"given": {
|
|
"pulls": [
|
|
{
|
|
"pull": {
|
|
"repository": "novox/mesh-sdk",
|
|
"number": 178,
|
|
"title": "One wiring of the seat list",
|
|
"author": "alice",
|
|
"branch": "feat/47-G",
|
|
"head": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"base": "main",
|
|
"state": "open",
|
|
"url": "https://forge.test/novox/mesh-sdk/pulls/178"
|
|
},
|
|
"required": [
|
|
"mesh/check"
|
|
],
|
|
"checks": {
|
|
"mesh/check": {
|
|
"context": "mesh/check",
|
|
"state": "success",
|
|
"description": "passed",
|
|
"target": "https://forge.test/x",
|
|
"at": "2026-11-09T19:00:00Z",
|
|
"by": "mesh-delivery-checker"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "open-pulls answers none open as an empty list",
|
|
"of": "verb:open-pulls.answer",
|
|
"given": {
|
|
"pulls": []
|
|
}
|
|
},
|
|
{
|
|
"name": "open-pulls answers an error, never none",
|
|
"of": "verb:open-pulls.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge answered 502",
|
|
"error-kind": "failed",
|
|
"pulls": []
|
|
}
|
|
},
|
|
{
|
|
"name": "tags asks",
|
|
"of": "verb:tags.input",
|
|
"given": {
|
|
"repository": "novox/mesh-sdk",
|
|
"prefix": "go/v",
|
|
"page": 1
|
|
}
|
|
},
|
|
{
|
|
"name": "tags answers",
|
|
"of": "verb:tags.answer",
|
|
"given": {
|
|
"repository": "novox/mesh-sdk",
|
|
"tags": [
|
|
"go/v0.1.15",
|
|
"go/v0.1.14"
|
|
],
|
|
"page": 1,
|
|
"bound": 50,
|
|
"more": true
|
|
}
|
|
},
|
|
{
|
|
"name": "tags answers an error, never none",
|
|
"of": "verb:tags.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge answered 404 for novox/nothing",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "trees asks",
|
|
"of": "verb:trees.input",
|
|
"given": {
|
|
"repository": "novox/mesh-delivery",
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"files": [
|
|
"contracts"
|
|
],
|
|
"paths": {
|
|
"": [
|
|
"go.work"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "trees answers",
|
|
"of": "verb:trees.answer",
|
|
"given": {
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"root": "dddddddddddddddddddddddddddddddddddddddd",
|
|
"trees": {
|
|
"": "dddddddddddddddddddddddddddddddddddddddd",
|
|
"contracts": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
},
|
|
"files": {
|
|
"contracts": {
|
|
"module.json": "ffffffffffffffffffffffffffffffffffffffff"
|
|
}
|
|
},
|
|
"paths": {
|
|
"": {
|
|
"go.work": "1111111111111111111111111111111111111111"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "trees answers an error, never none",
|
|
"of": "verb:trees.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge's tree listing of novox/mesh-delivery at aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa was cut; no trees are answered from a part",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "file asks",
|
|
"of": "verb:file.input",
|
|
"given": {
|
|
"repository": "novox/mesh-contracts",
|
|
"path": "seats/index.json",
|
|
"ref": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
}
|
|
},
|
|
{
|
|
"name": "file answers",
|
|
"of": "verb:file.answer",
|
|
"given": {
|
|
"path": "seats/index.json",
|
|
"ref": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"blob": "2222222222222222222222222222222222222222",
|
|
"size": 31,
|
|
"content": "{\"format\":1,\"seats\":[\"mesh-broker\"]}"
|
|
}
|
|
},
|
|
{
|
|
"name": "file answers",
|
|
"of": "verb:file.answer",
|
|
"given": {
|
|
"path": "seats/gone.json",
|
|
"ref": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"absent": true
|
|
},
|
|
"why": "the forge said no such file: absent, never an empty content"
|
|
},
|
|
{
|
|
"name": "file answers an error, never none",
|
|
"of": "verb:file.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "seats/big.json is over 512 KiB",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "contains asks",
|
|
"of": "verb:contains.input",
|
|
"given": {
|
|
"repository": "novox/mesh-sdk",
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"in": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
}
|
|
},
|
|
{
|
|
"name": "contains answers",
|
|
"of": "verb:contains.answer",
|
|
"given": {
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"in": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"contains": true
|
|
}
|
|
},
|
|
{
|
|
"name": "contains answers an error, never none",
|
|
"of": "verb:contains.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge cannot compare bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb with aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "contains answers a commit the forge does not have as not-found",
|
|
"of": "verb:contains.answer",
|
|
"why": "a caller tells a commit the forge no longer has from a failed read by its kind, never by the forge's status in error's words",
|
|
"given": {
|
|
"error": "the forge has no commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"error-kind": "not-found"
|
|
}
|
|
},
|
|
{
|
|
"name": "statuses asks",
|
|
"of": "verb:statuses.input",
|
|
"given": {
|
|
"repository": "novox/mesh-sdk",
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
}
|
|
},
|
|
{
|
|
"name": "statuses answers",
|
|
"of": "verb:statuses.answer",
|
|
"given": {
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"combined": "success",
|
|
"statuses": [
|
|
{
|
|
"context": "mesh/check",
|
|
"state": "success",
|
|
"description": "passed",
|
|
"target": "https://forge.test/x",
|
|
"at": "2026-11-09T19:00:00Z",
|
|
"by": "mesh-delivery-checker"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "statuses answers an error, never none",
|
|
"of": "verb:statuses.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge answered 500",
|
|
"error-kind": "failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "status asks",
|
|
"of": "verb:status.input",
|
|
"given": {
|
|
"id": "owed-1",
|
|
"repository": "novox/mesh-sdk",
|
|
"commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"context": "mesh/check",
|
|
"state": "pending",
|
|
"description": "checking"
|
|
}
|
|
},
|
|
{
|
|
"name": "status answers",
|
|
"of": "verb:status.answer",
|
|
"given": {
|
|
"id": "owed-1",
|
|
"performed": true
|
|
}
|
|
},
|
|
{
|
|
"name": "status answers an error, never none",
|
|
"of": "verb:status.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge account cannot write novox/mesh-sdk",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "comment asks",
|
|
"of": "verb:comment.input",
|
|
"given": {
|
|
"id": "owed-2",
|
|
"repository": "novox/mesh-sdk",
|
|
"number": 178,
|
|
"text": "the delivery reached every node"
|
|
}
|
|
},
|
|
{
|
|
"name": "comment answers",
|
|
"of": "verb:comment.answer",
|
|
"given": {
|
|
"id": "owed-2",
|
|
"held": true
|
|
},
|
|
"why": "an id the pull request already holds is skipped"
|
|
},
|
|
{
|
|
"name": "comment answers an error, never none",
|
|
"of": "verb:comment.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge answered 403",
|
|
"error-kind": "refused"
|
|
}
|
|
},
|
|
{
|
|
"name": "view asks",
|
|
"of": "verb:view.input",
|
|
"given": {
|
|
"id": "owed-3",
|
|
"repository": "novox/mesh-sdk",
|
|
"number": 178,
|
|
"text": "## Delivery"
|
|
}
|
|
},
|
|
{
|
|
"name": "view answers",
|
|
"of": "verb:view.answer",
|
|
"given": {
|
|
"id": "owed-3",
|
|
"performed": true
|
|
}
|
|
},
|
|
{
|
|
"name": "view answers an error, never none",
|
|
"of": "verb:view.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge answered 502",
|
|
"error-kind": "failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "note asks",
|
|
"of": "verb:note.input",
|
|
"given": {
|
|
"id": "owed-4",
|
|
"repository": "novox/mesh-sdk",
|
|
"commit": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"line": "owed-4 delivered to anchor"
|
|
}
|
|
},
|
|
{
|
|
"name": "note answers",
|
|
"of": "verb:note.answer",
|
|
"given": {
|
|
"id": "owed-4",
|
|
"performed": true
|
|
}
|
|
},
|
|
{
|
|
"name": "note answers an error, never none",
|
|
"of": "verb:note.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the note ref could not be pushed",
|
|
"error-kind": "failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "merge-pull asks",
|
|
"of": "verb:merge-pull.input",
|
|
"given": {
|
|
"id": "owed-5",
|
|
"repository": "novox/mesh-sdk",
|
|
"number": 178,
|
|
"head": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
}
|
|
},
|
|
{
|
|
"name": "merge-pull answers",
|
|
"of": "verb:merge-pull.answer",
|
|
"given": {
|
|
"id": "owed-5",
|
|
"performed": true,
|
|
"merge-commit": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
}
|
|
},
|
|
{
|
|
"name": "merge-pull answers",
|
|
"of": "verb:merge-pull.answer",
|
|
"given": {
|
|
"id": "owed-5",
|
|
"refused": "the head moved: cccccccccccccccccccccccccccccccccccccccc, not the named aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"refused-kind": "head-moved"
|
|
},
|
|
"why": "a head that moved is refused by name, not performed"
|
|
},
|
|
{
|
|
"name": "merge-pull answers an error, never none",
|
|
"of": "verb:merge-pull.answer",
|
|
"why": "a failed read or act is an error the caller reads as a failure (design 47 *The seat git*)",
|
|
"given": {
|
|
"error": "the forge answered 502",
|
|
"error-kind": "failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "merge-pull refuses a failed required step, naming the run, the module and the step",
|
|
"of": "verb:merge-pull.answer",
|
|
"given": {
|
|
"id": "merge-7",
|
|
"refused": "unit of nats:program failed at fp-0123 in main.12.nats",
|
|
"refused-kind": "policy-failed",
|
|
"run": "main.12.nats",
|
|
"module": "nats",
|
|
"step": "unit"
|
|
}
|
|
},
|
|
{
|
|
"name": "branch asks a branch",
|
|
"of": "verb:branch.input",
|
|
"given": {
|
|
"repository": "novox/mesh-catalog",
|
|
"branch": "main"
|
|
}
|
|
},
|
|
{
|
|
"name": "branch answers its head and protection",
|
|
"of": "verb:branch.answer",
|
|
"given": {
|
|
"repository": "novox/mesh-catalog",
|
|
"branch": "main",
|
|
"head": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"protected": true
|
|
}
|
|
},
|
|
{
|
|
"name": "branch answers a branch the forge does not hold",
|
|
"of": "verb:branch.answer",
|
|
"given": {
|
|
"error": "no branch beta in novox/mesh-catalog",
|
|
"error-kind": "not-found"
|
|
},
|
|
"why": "an unknown branch is an error, never an absent head"
|
|
},
|
|
{
|
|
"name": "tag asks",
|
|
"of": "verb:tag.input",
|
|
"given": {
|
|
"repository": "novox/mesh-sdk",
|
|
"tag": "go/v0.1.15",
|
|
"commit": "0123456789abcdef0123456789abcdef01234567"
|
|
}
|
|
},
|
|
{
|
|
"name": "tag answers performed",
|
|
"of": "verb:tag.answer",
|
|
"given": {
|
|
"tag": "go/v0.1.15",
|
|
"performed": true
|
|
}
|
|
},
|
|
{
|
|
"name": "tag answers an error, never none",
|
|
"of": "verb:tag.answer",
|
|
"why": "a failed act is an error the caller reads as a failure (design 47 G section 312)",
|
|
"given": {
|
|
"error": "the forge answered 403",
|
|
"error-kind": "refused"
|
|
}
|
|
}
|
|
]
|