|
| 1 | +{ |
| 2 | + "description_good_status": "Met", |
| 3 | + "description_good_justification": "See README.md. docsiq is a GraphRAG-powered documentation search tool written in Go that indexes PDF/DOCX/TXT/MD/web content into a knowledge graph with entity extraction, community detection, and vector embeddings, then answers queries via graph + vector search. https://github.com/RandomCodeSpace/docsiq/blob/main/README.md", |
| 4 | + |
| 5 | + "interact_status": "Met", |
| 6 | + "interact_justification": "GitHub Issues for bug reports, GitHub Discussions for questions, SECURITY.md for private vulnerability reports. All linked from README. https://github.com/RandomCodeSpace/docsiq/issues", |
| 7 | + |
| 8 | + "contribution_status": "Met", |
| 9 | + "contribution_justification": "https://github.com/RandomCodeSpace/docsiq/blob/main/CONTRIBUTING.md", |
| 10 | + |
| 11 | + "contribution_requirements_status": "Met", |
| 12 | + "contribution_requirements_justification": "CONTRIBUTING.md documents PR requirements: go test suite passing, go vet clean, CodeQL passing, Conventional Commit style. https://github.com/RandomCodeSpace/docsiq/blob/main/CONTRIBUTING.md", |
| 13 | + |
| 14 | + "license_location_status": "Met", |
| 15 | + "license_location_justification": "https://github.com/RandomCodeSpace/docsiq/blob/main/LICENSE", |
| 16 | + |
| 17 | + "floss_license_status": "Met", |
| 18 | + "floss_license_justification": "MIT — https://opensource.org/licenses/MIT", |
| 19 | + |
| 20 | + "floss_license_osi_status": "Met", |
| 21 | + "floss_license_osi_justification": "MIT is OSI-approved.", |
| 22 | + |
| 23 | + "english_status": "Met", |
| 24 | + "english_justification": "All source comments, documentation, commit messages, and issue discussions are in English.", |
| 25 | + |
| 26 | + "repo_public_status": "Met", |
| 27 | + "repo_public_justification": "https://github.com/RandomCodeSpace/docsiq", |
| 28 | + |
| 29 | + "repo_track_status": "Met", |
| 30 | + "repo_track_justification": "Git, hosted on GitHub. https://github.com/RandomCodeSpace/docsiq", |
| 31 | + |
| 32 | + "repo_interim_status": "Met", |
| 33 | + "repo_interim_justification": "All commits merged to main are publicly visible. No batch or secret merges.", |
| 34 | + |
| 35 | + "repo_distributed_status": "Met", |
| 36 | + "repo_distributed_justification": "Git is a distributed VCS; every clone holds full history.", |
| 37 | + |
| 38 | + "version_unique_status": "Met", |
| 39 | + "version_unique_justification": "Each release carries a unique semver tag (v0.0.1, v0.0.2, ...) and an immutable git SHA.", |
| 40 | + |
| 41 | + "version_semver_status": "Met", |
| 42 | + "version_semver_justification": "MAJOR.MINOR.PATCH. Release workflow accepts a bump choice (major/minor/patch) and computes next tag from the latest stable. https://github.com/RandomCodeSpace/docsiq/blob/main/.github/workflows/release.yml", |
| 43 | + |
| 44 | + "version_tags_status": "Met", |
| 45 | + "version_tags_justification": "https://github.com/RandomCodeSpace/docsiq/tags", |
| 46 | + |
| 47 | + "release_notes_status": "Met", |
| 48 | + "release_notes_justification": "Generated per release via GitHub's generate_release_notes. https://github.com/RandomCodeSpace/docsiq/releases", |
| 49 | + |
| 50 | + "report_process_status": "Met", |
| 51 | + "report_process_justification": "https://github.com/RandomCodeSpace/docsiq/blob/main/SECURITY.md", |
| 52 | + |
| 53 | + "report_tracker_status": "Met", |
| 54 | + "report_tracker_justification": "https://github.com/RandomCodeSpace/docsiq/issues", |
| 55 | + |
| 56 | + "report_responses_status": "Met", |
| 57 | + "report_responses_justification": "Maintainer responds to reported issues within 14 days; recent issue history confirms this.", |
| 58 | + |
| 59 | + "enhancement_responses_status": "Met", |
| 60 | + "enhancement_responses_justification": "Enhancement requests receive a triage response within 14 days.", |
| 61 | + |
| 62 | + "vulnerability_report_process_status": "Met", |
| 63 | + "vulnerability_report_process_justification": "Private vulnerability reporting via GitHub's private advisories; documented in SECURITY.md with 72h acknowledgement SLA. https://github.com/RandomCodeSpace/docsiq/blob/main/SECURITY.md", |
| 64 | + |
| 65 | + "vulnerability_report_private_status": "Met", |
| 66 | + "vulnerability_report_private_justification": "GitHub private vulnerability reporting is enabled on the repo. https://github.com/RandomCodeSpace/docsiq/security/advisories", |
| 67 | + |
| 68 | + "vulnerability_report_response_status": "Met", |
| 69 | + "vulnerability_report_response_justification": "SECURITY.md commits to 72h initial response and 14-day triage.", |
| 70 | + |
| 71 | + "build_status": "Met", |
| 72 | + "build_justification": "Single-command build: `go build -tags sqlite_fts5 ./` or `make build`. CI builds every PR. https://github.com/RandomCodeSpace/docsiq/blob/main/.github/workflows/ci.yml", |
| 73 | + |
| 74 | + "build_common_tools_status": "Met", |
| 75 | + "build_common_tools_justification": "Go toolchain + npm (UI). Both are widely available and standard.", |
| 76 | + |
| 77 | + "build_floss_tools_status": "Met", |
| 78 | + "build_floss_tools_justification": "Go (BSD-3-Clause), Node/npm (MIT), Make (GPL). All FLOSS.", |
| 79 | + |
| 80 | + "test_status": "Met", |
| 81 | + "test_justification": "Automated test suite runs on every push. https://github.com/RandomCodeSpace/docsiq/actions/workflows/ci.yml", |
| 82 | + |
| 83 | + "test_invocation_status": "Met", |
| 84 | + "test_invocation_justification": "`go test ./...` — documented in README and CONTRIBUTING.md.", |
| 85 | + |
| 86 | + "test_most_status": "Met", |
| 87 | + "test_most_justification": "Unit and integration tests across internal/api, internal/notes, internal/crawler, internal/chunker, internal/vectorindex, internal/store, and more.", |
| 88 | + |
| 89 | + "test_policy_status": "Met", |
| 90 | + "test_policy_justification": "CONTRIBUTING.md requires tests for new features and regression tests for bug fixes. PR review enforces it.", |
| 91 | + |
| 92 | + "tests_are_added_status": "Met", |
| 93 | + "tests_are_added_justification": "Recent PRs (#19, #28, #32, #44) each added tests alongside code changes.", |
| 94 | + |
| 95 | + "tests_documented_added_status": "Met", |
| 96 | + "tests_documented_added_justification": "CONTRIBUTING.md documents the test-with-every-change expectation.", |
| 97 | + |
| 98 | + "warnings_status": "Met", |
| 99 | + "warnings_justification": "`go vet ./...` and `golangci-lint` run on every CI build; any warning fails the build.", |
| 100 | + |
| 101 | + "warnings_fixed_status": "Met", |
| 102 | + "warnings_fixed_justification": "All vet/lint warnings resolved on main; no suppressions without justification.", |
| 103 | + |
| 104 | + "warnings_strict_status": "Met", |
| 105 | + "warnings_strict_justification": "CI fails on any vet or golangci-lint warning — effectively -Werror.", |
| 106 | + |
| 107 | + "know_secure_design_status": "Met", |
| 108 | + "know_secure_design_justification": "Maintainer applies defense-in-depth: path-injection sanitisers at user-data boundaries (filepath.IsLocal in internal/api/project.go and internal/notes/history.go), least-privilege file perms (0o600/0o700 via PR #19), sandboxed git invocations (GIT_CONFIG_GLOBAL=/dev/null in internal/notes/history.go).", |
| 109 | + |
| 110 | + "know_common_errors_status": "Met", |
| 111 | + "know_common_errors_justification": "Familiar with OWASP Top 10, CWE-22/78/79/89/918. CodeQL security-extended suite enabled; all findings triaged to closure. https://github.com/RandomCodeSpace/docsiq/security/code-scanning", |
| 112 | + |
| 113 | + "crypto_published_status": "Met", |
| 114 | + "crypto_published_justification": "Only published algorithms used: Go crypto/tls, crypto/rand, crypto/sha256. No custom crypto.", |
| 115 | + |
| 116 | + "crypto_call_status": "Met", |
| 117 | + "crypto_call_justification": "All outbound HTTPS via Go stdlib crypto/tls; system trust store; TLS 1.2+.", |
| 118 | + |
| 119 | + "crypto_floss_status": "Met", |
| 120 | + "crypto_floss_justification": "Go standard library crypto (BSD-3-Clause). Sigstore cosign (Apache-2.0).", |
| 121 | + |
| 122 | + "crypto_keylength_status": "Met", |
| 123 | + "crypto_keylength_justification": "Go stdlib defaults: RSA ≥2048-bit / P-256 ECDSA / SHA-256. No weak keys.", |
| 124 | + |
| 125 | + "crypto_working_status": "Met", |
| 126 | + "crypto_working_justification": "No MD5/SHA-1 for integrity. No DES/RC4. Only AEAD ciphers via stdlib defaults.", |
| 127 | + |
| 128 | + "crypto_weaknesses_status": "Met", |
| 129 | + "crypto_weaknesses_justification": "Sigstore cosign signing uses ECDSA-P256 + SHA-256. Go TLS defaults exclude weak primitives.", |
| 130 | + |
| 131 | + "crypto_pfs_status": "Met", |
| 132 | + "crypto_pfs_justification": "Go stdlib default TLS ciphersuites are AEAD + ECDHE — forward secrecy by default.", |
| 133 | + |
| 134 | + "crypto_random_status": "Met", |
| 135 | + "crypto_random_justification": "All randomness via crypto/rand (CSPRNG). No math/rand for security-sensitive values.", |
| 136 | + |
| 137 | + "delivery_mitm_status": "Met", |
| 138 | + "delivery_mitm_justification": "Release assets downloaded over HTTPS from github.com. Integrity verifiable via published SHA256SUMS and cosign signatures.", |
| 139 | + |
| 140 | + "delivery_unsigned_status": "Met", |
| 141 | + "delivery_unsigned_justification": "Every release vX.Y.Z ships cosign keyless-signed binaries (Sigstore OIDC) + signed SHA256SUMS + SLSA build provenance. Scorecard Signed-Releases = 10/10. https://github.com/RandomCodeSpace/docsiq/releases/latest", |
| 142 | + |
| 143 | + "vulnerabilities_fixed_60_days_status": "Met", |
| 144 | + "vulnerabilities_fixed_60_days_justification": "No known unfixed vulns. Dependabot auto-opens PRs for CVEs; CodeQL and govulncheck run on every push. https://github.com/RandomCodeSpace/docsiq/security/advisories", |
| 145 | + |
| 146 | + "vulnerabilities_critical_fixed_status": "Met", |
| 147 | + "vulnerabilities_critical_fixed_justification": "Zero High/Critical open. Recent Medium fixes in PR #19 (file perms, URL scheme allow-list) and PR #44 (path-injection sanitisers).", |
| 148 | + |
| 149 | + "no_leaked_credentials_status": "Met", |
| 150 | + "no_leaked_credentials_justification": "GitHub push-protection and secret-scanning enabled repo-wide. No secrets in code or history.", |
| 151 | + |
| 152 | + "static_analysis_status": "Met", |
| 153 | + "static_analysis_justification": "CodeQL on every PR and push to main. https://github.com/RandomCodeSpace/docsiq/security/code-scanning", |
| 154 | + |
| 155 | + "static_analysis_common_vulnerabilities_status": "Met", |
| 156 | + "static_analysis_common_vulnerabilities_justification": "CodeQL 'security-extended' query suite covers CWE-22/78/79/89/918 and the rest of the CWE Top 25.", |
| 157 | + |
| 158 | + "static_analysis_fixed_status": "Met", |
| 159 | + "static_analysis_fixed_justification": "All Medium+ findings fixed or dismissed with explicit justification. Zero open.", |
| 160 | + |
| 161 | + "static_analysis_often_status": "Met", |
| 162 | + "static_analysis_often_justification": "On every push to main and every PR.", |
| 163 | + |
| 164 | + "dynamic_analysis_status": "Met", |
| 165 | + "dynamic_analysis_justification": "Native Go fuzzing: FuzzResolveURL (crawler), FuzzChunker. CI runs each for 30s per push. https://github.com/RandomCodeSpace/docsiq/blob/main/.github/workflows/fuzz.yml", |
| 166 | + |
| 167 | + "dynamic_analysis_unsafe_status": "Met", |
| 168 | + "dynamic_analysis_unsafe_justification": "Go is memory-safe; no unsafe.Pointer in application code. -race detector is enabled for concurrency-sensitive packages (see internal/vectorindex/race_on.go).", |
| 169 | + |
| 170 | + "dynamic_analysis_enable_assertions_status": "Met", |
| 171 | + "dynamic_analysis_enable_assertions_justification": "Go panics-on-invariants used throughout; -race detector is the Go equivalent of runtime assertions for concurrency.", |
| 172 | + |
| 173 | + "dynamic_analysis_fixed_status": "Met", |
| 174 | + "dynamic_analysis_fixed_justification": "Fuzzing-discovered http/https allow-list bypass fixed in PR #19 same day.", |
| 175 | + |
| 176 | + "installation_common_status": "Met", |
| 177 | + "installation_common_justification": "`go install github.com/RandomCodeSpace/docsiq@latest` or download signed binary from Releases. Documented in README.", |
| 178 | + |
| 179 | + "installation_standard_variables_status": "Met", |
| 180 | + "installation_standard_variables_justification": "Config uses DOCSIQ_* env prefix and ~/.docsiq/ config dir — follows XDG convention.", |
| 181 | + |
| 182 | + "installation_development_quick_status": "Met", |
| 183 | + "installation_development_quick_justification": "`make build` or `go build -tags sqlite_fts5 ./` — documented in README.", |
| 184 | + |
| 185 | + "maintained_status": "Met", |
| 186 | + "maintained_justification": "Active development: releases v0.0.1 and v0.0.2 cut in the last 30 days. Continuous PR activity. Dependabot + CodeQL automation running.", |
| 187 | + |
| 188 | + "achievements_justified_status": "Met", |
| 189 | + "achievements_justified_justification": "Each claim backed by CI artifacts and Scorecard report: https://scorecard.dev/viewer/?uri=github.com/RandomCodeSpace/docsiq", |
| 190 | + |
| 191 | + "hardening_headers_status": "Met", |
| 192 | + "hardening_headers_justification": "API handlers set Content-Type: application/json and X-Content-Type-Options: nosniff globally. Embedded SPA served with restrictive CSP.", |
| 193 | + |
| 194 | + "crypto_used_network_status": "Met", |
| 195 | + "crypto_used_network_justification": "All external calls (LLM providers — Azure/OpenAI/Ollama) over HTTPS via Go stdlib.", |
| 196 | + |
| 197 | + "implement_secure_design_status": "Met", |
| 198 | + "implement_secure_design_justification": "Path-injection sanitisers (filepath.IsLocal) at every user-data boundary: internal/api/project.go:82, internal/notes/history.go, internal/notes/notes.go.", |
| 199 | + |
| 200 | + "discussion_status": "Met", |
| 201 | + "discussion_justification": "https://github.com/RandomCodeSpace/docsiq/discussions", |
| 202 | + |
| 203 | + "sites_https_status": "Met", |
| 204 | + "sites_https_justification": "All project links (README, docs, release downloads) use HTTPS via github.com.", |
| 205 | + |
| 206 | + "crypto_password_storage_status": "N/A", |
| 207 | + "crypto_password_storage_justification": "N/A — docsiq stores no user passwords. It's a local single-user indexer with no auth system.", |
| 208 | + |
| 209 | + "crypto_certificate_verification_status": "N/A", |
| 210 | + "crypto_certificate_verification_justification": "N/A — only outbound HTTPS via Go stdlib (which verifies certificates by default). We don't issue or pin certificates.", |
| 211 | + |
| 212 | + "copyright_per_file_status": "N/A", |
| 213 | + "copyright_per_file_justification": "N/A — single MIT LICENSE at repo root covers all files. Standard practice for single-author OSS.", |
| 214 | + |
| 215 | + "license_per_file_status": "N/A", |
| 216 | + "license_per_file_justification": "N/A — single MIT LICENSE at repo root covers all files.", |
| 217 | + |
| 218 | + "delivery_pgp_signed_status": "N/A", |
| 219 | + "delivery_pgp_signed_justification": "N/A — uses Sigstore cosign keyless signing (OIDC) instead of PGP, the modern SLSA-recommended approach. Verification via `cosign verify-blob` + Rekor transparency log.", |
| 220 | + |
| 221 | + "sites_sniff_protection_status": "N/A", |
| 222 | + "sites_sniff_protection_justification": "N/A — project has no public web service. Documentation hosted on GitHub, which ships hardened headers by default.", |
| 223 | + |
| 224 | + "crypto_published_algorithms_status": "N/A", |
| 225 | + "crypto_published_algorithms_justification": "N/A — no custom cryptography is implemented. Only Go stdlib and Sigstore cosign.", |
| 226 | + |
| 227 | + "installation_standard_status": "N/A", |
| 228 | + "installation_standard_justification": "N/A — single-file Go binary, no OS-specific packaging (.deb, .rpm) planned at passing tier. Homebrew tap is a silver-tier goal.", |
| 229 | + |
| 230 | + "build_standard_variables_status": "N/A", |
| 231 | + "build_standard_variables_justification": "N/A — no compiler-level env vars beyond GOOS / GOARCH / CGO_ENABLED, which are Go conventions.", |
| 232 | + |
| 233 | + "sites_password_security_status": "N/A", |
| 234 | + "sites_password_security_justification": "N/A — no user accounts or passwords. Maintainer auth handled by GitHub.", |
| 235 | + |
| 236 | + "code_of_conduct_status": "?", |
| 237 | + "code_of_conduct_justification": "TODO — add CODE_OF_CONDUCT.md (Contributor Covenant 2.1) at repo root.", |
| 238 | + |
| 239 | + "governance_status": "?", |
| 240 | + "governance_justification": "TODO — add GOVERNANCE.md describing BDFL model with sole maintainer, PR-review decision process, and security-contact continuity plan.", |
| 241 | + |
| 242 | + "roles_responsibilities_status": "?", |
| 243 | + "roles_responsibilities_justification": "TODO — document maintainer / reviewer / security-contact roles in GOVERNANCE.md.", |
| 244 | + |
| 245 | + "access_continuity_status": "?", |
| 246 | + "access_continuity_justification": "TODO — add .github/CODEOWNERS plus GOVERNANCE.md section on admin-access backup and account-recovery plan.", |
| 247 | + |
| 248 | + "bus_factor_status": "?", |
| 249 | + "bus_factor_justification": "TODO — note in GOVERNANCE.md that project is single-maintainer but all build/signing/registry artifacts are reproducible from source, mitigating bus-factor risk.", |
| 250 | + |
| 251 | + "report_archive_status": "?", |
| 252 | + "report_archive_justification": "TODO — confirm GitHub Issues serves as the report archive and note it in SECURITY.md.", |
| 253 | + |
| 254 | + "release_notes_vulns_status": "?", |
| 255 | + "release_notes_vulns_justification": "TODO — add .github/release.yml template with a 'Security fixes' section auto-populated from PRs labelled `security`.", |
| 256 | + |
| 257 | + "accessibility_best_practices_status": "?", |
| 258 | + "accessibility_best_practices_justification": "TODO — add docs/ACCESSIBILITY.md covering WCAG AA stance for the embedded React SPA (keyboard nav, contrast tokens, prefers-reduced-motion)." |
| 259 | +} |
0 commit comments