Design stale badge with replace-or-keep for projections and includes

Extend authoring model: generate alternative current version, keep or replace.
Unify with pinned transclusions/pipelines; document markitect-tool gap and
point at cross-repo proposal.
This commit is contained in:
tegwick 2026-08-13 00:19:54 +02:00
parent e2aa4045f4
commit f6c9756b26
5 changed files with 312 additions and 3 deletions

View file

@ -170,9 +170,29 @@ Notes:
UI: per-field overflow (✎ edit · ↻ regenerate · 🔒 lock) on cards and page chrome — unobtrusive, always available.
### Staleness (optional, unlocked derived only)
### Staleness and alternatives (default: badge + explicit choice)
If `source_hash` ≠ current body hash, UI may show “metadata may be outdated” and offer regenerate — **never** auto-regenerate locked or `user` fields without consent. Policy for `derived` + stale can be: badge only (default) or auto-refresh if product later opts in.
If `source_hash` ≠ current body/deps hash (or recipe version policy says so):
1. Show **May be stale** on the field (and optionally on the card).
2. **Never** auto-overwrite locked or `user` values; do not auto-overwrite
unlocked `derived` without consent (default).
3. Primary actions from the badge:
- **Generate updated version** → compute **alternative** (side-by-side with **current**)
- **Keep current** → dismiss compare; optional **ack** (update fingerprint only, clear badge until inputs change again)
- **Use alternative****replace** stored value with alternative; refresh hash/timestamps; state → `derived`
- **Edit** / **Lock** as usual
```text
[May be stale]
→ Generate updated version
Current | Alternative
[ Keep current ] [ Use alternative ] [ Cancel ]
```
This is the same interaction grammar as for **pinned includes and pipeline
blocks** — see `stale-derived-content.md` and markitect-tool proposal
`proposed-stale-derived-and-include-pinning.md`.
---