Suggestions
One card per learned proposal, with level, evidence, Accept, Reject and Snooze, and a history of decided suggestions.
What it is
#/suggestions shows every Inbox message of kind proposal as a card: open ones first (newest first), then history (newest decision first).
Why it exists
A learned change needs a clear yes or no with the evidence next to it. Putting proposals on their own page keeps them from getting lost among matches and alerts.
How it works
Each card shows the title and why (as text), the level label (“L1 setting”, or “L2 definition, opens a PR”), the signal and the evidence count.
| Action | Writes |
|---|---|
| Accept (L1 only) | Applies the item to the setting as it is now in settings/<producer>, then decisions/<messageId> {decision: "accept", key, at, by} |
| Reject | decisions/<messageId> {decision: "reject", key, at, by} |
| Snooze | decisions/<messageId> {decision: "snooze", key, until, at, by}, 7 days |
L2 and L3 cards offer Reject and Snooze only: “this change opens a PR; Accept writes no setting”. Opening the PR is a follow-up; today the card records the decision only.
Refusals shown on the card:
- “this proposal names no setting or no new value”
- “this would leave an include list empty, so it would match nothing”
A snooze whose until has passed reopens the card. With nothing open: “No suggestions waiting.”
Since 0.5.0: Suggestions become an Inbox tab (
#/suggestionsstill works), and each list setting on Settings shows its own suggestions inline, with the same actions.
Worked example
The card “Add hydrogen to title_keywords” shows L1 setting, uncaptured_term, 5 of 6. The person accepts. settings/hiring-signals values.title_keywords gains hydrogen, and the card moves to history as Accepted.
Common pitfalls
- Accepting after someone edited the setting. Accept applies the one item to the current value, not the stale
to, so the other edit is kept. - Rejecting to “try again later”. That blocks the key for
cooldownDays. Snooze instead.