Verification
Traceability Matrix
Section titled “Traceability Matrix”| Requirement | Test | Method | Status |
|---|---|---|---|
| REQ-AUTH-001 | AUTH-T01: Decode valid URL-safe Base64 token and forward to GitHub | Unit | Pending |
| REQ-AUTH-001 | AUTH-T02: Verify -_ characters decoded correctly (URL-safe vs standard) | Unit | Pending |
| REQ-AUTH-002 | AUTH-T03: Return 401 when Authorization header is absent | Unit | Pending |
| REQ-AUTH-002 | AUTH-T04: Return 401 when Authorization header has no Bearer prefix | Unit | Pending |
| REQ-AUTH-003 | AUTH-T05: Return 401 when token is not valid Base64 | Unit | Pending |
| REQ-AUTH-003a | AUTH-T05a: Return 401 when decoded value lacks recognized PAT prefix (ghp_, github_pat_, gho_) | Unit | Pending |
| REQ-AUTH-004 | AUTH-T06: GitHub 401 propagates as UNAUTHORIZED MCP error | Unit | Pending |
| REQ-AUTH-004 | AUTH-T07: GitHub 403 propagates as FORBIDDEN MCP error | Unit | Pending |
| REQ-AUTH-004 | AUTH-T08: GitHub 404 propagates as NOT_FOUND MCP error | Unit | Pending |
| REQ-CFG-001 | CFG-T01: Worker reads all config vars from environment | Unit | Pending |
| REQ-CFG-002 | CFG-T02: Skills tools use REPO/BRANCH, docs tools use DOCS_REPO/DOCS_BRANCH | Unit | Pending |
| REQ-SKILL-001 | SKILL-T01: list_skills returns bundled index with all fields | Unit | Pending |
| REQ-SKILL-001 | SKILL-T02: list_skills makes zero fetch calls | Unit | Pending |
| REQ-SKILL-002 | SKILL-T03: get_skill fetches correct GitHub API path | Unit | Pending |
| REQ-SKILL-002 | SKILL-T04: get_skill returns decoded plain text content | Unit | Pending |
| REQ-SKILL-003 | SKILL-T05: get_skill returns cached response on second call | Unit | Pending |
| REQ-SKILL-003 | SKILL-T06: get_skill with skipCache bypasses and refreshes cache | Unit | Pending |
| REQ-SKILL-004 | SKILL-T07: get_skill_file returns Base64 content with encoding field | Unit | Pending |
| REQ-SKILL-004 | SKILL-T08: get_skill_file includes size in response | Unit | Pending |
| REQ-SKILL-005 | SKILL-T09: get_skill_file caching and skipCache behave correctly | Unit | Pending |
| REQ-AGENT-001 | AGENT-T01: list_agents returns bundled index with model and allowedTools | Unit | Pending |
| REQ-AGENT-001 | AGENT-T02: list_agents makes zero fetch calls | Unit | Pending |
| REQ-AGENT-002 | AGENT-T03: get_agent fetches correct GitHub API path | Unit | Pending |
| REQ-AGENT-002 | AGENT-T04: get_agent returns decoded plain text content | Unit | Pending |
| REQ-AGENT-003 | AGENT-T05: get_agent caching and skipCache behave correctly | Unit | Pending |
| REQ-DOC-001 | DOC-T01: list_docs returns hierarchical bundled index | Unit | Pending |
| REQ-DOC-001 | DOC-T02: list_docs makes zero fetch calls | Unit | Pending |
| REQ-DOC-002 | DOC-T03: get_doc tries index.md first | Unit | Pending |
| REQ-DOC-002 | DOC-T04: get_doc falls back to *.md when index.md returns 404 | Unit | Pending |
| REQ-DOC-002 | DOC-T05: get_doc returns NOT_FOUND when both attempts fail | Unit | Pending |
| REQ-DOC-003 | DOC-T06: get_doc returns decoded markdown, not Base64 | Unit | Pending |
| REQ-DOC-004 | DOC-T07: get_doc caching and skipCache behave correctly | Unit | Pending |
| REQ-SEC-001 | SEC-T01: Reject .. in skill name | Unit | Pending |
| REQ-SEC-001 | SEC-T02: Reject .. in file path | Unit | Pending |
| REQ-SEC-001 | SEC-T03: Reject absolute path /etc/passwd | Unit | Pending |
| REQ-SEC-001 | SEC-T04: Reject backslash paths | Unit | Pending |
| REQ-SEC-001 | SEC-T05: Reject .. in get_doc path segments | Unit | Pending |
| REQ-SEC-002 | SEC-T06: wrangler.toml has no [secrets] block | Manual | Pending |
| REQ-ERR-001 | ERR-T01: Error responses include code, message, and details | Unit | Pending |
| REQ-ERR-002 | ERR-T02: Each GitHub status maps to correct MCP error code | Unit | Pending |
| REQ-BUILD-001 | BUILD-T01: skills-index.json generated with correct fields | Build | Pending |
| REQ-BUILD-001 | BUILD-T02: agents-index.json generated with correct fields | Build | Pending |
| REQ-BUILD-001 | BUILD-T03: docs-index.json generated as hierarchical structure | Build | Pending |
| REQ-BUILD-002 | BUILD-T04: File without frontmatter produces name=filename, description=null | Build | Pending |
| REQ-BUILD-003 | BUILD-T05: Skill index includes files array excluding SKILL.md | Build | Pending |
| REQ-BUILD-004 | BUILD-T06: .mdx files appear in docs index | Build | Pending |
| REQ-BUILD-005 | BUILD-T07: Workflow triggers on push/main, cron, workflow_dispatch | CI review | Pending |
| REQ-BUILD-006 | BUILD-T08: Worker bundle contains index data (verified via wrangler build) | Build | Pending |
| REQ-INFRA-001 | INFRA-T01: wrangler deploy succeeds | Deploy | Pending |
| REQ-INFRA-002 | INFRA-T02: MCP client can connect and call tools via HTTP+SSE | Integration | Pending |
| REQ-INFRA-003 | INFRA-T03: Branch protection rules configured on main | Manual | Pending |
Copyright: © Arda Systems 2025-2026, All rights reserved