Skip to content

Main sync: X02 S6 corpus rev 2 (observation-envelope canonical shape + dash goldens) - #10

Merged
im-tyler merged 2 commits into
mainfrom
sync/main-20260923c
Sep 23, 2026
Merged

im-tyler merged 2 commits into
mainfrom
sync/main-20260923c

Conversation

@im-tyler

Copy link
Copy Markdown
Contributor

Mirror sync from Forgejo main (f305c45..c413685). Same commits, same tree.

…int at add, preserved by rename/update/re-add)

servers.yml records gain an id (srv-<16hex>, crypto/rand), minted once at
server add for genuinely new entries only. RenameServer/UpdateServer carry
the whole entry so preservation is structural. AddServer's upsert preserves
the existing id — and deliberately leaves legacy id-less entries id-less:
minting there would silently re-key dash's name-hash fallback identity
underneath live references (X02 ADR §1.3's silent-re-key prohibition).
Legacy servers keep working through dash's fallback; adoption stays the
consumer's explicit decision.

Pinned: mint shape + uniqueness, re-add preserves id, legacy stays id-less
on upsert, rename/update preserve id byte-identical.
…e §2.4 canonical shape + dash-generated goldens (corpus rev 2)

Schema now carries the adopted D13 form (resource{type,id}, last_success_at,
collected_at, freshness tri-state fresh|stale|unknown, error, source,
last_known{server,host,apps}); the S2 skeleton's status-enum draft is
corrected before any consumer existed. Fixtures generated from teploy-dash's
real constructors via its contracts golden test
(teploy-dash internal/server/observation_contracts_test.go): fresh, stale,
unknown-unreachable, and unreachable-last-known (the rule-3 merge — a failed
probe keeps the previous payload by id; freshness is last-success age, never
the probe outcome — pinned stale-reading in the same fixture).
@im-tyler
im-tyler merged commit f09770d into main Sep 23, 2026
1 check passed
@im-tyler
im-tyler deleted the sync/main-20260923c branch September 23, 2026 20:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant