APRF-RFC-0013 · draft · MINOR · APRF v0.11.0
Assessment Target Kinds and Framework Profile
Adds systemType classification, official aprf-profile-framework, applicationCapabilities→lenses, and resolveAssessmentTarget() so assessments select Checks from framework-definition SoT without mislabeling frameworks as Core.
Created 2026-08-18
| Field | Value |
|---|---|
| Status | draft |
| Author(s) | StackRail |
| Created | 2026-08-18 |
| SemVer impact | MINOR |
| Index summary | Adds systemType classification, official aprf-profile-framework, applicationCapabilities→lenses, and resolveAssessmentTarget() so assessments select Checks from framework-definition SoT without mislabeling frameworks as Core. |
Problem
CLI assess hardcodes systemType: ai-application and assessmentKind: aprf-core (unless Regulated). Framework/SDK repositories assessed with Core produce PARTIAL floods and false production-readiness F grades. Check YAML appliesTo/notApplicableTo do not filter at assess time. Operators must know tribal --lens flags; the auditor must not own canonical Check ID lists.
Proposal
Source of truth
- Profiles answer: which mandatory Checks exist for this gate? (
profiles.ts) - Lenses answer: which additional Checks become applicable? (
lenses.ts) resolveAssessmentTarget()is the public resolution API; CLI/skill/UI consume it. Do not hand-assemble profile ∪ lenses.
Level 1 — systemType
| Value | Profile / scope | Claim |
|---|---|---|
ai-application | Core or Regulated ∪ capability lenses | Core / Regulated production readiness |
ai-framework | aprf-profile-framework | Framework / SDK primitive gate only |
non-ai-platform | Legacy auditor scope (v1) | Platform hygiene subset; Check IDs not yet in profiles.ts |
unknown | — | Must classify before resolve (throws) |
Level 2 — applicationCapabilities (ai-application only)
Orthogonal multi-select set (not exclusive subtypes): chatbot, rag, agents, multi-agent-a2a, mcp-server, voice, coding-agent, other. Map to default lens IDs in framework-definition. Capabilities are additive only — they never remove Core mandatories. Absent surfaces → collector NOT_APPLICABLE.
Official profile aprf-profile-framework
Mandatory Check IDs (exact): AGN-M2, TOL-M2, TOL-M4, SEC-M1, SEC2-M1, SEC2-M2, SCI-M2. assessmentKind: aprf-framework. Claim language forbids Core/Regulated production-readiness wording.
Normative precedence order
systemTypedetermines profile (with profileId validation).- Profile selects mandatory Checks (
profiles.ts). applicationCapabilitiesadd lenses (ai-application only).- Explicit CLI
--lensunions additional lenses (ignored on ai-framework with warning). - Collector evidence may mark Checks
NOT_APPLICABLEinside the resolved set; collectors never expand the gate.
Non-goals: capabilities/--lens never replace the profile; collectors never add Checks outside profile ∪ lenses.
Conflict policies
unknown→ throw.ai-framework+ Core/Regulated profile → hard error.ai-application+ Framework profile → hard error.ai-framework+--full→ hard error.- Omit
--system-type→ CLI asks on a TTY; non-TTY requires the flag,APRF_SYSTEM_TYPE, or--profile framework(no silent Core default). --profile frameworkwithout systemType → inferai-framework.- Empty capabilities on application → Core/Regulated only + warning; empty ≠
other. - Invalid capability ID → hard error.
CLI
--system-type,--capabilities,--profile frameworkaprf resolve-target --jsonfor skill/dry-run resolution
Alternatives considered
- Auditor-only
scopes/framework-sdk.yamlwith its own Check lists — rejected; forks SoT. - Remap framework+core to Framework with warning — rejected; hard error for claim safety.
- Capability-driven removal of Core Checks — rejected; additive only.
Compatibility
- Default CLI path remains Core for
ai-applicationwith empty capabilities. - New profile and
assessmentKindare additive. non-ai-platformCheck lists remain in auditor scope until a follow-on profile.
Security considerations
Framework gate must not be marketed as production readiness. REPORT banner and disclaimer carry claim boundary. Product lenses cannot expand a Framework assessment into Core.
Open questions
- When to promote
non-ai-platformto an official profile. - Whether
AprfProfilelater embeds claimLanguage fields (v1 keeps resolver table). - Follow-on: machine-enforced Check
targetKinds/appliesTo.
Checklist
- Problem and affected parties
- Proposed change stated
- SemVer impact justified
- Compatibility / deprecation plan
- Checks remain measurable
- Crosswalk impact noted (N/A)
- Security / safety considered
- Open questions listed
Comment window: 14 days from Created. Interim contact: see /aprf/rfc/. Process: see stewardship in /aprf/spec/.
Source markdown: /aprf/rfc/0013-assessment-target-kinds.md