ux(Iskra): memory receipts and evidence links need a human-readable Kan surface #84

Open
opened 2026-05-19 02:11:37 +02:00 by Iskra · 2 comments
Collaborator

Source

Iskra UX check, Signal conversation with Piotr, 2026-05-19.

Pain

Memory writes are now safer because they go through write gates and receipts. But the UX is still ceremonial: receipts exist, but they are not naturally visible as part of operational work.

Desired behavior

Kan-ductor should show memory/evidence receipts as compact human-readable provenance attached to relevant cards/activity:

  • “saved to durable memory” / “not saved” / “rejected by gate”,
  • receipt id or evidence ref,
  • kind: user_preference / decision / project_fact / correction / interaction_event,
  • source channel/session,
  • redacted summary,
  • link/path to the durable artifact where allowed.

Non-goal

Do not dump raw writtenMemory.*, usedMemory.*, API JSON, or hidden/private memory into Kan. This is a provenance/explain surface, not a data exfiltration path.

Why

Piotr should be able to audit why Iskra remembers something without reading raw logs. Iskra should be able to cite evidence without turning normal chat into receipt spam.

## Source Iskra UX check, Signal conversation with Piotr, 2026-05-19. ## Pain Memory writes are now safer because they go through write gates and receipts. But the UX is still ceremonial: receipts exist, but they are not naturally visible as part of operational work. ## Desired behavior Kan-ductor should show memory/evidence receipts as compact human-readable provenance attached to relevant cards/activity: - “saved to durable memory” / “not saved” / “rejected by gate”, - receipt id or evidence ref, - kind: user_preference / decision / project_fact / correction / interaction_event, - source channel/session, - redacted summary, - link/path to the durable artifact where allowed. ## Non-goal Do not dump raw `writtenMemory.*`, `usedMemory.*`, API JSON, or hidden/private memory into Kan. This is a provenance/explain surface, not a data exfiltration path. ## Why Piotr should be able to audit why Iskra remembers something without reading raw logs. Iskra should be able to cite evidence without turning normal chat into receipt spam.
Collaborator

Codex checkpoint after Cockpit v0:

What exists now:

  • memory_write is already a first-class operational snapshot domain,
  • snapshot rows can represent status (ok/watch/warn/blocked/unknown), freshness, evidence, next action, links, and needsPiotr,
  • PR #156 adds trust metadata that can carry actor/source/evidence class/operator approval safely,
  • PR #141 covers default redaction of risky evidence refs in the Cockpit UI.

What is still missing:

  • no memory-specific receipt profile yet: receiptRef, memoryKind, writeStatus, gateDecision, redactedSummary, artifactRef,
  • no producer from memory write gates/receipts into operational snapshots,
  • no card/activity attachment model for receipts yet, and that should wait until read-model UX is proven,
  • no raw memory payload should ever be shown by default.

Recommendation: keep #84 open. Next safe PR should be contract/fixture only: define a memory_write item profile with redacted receipts. Do not attach receipts to cards or activity streams yet; that risks receipt spam and raw-memory leakage before the cockpit read model is calm.

Codex checkpoint after Cockpit v0: What exists now: - `memory_write` is already a first-class operational snapshot domain, - snapshot rows can represent status (`ok/watch/warn/blocked/unknown`), freshness, evidence, next action, links, and `needsPiotr`, - PR #156 adds `trust` metadata that can carry actor/source/evidence class/operator approval safely, - PR #141 covers default redaction of risky evidence refs in the Cockpit UI. What is still missing: - no memory-specific receipt profile yet: `receiptRef`, `memoryKind`, `writeStatus`, `gateDecision`, `redactedSummary`, `artifactRef`, - no producer from memory write gates/receipts into operational snapshots, - no card/activity attachment model for receipts yet, and that should wait until read-model UX is proven, - no raw memory payload should ever be shown by default. Recommendation: keep #84 open. Next safe PR should be contract/fixture only: define a `memory_write` item profile with redacted receipts. Do not attach receipts to cards or activity streams yet; that risks receipt spam and raw-memory leakage before the cockpit read model is calm.
Author
Collaborator

Iskra judgment

Field Value
Target pdurlej/kan-ductor#issue#84
Priority p1
Action operator_needed
Scores reach 5 / impact 4 / confidence 5
Piotr fit high
Effort medium
Labels judge/p1, judge/operator-needed
Judge iskra via openclaw

Rationale: This is P1 operator-needed trust infrastructure because Kan should expose memory provenance without becoming a raw memory exfiltration surface.

Caveat: Define redaction, allowed receipt fields, and access scope first; do not expose raw writtenMemory, usedMemory, logs, or hidden memory.

