Skip to main content
CTPF Research Harness uses a compatibility-first identity transition. Display, repository, CLI, package, runtime state, credential, and evidence names are separate contracts; changing one does not imply that every other name changes at the same time.

Current and retained names

LayerCurrent posture
Display nameCTPF Research Harness
SubtitleTrust-boundary testing for agentic systems
Repositoryq-uestionable-AI/CTPF
Documentationctpf.q-uestionable.ai is canonical; docs.q-uestionable.ai is transitional
CLIPrefer ctpf; qai remains a functional alias
Primary PyPI distributionctpf from v0.12.0
Compatibility distributionq-uestionable-ai requires the exact same-version ctpf
Python importsRetain q_ai
User state and databaseRetain ~/.qai/qai.db
Environment variablesRetain QAI_*
Keyring serviceRetain q-ai
MCP handshake identityRetain q-ai
Evidence schemaRetain schema v1 and qai_version
Finding IDsPreserve every QAI-* identifier
SARIF driver identityRetain q-ai for compatibility
Both console entry points invoke the same Typer application and use the same local state:
ctpf --version
qai --version
Existing installers can continue with pip install q-uestionable-ai; from v0.12.0 that project contains no duplicate import package and delegates installation to ctpf. Historical traces, bundles, captured commands, release notes, and research artifacts keep the names recorded when they were produced. They are reconciled through this mapping rather than rewritten.