Przejdź do głównej zawartości

Polityka prototypów — awans według ryzyka i dowodów

Polityka prototypów dla oprogramowania generowanego przez AI klasyfikuje każdy prototyp według ekspozycji (użytkownicy, dane, skutki zewnętrzne i odwracalność), a nie według narzędzia, które go zbudowało. Przed awansem wymaga sześciu rodzajów dowodów: zgody na użycie danych, wskazanego właściciela, testów, przeglądu bezpieczeństwa, obserwowalności i przećwiczonego wycofania. Takie połączenie daje pełne trzy punkty w pytaniu 16 CTO Scorecard.

Ta strona jest dla CTO odpowiedzialnego za pytanie 16 oraz dla lidera platformy lub tech leada, który ma zamienić politykę w działające mechanizmy. Typowa sytuacja: inżynier w jedno popołudnie napisał metodą vibe codingu kalkulator cen, żeby rozstrzygnąć spór z działem sprzedaży. Cztery miesiące później opiekunowie klientów wysyłają link do niego klientom, narzędzie czyta kopię CRM i działa na prywatnym koncie chmurowym tego inżyniera. Nikt nie zdecydował, że to produkcja. Stawała się nią stopniowo, użytkownik po użytkowniku.

Q16 · Paralelizm w skali zespołu: Jak zespół klasyfikuje i promuje szybko generowane prototypy?

Odpowiedź za maksymalną liczbę punktów: polityka według klas ryzyka, z kryteriami danych, własności, testów, bezpieczeństwa, obserwowalności i wycofania, które prototyp musi spełnić przed awansem.

  • Tabelę punktacji Q16, która pokazuje, czego brakuje każdej odpowiedzi i jaka jedna zmiana przenosi cię wyżej.
  • Cztery klasy ekspozycji — każda z techniczną granicą, która ją egzekwuje, a nie tylko z etykietą.
  • Plik rejestru prototype.yml i check CI, które możesz scommitować bez zmian.
  • Tabelę wyzwalaczy awansu, która mówi, jak wykryć każdy wyzwalacz bez polegania na czyjejś pamięci.
  • Bramkę awansu z sześcioma kryteriami, dowodem dla każdego wiersza i osobą, która go podpisuje.
  • Trzy prompty do skopiowania: sklasyfikuj prototyp, przeszukaj go pod kątem wyzwalaczy, zaudytuj wniosek o awans.

Prototypy budowane przez analityków, zespoły operacyjne i inne osoby spoza inżynierii potrzebują dodatkowych kontroli (zakup kreatorów aplikacji, karty zgłoszeń, twarde granice dla nie-inżynierów). Opisuje je strona oprogramowanie tworzone poza inżynierią, która używa tych samych czterech klas. Ta strona dotyczy samej polityki oraz tego, jak inżynieria ją egzekwuje i audytuje.

Scorecard przyznaje 0–3 punkty. Każdy krok w górę zastępuje deklarację kontrolą.

PunktyOdpowiedźCzego brakujeJak przejść wyżej
0Nikt nie używa / brak polityki: szara strefaNikt nie wie, ile jest prototypów ani jakich danych dotykająZałóż rejestr opisany niżej i przeprowadź jedno wyszukiwanie prototypów
1Zakazane bez wyjątkówInżynierowie i tak prototypują, tyle że na prywatnych kontach, których nie widziszZastąp zakaz klasą „do wyrzucenia”: zatwierdzoną, odizolowaną i z datą wygaśnięcia
2Dopuszczone do prototypów i marketingowych landing page’y, nie do produkcji„Nie produkcja” nie ma definicji, więc nikt nie zauważa dnia, w którym przestaje to być prawdąZdefiniuj klasy według ekspozycji i zautomatyzuj wyzwalacze awansu
3Polityka według ryzyka z kryteriami danych, własności, testów, bezpieczeństwa, obserwowalności i wycofania przed awansemNa arkuszu odpowiedzi niczego; zostaje ryzyko, że polityka istnieje tylko na papierzePotwierdzaj ją co kwartał procedurą weryfikacji opisaną niżej

Zakaz punktuje wyżej niż brak polityki, bo przynajmniej deklaruje intencję. Punktuje niżej niż „dopuszczone do prototypów”, bo spycha pracę tam, gdzie nie możesz jej sprawdzić. Andrej Karpathy wyznacza granicę, którą rysuje ta polityka: „Vibe coding raises the floor. Agentic engineering is about extrapolating the ceiling” oraz „You are still responsible for your software, just as before” (opublikowany transkrypt jego wystąpienia na Sequoia Ascent, 2026-04-30).

