Skip to content

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

Part of an-entity-says-how-it-is-known-and-what-it-affects — One entity read names how its record says it is known and when it was observed, identically on every surface, and what a change affects is derived from the same index.

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

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.

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