A malformed create attempt is rejected with typed gate codes, then the corrected accepted row lands on the public demo tenant.
{
"kind": "task.create.refused",
"task_id": "IF-demo-001",
"refused": {
"codes": [
"GATE_CONTEXT_REF_NOT_URL",
"GATE_ACCEPTANCE_BULLETS_OUT_OF_RANGE"
]
}
}{
"kind": "task.create.accepted",
"task_id": "IF-demo-001",
"tenant_id": "demo",
"workspace_id": "demo-default"
}{
"kind": "task.checkpoint",
"task_id": "IF-demo-001",
"next_step": "Add a second checkpoint tying the corrected accepted row to the refusal artifact, then wire the public alias IF-demo-001 in the read layer."
}{
"kind": "task.checkpoint",
"task_id": "IF-demo-001",
"next_step": "Wire IF-demo-001 as a public alias to IF-3398 in the read layer and switch the UI proof CTA to that alias."
}The lineage modal is using the real shipped sample shape from IF-3398.