Testowanie intentów i wyników deployu

Status: nota architektoniczna (pointer). Data: 2026-07-18 Kanoniczne modele: autonomy-recommended-solution.md, intent-orchestration-and-fallbacks.md, autonomy-ops-status-and-open-questions.md (D1–D11). EQL: subactor/eql SUBACTOR_KORU_INTEGRATION.md. Koru (governance shapes): semcod/korudocs/architecture/autonomy-determinism-refactor-plan.md.

Werdykt (1 akapit)

TestQL nie zastępuje pętli autonomy (pack → preflight → dry-run → grant → apply → origin/public verify). Jest dobry jako orkiestrator scenariuszy (CLI/API/GUI/desktop) i bramka metryk projektu (TESTQL_PROJECT_GATES.md). Prawda intentów, capability, plan_hash/grant i fingerprint należy do **orchestrator / connector / Control / EQL tests** — TestQL może je wywołać i asertować kody wyjścia / JSON, nie powinien być SSOT tych kontraktów.

Ownership (kto czym włada)

WarstwaWłaściciel testówArtefakt
NL → pack id / slotsControl + pack registry unitask --jsonpack_id, model_name, status
Dual-run defaultControl + agentsINTENT_PACK_DUAL_RUN=shadow (retain until metrics); pack-only ≠ drift
Capability preflightConnector doctor + pack required_capabilities ⊆ AQLstatus: capability_unavailable / preflight_failed + CI ⊆-check
Dry-run / plan_hash / grant / jtiOrchestrator + Control apply-grantsdeny codes ADR-003; grant status: authorized
Origin vs public verify / fingerprintConnector publish-verify + orchestrator stagesapplied_unverifiedcompleted
EQL determinism (eqlHash / artifactHash)@subactor/eql matrix (mock); grant may echo advisory eql_hashprzed bind do plan_hash
GUI / IDE / health smokeTestQL (+ Koru MCP)*.testql.toon.yaml
Evidence bundle / import gatesTestQL project gates + Planfilepreflight/postflight suite

Co TestQL ma / czego brakuje

PotrzebaTestQL dziśLuka
Intent pack selectionPośrednio: SHELL/EXEC + assert JSONBrak natywnych kroków INTENT_* / pack fixtures
Capability preflight (np. historyczny brak ssl-ensure)Może wołać doctor CLIBrak deklaratywnego EXPECT capability.X == ready powiązanego z packiem
Dry-run / grant gatesMoże uruchomić recipeBrak typów asercji plan_hash_mismatch / grant deny
Origin vs public verifyHTTP assert możliwyBrak ladder DoD (dns/tls/fingerprintapplied_unverified)
EQL hash ladderMożna owinąć skryptBrak pierwszoklasowego EQL_DETERMINISM

Rekomendacja: rozszerzać TestQL tylko o cienkie asserty wyjścia (status planu, deny code, fingerprint JSON) + scenariusze smoke; logikę kontraktów zostawić w orchestrator/connector/EQL. Nie budować drugiego silnika deployu w TestQL.

Minimalne macierze (CI)

Intenty

  1. Phrase → pack (bez OpenRouter).
  2. LLM fallback → ten sam pack (shadow dual-run).
  3. Złe sloty → reject (nie expand URI).
  4. Pack required_capabilities ⊆ AQL (CI).
  5. Preflight red → brak obietnicy sukcesu NL.

Deploy results

  1. Dry-run → manifest + plan_hash.
  2. Apply bez grant / kill → deny.
  3. Grant + matching hash → origin upload/activate.
  4. Public verify fail → applied_unverified (nigdy fake ok).
  5. Stale fingerprint → rollback lub ticket.
  6. (Opcjonalnie) EQL core/mock determinism przed grantem.

Semcod — co przejąć algorytmicznie