https://github.com/Sawaiz-zip/spec-guard
· scanned 2026-06-16 00:03 UTC (2 months, 3 weeks ago)
26 raw signals (0 security + 26 graph)
Last scanned 2 months, 3 weeks ago · v1 · 26 actionable findings from 1 signal source. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 639 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
load_event |
software | healthy | tests/test_ci.py:22 |
setup_configured_repo |
software | healthy | tests/test_ci.py:27 |
test_typo_fix_exits_zero_with_no_annotations |
software | healthy | tests/test_ci.py:45 |
test_review_event_handled_identically |
software | healthy | tests/test_ci.py:60 |
test_scope_change_blocks_with_error_annotation |
software | healthy | tests/test_ci.py:69 |
test_scope_change_without_roles_warns_and_passes |
software | healthy | tests/test_ci.py:92 |
test_pr_cannot_rewrite_the_rules_it_is_judged_by |
software | healthy | tests/test_ci.py:112 |
test_pr_cannot_loosen_its_own_scope_lock |
software | healthy | tests/test_ci.py:138 |
test_fork_pr_skips_with_warning |
software | healthy | tests/test_ci.py:164 |
test_no_specguard_dir_passes_with_setup_notice |
software | healthy | tests/test_ci.py:174 |
test_malformed_lock_exits_two_with_error |
software | healthy | tests/test_ci.py:187 |
test_no_watched_files_changed_passes |
software | healthy | tests/test_ci.py:201 |
roles |
software | healthy | tests/test_roles.py:17 |
test_exact_match |
software | healthy | tests/test_roles.py:33 |
test_wildcard_match |
software | healthy | tests/test_roles.py:37 |
test_most_specific_rule_wins |
software | healthy | tests/test_roles.py:41 |
test_directory_glob |
software | healthy | tests/test_roles.py:46 |
test_no_match |
software | healthy | tests/test_roles.py:50 |
test_resolve_roles |
software | healthy | tests/test_roles.py:55 |
test_wildcard_membership |
software | healthy | tests/test_roles.py:63 |
test_member_authorized |
software | healthy | tests/test_roles.py:82 |
test_non_member_blocked |
software | healthy | tests/test_roles.py:85 |
test_unruled_path_always_authorized |
software | healthy | tests/test_roles.py:88 |
test_approver_role_for_ruled_path |
software | healthy | tests/test_roles.py:93 |
test_unknown_role_in_edit_rule_raises |
software | healthy | tests/test_roles.py:105 |
test_unknown_role_in_approve_rule_raises |
software | healthy | tests/test_roles.py:114 |
test_missing_roles_file_is_solo_mode |
software | healthy | tests/test_roles.py:123 |
test_valid_roles_file_loads |
software | healthy | tests/test_roles.py:127 |
__init__ |
software | healthy | tests/conftest.py:116 |
parse |
software | healthy | tests/conftest.py:50 |
call_count |
software | healthy | tests/conftest.py:126 |
_handle_parse |
software | healthy | tests/conftest.py:80 |
_extract_file_path |
software | healthy | tests/conftest.py:98 |
classify |
software | healthy | tests/conftest.py:129 |
_additive |
software | healthy | tests/conftest.py:142 |
make_classification |
software | healthy | tests/conftest.py:153 |
sample_lock |
software | healthy | tests/conftest.py:177 |
sample_config |
software | healthy | tests/conftest.py:186 |
sample_roles |
software | healthy | tests/conftest.py:191 |
pr_context |
software | healthy | tests/conftest.py:207 |
fake_client |
software | healthy | tests/conftest.py:219 |
git |
software | healthy | tests/conftest.py:234 |
write |
software | healthy | tests/conftest.py:240 |
delete |
software | healthy | tests/conftest.py:245 |
commit_all |
software | healthy | tests/conftest.py:248 |
git_repo |
software | healthy | tests/conftest.py:255 |
make_pr_event |
software | healthy | tests/conftest.py:270 |
write_event |
software | healthy | tests/conftest.py:300 |
ci_env |
software | healthy | tests/conftest.py:305 |
seeded |
software | healthy | tests/test_localcheck.py:20 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
action.yml |
software | healthy | action.yml |
SPECGUARD_PRODUCT_SPEC.md |
software | healthy | SPECGUARD_PRODUCT_SPEC.md |
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
pyproject.toml |
software | healthy | pyproject.toml |
LICENSE |
software | healthy | LICENSE |
.pre-commit-hooks.yaml |
software | healthy | .pre-commit-hooks.yaml |
test_ci.py |
software | healthy | tests/test_ci.py |
test_roles.py |
software | healthy | tests/test_roles.py |
conftest.py |
software | healthy | tests/conftest.py |
test_localcheck.py |
software | healthy | tests/test_localcheck.py |
test_config.py |
software | healthy | tests/test_config.py |
test_gitdiff.py |
software | healthy | tests/test_gitdiff.py |
test_cli.py |
software | healthy | tests/test_cli.py |
test_classifier.py |
software | healthy | tests/test_classifier.py |
test_providers.py |
software | healthy | tests/test_providers.py |
test_engine.py |
software | healthy | tests/test_engine.py |
test_mcp_server.py |
software | healthy | tests/test_mcp_server.py |
test_parity.py |
software | healthy | tests/test_parity.py |
test_approvals.py |
software | healthy | tests/test_approvals.py |
pr_typo_fix_review.json |
software | healthy | tests/fixtures/events/pr_typo_fix_review.json |
pr_scope_change.json |
software | healthy | tests/fixtures/events/pr_scope_change.json |
pr_fork.json |
software | healthy | tests/fixtures/events/pr_fork.json |
pr_typo_fix.json |
software | healthy | tests/fixtures/events/pr_typo_fix.json |
pr_scope_change_review.json |
software | healthy | tests/fixtures/events/pr_scope_change_review.json |
expected.json |
software | healthy | tests/fixtures/corpus/15_tighten_goal_wording/expected.json |
new.md |
software | healthy | tests/fixtures/corpus/15_tighten_goal_wording/new.md |
old.md |
software | healthy | tests/fixtures/corpus/15_tighten_goal_wording/old.md |
scope.json |
software | healthy | tests/fixtures/corpus/15_tighten_goal_wording/scope.json |
expected.json |
software | healthy | tests/fixtures/corpus/24_mixed_typo_plus_scope/expected.json |
new.md |
software | healthy | tests/fixtures/corpus/24_mixed_typo_plus_scope/new.md |
old.md |
software | healthy | tests/fixtures/corpus/24_mixed_typo_plus_scope/old.md |
scope.json |
software | healthy | tests/fixtures/corpus/24_mixed_typo_plus_scope/scope.json |
expected.json |
software | healthy | tests/fixtures/corpus/12_add_faq_excluding_topic/expected.j… |
new.md |
software | healthy | tests/fixtures/corpus/12_add_faq_excluding_topic/new.md |
old.md |
software | healthy | tests/fixtures/corpus/12_add_faq_excluding_topic/old.md |
scope.json |
software | healthy | tests/fixtures/corpus/12_add_faq_excluding_topic/scope.json |
expected.json |
software | healthy | tests/fixtures/corpus/02_wording_clarification/expected.json |
new.md |
software | healthy | tests/fixtures/corpus/02_wording_clarification/new.md |
old.md |
software | healthy | tests/fixtures/corpus/02_wording_clarification/old.md |
scope.json |
software | healthy | tests/fixtures/corpus/02_wording_clarification/scope.json |
expected.json |
software | healthy | tests/fixtures/corpus/16_saas_pricing_section/expected.json |
new.md |
software | healthy | tests/fixtures/corpus/16_saas_pricing_section/new.md |
old.md |
software | healthy | tests/fixtures/corpus/16_saas_pricing_section/old.md |
scope.json |
software | healthy | tests/fixtures/corpus/16_saas_pricing_section/scope.json |
expected.json |
software | healthy | tests/fixtures/corpus/14_add_install_instructions/expected.… |
new.md |
software | healthy | tests/fixtures/corpus/14_add_install_instructions/new.md |
old.md |
software | healthy | tests/fixtures/corpus/14_add_install_instructions/old.md |
scope.json |
software | healthy | tests/fixtures/corpus/14_add_install_instructions/scope.json |
expected.json |
software | healthy | tests/fixtures/corpus/07_clarify_oauth_flow/expected.json |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestAdditivePath |
software | healthy | tests/test_ci.py:44 |
TestScopeChangePath |
software | healthy | tests/test_ci.py:68 |
TestSoloModePath |
software | healthy | tests/test_ci.py:91 |
TestGovernanceConfigFromBase |
software | healthy | tests/test_ci.py:111 |
TestForkPath |
software | healthy | tests/test_ci.py:163 |
TestUnconfiguredAndErrors |
software | healthy | tests/test_ci.py:173 |
TestGlobMatching |
software | healthy | tests/test_roles.py:21 |
TestMembership |
software | healthy | tests/test_roles.py:54 |
TestEditAuthorization |
software | healthy | tests/test_roles.py:74 |
TestApproverRoles |
software | healthy | tests/test_roles.py:92 |
TestRolesFileValidation |
software | healthy | tests/test_roles.py:104 |
FakeParsedResponse |
software | healthy | tests/conftest.py:33 |
_RecordedCall |
software | healthy | tests/conftest.py:41 |
_FakeMessages |
software | healthy | tests/conftest.py:46 |
FakeAnthropicClient |
software | healthy | tests/conftest.py:54 |
FakeAdapter |
software | healthy | tests/conftest.py:108 |
GitRepo |
software | healthy | tests/conftest.py:229 |
CIEnvironment |
software | healthy | tests/conftest.py:292 |
TestSnapshots |
software | healthy | tests/test_localcheck.py:27 |
TestBaselineGovernance |
software | healthy | tests/test_localcheck.py:86 |
TestLock |
software | healthy | tests/test_config.py:30 |
TestConfig |
software | healthy | tests/test_config.py:65 |
TestOpusGuardrail |
software | healthy | tests/test_config.py:101 |
TestFrameworkDetection |
software | healthy | tests/test_config.py:136 |
TestPathMatching |
software | healthy | tests/test_config.py:149 |
TestCheck |
software | healthy | tests/test_cli.py:43 |
TestInit |
software | healthy | tests/test_cli.py:127 |
TestHookNeverBlocks |
software | healthy | tests/test_cli.py:217 |
SlowAdapter |
software | healthy | tests/test_cli.py:265 |
TestPromptAssembly |
software | healthy | tests/test_classifier.py:27 |
TestClassify |
software | healthy | tests/test_classifier.py:71 |
TestFactory |
software | healthy | tests/test_providers.py:29 |
TestEnvVarMapping |
software | healthy | tests/test_providers.py:46 |
TestConfigValidation |
software | healthy | tests/test_providers.py:60 |
TestGuardrailAcrossProviders |
software | healthy | tests/test_providers.py:81 |
TestAdditive |
software | healthy | tests/test_engine.py:23 |
TestScopeChange |
software | healthy | tests/test_engine.py:84 |
TestProtectedViolation |
software | healthy | tests/test_engine.py:177 |
TestSoloMode |
software | healthy | tests/test_engine.py:228 |
TestOnErrorPolicy |
software | healthy | tests/test_engine.py:272 |
TestCheckProposedChange |
software | healthy | tests/test_mcp_server.py:27 |
TestFrameTools |
software | healthy | tests/test_mcp_server.py:119 |
TestFetchApprovals |
software | healthy | tests/test_approvals.py:28 |
TestQualification |
software | healthy | tests/test_approvals.py:74 |
RecordingClient |
software | healthy | tests/eval/run_eval.py:37 |
ConfigError |
software | healthy | src/specguard/config.py:38 |
ClassifierError |
software | healthy | src/specguard/classifier.py:24 |
_SupportsParse |
software | healthy | src/specguard/classifier.py:28 |
ClassifierAdapter |
software | healthy | src/specguard/classifier.py:217 |
AnthropicAdapter |
software | healthy | src/specguard/classifier.py:230 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
fixtures |
software | healthy | tests/fixtures |
events |
software | healthy | tests/fixtures/events |
corpus |
software | healthy | tests/fixtures/corpus |
15_tighten_goal_wording |
software | healthy | tests/fixtures/corpus/15_tighten_goal_wording |
24_mixed_typo_plus_scope |
software | healthy | tests/fixtures/corpus/24_mixed_typo_plus_scope |
12_add_faq_excluding_topic |
software | healthy | tests/fixtures/corpus/12_add_faq_excluding_topic |
02_wording_clarification |
software | healthy | tests/fixtures/corpus/02_wording_clarification |
16_saas_pricing_section |
software | healthy | tests/fixtures/corpus/16_saas_pricing_section |
14_add_install_instructions |
software | healthy | tests/fixtures/corpus/14_add_install_instructions |
07_clarify_oauth_flow |
software | healthy | tests/fixtures/corpus/07_clarify_oauth_flow |
04_in_scope_detail |
software | healthy | tests/fixtures/corpus/04_in_scope_detail |
13_fix_broken_link |
software | healthy | tests/fixtures/corpus/13_fix_broken_link |
19_add_2fa_plan |
software | healthy | tests/fixtures/corpus/19_add_2fa_plan |
22_domain_shift_analytics |
software | healthy | tests/fixtures/corpus/22_domain_shift_analytics |
10_grammar_fix |
software | healthy | tests/fixtures/corpus/10_grammar_fix |
01_typo_fix |
software | healthy | tests/fixtures/corpus/01_typo_fix |
03_formatting_only |
software | healthy | tests/fixtures/corpus/03_formatting_only |
26_mobile_app_section |
software | healthy | tests/fixtures/corpus/26_mobile_app_section |
11_expand_quality_checks |
software | healthy | tests/fixtures/corpus/11_expand_quality_checks |
21_novel_topic_crypto_wallet |
software | healthy | tests/fixtures/corpus/21_novel_topic_crypto_wallet |
08_add_example_in_scope |
software | healthy | tests/fixtures/corpus/08_add_example_in_scope |
06_typo_multiple |
software | healthy | tests/fixtures/corpus/06_typo_multiple |
23_ml_forecasting |
software | healthy | tests/fixtures/corpus/23_ml_forecasting |
25_streaming_ingestion |
software | healthy | tests/fixtures/corpus/25_streaming_ingestion |
20_sso_active_directory |
software | healthy | tests/fixtures/corpus/20_sso_active_directory |
17_cloud_sync_feature |
software | healthy | tests/fixtures/corpus/17_cloud_sync_feature |
05_adversarial_exclusion_mention |
software | healthy | tests/fixtures/corpus/05_adversarial_exclusion_mention |
18_goal_rewrite_webapp |
software | healthy | tests/fixtures/corpus/18_goal_rewrite_webapp |
09_reorder_sections |
software | healthy | tests/fixtures/corpus/09_reorder_sections |
27_billing_integration |
software | healthy | tests/fixtures/corpus/27_billing_integration |
eval |
software | healthy | tests/eval |
docs |
software | healthy | docs |
.claude |
software | healthy | .claude |
skills |
software | healthy | .claude/skills |
speckit-checklist |
software | healthy | .claude/skills/speckit-checklist |
speckit-constitution |
software | healthy | .claude/skills/speckit-constitution |
speckit-specify |
software | healthy | .claude/skills/speckit-specify |
speckit-agent-context-update |
software | healthy | .claude/skills/speckit-agent-context-update |
speckit-clarify |
software | healthy | .claude/skills/speckit-clarify |
git |
software | healthy | .claude/skills/git |
clean-code |
software | healthy | .claude/skills/clean-code |
speckit-tasks |
software | healthy | .claude/skills/speckit-tasks |
speckit-analyze |
software | healthy | .claude/skills/speckit-analyze |
speckit-plan |
software | healthy | .claude/skills/speckit-plan |
speckit-taskstoissues |
software | healthy | .claude/skills/speckit-taskstoissues |
speckit-implement |
software | healthy | .claude/skills/speckit-implement |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
auth::tests/fixtures/corpus/21_novel_topic_crypto_wallet/sc… |
security | healthy | tests/fixtures/corpus/21_novel_topic_crypto_wallet/scope.js… |
auth::tests/fixtures/corpus/08_add_example_in_scope/expecte… |
security | healthy | tests/fixtures/corpus/08_add_example_in_scope/expected.json |
auth::tests/fixtures/corpus/12_add_faq_excluding_topic/scop… |
security | healthy | tests/fixtures/corpus/12_add_faq_excluding_topic/scope.json |
auth::tests/fixtures/corpus/07_clarify_oauth_flow/expected.… |
security | healthy | tests/fixtures/corpus/07_clarify_oauth_flow/expected.json |
auth::tests/fixtures/corpus/08_add_example_in_scope/scope.j… |
security | healthy | tests/fixtures/corpus/08_add_example_in_scope/scope.json |
auth::tests/fixtures/corpus/20_sso_active_directory/scope.j… |
security | healthy | tests/fixtures/corpus/20_sso_active_directory/scope.json |
auth::.claude/skills/speckit-specify/SKILL.md |
security | healthy | .claude/skills/speckit-specify/SKILL.md |
auth::tests/fixtures/corpus/07_clarify_oauth_flow/scope.json |
security | healthy | tests/fixtures/corpus/07_clarify_oauth_flow/scope.json |
auth::tests/fixtures/corpus/06_typo_multiple/scope.json |
security | healthy | tests/fixtures/corpus/06_typo_multiple/scope.json |
auth::tests/fixtures/corpus/19_add_2fa_plan/scope.json |
security | healthy | tests/fixtures/corpus/19_add_2fa_plan/scope.json |
auth::tests/fixtures/corpus/27_billing_integration/scope.js… |
security | healthy | tests/fixtures/corpus/27_billing_integration/scope.json |
| Label | Layer | Status | Path |
|---|---|---|---|
specguard |
cicd | healthy | .github/workflows/specguard.yml |
reevaluate |
cicd | healthy | .github/workflows/specguard.yml |
tests |
cicd | healthy | .github/workflows/tests.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
postgresql |
data | healthy | tests/fixtures/corpus/15_tighten_goal_wording/scope.json |
redis |
data | healthy | .claude/skills/speckit-specify/SKILL.md |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::specguard |
cicd | healthy | .github/workflows/specguard.yml |
gha::tests |
cicd | healthy | .github/workflows/tests.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-bsqmvtkk |
software | healthy | /tmp/repobility-clone-bsqmvtkk |
| Label | Layer | Status | Path |
|---|---|---|---|
ANTHROPIC_API_KEY |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/957b8529-040c-46a0-bd43-547d090b8cc1/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/957b8529-040c-46a0-bd43-547d090b8cc1/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.