Specification Quality Checklist: Remove the cnoe-agent-utils Dependency
Purpose: Validate specification completeness and quality before proceeding to planning Created: 2026-09-24 Feature: spec.md
Content Quality
- No implementation details (languages, frameworks, APIs)
- Focused on user value and business needs
- Written for non-technical stakeholders
- All mandatory sections completed
Requirement Completeness
- No [NEEDS CLARIFICATION] markers remain
- Requirements are testable and unambiguous
- Success criteria are measurable
- Success criteria are technology-agnostic (no implementation details)
- All acceptance scenarios are defined
- Edge cases are identified
- Scope is clearly bounded
- Dependencies and assumptions identified
Feature Readiness
- All functional requirements have clear acceptance criteria
- User scenarios cover primary flows
- Feature meets measurable outcomes defined in Success Criteria
- No implementation details leak into specification
Notes
Validation iteration 1 found and fixed these issues:
-
Named packages and code symbols throughout. The first draft named the specific replacement library, the factory function, the tracing SDK, and the Bedrock helper symbol. All were replaced with capability language ("chat model construction", "model-family resolution", "the trace destination"). The choice of replacement library is a
/speckit.plandecision, not a spec decision — the spec now states the constraint (FR-002, FR-024) and leaves the selection open. -
Success criteria stated as implementation facts. Criteria such as "uses init_chat_model" were unverifiable as user outcomes. Rewritten as observable measures: remediation without overrides (SC-001), scan findings (SC-002), zero config edits (SC-003/004), usage and footprint deltas (SC-005/006).
-
Capability-preservation requirements were implicit. The behaviours most at risk in this change — prompt caching, transport sharing, extended timeouts, reasoning effort, attachment shaping — are invisible in normal operation and would regress silently. Promoted to their own user story (US3) with per-behaviour acceptance scenarios and FR-009 through FR-015.
-
Rationale for excluding in-process multi-provider routing was unstated. FR-024 read as arbitrary. A-004 now records the reasoning (critical-path exposure, dependency footprint, registry-compromise history) and pairs it with FR-021 so the breadth requirement is still met.
-
Rollback and stored-state edge cases were missing. Added: rollback to the prior release against unchanged configuration, and per-agent model selections saved by an earlier release remaining readable without re-saving.
Remaining judgement calls for /speckit.plan to resolve, recorded as
assumptions rather than clarification markers because each has a defensible
default:
- A-002 fixes the native provider set at today's list. If the intent is to also drop a native provider in favour of the gateway, that changes scope.
- A-003 deliberately does not name a gateway. If a specific gateway is to be shipped or recommended in documentation, that is a separate decision.
- SC-005 and SC-006 quote 5% and 10% tolerances. These are reasonable defaults for behaviour-preservation work; tighten them if a measured baseline exists.