Skip to content

Define candidate C2b pytest channel qualification profile - #811

Merged
SoundBlaster merged 2 commits into
mainfrom
proposal/0226-c2b-qualification-profile
Oct 27, 2026
Merged

SoundBlaster merged 2 commits into
mainfrom
proposal/0226-c2b-qualification-profile

Conversation

@SoundBlaster

Copy link
Copy Markdown
Member

Summary

Motivation

A resolvable test channel, an executed test and a verified requirement are different facts. Define qualification before implementing a new atom-level metric.

Goals

  • Make good, conclusively bad and unknown bindings explicit; count an atom once and preserve conflicts/provenance.
  • Keep runtime evaluator, default metric/viewer/CI activation, direct derived-input admission and semantic acceptance outside this contract-only slice.

Changes

  • Add the profile with 16 proposed acceptance cases, OR/unknown aggregation, valid-zero versus empty/incomplete behavior and execution-association limits.
  • Declare six draft obligations and their individual contract-only dispositions.
  • Retain a source-pinned author-reference worksheet: C1 observed 13 atoms and 18 resolved links; author-expected structural result is 13/13 with execution not collected.
  • Synchronize proposal/source/tracking and DocC; record that the bounded SG-SPEC-0021 clarification merged through Clarify verifiability evidence boundaries in SG-SPEC-0021 #810.

Spec Evidence

Spec-ID: SG-SPEC-0021
Proposal-ID: 0226
Spec-Impact: docs-only
Spec-Rationale: Define the candidate qualification contract for review without new production code, canonical-node mutation or profile activation. Its reference expectation is not a production SVC result or passing-test count.

Intent-Decision-Review: tools/intent_decision_reviews/0226_c2b_qualification_profile.json

Validation

  • Tests added/updated for changed behavior
  • Local checks passed

Commands run:

.venv/bin/python -B tools/publication_trace_snapshot.py --repository-root "$PWD" --repository-id 0al-spec/SpecGraph --revision b4d0f25ec8856c7cd3e8af886506f837253ccdbd --spec-id SG-SPEC-0071
make docc-sync proposal-tracking-gate materialization-packet-check
make spec-evidence-gate
make intent-decision-review INTENT_DECISION_REVIEW_ARGS='--pr-body-file <exact-description-file>'
git diff --cached --check

Results:

  • Existing C1 source collection succeeded without tests, source import, network or inference. Snapshot content digest and relevant canonical/test Git-blob digests were independently verified.
  • Worksheet/sidecar consistency and registry scope checks passed. Only proposal 0226 tracking changes; canonical nodes are byte-identical.
  • Documentation/tracking/materialization/spec-evidence and source-bound intent review checks passed. Canonical atoms remain 302; six proposed obligations add to the separate draft scope (12 → 18).
  • No new runtime implementation or automated test suite was added/run; the 16 acceptance examples specify future implementation checks.

Risks / Notes

  • Backward compatibility impact: none to runtime, legacy values or public CLI artifacts.
  • Migration/config changes required: none.
  • Known limitations: static qualification does not prove pytest collection, importability, assertion coverage, semantic sufficiency, execution or authenticity. C2a PB observations cannot confirm PE tests without exact bindings. Runtime evaluator and integration remain future work; contract-only coverage is not semantic approval.

Checklist

  • PR title clearly describes the change
  • Scope is focused and minimal
  • Documentation updated (or N/A)
  • Workflow/artifact changes distinguish presence from readiness/status
  • Consumers prefer authoritative repaired/promoted/latest artifacts where relevant
  • Temporary or intermediate paths are scoped to the current run/task where relevant
  • No secrets or sensitive data added

Spec-ID: SG-SPEC-0021
Proposal-ID: 0226
Spec-Impact: docs-only
Spec-Rationale: Define source-bound three-valued structural qualification and retain a pinned reference worksheet without implementing or activating a runtime metric.
Spec-ID: SG-SPEC-0021
Proposal-ID: 0226
Spec-Impact: docs-only
Spec-Rationale: Record the six proposed profile obligations as contract-only coverage without claiming runtime implementation or semantic approval.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T13:35:08.989403Z 3950f3d PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown

Intent Atoms · v1

