I1307 — The ChatGPT shape is mapped from evidence and never becomes the canonical model
Map what a ChatGPT Project actually exposes — the project, its conversations, the message graph, content parts, attachment metadata, project instructions — onto the canonical record model, mapping only what an observation supports.
BLOCKED wave 4 · p1 · deep-work profile · parallel safe
Blocked. This issue cannot start until I1302, I1305 are done. The status is derived from that, not declared.
Objective
Map what a ChatGPT Project actually exposes — the project, its conversations, the message graph, content parts, attachment metadata, project instructions — onto the canonical record model, mapping only what an observation supports.
Why
The vendor's own shape is a transport detail with a fingerprint (I1305). If it reaches the store or a capability, then the day the vendor reorganises its message graph the repository's model changes with it, and every consumer breaks for a reason none of them can see.
Current state
Nothing exists. No observation has been taken.
Desired state
One mapper turns observed vendor records into the canonical model of I1302. A message graph with branches is preserved as a graph rather than flattened into a list. Content parts keep their type. Attachment metadata is mapped; content is downloaded only where the declaration says downloading is authorised. Anything the evidence does not support is absent, not guessed.
Scope
- scripts/lib
- test/cases
Out of scope
- Any canonical field invented to match a vendor field with no consumer
- Downloading attachment content where the declaration does not authorise it
Dependencies
- I1302READY Identity, provenance and support level are typed fields, not prose
- I1305BLOCKED An observed contract has a fingerprint, a compatibility state and a fixture
Acceptance criteria
- No vendor DTO field reaches the store or a capability without passing through the mapper
- A branched conversation keeps its graph; no branch is silently dropped or linearised
- Content parts keep a typed discriminator rather than being concatenated into text
- A field the evidence does not support is absent rather than defaulted
- The mapper is proven against sanitised fixtures with no live account
Validation
- bash test/run.sh
Evidence required
- mapper_boundary
- graph_preserved
- parts_typed
- fixtures_prove_it
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
Mapping ahead of evidence. Every field here must point at an observation that was actually taken, or it is a guess with a schema around it.
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/I1307.yaml. Read it back with majordomus plan show I1307.