Klasyfikuj według tego, do czego prototyp ma dostęp i na co wpływa, nigdy według wieku, rozmiaru ani narzędzia, które go napisało. Skrypt na 200 linii, który zapisuje do bazy rozliczeń, nie jest prototypem w żadnym istotnym sensie.

KlasaGranicaEgzekwowanie techniczneWymagane dowody
Eksploracja do wyrzuceniaDane syntetyczne lub zatwierdzona próbka, brak użytkowników spoza zespołu autora, brak zapisów do wspólnych systemówOsobne konto lub projekt sandboksowy, żadnych produkcyjnych poświadczeń, ruch wychodzący ograniczony do rejestrów pakietów, brak publicznego URLCel, właściciel i data wygaśnięcia w rejestrze
Kontrolowany pilotażWskazani użytkownicy w jednym zespole, zatwierdzone dane, odwracalne skutkiFirmowe repozytorium z CI, konto serwisowe o wąskim zakresie, SSO przed aplikacją, limit wydatkówZaakceptowana specyfikacja, testy uruchamiane w CI, podstawowy monitoring, spisany plan wycofania, wskazany właściciel z inżynierii
System produkcyjnyZależą od niego inne zespoły lub klienci, trwałe dane albo istotne skutki zewnętrzneStandardowa ścieżka produkcyjna: pipeline wdrożeń, menedżer sekretów, dyżuryPełna pętla AI-native SDLC i bramka awansu opisana niżej
Ścieżka zakazanaSekrety w kodzie, niezatwierdzone dane osobowe lub regulowane, płatności, niszczący dostęp do wspólnych systemówBlokowana przez kontrolę dostępu do danych i zarządzane ustawienia agentów, a nie przez osąd autora prototypuBrak: zatrzymaj się i przenieś pracę na ścieżkę produkcyjną

Cztery klasy odpowiadają czterem poziomom ryzyka z governance i autonomii. Praca do wyrzucenia mieści się w poziomach 0–1, kontrolowany pilotaż dotyka poziomu 2, a wszystko w klasie produkcyjnej jest poziomem 3, gdy tylko obsługuje uwierzytelnianie, rozliczenia lub dane produkcyjne, niezależnie od rozmiaru kodu.

  1. Opublikuj klasy i listę zakazów. Wpisz powyższą tabelę jako osobny punkt polityki korzystania z AI. Zapisz, że klasa wynika z ekspozycji i że rozpoczęcie prototypu do wyrzucenia nie wymaga niczyjej zgody. Usunięcie tego tarcia sprawia, że prototypy pozostają widoczne.

  2. Daj klasie „do wyrzucenia” zatwierdzone miejsce. Utwórz sandboksowe konto lub projekt w chmurze, szablon repozytorium z plikiem rejestru i checkiem CI opisanymi niżej oraz przykładowy zbiór danych. Jeśli zatwierdzona ścieżka jest wolniejsza niż prywatne konto, ludzie wybiorą prywatne konto.

  3. Rejestruj każdy prototyp w chwili utworzenia. Plik prototype.yml w katalogu głównym repozytorium jest wpisem w rejestrze. Centralny inwentarz to zaplanowane zadanie, które zbiera te pliki z całej organizacji, a nie arkusz, o który ktoś musi dbać.

  4. Zautomatyzuj wyzwalacze awansu. Podłącz każdy sygnał z tabeli wyzwalaczy do alertu albo czerwonego checka. Wyzwalacz, który zależy od tego, czy autor coś zauważy, nie zadziała.

  5. Prowadź awans jako bramkę, nie rozmowę. Prototyp wchodzi do klasy produkcyjnej dopiero wtedy, gdy każdy wiersz bramki awansu ma swój dowód i podpis. Zapisz decyzję „utwardzić na miejscu” albo „przebudować” wraz z uzasadnieniem.

  6. Wycofuj po terminie i sprawdzaj sprzątanie. Prototyp po terminie dostaje nową datę albo zostaje wycofany. Wycofanie oznacza unieważnienie poświadczeń, usunięcie kopii danych, usunięcie domen i rekordów DNS, zamknięcie rozliczeń i zarchiwizowanie repozytorium wraz z zapisem decyzji.