Scope: specification YAML in specs/nodes

Status: complete
Count: 302 → 302 (+0)
Diff: +0 added, −0 removed, 0 modified
Revisions: b4d0f25ec885 → 3950f3d212df
Profile: specgraph-intent-atoms-v1 (SHA-256 54caf075dafc)
Analyzer: 1.0.1 (SHA-256 aa7c646a25ea)

Proposal obligations · draft

Status: complete for declared fields
Count: 12 → 18 (+6)
Diff: +6 added, −0 removed, 0 modified
Coverage: explicit YAML declarations in docs/proposals; unannotated Markdown is not assessed.
Draft counts are separate from specification counts; they do not establish review, approval or canonical promotion.

Informational only; this report does not gate merge readiness.

@SoundBlaster

Copy link
Copy Markdown
Member Author

HyperReview

Эскиз по исходникам · 3950f3d2

Состав · без изменений в проекции

EvidenceToMetricIntegration
  EvidenceProvider
  TraceSnapshot
  MetricAdapter
  TraceabilityChecks

Выбранные связи · обе версии

EvidenceToMetricIntegration:
  data_flow: "EvidenceProvider → TraceSnapshot; TraceSnapshot → MetricAdapter; TraceSnapshot → TraceabilityChecks"
Пояснения, источники и ограничения

Суть изменения

Изменение PR — контрактная документация C2b: новый профиль задаёт статическую квалификацию atom-to-test каналов, трёхзначные состояния, обработку конфликтов и условия точного результата; изменённые proposal и DocC фиксируют этот статус. Код квалификатора, запуск тестов и активация метрики не заявлены. Сохраняется граница EvidenceProvider → immutable TraceSnapshot → MetricAdapter и отдельные TraceabilityChecks; структурная разрешённость не означает выполнение, прохождение теста или семантическую достаточность.

Интерпретация выбранных исходников; порядок узлов не означает порядок выполнения.

Связи и основания

Связи описаны отдельно от вложенности .hc; основания — в правой колонке.

Связь Что видно в источниках Основания
EvidenceProvider → TraceSnapshot До; заявлено в источниках; передача данных. До PR proposal явно показывает EvidenceProvider, возвращающий типизированные факты с provenance и completeness, а затем TraceSnapshot; это задекларированный архитектурный поток, не вывод из выполнения кода. 0226_traceability_evidence_providers_and_svc.md: EvidenceProvider, TraceSnapshot L10–13, TraceSnapshot L80–83, EvidenceProvider L87–90, TraceSnapshot L107–110
TraceSnapshot → MetricAdapter До; заявлено в источниках; передача данных. До PR proposal прямо задаёт TraceSnapshot как вход чистой интерпретации metric adapters и показывает этот поток в архитектурной схеме. 0226_traceability_evidence_providers_and_svc.md: TraceSnapshot L10–13, TraceSnapshot L80–83, TraceSnapshot L107–110, TraceSnapshot L224–227
TraceSnapshot → TraceabilityChecks До; заявлено в источниках; передача данных. До PR proposal указывает, что trace checks потребляют те же факты snapshot независимо от metric adapter; это документированная связь между общим входом и проверками. 0226_traceability_evidence_providers_and_svc.md: TraceSnapshot L10–13, TraceSnapshot L80–83, TraceSnapshot L107–110, TraceSnapshot L224–227
EvidenceProvider → TraceSnapshot После; заявлено в источниках; передача данных. После PR proposal сохраняет provider как источник типизированных фактов, а snapshot как их общий неизменяемый read model; профиль требует явного выбора provider и сохраняет provenance, но не меняет реализацию сбора. 0226_traceability_evidence_providers_and_svc.md: EvidenceProvider, TraceSnapshot L10–13, TraceSnapshot L85–88, EvidenceProvider L92–95, TraceSnapshot L112–115; pytest_channel_qualification_profile.md: EvidenceProvider L24–27, TraceSnapshot L25–28
TraceSnapshot → MetricAdapter После; заявлено в источниках; передача данных. После PR proposal и профиль описывают metric adapter как интерпретирующий подготовленные snapshot-факты; новая квалификация определена как контракт поверх выбранного inventory и разрешённых связей, без утверждения о внедрённом evaluator. 0226_traceability_evidence_providers_and_svc.md: TraceSnapshot L10–13, TraceSnapshot L85–88, TraceSnapshot L112–115, TraceSnapshot L238–241; pytest_channel_qualification_profile.md: TraceSnapshot L25–28
TraceSnapshot → TraceabilityChecks После; заявлено в источниках; передача данных. После PR proposal сохраняет независимое потребление тех же snapshot-фактов trace checks; профиль отдельно удерживает структурную квалификацию, выполнение и fulfillment, поэтому эта связь не означает, что checks применяют новый evaluator. 0226_traceability_evidence_providers_and_svc.md: TraceSnapshot L10–13, TraceSnapshot L85–88, TraceSnapshot L112–115, TraceSnapshot L238–241; pytest_channel_qualification_profile.md: TraceSnapshot L25–28

