За межамі розработкі: Практычныя вядомасці агентнага інжынерства
Практычныя інструкцыі па выкарыстоўванні кнігі «Beyond Spec-Driven Development: The Agentic Engineering Playbook», якая замкнута ў контрактах, пераканальных проверках і готовых фрагментах коду для команд, якіе застаўляюць гэты патерн.
Наступныя прытамакі восстанавляюць практычны шлях, адпраўлены да кніги «Beyond Spec-Driven Development: The Agentic Engineering Playbook That’s Replacing How We Build Software». Акцэнт ставіцца на кантракты, пераконтроўваннія і месца для коду, які можна легка заменіць, а не на мотывацыйныя аспекты. Калі працуеце на стадзіі агледжэння, спачатку запісайце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць на падчасныя неудачы. Такі чарт дапамагае заставіць пазнейшыя змены коду быць чыстымі. Валідзіце маленькія, тэставаныя елементы заместо велікіх скрыптав. Калі якаясь ступеня не выконваецца, неудача должна адносіцца да адной адпаведальнасці, а не да заплутанага ланцоўка задач.
Назва, якая засталася, і чаму гэта важна
Этап «Імя, якое застаўся» працюе наякшым чынам, калі яго спрыяваць як меруючую паверхню. Запісаце адна «золатая» версія, адин прыклад неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Спрыявайце этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задачы. Храніце стан графа ў простам і типаваным формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў які поле, і спакшваюць продажчэй работу пасля перарываў.
Пяць слоёў:
Этап «Пяць слоёў» працюе наякша, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна «золатая» транскрыпцыю, адин прыклад неудачы і запіс пра вярнэнне да поперадньага стану, прычым расшырюючы сферу дзеяння. Запісвайце часы выконання і косты токеноў або запытача праза функцыйнае рэзультат. Відкрытыя данні пра косты заранее запобегаюць неспакоўным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Храніце стан графа як плоскі і з адначыяным типам дадзеных. Вкладаныя блокі дадзеных маскуюць інфармацыю пра тое, який вузел запісаў які поле, і спакшваюць продажчыку працэс пасля перарываў.
Слой 1 — Спецыфікацыя: З’явіце, чаго хочаце, прычым яшчэ не прасіце пра гэта
Этап «З’явлення спефікацыі слоя 1» працюе найэфектывней, калі яго розглядаць як вимерную паверхню. Зберагачыце адны ідеальны прыклад роботы, адзін кейс неудачы і прыметкі па адвярненню роботы пры расшырэнні масштаба. Зберагачыце настройкі пазначэнныя за межамі коду прыемлена. Файлы сераўіснага сераўісу, хранілішчы секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабходнасці чытання всей структуры. Стан графа должен быць простым і атрыбутаваным. Вкладненыя блокі маскуюць інфармацыю пра тое, канкрэтны вузел запісаў канкрэтную поль і спакойваюць продовжэнне роботы пасля перарываў. Этап «З’явлення спефікацыі слоя 1» працюе найэфектывней, калі яго розглядаць як вимерную паверхню. Зберагачыце адны ідеальны прыклад роботы, адзін кейс неудачы і прыметкі па адвярненню роботы пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі які-небудзь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаную структуру роботы.
Адклікайце яго — шаблон спефікацыі:
У стадії реалізацыі спефікацыі неабходна ўскладненне вхідных дадзэнняў, адначальніка крока і крэатарыяў завершэння працы перад змінай коду. Аператары должны магчымае запускаваць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце гэтай стадіі як даговору межа вхіднымі дадзэннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, ускладненне перакананняў пра успех і адмовіцеся ад тыхнай частковай рэалізацыі без паведамлення. Забезпечыце людскую апраўду для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даныя у працэсе виробніцтва. Компіляцыйныя налашчэння не ўзроўнаваны з абсалютным завершэнням бізнес-процэса.
# Feature Spec: [Feature Name]
## Last updated: [Date] — this document is the source of truth
## What this must always do
- [ ] [Behaviour 1 — specific, testable]
- [ ] [Behaviour 2 — specific, testable]## What this must never do
- [ ] [Boundary 1 — e.g. "Never process refund >$500 without human approval"]
- [ ] [Boundary 2 — e.g. "Never fabricate a citation"]## Success criteria (measurable)
- Context recall: >0.85
- Faithfulness: >0.90
- Cost per query: <$0.15
- Latency p95: <2s## Failure signals (alert if breached)
- Any metric drops >5% from 7-day baseline
- Cost per task exceeds 3x expected range
- User complaint rate exceeds 2% of sessions## Decomposition (for parallel agents)
- [ ] Task A: [scope] — can be delegated independently
- [ ] Task B: [scope] — depends on Task A output
- [ ] Task C: [scope] — can run parallel with Task A
Слой 2 — Оркестрацыя: калькі агентаў, адны цэлесапраявлены выход
Для мнагаэтапнай оркестрацыі на роўні 2 неабходна падчас змены коду адзначыць вхідныя даны, адпаведальнага за кожны этап і крэтыяры завершэння. Аператары должны магчымае перзапускать кожны этап з вядомага пункта контролю, не прыпускаючы стану, які залишаецца незрозумелым. Запісваюць час выканання і вартасць токенаў або запытак па боку функцыйнальных рэзультаатаў. Відразлівае паказанне вартасцей запобегае неспадзяваным рахункам, калі процес пераходзіць з дэмовай среды ў спакульнаныя сераўеры. Пры выконанні дзеяння, якія коштуюць грошы або зменяюць даны ў працэсе, неабходна атрыбут людзкага затверджэння. Працэс кампілявання не ўзроўнаважваецца з повнасцю бізнес-процэсаў.
Адклікайце — паралельная оркестрацыя ў практыцы:
Для стадіі паралельнай оркестрацыі неабяжна прадзеўліваць вхідныя даны, абавесцявальніка крока і крэтырыя завершэння пры перадзеўліванні коду. Аператары должны магчымае запускать крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба захаваць праз аддзел ад коду прыкладнення. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцияў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь лянцуг задач. Прызначаць людскія апраўды для рэлей, якія витрачаюць грошы або зменяюць даны у працэйнай сістэме. Прыўязка на час компіляцыі не є падтверджэнням полнай адпаведнасці бізнес-процэсаў.
class AgenticOrchestrator:
"""Plan → Execute (parallel) → Verify"""
def plan(self, feature_spec: dict) -> dict:
"""Decompose feature into independently delegatable tasks."""
tasks = []
for component in feature_spec["decomposition"]:
tasks.append({
"id": component["id"],
"spec": component["scope"],
"constraints": feature_spec["must_never"] + component.get("local_rules", []),
"depends_on": component.get("depends_on", []),
"verification": component.get("success_criteria", []),
})
independent = [t for t in tasks if not t["depends_on"]]
sequential = [t for t in tasks if t["depends_on"]]
return {"parallel": independent, "sequential": sequential} async def execute(self, plan: dict):
"""Run independent tasks in parallel, sequential tasks in order."""
parallel_results = await asyncio.gather(*[
self.delegate_to_agent(task) for task in plan["parallel"]
])
for task in plan["sequential"]:
result = await self.delegate_to_agent(task, prior=parallel_results)
parallel_results.append(result)
return parallel_results def verify(self, results: list, spec: dict) -> dict:
"""Check all outputs against the spec — structural, not line-by-line."""
issues = []
for result in results:
if not self.satisfies_spec(result, spec):
issues.append(f"{result['id']}: does not satisfy spec")
if self.conflicts_with(result, results):
issues.append(f"{result['id']}: conflicts with another module")
return {"passed": len(issues) == 0, "issues": issues}
Для стадіі паралельнай оркестрацыі неабяжна падчас рэалізацыі выканаць задання: прадзеяваць вхідныя даны, назначыць адпаведнага адпаведальнага за крок і встановіць критэрыя завершэння працы, перш чым зменіць код. Аператары должны магчымаю цяпер запускаць крок з вядомага пункта контролю, не спрабоўваючы з’ясаваць схованы стан. Лепш выбіраць маленькія, тэставаныя елементы заместо велікіх скрыптав. Калі крок не выйшоў, прычына неудачы павінна вказываць на адзін конкрэтны элемент, а не на заплутаную структуру працы.
Слоўна 3 — Кодаваныя правілы: навучэнне агентаў таму, як працюе ваша команда
Калі працюеце над стадзіяй «Кодаваныя правілы слоя 3», спачатку запісайце контракт: неабяжлівыя даннэ, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Спрыймайце гэтую стадзію як контракт межа даннемі і перакананымі выходамі. Дайце назву элементам, задаце перакананні успеху і адмовіцеся ад тыхоўага частковага завершэння. Зробіце пераконтроўку пасля дорогіх крокаў. Програма не должна занова ставіць плату за той самы вызыв LLM, калі аператар прабуе зноў выконаць пазнейшы вузел.
Адклікайце гэта — іерархія правілаў:
Калі працуеце на стадыі «Выкананне правілаў», спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі список контроля дапамагае залічваць змяны ў кодзе чыста.
your-company/
├── .ai-rules/
│ └── org-rules.md ← Company-wide: security, compliance, style
│
├── team-payments/
│ ├── .ai-rules/
│ │ └── team-rules.md ← Team-level: error handling, testing, deploys
│ │
│ ├── service-checkout/
│ │ ├── CLAUDE.md ← Repo-level: architecture, tech stack, builds
│ │ ├── src/
│ │ │ ├── auth/
│ │ │ │ └── .ai-rules.md ← Module: auth-specific constraints
│ │ │ └── payments/
│ │ │ └── .ai-rules.md ← Module: PCI compliance rules
# org-rules.md (loaded for every agent, every repo)
- Never commit secrets or credentials
- All public APIs require authentication
- Error responses must never expose stack traces
- Log every state-changing operation with user context
# team-rules.md (inherits org, adds team specifics)
- Use Result<T, E> pattern — never throw exceptions
- All database queries go through the repository layer
- Tests must cover the happy path + 2 failure modes minimum# CLAUDE.md (inherits team, adds repo specifics)
- This repo uses Express.js + Prisma + PostgreSQL
- Run `npm test` before suggesting any PR is ready
- Migrations are append-only — never modify applied migrations# module .ai-rules.md (inherits repo, adds module specifics)
- auth/: All token operations must use constant-time comparison
- payments/: PCI DSS requires field-level encryption on card data
Слой 4 — Чалавечы нагляд: Дазвол, адзіроўка, абавескват
Калі працуеце на стадзіі чалавечага няблакання 4-го слоя, спачатку запісайце угоду: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Зберагаеце настройкі за межамі коду прыемлена. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжлівага чытання всей структуры. Стварайце контрольныя пункты пасля дорогіх крокаў. Функцыя вярнення не должна занова ставіць плату за той самы вызыв LLM, калі аператар прабуе зноў выконаць пазнейшы вузел. Калі працуеце на стадзіі чалавечага няблакання 4-го слоя, спачатку запісайце угоду: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Валіце маленькія, тэставаныя елементы працы над вялікімі скрыптамі. Калі крок не выйшаў, прычына неяксамоства должна вказываць на адну адпаведальнасць, а не на заплутаны ланцоўкі працы.
Выконайце — чартак перагляду выходных даных агента:
Этап «Выконайце» агента працюе найбэй лепша, калі яго спрыяваць як меравальную плошчу. Запісаўце адна ідеальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваце сферу дзейнасці. Спрыяваць гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выходнымі дадзеннямі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад мовчанкавага частковага завершэння. Зберагачыце стан графа ў простам і типаванам формате. Вкладзеныя блокі маскуюць, який вузел запісаў кожны поле, і спакшваюць продажчэнне пасля перарываў.
## Agent Output Review Checklist
### Spec alignment (does it do what was asked?)
- [ ] All "must always do" behaviours are implemented
- [ ] No "must never do" boundaries are violated
- [ ] Success criteria from the spec are met or tested### Architectural coherence (does it fit the system?)
- [ ] No new dependencies introduced without justification
- [ ] Consistent with naming, patterns, and structure of existing code
- [ ] No duplication of logic that exists elsewhere### Safety and edge cases
- [ ] Error handling covers the failure modes the spec anticipated
- [ ] No hardcoded credentials, keys, or environment-specific values
- [ ] Input validation present on all external-facing boundaries### What the agent cannot check for itself
- [ ] Does this make business sense? (not just technical correctness)
Слой 5 — Развіцца з можласцю спазірвання: Знайсце, што зрабіла система і чы робіла яна правильна
Этап разработкі з можласцю спазірвання на роўні 5 працуе найэфектывней, калі яго спрыяваць як мерыемую паверхню. Запісайце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіску пра вярненне да пачатковага стану перш чым расширваць масштабы. Запісвайце часы выконання і косты токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Храніце стан графа ў простам і типаваным формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакшваюць продажчэнне роботы пасля перерываў.
У практыцы разработка з можласцю спазірвання значыць трохі чаго:
У практыцы, стадія развіцьба, яка ўможліва для спостерэння, працюе найкраща, калі яе розглядаць як вимерную паверхню. Зберагчыце адны ідеальны прыклад роботы, адзін кейс неудачы і прыметкі па адвярненню перад расшырэнням масштаба. Зберагчыце настройкі пазначэнныя окола коду прыемлена. Файлы серавэра, хранілішча секретных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавляць аудыт без неабяжнага чытання всіх дадзеных. Зберагчыце стан графа простым і з адзінаковым типам. Вярсткаваныя блокі маскуюць інфармацыю пра тое, який вузел запісаў які поле, і спакоююць продаж чытання пасля перерываў. У практыцы, стадія развіцьба, яка ўможліва для спостерэння, працюе найкраща, калі яе розглядаць як вимерную паверхню. Зберагчыце адны ідеальны прыклад роботы, адзін кейс неудачы і прыметкі па адвярненню перад расшырэнням масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.
Адбавіце яго — мінімальная наладка для развіцьба, якая ўможліва для спостерэння:
Ёнколі хочаце ўжоць практыкуваць гэта на мінімальным ўровні, перш чым зменяць код, неабходна адзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аператары должны магчымае перадзеісцаваць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце гэтаму ўровню як кантракту межаў вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, адзначыць критэрыя успеху і не прабоўваць прыймаць часткова завершаныя рэзультаты без падтверджэння. Заставіць людзкую апраўдку для тых крокаў, якія выкарыстоўваюць грошы або зменяюць даны для працы. Компіляцыйны момент не є адпаведнікам пачатковай цэлесообразнасі проекту.
from dataclasses import dataclass, field
from datetime import datetime
@dataclass
class AgentTrace:
"""Minimum trace for every agent-delegated task."""
task_id: str
agent_id: str
spec_given: str # What was the agent told to do?
tools_used: list[str] # Which tools did it invoke?
files_modified: list[str] # What did it change?
model_version: str # Which model, which version?
tokens_consumed: int # What did it cost?
started_at: datetime = field(default_factory=datetime.utcnow)
completed_at: datetime | None = None
verification_result: str = "" # pass / fail / needs_review
human_reviewer: str = "" # Who signed off?
issues_found: list[str] = field(default_factory=list)
## Weekly Observable Development Review (15 minutes)
1. How many agent tasks were delegated this week? ___
2. How many passed verification on first attempt? ___ (target: >80%)
3. Which task category had the most issues? ___
4. Top 3 issues found during review:
- ___
- ___
- ___
5. Which issues should become codified rules (Layer 3)? ___→ Update CLAUDE.md with any new rules from this week's observations.
Што гэта значыць для вашай кар’еры?
Для ўражэння «Што гэта значыць» неабходна прадзефінаваць вхідныя даны, адпаведальную особу за крок і критэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Запісвайце час выконання і вартасць токена або запыту праза функцыйнальныя рэзултаты. Відразлівая вартасць з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спяльнаныя сераўеры. Заставьце людзкія апраўданні для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе виробніцтва. Праця ў час компілявання не є гарантыяй полнай адпаведнасці праекту бізнес-трэбованням.
Ось практычныя настановы з панедзелка по пятніцу:
Для ўрагу «Звярніцеся да пана з понедзелка па пятницу» неабходна ўпрымкі, адпаведальнага за крок і крэтыры завершэння перад змянай коду. Аперацыяныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць праза код аплікацыі. Файлы сераўнавання, храненні секрэтных дадзенаў і флагі функцый павінны знаходзіцца ў адном месцы, якое аперацыяныя працавнікі можуць пераглядаць, не чытаючы весь ланцуг задач. Прызначайце людскія апраўды для рэлей, якія витрачаюць грошы або зменяюць даны ў працэсе. Прыўязка на час компілявання не є падтверджэннем полныя адпаведнасці з бізнес-трэбованнямі. Для ўрагу «Звярніцеся да пана з понедзелка па пятницу» неабходна ўпрымкі, адпаведальнага за крок і крэтыры завершэння перад змянай коду. Аперацыяныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валічыце маленькія, тэставальныя елементы пра велікія скрыпты. Калі крок не выйшоў, прычына нехарактернага рэзультата павінна вказываць на адну конкрэтную адпаведальнасць, а не на канвал.
закрэтаная труба.Што вы паследзілі некалькана ў статыце SDD?
Калі працуеце над этапам «Што вы паследзілі некалькана», спачатку запісайце умовы кантракту: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выканаецца у разы частковага невясковання. Такі список контролю дапамагае залишыцца часовым падчас змены коду. Спрэцявачыце гэты этап як кантракт межаў вхідных дадзеных і перакананых выходных рэзультатаў. Дайце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Стварайце контрольныя пункты пасля дорогіх крокаў. Система вярнення не павінна знову ставіць плату за той самы вызов LLM, калі аператар праканае пазнейшы вузел.
Што будзе далей?
Калі працюеце над стадзіяй «Што будзе далей», спачатку запісайце угоду: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконтроўкаў дапамагае заліцвачваць пазнейшыя змены коду. Запісвайце час выканання і кост токенаў або запытаў праза функцыйнае рэзультат. Відкрытыя данні пра косцы з’являюцца рана, таму не будзе неспакою з рахункамі, калі процес перайдзе з дэма-сераверу ў спакульнаныя среды. Зробіце пераконтроўку пасля дорогіх крокаў. Продовжэнне выканання не павінна знову стаўіць рахунак за той самы вызов LLM, калі аператар перапрыяўляе выкананне да пазнейшага вузла.
Чэк-ліст для эксплуатацыі
Для стадзіяй чэк-ліста для эксплуатацыі, перш чым зменяць код, неабяжлівае задаць данні, адпаведальную особу за крок і критэрыя завершання. Аператары павінны магчымаць перазваляць крок з вядомай пераконтроўкі, не падозрюючы пра схованы стан.
Дасведчуйце як «шчаслівы» шлях, так і шлях вяснавання разам. Перапрыяўленні, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Неабяжна людская апраўка для тых элементаў, які выкорыстоўваюць грошы або зменяюць даны пра вырабніцтва. Працэс кампайлявання не ўзроўнюецца з повнасцю бізнес-процэсаў.
Напісце кароткі посібнік: як роцыяваць клучы, як спрачыслаць чергу, як анулюваць пярэдніе змены.
Валічыце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісь крок не выйшоў, прычына нехацькага рэзультата павінна быць адносна адзінаго элемента, а не сложнай сэткі крокаў.
Неабяжна людская апраўка для тых элементаў, які выкорыстоўваюць грошы або зменяюць даны пра вырабніцтва. Працэс кампайлявання не ўзроўнюецца з повнасцю бізнес-процэсаў.
Перад адкрыцыем новых версій заморозьце існуючыя, зафіксуйце критычныя моменты для ключоўых працэсаў і пераканайцеся, што є адпаведныя крокі для анулявання змэн. У спадзеленых средах неабходны ліміты на частоту запытоў, перакананні ў правільнасці належнасці ресурсаў і чысткая відпаведальнасць за роцыяванне секрэтных дадзенняў. Валічыце простую надзеянасць на стабільнасць замест крэатыўных, але разовых дэманстрацый.
Запіска параграфу 3031bd6e2b68: не трэба кантрацеўваць ключы прадаўцаў у репазітарыі, задаць максімальную кантроль на токены на адну сесію, а таксама зберагчы транскрыпціі праза фіксатуры адлічэння, каб пазнейшыя замены моделей заставалі пораўнанневымі.
Для запіскі параграфу 0 пра зміцнэнне: перад зменай коду неабходна адзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыёныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Канфігурацыю трэба кантрацеўваць за межамі коду прыкладнення; файлы сераўіса, сховішчы секрэтных даных і флагі функций павінны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф.
Дзялейны пункт зміцнэння 0/810: для гэтай запіскі трэба вимерваць час выканання, класі каштоўкаў і выкарыстоўвання токенаў, а пасля — вырашыць, чы робіць змяну на адной падставе фіксаванага набора пытанняў, а не на адной лячбе.
Калі працуеце над першым этапам зміцнення, спачатку запісайте умовы кантракта: неабяцковыя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі список дапамагае залічваць пазнейшыя змены коду чыста і прозрачна. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, неудача должна паказваць на адну конкрэтную відпаведальнасць, а не на заплутаны ланцюг задач.
Дзеянне зміцнення 1/810: вымерыце час выканання, класію памылак і колькасць токенаў, якія былі выкарыстоўваны для гэтага пункту, а потым выявіце, чы рашыцца застаўляць змену на адной фіксаванай сэтке пытанняў, а не на адзінаковых прыкладах.
Этап зміцнення 2 працюе лепей, калі яго спрыяжваць з мерыемымі показнікамі. Запісайце адны ідеальны прыклад роботы, адзін кейс неудачы і прыказку па абратанні змян перад расшырэнням масштаба. Запісвайце часы выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы гляднасці костаў з самага пачатку запобегае неспакойным рашчыткам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне паўжчання 2/810: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Для 3-й стадзіі паўжчання неабходна перад змянай коду чытко апісаць вхідныя даны, адпаведальнага за выкананне крока і критэрыяы завершэння. Аперацыйныя працавнікі должны магчымае перадзвануць гэты крок з вядомага пункта контролю, не прымуджаючыся здагадвацца пра схованы стан. Трэба адночасна задокументаваць шлях успеху і шлях вярнення да нормальнага стану. Праказы, перагледы з боку людзей і обробка некоректных паведамленняў ёсць часткай продукту, а не чымось, што дадаецца пазней.
Дзеянне паўжчання 3/810: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Калі працуеце над 4-й стадзіяю практыкы забезпечэння безпекі, спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі список пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Спрэтывайце гэту стадзію як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад тых частых завершэнняў, якія не зафіксаваны.
Дзеянне 4/810 практыкы забезпечэння безпекі: вымерайце час выканання, класы каштоўкаў і витрату токенав для гэтай практыкі, а потым выберыце, чы робіць змены на адной пазначанай базе пытанняў, а не на адной лічбе прыкладаў.
4-я стадзія практыкы забезпечэння безпекі працуе лепей, калі яе спрэтываюць як меравальную плошчу. Запісайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і змест карэкцыі перад расшырэнням масштаба. Зберагайце настройкі праз адна месца, не ў кодзе прыемлівача. Файлы сяродавішча, хранільнікі секрэтных дадзенняў і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць аудытаваць без неабяжлівага чытання всей структуры.
Дзеянне паўжчання 5/810: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы рэшацца застаўляць змяну.
Для 6-й стадзіі паўжчання неабходна перад змянай коду чытка апісаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыяныя працавнікі павінны магчымае перадзванаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактернага рэзультата павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
Дзеянне паўжчання 6/810: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы рэшацца застаўляць змяну.
Калі працуеце над 7-ю стадзіяй забезпечэння безпекі, спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список дапамагае заліцварваць будучыя змены коду. Запісуйце час выканання задачы, а таксама вартасць токена чыў запиту праз адныя з функцыйнальных рэзультатаў. Відразлівае паказанне вартасцей запобегае неспадзячым расходам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне 7/810 забезпечэння безпекі: вымерайце час выканання, класыя ошибакі і вартасць викорыстоўвання токена для гэтай стадзіі, а пасля выберыце, чы робіць змены на адной пазначанай базе пытанняў, а не на адной толькі прыватнай інформацыі.
7-я стадзія забезпечэння безпекі працуе лепей, калі яе спрыямаць як мерыму аспект. Запісайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіску пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Дакументавайце як успішны, так і вярнэння да пачатковага стану працэса. Перапрыбуткі, людзкія контрольныя пункты і обработка неканальных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 8/810: звярніце увагу на час выканання, класы паказчыкаў і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацься застаўляць змяну.
Для 9-го этапа паўжасткі неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за выкананне крока і критэрыяы завершэння. Аперацыйныя працавнікі павінны магчымае перадзванаць крок з вядомай точкі контролю, не прабуючы спадарацца прыватны стан системы. Штодзе гэты этап трэба спрыяць як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назвіце всі неабходныя элементы, адзначыце критэрыі успеху і не падтрымвайце частковае завершэння без паведамлення.
Дзеянне паўжасткі 9/810: звярніце увагу на час выканання, класы паказчыкаў і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацься застаўляць змяну.
Калі працуеце над 10-ю стадзіяй упражнення з паўжорсткага захавання, спачатку запісайце умовы кантракту: неабяжныя даны, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі список контроля дапамагае залічыць пазнейшыя змены ў кодзе чыстымі. Зберагайце настройкі параду ўнутры коду прыемленае. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабяжнага чытання всіх элементаў.
Дзялей 10/810 паўжорсткага захавання: замерайце час выкарыстоўвання, класыя ошибакі і колькасць токенаў, якія былі выкарыстаны для гэтай стадзіі, а пасля выберайце, чы робіць змену на адной пазначанай базе пытанняў, а не на адной толькі прыватнай інформацыі.
11-я стадзія упражнення з паўжорсткага захавання будзе эфектывней, калі яе спрыяваць як меравальную плошчу. Запісайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес.
Дзеянне паўжырання 11/810: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хачаце застаўіць змяну.
Для 12-го этапа паўжырання неабходна перад змянай коду чытко визначыць вхідныя даны, адпаведальнага за этап і крэтырыя завершэння. Аперацыяныя системы павінны магчымае перадзванаць гэты этап з вядомага пункта контролю, не прымусваныя здагадвацца пра схованы стан. Запісвайце час выканання і колькасць токенаў або запытак праза функцыйнае рэзультат. Відкрытая інформацыя пра витраты запобегае неспакою, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне паўжырання 12/810: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хачаце застаўіць змяну.