I3428 — 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
Add to EntityView the observed envelope that repository.info already carries: observed.index with observed_at and stale_after, from the index observation crate::live takes. Add the blob of the object's file from the git index, beside the last-changing commit I3314 adds. A member of a collection file names the file it is read from. Introduce no new freshness type.
BLOKOVÁNO vlna 1 · p2 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I3314, I3427, milestone:an-entity-says-how-it-is-known-and-what-it-affects are done. The status is derived from that, not declared.
Cíl
Add to EntityView the observed envelope that repository.info already carries: observed.index with observed_at and stale_after, from the index observation crate::live takes. Add the blob of the object's file from the git index, beside the last-changing commit I3314 adds. A member of a collection file names the file it is read from. Introduce no new freshness type.
Proč
The owner's 2026-10-19 Cognitive Fabric pack asks for last-verified time and source freshness on the shared projection (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/05_SURFACES.md). verification/ACCEPTANCE.md asks every surface to show the same freshness semantics.
Aktuální stav
EntityView has no observation time and no blob (apps/majordomus-cli/src/capability/builtin/entity.rs:395-435). repository.info carries observed.index with observed_at and stale_after (test/cases/545_every_answer_says_when_it_was_observed.sh:9-12). UI readings carry the age of the cache reading, not of the record (apps/majordomus-cli/src/capability/readings.rs:1-27). I3314 plans the last commit.
Cílový stav
Every entity read carries the time of the index observation it was answered from, in repository.info's shape, and the blob of its file. After a commit that changes the file, the next read carries a later observed_at and the new blob.
Rozsah
- apps/majordomus-cli/src/capability/builtin/entity.rs
- apps/majordomus-cli/src/live.rs
- apps/majordomus-cli/tests/objects.rs
- docs/generated/registry.json
- docs/generated/registry.yaml
- docs/generated/openapi.json
- docs/generated/openapi.yaml
- site/data/generated/openapi.json
- site/data/registry/registry.json
Mimo rozsah
- Storing history or freshness in the index
- A per-request stat of every object (live.rs:30-36 says why)
- A new freshness type beside evidence::freshness and readings::Freshness
- The observed envelope on capabilities other than entity.show
Závislosti
- I3314READY An object's read names the commit that last changed its file, and its page lists the commits that changed it
- I3427BLOCKED Every entity read names how its record says it is known, and never answers verified itself: proof stays the pointer it is
Co na tom čeká
Kritéria přijetí
- entity.show of an ADR carries observed.index (observed_at, stale_after) in repository.info's shape and the blob of its file
- After a commit that changes the file, the next read has a later observed_at and the new blob; a read with no change keeps both
- An object with no file of its own says not applicable, never an empty value
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test objects
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib live
- bash test/run.sh 545_every_answer_says_when_it_was_observed
- bin/majordomus-cli generate --check
Požadované důkazy
- test_entity_observed_envelope
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3428.yaml. Read it back with majordomus plan show I3428.