Skip to content

I3279 — The vendor's own data export is a transport, and it carries the message identities an in-page read did not keep

Accept the ChatGPT account export archive as a second transport (acquisition: export) that the mapper of I1307 reads offline, keeping each message's upstream id, parent and position on the current branch.

BLOCKED wave 4 · p2 · implementation profile · parallel safe

Part of what-a-workspace-decides-reaches-the-repository-with-its-source — What the owner decides in a vendor workspace reaches the repository, and every promoted record opens the message it came from.

Blocked. This issue cannot start until I1302, I1305 are done. The status is derived from that, not declared.

Objective

Accept the ChatGPT account export archive as a second transport (acquisition: export) that the mapper of I1307 reads offline, keeping each message's upstream id, parent and position on the current branch.

Why

The export is the vendor's documented path for a person's own data and needs no automation of its site; it is the legitimate fallback when the in-page read breaks, and the only source of message ids for the conversations captured on 2026-10-18 without them. Whether it includes project conversations is unverified (open question). Critique 2026-10-18: the transports enum is official|browser|private_http and the declaration names only browser; the export is the vendor's documented interface and maps to `official`. It extends milestone external-workspaces. Proposed in ADR 0212 (A workspace is read in the operator's own signed-in browser or from the vendor's export, never through a launched automation profile or another tool's credential) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c267#2, chatgpt-majordomus:c066#4.

Current state

No export reader exists; workspace.v1's transports enum is official|browser|private_http, and .ai/repo/workspaces/chatgpt-majordomus.yaml declares only browser.

Desired state

scripts/workspace import-export <archive> maps the export through the same mapper and writes the same records a browser sync would, marking acquisition: export.

Scope

  • share/schemas/majordomus/workspace
  • .ai/repo/workspaces
  • share/allow/workspace.txt
  • test/cases/93_workspace_kind.sh

Out of scope

  • Any network access
  • Storing the archive inside the repository

Dependencies

What waits on this

Acceptance criteria

  • A sanitised synthetic export fixture maps to records identical in content to the browser-mapped fixture
  • Every message record carries upstream id, parent id and branch position
  • An export whose shape fingerprint differs fails closed and persists nothing
  • The account export is declared as the `official` transport of workspace.v1 and listed in .ai/repo/workspaces/chatgpt-majordomus.yaml transports
  • Before any mapping code, one real owner export is inspected and whether it holds Project conversations is recorded as a decision

Validation

  • bash test/run.sh 93_workspace_kind
  • majordomus plan validate

Evidence required

  • case_the_export_maps_like_the_browser

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/I3279.yaml. Read it back with majordomus plan show I3279.

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