Task — engineering-spec@1

"MCP SEP-986 naming validator + CI gate (cyberos.module.verb_noun)"

doneTASK-MCP-003
module mcp · class product · priority p0 · created 2026-05-17 · shipped null
depends on TASK-MCP-001 · blocks none

TASK-MCP-003: MCP SEP-986 naming convention validator

Summary

Enforce cyberos.{module}.{verb}_{noun} at skill registration and in CI. As-built surface lives under services/mcp-gateway/src/naming/ (pure validator + 23-module registry + closed 15-verb enum), is wired into federation::register::validate / router register paths, emits the four DEC-2364 kinds via oauth::audit, and is guarded by scripts/check_sep986_naming.sh + .github/workflows/mcp-sep986-check.yml.

Problem

The original engineering-spec claimed services/mcp/ (never existed), a standalone audit/naming_events.rs, and five integration tests by name. The live crate is mcp-gateway; slices 1–3 already shipped the validator, registration gate, CI script, and audit helpers, but the process evidence failed FM-004 (task@1 frontmatter + ## §N body) and two residual tests (sep986_ci_grep_test, sep986_audit_emission_test) were missing. The CI script also used bash-4-only mapfile, so it failed on macOS /bin/bash 3.2.

Proposed Solution

Adopt the as-built layout:

Alternatives Considered

Success Metrics

Scope

In scope (as-built):

Out of scope / Non-Goals

Dependencies

depends_on: [TASK-MCP-001]. Soft: TASK-MCP-002 module registry concepts; TASK-MEMORY-111 PII scrub (skill IDs are public identifiers).

1. Description (normative)

Acceptance criteria

Verification

bash scripts/check_sep986_naming.sh
cd services && cargo test -p cyberos-mcp-gateway --test sep986_regex_test --test sep986_module_validation_test --test sep986_verb_enum_cardinality_test --test sep986_ci_grep_test --test sep986_audit_emission_test
PathCovers
tests/sep986_regex_test.rsShape / verb / error messages
tests/sep986_module_validation_test.rs23-module registry
tests/sep986_verb_enum_cardinality_test.rsDEC-2361 cardinality tripwire
tests/sep986_ci_grep_test.rsDEC-2362 CI gate live + planted
tests/sep986_audit_emission_test.rsDEC-2364 kind surface + router wiring
src/federation/register.rs naming testsRuntime registration gate

AI Authorship Disclosure


batch/9a-mcp adopt — TASK-MCP-003 re-spec against as-built mcp-gateway naming.