Walkthrough: conversation → document → colophon
You prompt two agents. They each write a markdown page. You want more than a finished file. You want a journal, a session record, and a proposed colophon you can seal to the bytes.
This page is the story, not the raw JSON. Three human prompts go into agent sessions (Claude and Codex in the fixture). The Innsigle session skill builds session provenance and proposes a colophon.
Spec detail (optional): session provenance feature.
Human prompts → agent writes markdown → journal + L2 provenance → colo.json
↓
review · optional sign
Step 1: Human prompts
The operator types these (same sequence for each agent in the fixture):
Draft a short markdown page titled Sealed Notes explaining what an Innsigle colophon is in two paragraphs.
Add a bullet list of three non-goals: no AI detection, no purity score, no claim of content truth.
Tighten the opening sentence; keep model-primary honesty.
Full list: human-inputs.json.
Step 2: Agent writes the document
The model produces a markdown file (model-primary: the agent wrote the bytes).
Writes sealed-notes-claude.md: two paragraphs on the colophon, then the non-goals list.
The document (Claude session)
Sealed Notes
An Innsigle colophon declares how a piece of work was made, composition and ingredients, not whether the prose is true or pure.
It lists models, tools, and human roles so readers can see how the piece was produced.
Non-goals
- No AI detection
- No purity score
- No claim of content truth
Codex produces a parallel page: sealed-notes-codex.md. Claude artifact: sealed-notes-claude.md.
Step 3: Skill captures the session
The harness records a journal (JSONL): each human prompt, assistant turn, file write (by: model), tool/skill calls. That is not the colo yet; it is the raw machine log.
From the merged Claude + Codex journals the driver reports:
| Metric | Value |
|---|---|
| User prompts | 6 (3 per agent) |
| Assistant turns | 5 |
| Models | Claude, Codex |
| Composition suggestion | model-primary |
Rewrite tools (e.g. sloptimizer) appear as ingredients. They do not turn the work into human-authored.
Step 4: Proposed colophon
This is what a reader (or claim) should show next to the document:
Colophon · model-primary
| Kind | Name | Role |
|---|---|---|
| model | Claude | primary |
| model | Codex | primary |
| tool | innsigle-session | provenance-capture |
| tool | sloptimizer | rewrite |
| human | operator | prompter |
session metrics: user_prompts=6; assistant_turns=5
Linked provenance: session-provenance.json
Machine form: colo.json.
Step 5: How it looks on a sealed page
Footer pattern (same idea as the Sample signed page):
When you sign, the claim binds content SHA-256 + this colo + absolute issuer key_url. Verification checks the seal, not whether the prose is true.
Reproduce
npm run test:provenance-driver
Check it
Expect the driver to propose model-primary with models + tools (including rewrite tools) listed as ingredients, not a flip to human-authored. Details: Session provenance.
Issuer without a server: Issuer identity.
Machine pack
| File | Role |
|---|---|
| human-inputs.json | Prompts |
| session-claude.jsonl | Claude journal |
| session-codex.jsonl | Codex journal |
| session-provenance.json | Session record |
| colo.json | Proposed colo |