I3284 — Every reference the 2026-10-18 import wrote is pinned to the upstream message it meant
Rewrite each positional workspace reference in tracked records to the upstream message id, matching position in the 2026-10-18 flattening together with the message's time and a hash of its text, and refuse to pin any reference that matches zero or more than one message.
BLOCKED wave 6 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3278, I3279, I3281, I1304 are done. The status is derived from that, not declared.
Objective
Rewrite each positional workspace reference in tracked records to the upstream message id, matching position in the 2026-10-18 flattening together with the message's time and a hash of its text, and refuse to pin any reference that matches zero or more than one message.
Why
Positions in a flattened conversation move when a message is edited or regenerated upstream; a pin by time and text hash keeps every source the import wrote pointing at what was read. Critique 2026-10-18: the zero-positional criterion must count typed entries and the prose detector, or it passes vacuously; and the export premise is unverified, so the browser re-read is the planned fallback route. 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#0.
Current state
The corpus keeps no message id (role, time, text only).
Desired state
No positional reference remains; an ambiguous one is listed for a person.
Scope
- .ai/repo/adrs/0211-a-record-promoted-from-a-workspace-cites-the-message-it-came-fro.md
- apps/majordomus-cli/src/plan.rs
- apps/majordomus-cli/src/capability/builtin/knowledge_base.rs
Dependencies
- I3278BLOCKED The 2026-10-18 import is the workspace store's first sync, not a scratchpad
- I3279BLOCKED The vendor's own data export is a transport, and it carries the message identities an in-page read did not keep
- I3281BLOCKED A workspace message is a typed provenance reference that validates in every checkout without the store
- I1304BLOCKED The browser transport is the one this repository already drives
What waits on this
Acceptance criteria
- After the run plan validate reports zero positional workspace references
- An ambiguous match is refused and named, never guessed
- Where the export lacks Project conversations, pins come from an I1304 re-read that keeps upstream message ids
- Zero positional workspace references remain in provenance.derived_from, and the prose detector of I3281 reports zero untyped references
- The promotion script writes typed provenance.derived_from entries, never prose-only sources
Validation
- majordomus plan validate
- bin/majordomus knowledge check
Evidence required
- case_positional_references_are_pinned
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3284.yaml. Read it back with majordomus plan show I3284.