Loading
Resolving public demo task…
Viewing demo task · public alias IF-demo-001 → canonical record IF-3398 · captured in session rook-285
infrafabric/ledger/tasks/IF-demo-001
IF-demo-001

A malformed create attempt is rejected with typed gate codes, then the corrected accepted row lands on the public demo tenant.

status · in_progresspriority · P2pillar · if.blackboardproject · demo-defaulttenant · demo
Continue the proof flow.Open this task in ledgerFiltered event view keyed to the same public task alias.
human instruction receipt

hir-demo-001

authorized

Demonstrate a malformed task-create refusal followed by a corrected accepted row, with public proof visible to reviewers.

requesterDanny
agentrook-285
modelgpt-5.4
retentionredacted text
claim boundary

Demo proves refusal/correction visibility for this task fixture; it does not claim full multi-tenant writer coverage.

Proof packet4 rows
Verified witnesses2
Pending witnesses0
authorized scopecreate public demo proofshow refused and accepted rowspreserve zero-write refusal behavior
forbidden scoperewrite refused rowshide gate failuresturn public UI into a writer
2 evidence witnesses
typed refusal rowblackboard · native
accepted correction rowblackboard · native
Event chain
signed rows · append-only
task.create.refused
evt_if-demo-001_refused · 2026-04-20T14:06:39Z
refusedsignature passpolling
GATE_CONTEXT_REF_NOT_URL, GATE_ACCEPTANCE_BULLETS_OUT_OF_RANGE — malformed create rejected with zero append side effect.
{
  "kind": "task.create.refused",
  "task_id": "IF-demo-001",
  "refused": {
    "codes": [
      "GATE_CONTEXT_REF_NOT_URL",
      "GATE_ACCEPTANCE_BULLETS_OUT_OF_RANGE"
    ]
  }
}
task.create.accepted
fb575708c0244f4ab8113e41a1529f69 · 2026-04-20T14:06:39Z
in_progresssignature passpolling
Public demo anchor for refusal -> correction proof flow (public alias IF-demo-001)
{
  "kind": "task.create.accepted",
  "task_id": "IF-demo-001",
  "tenant_id": "demo",
  "workspace_id": "demo-default"
}
task.checkpoint
99d1d40706854d069385ae58a4fb1e71 · 2026-04-20T14:08:16Z
in_progresssignature passpolling
Seeded demo tenant anchor task and captured the malformed create refusal artifact for the future public click-through.
{
  "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."
}
task.checkpoint
a4575513a4604af781903f1ff11749b9 · 2026-04-20T14:08:37Z
in_progresssignature passpolling
Captured the corrected accepted row for the public alias IF-demo-001; the future task page can now diff the malformed refusal artifact against the accepted IF-3398 row.
{
  "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."
}
Traps & constraints
3 invariants · read-only surface
01
Public alias IF-demo-001 does not exist in the canonical writer path yet; current accepted task id is IF-3398 and the alias will need to live in the public read layer.
02
Public alias IF-demo-001 will need to map to canonical task id IF-3398 in the read API or UI loader; the writer path itself only accepts IF-####.
Chain-of-custody log
preview — activates chain-of-custody read logging ships
Every permalink resolution can become its own read event so the observatory is also its own auditor.
Verification state
4 / 4
refusal visibleGATE_CONTEXT_REF_NOT_URL, GATE_ACCEPTANCE_BULLETS_OUT_OF_RANGE — malformed create rejected with zero append side effect.
signature passif.blackboard.default.v1
demo tenant scopeddemo/demo-default
lineage capturedagent_run chain available
Verify signatureReady — click the button below or press v.
Tenant pubkey
ed25519
// public key — demoif.blackboard.default.v1
Chain hash
blake3
// chain hash through offset 91823e8b6a0b1e4d7fe2814a0b3e5448605dc6dfff8f3a52a29930c344f3bbf3a876
Lineage source
IF-3384a

The lineage modal is using the real shipped sample shape from IF-3398.