Связи в Hypercode (.hcs)

Это неполные выборки связей из каждой версии. Отсутствие связи в одной из выборок не устанавливает её добавление или удаление. Пустой лист означает, что связи для этой версии не выбраны.

before.hcs

EvidenceToMetricIntegration:
  # До; заявлено в источниках; передача данных. До PR proposal явно показывает EvidenceProvider, возвращающий типизированные факты с provenance и completeness, а затем TraceSnapshot; это задекларированный архитектурный поток, не вывод из выполнения кода.
  # Sources: src_32187b4b0369891a3a4ad1827342a309328fde675fa20afb27523dc15b28a246
  # До; заявлено в источниках; передача данных. До PR proposal прямо задаёт TraceSnapshot как вход чистой интерпретации metric adapters и показывает этот поток в архитектурной схеме.
  # Sources: src_32187b4b0369891a3a4ad1827342a309328fde675fa20afb27523dc15b28a246
  # До; заявлено в источниках; передача данных. До PR proposal указывает, что trace checks потребляют те же факты snapshot независимо от metric adapter; это документированная связь между общим входом и проверками.
  # Sources: src_32187b4b0369891a3a4ad1827342a309328fde675fa20afb27523dc15b28a246
  data_flow: "EvidenceProvider → TraceSnapshot; TraceSnapshot → MetricAdapter; TraceSnapshot → TraceabilityChecks"

after.hcs

EvidenceToMetricIntegration:
  # После; заявлено в источниках; передача данных. После PR proposal сохраняет provider как источник типизированных фактов, а snapshot как их общий неизменяемый read model; профиль требует явного выбора provider и сохраняет provenance, но не меняет реализацию сбора.
  # Sources: src_20b774c1cb7289b52ed47b195dfc6719ac4812283815669018841817aba89bbc, src_ceb7d95148d970b82cc37c61be8b5fd30fc549a6bb9cbe78a46a294f004457e6
  # После; заявлено в источниках; передача данных. После PR proposal и профиль описывают metric adapter как интерпретирующий подготовленные snapshot-факты; новая квалификация определена как контракт поверх выбранного inventory и разрешённых связей, без утверждения о внедрённом evaluator.
  # Sources: src_20b774c1cb7289b52ed47b195dfc6719ac4812283815669018841817aba89bbc, src_ceb7d95148d970b82cc37c61be8b5fd30fc549a6bb9cbe78a46a294f004457e6
  # После; заявлено в источниках; передача данных. После PR proposal сохраняет независимое потребление тех же snapshot-фактов trace checks; профиль отдельно удерживает структурную квалификацию, выполнение и fulfillment, поэтому эта связь не означает, что checks применяют новый evaluator.
  # Sources: src_20b774c1cb7289b52ed47b195dfc6719ac4812283815669018841817aba89bbc, src_ceb7d95148d970b82cc37c61be8b5fd30fc549a6bb9cbe78a46a294f004457e6
  data_flow: "EvidenceProvider → TraceSnapshot; TraceSnapshot → MetricAdapter; TraceSnapshot → TraceabilityChecks"

