feat(mcp): define explicit active-blocker semantics for observation consumers
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start by locating the MCP observation tools, response types, and existing contract tests; the issue does not name specific files or entry points. Read how observations are represented and returned, then identify where a documented active or resolved blocker signal could fit. Done means the contract is documented and tests show that explicit active blockers are reported while historical text mentioning “blocked” is not.
Written by the indexing model from the issue text.
Description
Existing Issue Search
- I searched existing issues and will add evidence to a canonical tracker when applicable.
🔍 Observed Consequence
Observation consumers do not have a documented, machine-readable contract for distinguishing an active blocker from historical prose that merely mentions blocking.
In a Pi/Gentle Shell status integration, a completed architecture observation and a discovery observation containing the word blocked were both reported as active blockers. The sidebar showed Blockers · 2 and the host status showed 2 blocked, even though the tracked ODD feature was completed and no active blocker existed.
This makes blocker counts dependent on each client's text-matching heuristics. Historical summaries, completed feature records, and diagnostic notes can therefore become false active blockers.
💡 Desired Outcome
Engram provides one authoritative structured signal for active blockers, so consumers can render blocker counts without scanning arbitrary titles or content.
Historical observations should remain searchable, but words such as blocked, waiting for, or depends on inside completed or documentary records should not make those records active blockers.
📦 Affected Area
MCP Server (tools, transport)
Release Context
Engram 3.6.0 and current main
🔄 Workarounds and Constraints
A consumer can restrict its count to observations whose type is exactly blocker, but the current public contract does not define whether that type alone means active, how a blocker is resolved, or whether another structured field should be authoritative. Free-text inference is unsafe because observation content intentionally preserves historical context.
📎 Additional Context
Proposed contract for maintainer approval:
- Define blockers as explicit structured state, never as a match against arbitrary title or content text.
- Expose active versus resolved blocker state through the MCP observation response, a documented canonical type/lifecycle rule, or a dedicated filtered query.
- Preserve existing observations and search behavior; this proposal should not delete or rewrite historical memory.
- Add contract tests proving that completed
architecture,discovery,bugfix,decision, andsession_summaryobservations may mentionblockedwithout becoming active blockers, while an explicit active blocker remains visible. - Document the rule for Pi, OpenCode, and other observation consumers so independent integrations produce consistent counts.
The immediate downstream integration can stop using text heuristics, but an upstream contract would prevent each client from inventing incompatible blocker semantics.
- Dominant language
- Go
- Stars
- 7.1k
- Forks
- 729
- Avg merge
- 10h 51m
- Merged PRs (30d)
- 277
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Gentleman-Programming/engram
-
status:needs-review
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Gentleman-Programming/engram#2065 · 1 comment ·
Maintainers usually reply within 1 day
-
feat(cli): run engram serve in the background as a daemonPossibly taken A pull request linked to this issue is open or already merged. Openstatus:needs-review type:feature
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Gentleman-Programming/engram#2228 · 1 comment ·
Maintainers usually reply within 1 day
-
status:needs-review type:feature
Difficulty 4/5 3-5 days Newbie friendliness 22/100
Gentleman-Programming/engram#2203 · 1 comment ·
Maintainers usually reply within 1 day
-
feat(store): reduce isolated test fixture startup costPossibly taken @dnlrsls claimed this 3 days ago. Openstatus:approved type:feature
Gentleman-Programming/engram#2202 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
status:needs-review type:question
Difficulty 5/5 Over a week Newbie friendliness 20/100
Gentleman-Programming/engram#2201 · 3 comments ·
Maintainers usually reply within 1 day
All issues in Gentleman-Programming/engram
Similar issues
-
date_time, url_encode, html_escape, to_unix_time, contains_all and contains_any panic when called without argumentsPossibly taken @antcybersec claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
projectdiscovery/dsl#372 ·
Maintainers usually reply within 1 day
-
blocked-needs-validation
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
projectcapsule/capsule#2265 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
JuliusBrussee/caveman#1449 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
bot-found bug priority: P3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
madenvel/KalinkaPlayer#498 ·