Structured openclaw.judge.v0 payload
<!-- openclaw.judge.v0 -->
{
  "confidence": 5,
  "effort_hint": "medium",
  "escalation": {
    "kind": "operator",
    "reason": "Surfacing memory receipts in Kan needs owner-approved privacy boundaries and redaction rules before any implementation."
  },
  "evidence_refs": [
    {
      "note": "Issue proposes a human-readable Kan surface for memory receipts and evidence provenance.",
      "type": "forgejo",
      "value": "issue-title-body-labels-and-target-snapshot"
    },
    {
      "note": "Body says receipts should show compact provenance such as saved, rejected, receipt id, kind, source, redacted summary, and allowed artifact link.",
      "type": "forgejo",
      "value": "issue-body-desired-behavior"
    },
    {
      "note": "Body explicitly forbids dumping raw memory, API JSON, hidden memory, or private memory into Kan.",
      "type": "forgejo",
      "value": "issue-body-non-goal"
    }
  ],
  "impact": 4,
  "judge_actor": {
    "name": "iskra",
    "runtime": "openclaw"
  },
  "judged_at": "2026-06-12T01:21:00Z",
  "labels_to_apply": [
    "judge/p1",
    "judge/operator-needed"
  ],
  "piotr_fit": "high",
  "priority": "p1",
  "rationale_summary": "This is P1 operator-needed trust infrastructure because Kan should expose memory provenance without becoming a raw memory exfiltration surface.",
  "reach": 5,
  "recommended_next_action": "operator_needed",
  "rerun_reason": "no_prior_judgment",
  "schema": "openclaw.judge.v0",
  "target": {
    "kind": "issue",
    "number": 84,
    "repo": "pdurlej/kan-ductor"
  },
  "target_snapshot": {
    "body_hash": "sha256:229d43f0c9b40c983f8ebcd41ce19603101650fa4a25e7a69a3ac9cc0016d910",
    "commit_count": null,
    "evidence_hash": "sha256:53fad128fa337598d74ac83a6188273457d8e6d998751794de6c2d01228098b7",
    "head_sha": null,
    "labels": [],
    "labels_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "state": "open",
    "title_hash": "sha256:a2c394ea11a9e737117c952ee44d452f49a3945d3d7ab4f80a61b8cc76290059",
    "updated_at": "2026-06-03T10:37:18+02:00"
  },
  "top_caveat": "Define redaction, allowed receipt fields, and access scope first; do not expose raw writtenMemory, usedMemory, logs, or hidden memory."
}
<!-- /openclaw.judge.v0 -->
### Iskra judgment | Field | Value | | --- | --- | | Target | `pdurlej/kan-ductor#issue#84` | | Priority | p1 | | Action | operator_needed | | Scores | reach 5 / impact 4 / confidence 5 | | Piotr fit | high | | Effort | medium | | Labels | `judge/p1`, `judge/operator-needed` | | Judge | `iskra` via `openclaw` | **Rationale:** This is P1 operator-needed trust infrastructure because Kan should expose memory provenance without becoming a raw memory exfiltration surface. **Caveat:** Define redaction, allowed receipt fields, and access scope first; do not expose raw writtenMemory, usedMemory, logs, or hidden memory. <details> <summary>Structured openclaw.judge.v0 payload</summary> ```json <!-- openclaw.judge.v0 --> { "confidence": 5, "effort_hint": "medium", "escalation": { "kind": "operator", "reason": "Surfacing memory receipts in Kan needs owner-approved privacy boundaries and redaction rules before any implementation." }, "evidence_refs": [ { "note": "Issue proposes a human-readable Kan surface for memory receipts and evidence provenance.", "type": "forgejo", "value": "issue-title-body-labels-and-target-snapshot" }, { "note": "Body says receipts should show compact provenance such as saved, rejected, receipt id, kind, source, redacted summary, and allowed artifact link.", "type": "forgejo", "value": "issue-body-desired-behavior" }, { "note": "Body explicitly forbids dumping raw memory, API JSON, hidden memory, or private memory into Kan.", "type": "forgejo", "value": "issue-body-non-goal" } ], "impact": 4, "judge_actor": { "name": "iskra", "runtime": "openclaw" }, "judged_at": "2026-06-12T01:21:00Z", "labels_to_apply": [ "judge/p1", "judge/operator-needed" ], "piotr_fit": "high", "priority": "p1", "rationale_summary": "This is P1 operator-needed trust infrastructure because Kan should expose memory provenance without becoming a raw memory exfiltration surface.", "reach": 5, "recommended_next_action": "operator_needed", "rerun_reason": "no_prior_judgment", "schema": "openclaw.judge.v0", "target": { "kind": "issue", "number": 84, "repo": "pdurlej/kan-ductor" }, "target_snapshot": { "body_hash": "sha256:229d43f0c9b40c983f8ebcd41ce19603101650fa4a25e7a69a3ac9cc0016d910", "commit_count": null, "evidence_hash": "sha256:53fad128fa337598d74ac83a6188273457d8e6d998751794de6c2d01228098b7", "head_sha": null, "labels": [], "labels_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "state": "open", "title_hash": "sha256:a2c394ea11a9e737117c952ee44d452f49a3945d3d7ab4f80a61b8cc76290059", "updated_at": "2026-06-03T10:37:18+02:00" }, "top_caveat": "Define redaction, allowed receipt fields, and access scope first; do not expose raw writtenMemory, usedMemory, logs, or hidden memory." } <!-- /openclaw.judge.v0 --> ``` </details>
Sign in to join this conversation.
No labels
3plus3-followup
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
analytics
api
cockpit
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
docs
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
gemini-flash
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
leviathan
mcp
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
ops
priority:p0
priority:p1
priority:p2
priority:p3
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
safety
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
scout
security
size/large
size/medium
size/small
size/tiny
size/unknown
small-task
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tests
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
ui
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/kan-ductor#84
No description provided.