I3429 — One entity reads the same on the command line, REST, MCP and the Cockpit: identity, kind, class, evidence, observation envelope and edge order
Extend the Cockpit integration test with one test that reads four surfaces for one entity of every kind the index holds: majordomus entity show as JSON, GET /api/v1/entity, majordomus_entity over MCP and the Cockpit entity page model. It compares uri, id, kind, epistemic class, evidence state, the observed envelope and the order of relations.
BLOCKED wave 2 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3427, I3428, milestone:an-entity-says-how-it-is-known-and-what-it-affects are done. The status is derived from that, not declared.
Objective
Extend the Cockpit integration test with one test that reads four surfaces for one entity of every kind the index holds: majordomus entity show as JSON, GET /api/v1/entity, majordomus_entity over MCP and the Cockpit entity page model. It compares uri, id, kind, epistemic class, evidence state, the observed envelope and the order of relations.
Why
The owner's 2026-10-19 Cognitive Fabric pack requires cross-surface tests asserting the same identity, classification, deterministic order and freshness semantics (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/05_SURFACES.md, and the verification/ACCEPTANCE.md row on CLI, API, MCP and UI).
Current state
tests/properties.rs compares MCP with HTTP for GET routes only, and never the command line (apps/majordomus-cli/tests/properties.rs:290-300). tests/cockpit.rs compares the Cockpit entity page with GET /api/v1/entity (apps/majordomus-cli/tests/cockpit.rs:187-245). No test covers entity.show on all four surfaces.
Desired state
A divergence in any compared field on any surface fails one named test.
Scope
- apps/majordomus-cli/tests/cockpit.rs
Out of scope
- Extending the registry-wide property to writers (milestone surfaces-never-disagree)
- Comparing rendered HTML text
Dependencies
- I3427BLOCKED Every entity read names how its record says it is known, and never answers verified itself: proof stays the pointer it is
- I3428BLOCKED An entity read carries the observation envelope repository.info already answers, plus the blob of its file, and a change to that file moves both
Acceptance criteria
- The test covers one entity of every kind entity.kinds reports
- Changing the class or the relation order on one surface in a fixture fails it, naming the surface and the field
- It runs without network and without the checkout's .ai/local
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test cockpit
Evidence required
- entity_surfaces_agree
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/I3429.yaml. Read it back with majordomus plan show I3429.