Scommituj ten plik w katalogu głównym każdego repozytorium z prototypem. Check CI poniżej kończy się błędem, gdy brakuje pola albo minęła data wygaśnięcia. Dzięki temu „powinniśmy przejrzeć stare prototypy” zamienia się w czerwony build.

prototype.yml
name: pricing-calculator
class: controlled-pilot # disposable | controlled-pilot | production | forbidden
owner: anna.nowak # konkretna osoba, nigdy alias zespołu
engineering_owner: team-revenue-platform # wymagany od controlled-pilot wzwyż
purpose: Let account managers quote volume discounts without a spreadsheet.
users: account-managers-emea (14 people)
data_read: [crm-replica:internal]
data_written: none
external_effects: none # e-mail, płatności, zapisy do API stron trzecich albo none
credentials: svc-pricing-calc (read-only, secrets manager)
public_url: false
expiry: 2026-12-15
last_trigger_review: 2026-09-26

Dodaj ten workflow do szablonu repozytorium prototypów. Nie potrzebuje sekretów i tylko czyta repozytorium.

.github/workflows/prototype-register.yml
name: prototype-register
on:
pull_request:
schedule:
- cron: '17 6 * * 1' # w każdy poniedziałek, żeby wygasł także nieruszany prototyp
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check class, owner, and expiry
run: |
test -f prototype.yml || { echo "prototype.yml is missing"; exit 1; }
for key in class owner expiry; do
grep -Eq "^${key}: *[^ #]" prototype.yml || { echo "prototype.yml has no ${key}"; exit 1; }
done
if grep -Eq '^class: *forbidden' prototype.yml; then
echo "Forbidden class: move this work to the production path"; exit 1
fi
if grep -Eq '^class: *(controlled-pilot|production)' prototype.yml; then
grep -Eq '^engineering_owner: *[^ #]' prototype.yml || { echo "engineering_owner is required for this class"; exit 1; }
fi
expiry=$(sed -n 's/^expiry: *\([0-9-]*\).*/\1/p' prototype.yml)
[[ "$expiry" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] || { echo "expiry must be an unquoted YYYY-MM-DD date"; exit 1; }
if [[ "$(date -u +%F)" > "$expiry" ]]; then
echo "Expired on ${expiry}: renew with a new date or retire"; exit 1
fi

Uruchomienie według harmonogramu jest ważniejsze niż uruchomienie przy pull requeście. Prototyp, którego nikt nie dotyka, to właśnie ten, który wygasa po cichu. GitHub wysyła powiadomienie o nieudanym uruchomieniu według harmonogramu tylko osobie, która jako ostatnia zmieniła linię cron, więc kieruj tę porażkę także do właściciela z rejestru, na przykład krokiem, który otwiera issue przypisane do osoby z pola owner. W repozytorium publicznym GitHub wyłącza zaplanowane workflow po 60 dniach bez aktywności w repozytorium, dlatego trzymaj repozytoria prototypów jako prywatne albo niech centralne zadanie inwentaryzacji oznacza wyłączone workflow.

Wyzwalaczem awansu jest każda zmiana ekspozycji. Każdy wyzwalacz potrzebuje sygnału wykrycia, który nie zależy od autora.

WyzwalaczSygnał wykryciaReakcja
Użytkownicy spoza zespołu właścicielaLogi SSO lub dostępu pokazują nowe grupy; aplikacja pojawia się na wspólnym kanale lub w wikiPrzegląd w ciągu tygodnia; klasa co najmniej kontrolowany pilotaż
Dane klientów, osobowe lub regulowaneWniosek o dostęp do danych, nowe połączenie ze sklasyfikowanym magazynem albo pole w schemacie pasujące do twoich wzorców danych osobowychWstrzymanie do czasu, aż zespół odpowiedzialny za prywatność danych zatwierdzi to użycie
Zapisy do wspólnego systemu lub trwały stanNowy katalog migracji bazy danych, prośba o uprawnienia zapisu dla konta serwisowegoBramka awansu przed kolejnym wydaniem
Skutki zewnętrzne: e-mail, płatności, zapisy u stron trzecichSDK płatności lub poczty w zależnościach; wywołania do nowych domenZakazane do czasu przejścia bramki; płatności od razu trafiają na ścieżkę produkcyjną
Inny system od niego zależyInne repozytorium wywołuje jego API lub importuje jego pakiet; pojawia się w katalogu usługBramka awansu; w tym samym tygodniu wskazany zostaje właściciel z inżynierii
Publiczna ekspozycjaNowy rekord DNS, publiczny URL albo wyłączone SSONajpierw ogranicz dostęp do sieci wewnętrznej lub SSO, potem przegląd
Obowiązek wsparciaKtoś inny niż autor dostaje alert albo prośbę o naprawęBramka awansu; prototyp już stał się produkcją

Wiek nie jest wyzwalaczem. Dwuletni wewnętrzny notatnik na danych syntetycznych może na zawsze pozostać w klasie „do wyrzucenia”, jeśli regularnie odnawia datę wygaśnięcia. Dwudniowa aplikacja z logowaniem dla klientów nie może.

Bramka awansu sprawdza sześć kryteriów z odpowiedzi punktowanej najwyżej w Q16. Każde kryterium ma dowód, który recenzent może sprawdzić bez czytania kodu linia po linii, oraz wskazaną osobę, która go podpisuje.

KryteriumDowódKto podpisuje
DaneKażdy magazyn, z którego prototyp czyta i do którego pisze, jest sklasyfikowany, klasyfikacja dopuszcza to użycie, a żadna kopia danych produkcyjnych nie leży poza zatwierdzonym miejscemWłaściciel danych lub lider ds. prywatności
WłasnośćUsługa ma właściciela w inżynierii, jest w grafiku dyżurów tego zespołu, a autor przekazał notatki o zachowaniuEngineering manager zespołu-właściciela
TestyKryteria akceptacji wyprowadzone z prawdziwych przykładów obecnego zachowania, każde pokryte testem, który działa w CI i pada, gdy zachowanie się zepsujeTech lead zespołu-właściciela
BezpieczeństwoUwierzytelnianie i autoryzacja na każdej ścieżce, brak sekretów w kodzie i paczkach klienckich, zależności potwierdzone w publicznym rejestrze, przegląd bezpieczeństwa diffu bez otwartych problemów wysokiej wagiRecenzent bezpieczeństwa
ObserwowalnośćŚledzenie błędów, logi z ustawioną retencją i jeden alert na awarię, którą użytkownicy zauważyliby najpierwLider dyżurów zespołu-właściciela
WycofanieSpisany plan wycofania lub wyłącznik, przećwiczony raz poza produkcją, z czasem, jaki to zajęłoLider dyżurów zespołu-właściciela

Następnie zespół-właściciel zgłasza zmianę jak każdą inną, z dołączonym pakietem dowodów. Zapis awansu stwierdza utwardzić na miejscu albo przebudować i podaje powód. Utwardzaj, gdy kod da się przenieść do firmowego repozytorium, stos technologiczny pasuje do tego, co utrzymuje twoja platforma, a przegląd bezpieczeństwa znajduje pojedyncze problemy. Przebudowuj, gdy problemy bezpieczeństwa są systemowe albo model danych nie udźwignie realnej skali. Przy przebudowie zachowaj kryteria akceptacji, a kod wyrzuć: prototyp już zapłacił za odkrycie, co oprogramowanie ma robić. Pełną tabelę „utwardzić czy przebudować” znajdziesz na stronie oprogramowanie tworzone poza inżynierią.

Jak przeprowadzić przegląd prototypu w każdym z narzędzi?

Dział zatytułowany „Jak przeprowadzić przegląd prototypu w każdym z narzędzi?”

Prompty z następnej sekcji działają w każdym z trzech agentów. Różni się to, jak utrzymać sesję przeglądu w trybie tylko do odczytu i skąd pochodzi druga opinia.

Zacznij przegląd w trybie tylko do odczytu poleceniem claude --permission-mode plan, wklej prompt i pozwól agentowi raportować bez edycji. Dla kryterium bezpieczeństwa uruchom /security-review na diffie gałęzi, a /code-review, gdy utwardzona wersja jest już pull requestem.

Na kanale latest (v2.1.283+) interaktywne sesje Claude Code w terminalu i VS Code startują w trybie auto, w którym akcje zatwierdza klasyfikator, a nie inżynier, chyba że plik ustawień ustawia disableAutoMode albo model sesji nie obsługuje trybu auto; claude -p nadal startuje w trybie Manual. W sandboksie dla prototypów do wyrzucenia to rozsądne. Aby wyłączyć ten tryb w całej organizacji, ustaw permissions.disableAutoMode: "disable" w ustawieniach zarządzanych (sprawdzone na v2.1.283).

Pierwszy prompt uruchamiaj, gdy prototyp powstaje lub zostaje odnaleziony, drugi według harmonogramu, a trzeci, gdy ktoś wnioskuje o awans. Wszystkie trzy działają tylko do odczytu.

Jak udowodnić, że polityka działa, bez czytania każdego prototypu?

Dział zatytułowany „Jak udowodnić, że polityka działa, bez czytania każdego prototypu?”

Dowody są strukturalne, więc CTO sprawdza liczby i wyjątki, a nie kod.

  • Pokrycie rejestru. Porównaj repozytoria i projekty chmurowe znalezione podczas wyszukiwania (system kontroli wersji, lista aplikacji w SSO, rozliczenia chmury) z repozytoriami, które mają prototype.yml. Każda luka zostaje zarejestrowana albo wycofana.
  • Czerwone buildy po terminie. Policz zaplanowane checki rejestru, które się nie powiodły i zostały naprawione w ciągu dwóch tygodni. Czerwony check, którego nikt nie naprawia, oznacza błędne pole właściciela.
  • Zapisy awansu. Każda usługa w klasie produkcyjnej, która zaczynała jako prototyp, ma zapis bramki z sześcioma podpisami i decyzją „utwardzić czy przebudować”.
  • Ekspozycja bez właściciela. Liczba prototypów z użytkownikami spoza zespołu właściciela i bez engineering_owner przy każdym przeglądzie kwartalnym powinna wynosić zero.
  • Kompletność wycofań. Dla próbki wycofanych prototypów potwierdź, że poświadczenia już nie działają, a domeny nie mają już aktywnych rekordów DNS.

Raportuj te pięć punktów co kwartał. To także dowody, o które poprosi recenzent scorecardu, gdy deklarujesz trzy punkty w Q16.

Co psuje się w polityce prototypów i jak to naprawić?

Dział zatytułowany „Co psuje się w polityce prototypów i jak to naprawić?”

„Tymczasowa” produkcja. Prototyp zdobywa użytkowników, dane i zależność, a nikt nie ogłasza, że to produkcja. Naprawa: traktuj wyzwalacz „obowiązek wsparcia” jako rozstrzygający. Jeśli w tym miesiącu naprawiał go ktoś inny niż autor, uruchom bramkę awansu teraz i wskaż właściciela w tym tygodniu.

Rejestr staje się formularzem, którego nikt nie wypełnia. Inżynierowie go pomijają, bo jest oddzielony od pracy. Naprawa: dodaj plik do szablonu repozytorium, a check CI do domyślnej ochrony gałęzi, tak aby utworzenie prototypu tworzyło też wpis w rejestrze.

Sandbox dla prototypów do wyrzucenia jest zbyt restrykcyjny. Inżynierowie wracają na prywatne konta. Naprawa: zmierz, ile trwa uruchomienie zatwierdzonego prototypu, i całkowicie usuń zgody z tej klasy. Kontroluj poświadczenia i dane, a nie samo rozpoczęcie pracy.

Awans trwa kwartał. Zespoły przestają o niego prosić, a prototypy niepostrzeżenie wchodzą w użycie. Naprawa: publikuj medianę czasu od wyzwalacza do decyzji bramki i utrzymuj niewielką rotację właścicieli z inżynierii, którzy mogą przejąć awansowaną usługę.

Utwardzanie na miejscu przenosi skróty prototypu na produkcję. Naprawa: kryteria bezpieczeństwa i danych są zero-jedynkowe, a nie doradcze. Problem systemowy (brak autoryzacji, sekrety w historii, dane osobowe w logach) zmienia decyzję na przebudowę.

Po wycofaniu zostają aktywne poświadczenia. Repozytorium jest zarchiwizowane, ale konto serwisowe i rekord DNS nadal istnieją. Naprawa: wycofanie jest zakończone dopiero wtedy, gdy check potwierdzi, że poświadczenie nie działa, a rekord DNS domeny już nie istnieje, i ten wynik trafi do rejestru.

Wróć do klucza odpowiedzi CTO Scorecard, aby przejść do pozostałych pytań z sekcji „Paralelizm w skali zespołu”.