Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
[![Security Audit](https://github.com/safal207/LiminalQAengineer/workflows/Security%20Audit/badge.svg)](https://github.com/safal207/LiminalQAengineer/actions/workflows/security-audit.yml)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

Documentation: [English](https://github.com/safal207/ContractGraph-QA/blob/main/docs/i18n/en/GETTING_STARTED.md) · [简体中文](https://github.com/safal207/ContractGraph-QA/blob/main/docs/i18n/zh-CN/GETTING_STARTED.md) · [हिन्दी](https://github.com/safal207/ContractGraph-QA/blob/main/docs/i18n/hi/GETTING_STARTED.md) · [Español](https://github.com/safal207/ContractGraph-QA/blob/main/docs/i18n/es/GETTING_STARTED.md) · [العربية](https://github.com/safal207/ContractGraph-QA/blob/main/docs/i18n/ar/GETTING_STARTED.md)

> **From raw test outcomes to actionable quality decisions.**

---
Expand Down Expand Up @@ -169,6 +171,15 @@ Guidance → Co-Navigation → Inner Council → Reflection
- **liminalqa-ingest** — REST API для приёма данных о прогонах
- **limctl** — CLI для управления прогонами и генерации отчётов

Файловый адаптер [ContractGraph-QA interoperability v0.1](docs/CGQA_INTEROP.md)
принимает bounded evidence без подмены статусов и экспортирует только
неавторитетные candidates для независимого CGQA replay.

Общий interop-hub также даёт consumer SDK для TypeScript/JavaScript, Go,
Java/JVM и .NET. Вместе с нативными runners на Python, Rust и Elixir это восемь
языковых экосистем с одним pinned contract и без смешения verdict authority:
[SDK matrix](https://github.com/safal207/ContractGraph-QA/blob/main/sdks/README.md).

## 🚀 Быстрый старт

### Docker-развертывание (рекомендуется)
Expand Down Expand Up @@ -306,6 +317,9 @@ impl TestCase for LoginTest {
- `limctl query` — выполнение би-временных запросов
- `limctl collect` — сбор артефактов
- `limctl init` — инициализация нового проекта
- `limctl import-cgqa` — строгая офлайн-проверка bounded evidence из ContractGraph-QA
- `limctl export-cgqa-candidates` — офлайн-экспорт неавторитетных candidate seeds
- `limctl cgqa-conformance` — 14 канонических взаимных golden/fail-closed vectors на Rust

## 🔗 Связанные проекты

Expand Down Expand Up @@ -371,6 +385,7 @@ POST /query
- **[Grant Evidence Package](docs/GRANT_EVIDENCE.md)** — reviewer-facing evidence matrix, product wedge, limitations, and roadmap
- **[MVP-1 Quickstart](docs/MVP1_QUICKSTART.md)** — начало работы за 5 минут
- **[Architecture](docs/ARCHITECTURE.md)** — подробная архитектура системы
- **[ContractGraph-QA Interop](docs/CGQA_INTEROP.md)** — взаимный evidence/candidate адаптер
- **[Quickstart (Development)](docs/QUICKSTART.md)** — локальная разработка
- **[Demo Guide](DEMO_GUIDE.md)** — руководство по демонстрации возможностей

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
{
"adapter": {
"digest": {
"algorithm": "sha256",
"value": "b9c805a0c37fb2dbe75af45e4649cfd2a9bd5d57e2be0f4402628d0bc7a052eb"
},
"id": "engagement-fixture-v1.3",
"version": "1.3.0"
},
"artifacts": [
{
"artifactId": "engagement-json",
"bytes": 1615,
"mediaType": "application/json",
"sha256": "d9ff43c6cc0232c0fc27548fa174f4f0f3d9997386eac7838304b3f8a0cbdf18"
}
],
"assessment": {
"continuityVerdict": "not_computed",
"counts": {
"inconclusive": 1,
"not_found_within_bound": 1,
"violated": 1
},
"kind": "bounded_invariant_search",
"statusVocabulary": [
"violated",
"not_found_within_bound",
"inconclusive"
]
},
"authority": {
"actionAuthorization": "not_evaluated",
"classification": "evidence_only",
"continuityVerdictOwner": "ltp",
"mayAuthorizeAction": false
},
"bound": {
"exploredCandidates": 22,
"maxDepth": 4,
"replay": "forge test --match-test test_CaptureMultiInvariantEngagementResult -vvv",
"searchRunId": "local-engagement-search-001"
},
"causalParents": [
"manifest-engagement-fixture"
],
"checks": [
{
"exploredCandidates": 6,
"findingId": "CGQA-E-001-F01",
"invariantId": "terminal-state-bound",
"notes": "The repository-local fixture reaches the modeled terminal state through the shortest three-step advance path.",
"pathLength": 3,
"severity": "medium",
"status": "violated",
"title": "Terminal phase remains below the modeled violation threshold"
},
{
"exploredCandidates": 8,
"invariantId": "phase-nonnegative",
"notes": "No negative phase was found within the declared local action corpus and maxDepth=4 bounded model.",
"severity": "low",
"status": "not_found_within_bound",
"title": "Phase never becomes negative"
},
{
"exploredCandidates": 8,
"invariantId": "budget-sensitive-branch",
"notes": "The local evaluator intentionally returns inconclusive so unresolved evidence is not presented as a clean check.",
"severity": "info",
"status": "inconclusive",
"title": "Budget-sensitive branch remains unresolved"
}
],
"exportId": "cgqa-liminalqa-8bbf2e1385e7e321788766d4",
"identity": {
"attemptId": "attempt-001",
"operationId": "bounded-search-CGQA-E-001",
"traceId": "trace-CGQA-E-001"
},
"limitations": [
"A bounded search result is not proof that no violation exists outside the declared bound.",
"The evidence is bound only to the exact repository commit and subject declared here.",
"No request/outcome continuity verdict was computed; LTP remains the continuity verdict owner.",
"This artifact is evidence only and does not authorize an action."
],
"producer": {
"name": "contractgraph-qa",
"version": "1.9.0"
},
"profile": "org.contractgraph-qa.bounded-invariant-evidence.v0.1",
"schema": "org.contractgraph-qa.liminalqa-evidence.v0.1",
"subject": {
"commitSha": "a10862f40e2d4d59c122a61119fbb3c9c1ff6cab",
"contract": "AdapterFixtureMachine",
"network": "local-foundry-engagement",
"repository": "https://github.com/safal207/ContractGraph-QA",
"scopeId": "local-v1.3-engagement-fixture"
},
"times": {
"observedAt": "2026-09-03T10:01:00Z",
"recordedAt": "2026-09-03T10:02:00Z",
"validAt": "2026-09-03T10:00:00Z"
},
"verificationDebt": [
{
"invariantId": "budget-sensitive-branch",
"reason": "The local evaluator intentionally returns inconclusive so unresolved evidence is not presented as a clean check.",
"status": "inconclusive"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"schema": "org.liminalqa.cgqa-candidates.v0.1",
"profile": "org.liminalqa.non-authoritative-candidate-seeds.v0.1",
"exportId": "liminal-candidates-2595f78d88288151b948a1da",
"producer": {
"name": "liminalqa",
"version": "0.1.0"
},
"sourceEvidence": {
"schema": "org.contractgraph-qa.liminalqa-evidence.v0.1",
"exportId": "cgqa-liminalqa-8bbf2e1385e7e321788766d4",
"sha256": "e1d5a14c5c1b75e2cfffaf87bf526fd61e141a0c5b7828de4f275e9792fda3ce"
},
"subject": {
"repository": "https://github.com/safal207/ContractGraph-QA",
"commitSha": "a10862f40e2d4d59c122a61119fbb3c9c1ff6cab",
"contract": "AdapterFixtureMachine",
"network": "local-foundry-engagement",
"scopeId": "local-v1.3-engagement-fixture"
},
"identity": {
"traceId": "trace-CGQA-E-001",
"operationId": "liminal-candidate-derivation-001",
"attemptId": "attempt-001"
},
"derivedAt": "2026-09-03T10:03:00Z",
"authority": {
"classification": "non_authoritative_seed",
"mayAuthorizeAction": false,
"requiresCgqaVerification": true
},
"candidates": [
{
"candidateId": "liminal-candidate-7ab5731bafda6ff275addf49",
"invariantId": "terminal-state-bound",
"sourceStatus": "violated",
"kind": "replay_regression",
"priority": "medium",
"reason": "The repository-local fixture reaches the modeled terminal state through the shortest three-step advance path.",
"requiredChecks": [
"exact_subject",
"independent_cgqa_replay",
"failing_path_integrity"
]
},
{
"candidateId": "liminal-candidate-497f6be066795a9547ec2e24",
"invariantId": "budget-sensitive-branch",
"sourceStatus": "inconclusive",
"kind": "verification_debt",
"priority": "low",
"reason": "The local evaluator intentionally returns inconclusive so unresolved evidence is not presented as a clean check.",
"requiredChecks": [
"exact_subject",
"reviewed_bound_change",
"independent_cgqa_replay"
]
}
],
"causalParents": [
"cgqa-liminalqa-8bbf2e1385e7e321788766d4"
],
"limitations": [
"Candidates are hypotheses derived from bounded evidence, not verified findings.",
"ContractGraph-QA must independently replay each candidate against the exact commit.",
"Candidate export cannot authorize an action or compute an LTP continuity verdict."
],
"verificationDebt": [
{
"invariantId": "budget-sensitive-branch",
"reason": "The local evaluator intentionally returns inconclusive so unresolved evidence is not presented as a clean check."
}
]
}
Loading
Loading