Skip to content

a-promoted-record-opens-its-message — Every record promoted from a workspace cites the message it came from, and the UI opens it for the operator who holds it

A typed workspace: reference on every record kind, valid in every checkout, resolvable where the store is held, drawn as a link on /ui and as text on the published site.

PLANNED 0 of 5 issues done

ready
1
blocked
4
active
0
verify
0
done
0
cancelled
0

Problem

The ChatGPT import promotes intents, ADRs, milestones, issues and knowledge with `conversation#message` sources, but the plan schemas carry no provenance at all and the shared Provenance grammar has no reference type for a workspace message, so the drill-back exists only in the writer's scratch files. Proposed in ADR 0211 (A record promoted from a workspace cites the message it came from by a typed reference that validates in every checkout and resolves only where the store is held) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c267#2, chatgpt-majordomus:c267#0, chatgpt-majordomus:c239#0.

Outcome

A typed workspace: reference on every record kind, valid in every checkout, resolvable where the store is held, drawn as a link on /ui and as text on the published site.

Current state

Verified on master 707a04c: adr.v1 admits provenance derived_from ^(decision|session|commit|issue|file|test):.+$, knowledge.v1 adds task: and resolves decision, session and task references against the ledger, and the two origin semantics differ; intent, milestone and issue schemas have no provenance field; no schema under share/schemas uses a cross-file $ref; ui/prose.rs links known record ids only. The 2026-10-18 import wrote its sources only as prose chatgpt-majordomus:<conversation>#<n> references.

Desired state

workspace:chatgpt-majordomus/<conversation>#<message> validates everywhere, resolves locally, opens the message from /ui, and the 2026-10-18 positional references are pinned to message ids.

Scope

  • share/schemas/majordomus
  • apps/majordomus-cli/src/plan.rs
  • apps/majordomus-cli/src/capability/builtin
  • apps/majordomus-cli/src/ui
  • docs

Out of scope

  • Storing or summarising conversation text in any tracked record
  • Publishing message text

Acceptance criteria

  • Five record kinds carry provenance from one reference grammar, inlined per kind at generate time
  • A workspace reference validates in a clone with no store
  • /ui opens the cited message where the store exists, for a loopback caller only
  • Zero positional references remain, typed or in prose

Validation

  • majordomus plan validate

Risks

  • A reference that resolves only against local state fails every other checkout (adopter report 2026-10-18, task: references); validity must be structural
  • Decided by the owner on 2026-10-18: a public record cites a local alias (chatgpt-majordomus:cNNN#n) and the alias-to-conversation map stays in the operator's own store; a typed reference must keep that property.

Issues

Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.

issuestatuswavedepends ontitle
I3280 READY 0 — An intent, a milestone and an issue carry provenance the way an ADR and a knowledge record do
I3281 BLOCKED 1 I3280, I1301 A workspace message is a typed provenance reference that validates in every checkout without the store
I3282 BLOCKED 4 I3281, I1308 A workspace reference resolves to its message where the store holds it, and says 'not held here' where it does not
I3283 BLOCKED 5 I3282, I1309 The UI opens the message a record cites, and the published snapshot shows only the reference
I3284 BLOCKED 6 I3278, I3279, I3281, I1304 Every reference the 2026-10-18 import wrote is pinned to the upstream message it meant

The graph

a-promoted-record-opens-its-message dependency graphfrom .ai/repo/project
flowchart LR
    I3280["I3280<br/>An intent, a milestone and an issue carry provenance the way an ADR and a knowledge record do"]:::ready
    I3281["I3281<br/>A workspace message is a typed provenance reference that validates in every checkout without the store"]:::blocked
    I3282["I3282<br/>A workspace reference resolves to its message where the store holds it, and says 'not held here' where it does not"]:::blocked
    I3283["I3283<br/>The UI opens the message a record cites, and the published snapshot shows only the reference"]:::blocked
    I3284["I3284<br/>Every reference the 2026-10-18 import wrote is pinned to the upstream message it meant"]:::blocked
    I3280 --> I3281
    I3281 --> I3282
    I3281 --> I3284
    I3282 --> I3283
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Canonical record: .ai/repo/project/milestones/a-promoted-record-opens-its-message.yaml. Read it back with majordomus plan show a-promoted-record-opens-its-message.

Searches the titles and descriptions of every page this site publishes.