Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I1302

Identity, provenance and support level are typed fields, not prose

Where it stands

devtask.issue
Readiness
ready no dependency and no gate holds it; nobody has started it
Status
READY
Can start
startable
Milestone
Milestone status
ACTIVE
Wave
1
Waiting on
none
Holds back
Behind it in all
8
Evidence
0 of 4
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I1302

majordomus plan verify I1302

majordomus plan done I1302

What it is

Objective
Define the record model every synced item carries: upstream identity, local identity, content hash, the transport that produced it, the acquisition mode, the support level and the tombstone, as a schema with a version, before any adapter writes a byte.
Why
The pack this milestone came from is right about one thing above all: raw observation, normalised entity and derived knowledge are three different things, and a corpus that confuses them cannot be re-synced, re-checked or believed. A title is not an identity. A record that does not say how it was acquired cannot be told apart from a guess.
Now
Nothing exists. The repository's own kinds compute identity generically from declared fields (index.rs identity_of) and that mechanism does not reach local content.
Wanted
One versioned schema describes a synced record: `upstream_id` as the vendor gave it, a local identity derived from vendor and upstream id and never from a title, a content hash over the normalised body, `transport` (official, browser, private_http), `acquisition` (push, stream, websocket, browser_observed, poll), `support` (official, browser_observed, private, derived), first-seen and last-seen stamps, and a tombstone that marks a record gone upstream rather than deleting it.
Done when
unknown: the record declares no `completion`
Risk
Over-modelling. The enumerations must be the ones a consumer actually branches on; a taxonomy nobody reads is a cost with no reader.

Acceptance

  • A local identity is reproducible from vendor and upstream identity alone and never depends on a display title
  • Every record states its transport, its acquisition mode and its support level as enumerated values
  • A content hash distinguishes a changed record from a re-observed one
  • A record gone upstream is tombstoned with a stamp, never removed silently
  • The schema carries a version and an unknown version is refused rather than parsed
Validation
bash test/run.shmajordomus generate --check
Evidence required
identity_reproducibleprovenance_typedtombstone_semanticsschema_versioned
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
share/schemasdocs
Not
Any adapter or transport implementationAny vendor-specific field; ChatGPT's own shape is I1307Placing the schema file under share/schemas/ before something reads it. The schema-integrity doctrine refuses a schema that nothing applies, and nothing reads a workspace record until the syncer (I1306) or the reader capability (I1308) exists, so the file lands in the same change as its first reader rather than ahead of it.
Depends on
Priority
p0
Profile
deep-work
Parallel safe
true
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-09-09
Updated
2026-09-09
Started
unknown: the record declares no `started_at`
Verified
unknown: the record declares no `verified_at`
Completed
unknown: the record declares no `completed_at`

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

LevelCodeMessageReproduce
WARNscope_conflictshares docs with I1951; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares share/schemas with I1988; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares share/schemas with I2401; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2484; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2700; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares share/schemas with I2701; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2702; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2704; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2705; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2706; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares docs with I2709; they may not run concurrentlymajordomus plan validate