mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-11 03:09:57 +00:00
ci: second review pass — recurse examples, reject duplicate exceptions
Six more findings from CodeRabbit and Copilot on #934. All valid; four were
my own docs lagging the write-checking change in d0626f5.
check_forward() now discovers example packs recursively, so a pack nested
under examples/<group>/ can't slip past the "every example pack" contract.
Taken WITHOUT the suggested is_file() filter, which would have broken it: a
feedpak is dual-form — a zip (foo.feedpak) or a directory (foo.feedpak/) —
and the spec's own examples ship as directories, so is_file() would have
matched zero packs. Suffix matching covers both forms.
load_exceptions() rejects duplicate keys instead of silently keeping the
last one, which would quietly retarget the tracking issue for a piece of
debt this file exists to track.
The sloppak import is wrapped so a missing dependency produces a CI-legible
::error:: rather than a bare traceback.
Docs caught up with the code: the exceptions file header, its stale-entry
rule, and the changelog all said "reads" when the gate checks reads AND
writes.
Signed-off-by: topkoa <topkoa@gmail.com>
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
# Manifest keys core reads that the feedpak spec does not (yet) define.
|
||||
# Manifest keys core reads OR WRITES that the feedpak spec does not (yet) define.
|
||||
#
|
||||
# Both directions are gated, and both are allowlisted here. A key core *writes*
|
||||
# (`manifest["k"] = v`) is spec surface pointed outward — it lands in every pack
|
||||
# we emit — so an undeclared one needs an entry here just as much as one core
|
||||
# reads.
|
||||
#
|
||||
# This file exists so the spec-conformance gate (tools/check_spec_conformance.py)
|
||||
# can be honest instead of being switched off. A gate with no legitimate way to
|
||||
@@ -10,8 +15,10 @@
|
||||
# - Every entry needs a tracking issue. No issue, no exception.
|
||||
# - Entries are debt, not policy. The fix is to land the key in the spec
|
||||
# (github.com/got-feedback/feedpak-spec) and delete the entry.
|
||||
# - One entry per key. A duplicate is an error, not a last-one-wins.
|
||||
# - The gate fails if an entry goes stale — i.e. the spec caught up, or core
|
||||
# stopped reading the key. The allowlist must never become a hiding place.
|
||||
# no longer reads or writes the key. The allowlist must never become a
|
||||
# hiding place.
|
||||
#
|
||||
# For a key that is genuinely experimental and not yet ready for the spec,
|
||||
# prefer the reserved `x-` prefix (e.g. `x-my_new_key`) over an exception: the
|
||||
|
||||
Reference in New Issue
Block a user