Roadmapa implementacji autonomii

Status: plan wdrożenia (Fazy 0–8 + kolejność PR). Evidence CURRENT/TARGET: ../architecture/autonomy-implementation-status.md Rekomendacja kanoniczna: ../architecture/autonomy-recommended-solution.md ADR: ../architecture/adr/README.md (001–007 Accepted) Status ops: ../architecture/autonomy-ops-status-and-open-questions.md Intent/fallbacki: ../architecture/intent-orchestration-and-fallbacks.md Publish docs: docs-subactor-com-publish.md EQL prototype 0.2: subactor/eql integration note — typed SemanticPatch + determinism gates before apply grant (mock CI; no live OpenRouter in CI).

Baseline diagnostyczny: docs commit 5894906 — nie mieszać z refaktorem orchestratora.

Nearest milestone: safe autonomous mutation w mocked environment — nie production cutover DNS.

Dwa strumienie (równolegle, E2E dopiero po obu):


Faza 0 — dokumentacja i ADR

kanoniczny kod w subactor/<name>; drift: platform/scripts/check-component-drift.mjs (../architecture/canonical-component-paths.md, ADR-007).

Faza 1 — Intent Pack Registry

agents/nlp-uri-phrases.yaml generowany; LLM fields sync z situation_schema; step-catalog annotated + sync-intent-pack-derived.mjs --check. Dual-run do PR10. Planfile imports nie przepisywane automatycznie (PR3 = partial).

Faza 2 — Recipe Policy Engine

Retry tylko dla kroków idempotent/query (enforce). on_fail:ticket bez stub-success. on_fail:rollbackrolled_back / rollback_failed (PR7). Compensation/try_in_order → PR7+/later.

Faza 3 — Apply grants (split)

(urirun-connector-plesk + bridge plesk-httpdocs-sync; deny plan_hash_mismatch).

Faza 4 — Connector / SFTP

timeouty 15/120/180; błędy strukturalne; FTP fallback tylko z PLESK_SYNC_ALLOW_FTP_FALLBACK=1; brak SFTP → production_publish_ready=false.

Faza 5 — Release deploy + rollback

Strategy: PLESK_RELEASE_ACTIVATION=auto|symlink|pointer (Plesk docroot API not assumed). Orchestrator on_fail:rollbackrelease-rollback; stage rolled_back / rollback_failed.

Faza 6 — Vault

Faza 7 — Migracja docs.subactor.com → Plesk

Faza 8 — Lifecycle stanów

Szczegóły każdej fazy: dokument rekomendacji §3–§11.


Kolejność PR {#kolejność-pr}

PRZakres
-----
0Commit 5894906, ADR-y i stan początkowy — ADRs Accepted
1Kanoniczne ścieżki + drift gate — verified
2Intent pack schema/registry — verified (dual-run)
3Phrase/LLM/step dedupe onto packs — partial (Planfile still separate)
4Recipe policy core — partial (ticket hardening; rollback wired in PR7)
5aImmutable manifest + plan_hash binding — done
5bSigned apply grants (ADR-003) — done
5cGrant replay (jti) — done
6Paramiko/SFTP, capability readiness i strukturalne błędy — done
7Release upload, activation i rollback — done
8DNS/TLS preflight oraz public content fingerprint verify — done
9Migracja docs.subactor.com z Pages do Pleska — prep / blocked (G1 addon+SFTP, G2 cert, G6 HITL; no DNS flip)
10Usunięcie legacy resolverów — started (INTENT_PACK_DUAL_RUN shadow/off; cold fallbacks retained)

Każdy PR odwracalny; kompatybilność ze starymi recipes do końca migracji.

Uwaga projektowa: w tym repo docs shipping = commit (+ push), bez otwierania GitHub PR — tabela „PR” oznacza jednostki zmian implementacyjnych w monorepo Subactor.


Macierz testów (skrót)

Pełna lista: rekomendacja §12. Evidence: ../architecture/autonomy-implementation-status.md.

Werdykt

Cztery fundamenty: intent pack SSOT · policy engine · connector (transport+rollback) · verify obowiązkowy. Reprezentatywny sukces produkcyjny: autonomiczny release docs na Plesk — po PR9 cutover. Najbliższy kamień: odblokować PR9 G1 (addon docs + SFTP/paramiko + __subactor_release.json na origin); DNS cutover tylko przy G0–G6 green. Równolegle PR10 dual-run shadow/off — PR10-legacy-resolver-cleanup.md.