The store's write side is its holder's now, so the sweep asks the seats' hold, release and remove instead of writing to the store's door. Both reference forms meet as one artifact; a refusal stops the sweep and writes the finding sweep-refused, which a clean sweep clears. Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
106 lines
2.7 KiB
JSON
106 lines
2.7 KiB
JSON
{
|
|
"module": "artifact-store-tools",
|
|
"version": "1",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-artifact-sweep",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"artifacts",
|
|
"held",
|
|
"collect",
|
|
"mirrors",
|
|
"images"
|
|
]
|
|
}
|
|
],
|
|
"requires": [
|
|
"artifact-store"
|
|
],
|
|
"invokes": [
|
|
"seat:mesh-hand-acts.hand-act",
|
|
"seat:mesh-catalog.modules",
|
|
"seat:mesh-catalog.module",
|
|
"seat:oci-artifact-registry.hold",
|
|
"seat:oci-artifact-registry.release",
|
|
"seat:oci-artifact-registry.remove",
|
|
"seat:container-image-registry.hold",
|
|
"seat:container-image-registry.release",
|
|
"seat:container-image-registry.remove"
|
|
],
|
|
"reads": [
|
|
"mesh-delivery-assigner.wants",
|
|
"mesh-delivery-builder.builds",
|
|
"mesh-delivery-builder.build-log",
|
|
"mesh-delivery-indexer.manifests",
|
|
"node-engine.have"
|
|
],
|
|
"state": [
|
|
"findings"
|
|
],
|
|
"tools": [
|
|
"artifact_store_repositories",
|
|
"artifact_store_usage",
|
|
"artifact_store_references",
|
|
"artifact_store_collect"
|
|
],
|
|
"config": {
|
|
"older-store-names": {
|
|
"type": "string",
|
|
"description": "The names the artifact store had before, as host names or host:port separated by spaces, or none when it had no other. artifact_store_references reads every definition under these as well as under the store's current name, so an image a definition pins under one is said to be named by a definition (novox/hq issue 323).",
|
|
"pattern": "none|[A-Za-z0-9.:-]+( [A-Za-z0-9.:-]+)*",
|
|
"default": "none"
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "store-names",
|
|
"type": "file",
|
|
"path": "${dir:state}/store-names",
|
|
"mode": "0600",
|
|
"trusted": false,
|
|
"template": "files/store-names"
|
|
},
|
|
{
|
|
"id": "store-address",
|
|
"type": "file",
|
|
"path": "${dir:state}/store-address",
|
|
"mode": "0600",
|
|
"trusted": false,
|
|
"template": "files/store-address"
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools-go",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/artifact-store-tools",
|
|
"binary": "artifact-store-tools",
|
|
"loads": [
|
|
"artifact-store-tools"
|
|
],
|
|
"env": {
|
|
"MESH_ARTIFACT_STORE_CONTAINER": "mesh-registry",
|
|
"MESH_ARTIFACT_STORE_NAMES_FILE": "${dir:state}/store-names",
|
|
"MESH_ARTIFACT_STORE_ADDRESS_FILE": "${dir:state}/store-address"
|
|
}
|
|
},
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
}
|
|
}
|