One content-id display form across verbs; tolerate the content: prefix in refs #194

Closed
opened 2026-07-03 16:51:57 +02:00 by Brummel · 2 comments
Owner

process|campaign introspect --content-id print 'content:' while graph introspect --content-id prints the bare hash (fieldtest cycle-0106, F3). Pasting the prefixed form into a document ref PASSES intrinsic validation (it is just a string — and yields a different content id for the doc) and then fails referential resolution with 'process content: not found in the project store', without naming the prefix as the cause. Copy-paste from the tool's own output produces a silently broken campaign.

Likely shape: pick one display form everywhere (bare hash matches graph and the store filenames), and/or strip an accepted 'content:' prefix at ref-parse time, and/or have the referential refusal flag a prefixed-looking id explicitly.

  • depends on: nothing
  • context: fieldtest finding F3, fieldtests/cycle-0106-research-artifacts/FINDINGS.md (2026-07-03).
process|campaign introspect --content-id print 'content:<hash>' while graph introspect --content-id prints the bare hash (fieldtest cycle-0106, F3). Pasting the prefixed form into a document ref PASSES intrinsic validation (it is just a string — and yields a different content id for the doc) and then fails referential resolution with 'process content:<hash> not found in the project store', without naming the prefix as the cause. Copy-paste from the tool's own output produces a silently broken campaign. Likely shape: pick one display form everywhere (bare hash matches graph and the store filenames), and/or strip an accepted 'content:' prefix at ref-parse time, and/or have the referential refusal flag a prefixed-looking id explicitly. - depends on: nothing - context: fieldtest finding F3, fieldtests/cycle-0106-research-artifacts/FINDINGS.md (2026-07-03).
Author
Owner

Re-confirmed by the cycle-0107 fieldtest (F6)

The prefix trap survived the executor cycle and now taxes the on-ramp it shipped: every register verb (graph|process|campaign) and introspect --content-id print content:<hash>, while every ref slot wants the bare hash. A campaign whose process.ref carries the copied content:… form passes intrinsic validation and fails referential resolution; the refusal now echoes the offending ref verbatim (an improvement over the 0106 shape) but still never names the prefix as the cause, and register keeps printing exactly the form that breaks. Repro fixture: fieldtests/cycle-0107-campaign-executor/c0107_4_campaign_prefixref.json. Scope addition since 0106: aura graph register (cycle 0107, #196) emits the same prefixed form, so the trap now covers all three document families.

## Re-confirmed by the cycle-0107 fieldtest (F6) The prefix trap survived the executor cycle and now taxes the on-ramp it shipped: every `register` verb (`graph|process|campaign`) and `introspect --content-id` print `content:<hash>`, while every `ref` slot wants the bare hash. A campaign whose `process.ref` carries the copied `content:…` form passes intrinsic validation and fails referential resolution; the refusal now echoes the offending ref verbatim (an improvement over the 0106 shape) but still never names the prefix as the cause, and `register` keeps printing exactly the form that breaks. Repro fixture: `fieldtests/cycle-0107-campaign-executor/c0107_4_campaign_prefixref.json`. Scope addition since 0106: `aura graph register` (cycle 0107, #196) emits the same prefixed form, so the trap now covers all three document families.
Author
Owner

Design decision (derived): bare id is the one display form; CLI targets tolerate the prefix; doc refs stay bare-only

Three calls, each with its ground:

  • Display: the copyable token is the bare 64-hex id, everywhere. graph introspect --content-id already prints bare — the doc-verb families converge on it (registered process <id> (<path>); --content-id prints the bare id). Ground: the copyable token must BE the valid ref form; the trap exists precisely because content:<hash> reads as one token and pastes as one token.
  • CLI target arguments strip a leading content: prefix (campaign run, graph introspect --params, and the other FILE-or-id targets). Ground: a CLI arg is ephemeral input, not content-addressed bytes — leniency here costs nothing and absorbs the installed base of prefixed output already in shells/notes.
  • Document ref fields stay bare-only. Ground: two accepted spellings of the same ref inside canonical-form documents would make semantically identical docs hash to different content ids — the doc tier's byte-stability outranks input leniency. Instead, the referential-fault prose gains a hint when a ref carries the prefix ("refs use the bare 64-hex id — drop the 'content:' prefix").

Veto by replying here.

## Design decision (derived): bare id is the one display form; CLI targets tolerate the prefix; doc refs stay bare-only Three calls, each with its ground: - **Display: the copyable token is the bare 64-hex id, everywhere.** `graph introspect --content-id` already prints bare — the doc-verb families converge on it (`registered process <id> (<path>)`; `--content-id` prints the bare id). Ground: the copyable token must BE the valid ref form; the trap exists precisely because `content:<hash>` reads as one token and pastes as one token. - **CLI target arguments strip a leading `content:` prefix** (`campaign run`, `graph introspect --params`, and the other FILE-or-id targets). Ground: a CLI arg is ephemeral input, not content-addressed bytes — leniency here costs nothing and absorbs the installed base of prefixed output already in shells/notes. - **Document ref fields stay bare-only.** Ground: two accepted spellings of the same ref inside canonical-form documents would make semantically identical docs hash to different content ids — the doc tier's byte-stability outranks input leniency. Instead, the referential-fault prose gains a hint when a ref carries the prefix ("refs use the bare 64-hex id — drop the 'content:' prefix"). Veto by replying here.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#194