Operator Task Offer Publication v1¶
Source schema: doc/schemas/operator-task-offer-publication.v1.schema.json
Owner projection of exact draft publication and withdrawal. Current dispatch admission is separate from past publication. A BDO handle is never proof of publication or withdrawal completion.
Governing Basis¶
Project Lineage¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema |
yes |
const: operator-task-offer-publication.v1 |
|
schema/v |
yes |
const: 1 |
|
draft |
yes |
ref: operator-task-offer-draft.v1.schema.json |
|
state |
yes |
enum: unpublished, pending, published, withdrawal-pending, withdrawn, failed |
|
admissible |
yes |
boolean | |
local-binding/current-digest |
no |
ref: operator-task-common.v1.schema.json#/$defs/digest |
Current host-observed binding revision shown for an explicit action. The retained draft still binds its original revision; inspection never silently rewrites it. |
operation/ref |
no |
ref: operator-task-common.v1.schema.json#/$defs/ref |
|
operation/status |
no |
enum: pending, running, completed, failed, cancelled, unknown |
|
fenced/reason |
no |
ref: operator-task-common.v1.schema.json#/$defs/refusalCode |
|
withdrawal/reason |
no |
unspecified | Original host-observed fence that queued automatic withdrawal, not the current fence. Null means a historical automatic intent did not retain its trigger; inspection must not infer it from current readiness. |
Conditional Rules¶
Rule 1¶
When:
{
"required": [
"withdrawal/reason"
]
}
Then:
{
"properties": {
"state": {
"enum": [
"withdrawal-pending",
"withdrawn",
"failed"
]
},
"admissible": {
"const": false
}
}
}
Rule 2¶
When:
{
"required": [
"admissible"
],
"properties": {
"admissible": {
"const": true
}
}
}
Then:
{
"required": [
"operation/ref",
"operation/status",
"local-binding/current-digest"
],
"properties": {
"state": {
"const": "published"
},
"operation/status": {
"const": "completed"
}
},
"not": {
"required": [
"fenced/reason"
]
}
}
Rule 3¶
When:
{
"required": [
"state"
],
"properties": {
"state": {
"const": "unpublished"
}
}
}
Then:
{
"properties": {
"admissible": {
"const": false
}
},
"not": {
"anyOf": [
{
"required": [
"operation/ref"
]
},
{
"required": [
"operation/status"
]
}
]
}
}
Rule 4¶
When:
{
"required": [
"state"
],
"properties": {
"state": {
"enum": [
"pending",
"published",
"withdrawal-pending",
"withdrawn",
"failed"
]
}
}
}
Then:
{
"required": [
"operation/ref",
"operation/status"
]
}
Rule 5¶
When:
{
"required": [
"state"
],
"properties": {
"state": {
"enum": [
"published",
"withdrawn"
]
}
}
}
Then:
{
"properties": {
"operation/status": {
"const": "completed"
}
}
}
Rule 6¶
When:
{
"required": [
"state"
],
"properties": {
"state": {
"const": "failed"
}
}
}
Then:
{
"properties": {
"operation/status": {
"const": "failed"
},
"admissible": {
"const": false
}
}
}
Rule 7¶
When:
{
"required": [
"state"
],
"properties": {
"state": {
"enum": [
"pending",
"withdrawal-pending"
]
}
}
}
Then:
{
"properties": {
"operation/status": {
"enum": [
"pending",
"running",
"unknown"
]
},
"admissible": {
"const": false
}
}
}
Rule 8¶
When:
{
"required": [
"state"
],
"properties": {
"state": {
"const": "withdrawn"
}
}
}
Then:
{
"properties": {
"admissible": {
"const": false
}
}
}
Field Semantics¶
schema¶
- Required:
yes - Shape: const:
operator-task-offer-publication.v1
schema/v¶
- Required:
yes - Shape: const:
1
draft¶
- Required:
yes - Shape: ref:
operator-task-offer-draft.v1.schema.json
state¶
- Required:
yes - Shape: enum:
unpublished,pending,published,withdrawal-pending,withdrawn,failed
admissible¶
- Required:
yes - Shape: boolean
local-binding/current-digest¶
- Required:
no - Shape: ref:
operator-task-common.v1.schema.json#/$defs/digest
Current host-observed binding revision shown for an explicit action. The retained draft still binds its original revision; inspection never silently rewrites it.
operation/ref¶
- Required:
no - Shape: ref:
operator-task-common.v1.schema.json#/$defs/ref
operation/status¶
- Required:
no - Shape: enum:
pending,running,completed,failed,cancelled,unknown
fenced/reason¶
- Required:
no - Shape: ref:
operator-task-common.v1.schema.json#/$defs/refusalCode
withdrawal/reason¶
- Required:
no - Shape: unspecified
Original host-observed fence that queued automatic withdrawal, not the current fence. Null means a historical automatic intent did not retain its trigger; inspection must not infer it from current readiness.