Ответственности и источники

  • EvidenceToMetricIntegration — Документация описывала C2b как будущий профиль; в этой ревизии добавлены кандидатный контракт `specgraph.pytest-channel-qualification/v1`, таблицы решений и примеры C2B-01–C2B-16, а также запись о шести draft obligations. Это уточняет предлагаемую ответственность интеграции evidence в метрики, но не добавляет реализации квалификатора. docs/proposals/0226_traceability_evidence_providers_and_svc.md — до / после; Sources/SpecGraph/Documentation.docc/TraceabilityEvidenceProviders.md — до / после

  • EvidenceProvider — В обеих версиях proposal описывает EvidenceProvider как сборщик фактов из явно выбранных источников с provenance и completeness; новая документация профиля сохраняет использование существующего provider registry и запрещает выводить authority из произвольной строки профиля. Нового provider или реализации в этой PR не заявлено. docs/proposals/0226_traceability_evidence_providers_and_svc.md — до / после; docs/pytest_channel_qualification_profile.md — после

  • TraceSnapshot — Proposal до и после сохраняет отдельный immutable TraceSnapshot с декларациями, разрешёнными ссылками, execution-наблюдениями, результатами, происхождением и полнотой. Новый профиль уточняет, что квалификация относится к выбранному полному inventory атомов и соответствующим каналам; это контрактная интерпретация фактов, не изменение snapshot-реализации. docs/proposals/0226_traceability_evidence_providers_and_svc.md — до / после; docs/pytest_channel_qualification_profile.md — после

  • MetricAdapter — До PR proposal задавал кандидатный SVC как долю атомов с валидной разрешённой привязкой, отдельно от выполнения, и оставлял профиль на рассмотрении. После PR добавленная спецификация конкретизирует структурную квалификацию каналов и атомов: `qualified`/`unqualified`/`unknown`, порядок альтернатив, конфликты, полноту и точные состояния результата. Она прямо помечена `proposed_contract`; runtime evaluator не реализован, активация профиля запрещена. docs/proposals/0226_traceability_evidence_providers_and_svc.md — до / после; docs/pytest_channel_qualification_profile.md — после; tools/intent_decision_reviews/0226_c2b_qualification_profile.json — после

  • TraceabilityChecks — Предложение сохраняет TraceabilityChecks как отдельного потребителя тех же фактов, с диагностикой отсутствующих, неоднозначных или устаревших ссылок и отдельной blocking policy. В новой редакции это разграничение остаётся; профиль не объявляет квалификацию результатом проверки или исполнения. docs/proposals/0226_traceability_evidence_providers_and_svc.md — до / после; docs/pytest_channel_qualification_profile.md — после

Границы анализа

PR #811: b4d0f25ec8856c7cd3e8af886506f837253ccdbd → 3950f3d212df6e525430d79801b1d7be00b5a5c1.

Исходников в анализе: 12; пропущено: 14.

Компилятор проверил структуру Hypercode и ссылки. Соответствие интерпретации коду и поведение программы этим не доказаны. Анализ ограничен предоставленными исходниками и фрагментами контекста; выполнение программы не наблюдалось.

  • Конфигурация: specs/nodes/SG-SPEC-0071.yaml; after; охват partial; фрагментов 0.

  • Конфигурация: specs/nodes/SG-SPEC-0071.yaml; before; охват partial; фрагментов 0. L1–161: configuration_context_omitted; L1–161: configuration_excerpt_limit

  • Конфигурация: tools/feature_passports/static-publication-bindings.json; after / before; охват complete; фрагментов 1.

  • Конфигурация: tools/intent_decision_reviews/0226_c2b_qualification_profile.json; after; охват complete; фрагментов 1.

