Skip to content

I3314 — An object's read names the commit that last changed its file, and its page lists the commits that changed it

Add a read-only history projection to an object of the layer: the last commit, its date and the commits that touched the object's file (git log --follow, bounded), served on the entity read and its detail page, and computed from git rather than stored.

READY wave 0 · p3 · implementation profile · parallel safe

Part of capability-graph — One capability graph, two projections, and no second inventory of what this repository can do.

Ready. Every dependency is done, so majordomus plan start I3314 will be accepted.

Objective

Add a read-only history projection to an object of the layer: the last commit, its date and the commits that touched the object's file (git log --follow, bounded), served on the entity read and its detail page, and computed from git rather than stored.

Why

The 2026-09-04 data-driven MCP design asked for an entry's git history beside its document. At 707a04c majordomus history reads the task ledger (lib/history.sh) and commit.history judges commit messages (capability/builtin/commit.rs), but an ADR, rule or knowledge record answers nothing about when or by which commit it last changed, so a reader judging whether a record is current has to leave the surface. I1012 assembles a node's detail view from what it has; history is one more thing it can have. Sources: chatgpt-majordomus:c008#2.

Current state

At 707a04c no entity read or page carries a last-changed commit.

Desired state

Every object with a file names its last commit and opens its history, bounded, with no tracked copy of either.

Scope

  • apps/majordomus-cli/src/capability/builtin/entity.rs
  • apps/majordomus-cli/src/cockpit/pages.rs
  • apps/majordomus-cli/src/git/mod.rs
  • apps/majordomus-cli/tests/objects.rs

Out of scope

  • Storing history in the index
  • Diffs of the object

Dependencies

None. This issue is a root of the graph.

What waits on this

Acceptance criteria

  • The entity read of an ADR carries the commit and date that last changed its file
  • The history is bounded and says when it was cut
  • An object with no file says history not applicable, never empty
  • The projection is read-only on every transport

Validation

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test objects

Evidence required

  • test_entity_history

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/I3314.yaml. Read it back with majordomus plan show I3314.

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