The decisions-guard validator enforced lifecycle metadata but not the **Signals:** line — which is what MemPalace's keyword recall matches on. A record without it ingests with weak recall metadata and yields confident false-negatives for the "MemPalace to find, file to confirm" workflow.
Adds signals to REQUIRED_META (missing/empty **Signals:** now fails like a missing key).
Non-breaking: all 114 active + 2 archive records already carry Signals. Archive records intentionally out of scope.
Tests: _rec() default + missing/empty/present cases (29 pass). Validator green on the real corpus; ruff + pyright clean.
docs/decisions.md header + Enforcement note the requirement and why.
The `decisions-guard` validator enforced lifecycle metadata but not the `**Signals:**` line — which is what MemPalace's keyword recall matches on. A record without it ingests with weak recall metadata and yields confident false-negatives for the "MemPalace to find, file to confirm" workflow.
- Adds `signals` to `REQUIRED_META` (missing/empty `**Signals:**` now fails like a missing key).
- Non-breaking: all 114 active + 2 archive records already carry Signals. Archive records intentionally out of scope.
- Tests: `_rec()` default + missing/empty/present cases (29 pass). Validator green on the real corpus; ruff + pyright clean.
- `docs/decisions.md` header + Enforcement note the requirement and why.
Independent cold review: MERGEABLE (non-vacuity empirically confirmed).
fixes #545
The decisions-guard validator enforced lifecycle metadata (key/status/since/
supersedes/superseded-by + reciprocal links) but not the **Signals:** line —
which is exactly what MemPalace's keyword recall matches on. A record without
it ingests with weak recall metadata and produces confident false-negatives
for the "MemPalace to find, file to confirm" retrieval workflow.
Add "signals" to REQUIRED_META so a migrated record with a missing or empty
**Signals:** line fails the same way a missing key does. All 114 active + 2
archive records already carry a Signals line, so this is non-breaking on the
current corpus. Archive records are intentionally out of scope (recall targets
the active corpus).
- scripts/decisions_validate.py: signals in REQUIRED_META (+ rationale comment)
- scripts/tests/test_decisions_validate.py: _rec() default + missing/empty/present cases
- docs/decisions.md: header + Enforcement note the requirement and why
fixes#545
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Independent cold review of the pushed diff: MERGEABLE. signals required for active/migrated records only; attribute/label names match; whitespace-only and missing both caught; new tests non-vacuous (empirically confirmed by toggling REQUIRED_META); archive exclusion is intended scope; docs accurate.
Independent cold review of the pushed diff: MERGEABLE. signals required for active/migrated records only; attribute/label names match; whitespace-only and missing both caught; new tests non-vacuous (empirically confirmed by toggling REQUIRED_META); archive exclusion is intended scope; docs accurate.
Review-verdict: MERGEABLE @ 0ef053a209dc5c5ce4cdf7aba3944923c4461842
timothy
merged commit 04d3eb2dbc into main2026-07-21 20:58:04 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The
decisions-guardvalidator enforced lifecycle metadata but not the**Signals:**line — which is what MemPalace's keyword recall matches on. A record without it ingests with weak recall metadata and yields confident false-negatives for the "MemPalace to find, file to confirm" workflow.signalstoREQUIRED_META(missing/empty**Signals:**now fails like a missing key)._rec()default + missing/empty/present cases (29 pass). Validator green on the real corpus; ruff + pyright clean.docs/decisions.mdheader + Enforcement note the requirement and why.Independent cold review: MERGEABLE (non-vacuity empirically confirmed).
fixes #545
Independent cold review of the pushed diff: MERGEABLE. signals required for active/migrated records only; attribute/label names match; whitespace-only and missing both caught; new tests non-vacuous (empirically confirmed by toggling REQUIRED_META); archive exclusion is intended scope; docs accurate.
Review-verdict: MERGEABLE @
0ef053a209