Add SafeSkill security badge (91/100 — Verified Safe) - #3
Open
OyaAIProd wants to merge 1 commit into
Open
Conversation
Signed-off-by: SafeSkill Scanner <mk@oya.ai>
tlemmons
added a commit
that referenced
this pull request
Aug 9, 2026
…s for change_status
Two silent symptoms, ONE root cause, reported by legacy-team (Tom-relayed) and
verified at source: a malformed emission serialized 'project' INTO the details
body, so the server never received it. Consequences measured live:
- doc filed to shared_patterns with project:'' despite project='nimbus'
(learning_f588ce30c5b5c9a4, learning_e15138d7edc3af27 both confirmed)
- project-scoped change_status then failed with an error indistinguishable
from a bad doc id - they nearly concluded their own id was wrong
- the dangling-ref advisory narrowed to shared-only and false-fired on every
project-scoped id in the same write. Reproduced: project='nimbus' -> 0
unresolved; project=None -> 3 false positives on ids that exist.
Their hypothesis that #1 and #3 were the same defect was correct.
FIXES:
- record_learning recovers a swallowed 'project' and files where the caller
intended, warning loudly that the client is malforming the call. Recovery
beats define_spec-style rejection here: no work lost, no retry, and the doc
lands correctly. An explicit project argument always wins over a recovered one.
- change_status LOCATE-ON-MISS: the server can see the doc in another
collection, so the error now names it ('found_in') and says how to retry,
instead of leaving scope-vs-missing to be inferred.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tlemmons
added a commit
that referenced
this pull request
Aug 11, 2026
…e — API can no longer modify code-managed globals Global rules live in GLOBAL_GUIDELINES (global_guidelines.py), re-seeded every boot. A live memory_guidelines(set/delete) on a global row used to succeed and then vanish silently at the next restart. Now it returns a hard rejection naming the code source of truth. delete guards on the TARGET row's scope (not the default-global scope param) so project-rule deletes still work. Boot seeder writes db.guidelines directly, not through this tool, so it is unaffected. Enforces Tom's 2026-08-11 governance rule (learning_66a2a5d8bb8f13c1); closes the rejection-signal ask (state:memory decisions #2/#3). +5 regression tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✅ SafeSkill Security Scan Results
Top Findings
docs/WORKED_EXAMPLE.md:181)contrib/templates/COORDINATOR_CLAUDE.md:26)pyproject.toml:0)View full report on SafeSkill
About SafeSkill
SafeSkill is a free, open-source security scanner for AI tools, MCP servers, and Claude Code skills. We scan for code exploits, prompt injection, and data exfiltration risks.
False positive? We take accuracy seriously. If any finding above is incorrect, please open an issue and we will fix it immediately.