Неизменённых файлов контекста по Git blob: 2. Их фрагменты до и после могут различаться охватом.

  • Не предоставлены исходные .hc/.hcs, поэтому роли и дерево являются выведенным компактным срезом из proposal, а не проверкой авторской карты.

  • Содержимое четырёх добавленных/изменённых путей с null в change_inventory скрыто политикой; полный inventory сообщает, что PR затрагивает их, но не раскрывает содержание. Сопоставить их вклад и возможный кодовый delta нельзя.

  • В omissions ledger отсутствуют полные `specs/nodes/SG-SPEC-0071.yaml` до и после (до — configuration_context_omitted, после — incomplete_pair), а также `tools/supervisor.py`, `docs/publication_delivery_pilot.md` и `docs/reviews/0226_metric_verifiability_recovery_review.md`; поэтому нельзя сверить все связанные определения и их implementation wiring.

  • Содержимое `tools/intent_decision_review/report.py` дано только фрагментами 1–60, хотя полный blob отмечен unchanged; эти окна не являются кодовым изменением PR. `tools/feature_passports/static-publication-bindings.json` также unchanged и не показывает новую привязку для C2b.

  • Шесть obligations перечислены в decision-review записи как contract_only с пустыми implementation_refs и specification_refs. Точный target теста или check для verified_by в предоставленных декларациях отсутствует; acceptance examples в профиле прямо обозначены как предлагаемые, не исполненные cases.

  • Предоставленные документы сообщают, что runtime evaluator не реализован и выполнение тестов не происходило в рамках профиля; это авторские документальные утверждения, не независимо проверенная полнота реализации или наблюдение запуска.

  • Пропущено: docs/publication_delivery_pilot.md — input_byte_limit (после: 1, до: 1).

  • Пропущено: docs/reviews/0226_metric_verifiability_recovery_review.md — input_byte_limit (после: 1, до: 1).

  • Пропущено: specs/nodes/SG-SPEC-0071.yaml — incomplete_pair (после: 1); configuration_context_omitted (до: 1).

  • Пропущено: tools/intent_decision_review/report.py — context_excerpted (после: 1, до: 1).

  • Пропущено: tools/supervisor.py — input_byte_limit (после: 1, до: 1).

  • Пропущено: путь скрыт политикой — unsupported_format (после: 4).

Точные диапазоны источников по узлам

EvidenceToMetricIntegration

  • docs/proposals/0226_traceability_evidence_providers_and_svc.md — до: L1–313; после: L315–318

  • Sources/SpecGraph/Documentation.docc/TraceabilityEvidenceProviders.md — до: L1–115; после: L119–122

EvidenceProvider

TraceSnapshot

MetricAdapter

TraceabilityChecks

  • docs/proposals/0226_traceability_evidence_providers_and_svc.md — до: L1–313; после: L1–328

  • docs/pytest_channel_qualification_profile.md — после: L1–177

Ок или не ок?

CI · результаты проверок

Снимок для 3950f3d2 · 2026-10-27T13:41:29Z (UTC).

Результат check-run не доказывает выполнение конкретного теста, полноту покрытия или соответствие архитектуре.

Проверка Статус Результат
Deploy bundle to static host completed skipped
Deploy landing page to static host completed skipped
Build DocC technical surface queued —
Build static artifact bundle completed success
registered-rule-reuse completed success
publication-diagnostic-compatibility (3.14) completed success
markdown-links completed success
test completed success
specdraft-preview-ui completed success
spec-evidence completed success
python-quality completed success
publication-diagnostic-compatibility (3.10) completed success

Отсутствие, ожидание или сбой CI не блокируют архитектурный обзор.

Review gate: review thread.

@github-actions

Copy link
Copy Markdown

SpecificationMetrics · diagnostic PR measurement

Metric Base PR head (Δ)
Specifications (S) 125 125 (+0)
Remaining opportunities (U) 10296 10296 (+0)
S/U 0.0121406 0.0121406
Dead Specifications 0 0
Unknown Specifications 0 0

Collection: base complete, head complete.
Primary provisional: base False, head False.
Revisions: b4d0f25ec885 → 3950f3d212df; contract 943b09cbbe20.
Base diagnostics: none reported.
Head diagnostics: none reported.

  • Python CC / Cog: cc_sum +0; cc_max +0; cog_sum +0; cog_max +0; sloc +0
  • Clone pairs / duplicate lines / tokens: clone_pairs +0; duplicate_lines +0; duplicate_tokens +0

Scope: files assigned application by the manifest; tests/ is test, and the comment renderer is framework.
Informational only. Counts and metrics do not decide eligibility, correctness, or merge readiness.
Collection run
Detailed JSON reports and counting contract
Artifact presence does not imply a complete measurement; inspect report statuses and diagnostics. Downloads require GitHub access and expire with artifact retention.

@SoundBlaster
SoundBlaster merged commit a837ec6 into main Oct 27, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant