C:C04
Chapter 4: Intentions, Contracts and Iterative Change
A guide to the published second edition, with literal citations separated from wider editorial reading suggestions.
Chapter guide
Develops a versioned intention contract for an existing service. Behavioral examples and acceptance rules are established independently of implementation, while late policy changes trigger targeted impact analysis and invalidate only the decisions and evidence they affect.
Sintesi in italiano
Sviluppa un contratto di intenzione versionato per un servizio esistente. Esempi comportamentali e regole di accettazione vengono stabiliti indipendentemente dall'implementazione; le modifiche tardive della policy richiedono un'analisi d'impatto e invalidano solo decisioni ed evidenze coinvolte.
Learning goals
- separate intention approval from implementation design
- derive independent behavioral examples from a versioned contract
- incorporate late intention changes by invalidating only the affected decisions and evidence
Obiettivi in italiano
Obiettivi di apprendimento
- separare l'approvazione dell'intenzione dal design dell'implementazione
- ricavare esempi comportamentali indipendenti da un contratto versionato
- integrare cambiamenti tardivi dell'intenzione invalidando soltanto le decisioni e le evidenze interessate
Chapter outline
- 4.1 Separate intention determination from design
- 4.2 From a request to a versioned intention ledger
- 4.3 Write behavioral examples before implementation
- 4.4 The smallest native intention bundle
- 4.5 Executable contracts without circular oracles
- 4.6 Architecture decision versus acceptance contract
- 4.7 One canonical change-and-evidence trace
- 4.8 A delta-driven iterative brownfield lifecycle
- 4.9 Late intentions and explicit impact analysis
- 4.10 Native intent gates and optional compatibility adapters
- 4.11 The approval-rule contract across two iterations
- 4.12 Worked engineering example: a late requirement need not restart the project
- 4.13 Practice exercise: absorb a late intention without a waterfall restart
Struttura del capitolo
- 4.1 Separare la definizione dell'intenzione dal design
- 4.2 Dalla richiesta a un registro versionato delle intenzioni
- 4.3 Scrivere esempi comportamentali prima dell'implementazione
- 4.4 Il più piccolo insieme di artefatti nativi dell'intenzione
- 4.5 Contratti eseguibili senza oracle circolari
- 4.6 Decisione architetturale e contratto di accettazione
- 4.7 Una traccia canonica di modifica ed evidenze
- 4.8 Un ciclo di vita brownfield iterativo, guidato dai delta
- 4.9 Intenzioni sopraggiunte e analisi d'impatto esplicita
- 4.10 Gate nativi dell'intenzione e adapter di compatibilità opzionali
- 4.11 Il contratto delle regole di approvazione attraverso due iterazioni
- 4.12 Esempio svolto: un requisito tardivo non deve far ripartire il progetto
- 4.13 Esercizio pratico: integrare un'intenzione tardiva senza ricominciare in waterfall
Cited in the published chapter
15 linked atlas references from literal citations in the English and Italian editions. General bibliography membership and identifier-index entries are counted separately.
SE@PoliMi bibliography 11
- W011 — The Productivity-Reliability Paradox: Specification-Driven Governance for AI-Augmented Software Development
Farrag · 2026 - W071 — Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study
Peralta · 2026 - W077 — Evaluating and Mitigating the Misguidance Effect of Buggy Code in LLM-Generated Unit Tests
Zhao · 2026 - W097 — Programmers Are Poor and Overconfident Judges of LLM-Generated Assertions
Kaufman · 2026 - W099 — From Code Review to Code Critique: Intent, Drift, and Spotlight for AI-Generated Diffs at Scale
Maddila · 2026 - W148 — SOEN-101: Code Generation by Emulating Software Process Models Using Large Language Model Agents
Lin · 2026 - W150 — We Permit the Use of AI, but [...]: The Landscape of AI Policies in Popular Open Source Projects
Hora · 2026 - W151 — Blueprint First, Model Second: A Framework for Deterministic LLM Workflow
Qiu · 2026 - W152 — Agentic Software Engineering: Foundational Pillars and a Research Roadmap
Hassan · 2026 - W153 — Toward Agentic Software Engineering Beyond Code: Framing Vision, Values, and Vocabulary
Hoda · 2026 - W191 — Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub
Ehsani · 2026
Addy Osmani 2
- O018 — How to write a good spec for AI agents
Addy Osmani · 2026-01-19 - O028 — Vibe coding is not the same as AI-Assisted engineering.
Addy Osmani · 2025-08-30
The Pragmatic Engineer 1
- P082 — The Product-Minded Engineer: The importance of good errors and warnings
Gergely Orosz (interview/introduction); Drew Hoskins (excerpt) · 2026-01-20
Martin Fowler’s website 1
- F023 — Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl
Birgitta Böckeler · 2025-10-15
Trace literal citations to chapter sections
Locations come from the supplied English and Italian source files. Chapter text and figure captions are identified separately; identifier-index references and general bibliography membership are not treated as chapter citations.
- F023 · Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl
- EN · Separate intention determination from design
EN/chapters/chapter04.tex:14 - ITA · Separare la definizione dell'intenzione dal design
ITA/chapters/chapter04.tex:14
- EN · Separate intention determination from design
- O018 · How to write a good spec for AI agents
- EN · Separate intention determination from design
EN/chapters/chapter04.tex:32 - ITA · Separare la definizione dell'intenzione dal design
ITA/chapters/chapter04.tex:32
- EN · Separate intention determination from design
- O028 · Vibe coding is not the same as AI-Assisted engineering.
- EN · Separate intention determination from design
EN/chapters/chapter04.tex:32 - ITA · Separare la definizione dell'intenzione dal design
ITA/chapters/chapter04.tex:32
- EN · Separate intention determination from design
- P082 · The Product-Minded Engineer: The importance of good errors and warnings
- EN · Write behavioral examples before implementation
EN/chapters/chapter04.tex:81 - ITA · Scrivere esempi comportamentali prima dell'implementazione
ITA/chapters/chapter04.tex:81
- EN · Write behavioral examples before implementation
- W011 · The Productivity-Reliability Paradox: Specification-Driven Governance for AI-Augmented Software Development
- EN · Separate intention determination from design
EN/chapters/chapter04.tex:24 - EN · Native intent gates and optional compatibility adapters
EN/chapters/chapter04.tex:193 - ITA · Separare la definizione dell'intenzione dal design
ITA/chapters/chapter04.tex:24 - ITA · Gate nativi dell'intenzione e adapter di compatibilità opzionali
ITA/chapters/chapter04.tex:193
- EN · Separate intention determination from design
- W071 · Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study
- EN · A delta-driven iterative brownfield lifecycle
EN/chapters/chapter04.tex:169 - ITA · Un ciclo di vita brownfield iterativo, guidato dai delta
ITA/chapters/chapter04.tex:169
- EN · A delta-driven iterative brownfield lifecycle
- W077 · Evaluating and Mitigating the Misguidance Effect of Buggy Code in LLM-Generated Unit Tests
- EN · Write behavioral examples before implementation
EN/chapters/chapter04.tex:90 - EN · Executable contracts without circular oracles
EN/chapters/chapter04.tex:132 - ITA · Scrivere esempi comportamentali prima dell'implementazione
ITA/chapters/chapter04.tex:90 - ITA · Contratti eseguibili senza oracle circolari
ITA/chapters/chapter04.tex:132
- EN · Write behavioral examples before implementation
- W097 · Programmers Are Poor and Overconfident Judges of LLM-Generated Assertions
- EN · Write behavioral examples before implementation
EN/chapters/chapter04.tex:90 - EN · Executable contracts without circular oracles
EN/chapters/chapter04.tex:134 - ITA · Scrivere esempi comportamentali prima dell'implementazione
ITA/chapters/chapter04.tex:90 - ITA · Contratti eseguibili senza oracle circolari
ITA/chapters/chapter04.tex:134
- EN · Write behavioral examples before implementation
- W099 · From Code Review to Code Critique: Intent, Drift, and Spotlight for AI-Generated Diffs at Scale
- EN · Architecture decision versus acceptance contract
EN/chapters/chapter04.tex:151 - ITA · Decisione architetturale e contratto di accettazione
ITA/chapters/chapter04.tex:151
- EN · Architecture decision versus acceptance contract
- W148 · SOEN-101: Code Generation by Emulating Software Process Models Using Large Language Model Agents
- EN · Architecture decision versus acceptance contract
EN/chapters/chapter04.tex:151 - ITA · Decisione architetturale e contratto di accettazione
ITA/chapters/chapter04.tex:151
- EN · Architecture decision versus acceptance contract
- W150 · We Permit the Use of AI, but [...]: The Landscape of AI Policies in Popular Open Source Projects
- EN · From a request to a versioned intention ledger
EN/chapters/chapter04.tex:60 - ITA · Dalla richiesta a un registro versionato delle intenzioni
ITA/chapters/chapter04.tex:60
- EN · From a request to a versioned intention ledger
- W151 · Blueprint First, Model Second: A Framework for Deterministic LLM Workflow
- EN · Native intent gates and optional compatibility adapters
EN/chapters/chapter04.tex:193 - ITA · Gate nativi dell'intenzione e adapter di compatibilità opzionali
ITA/chapters/chapter04.tex:193
- EN · Native intent gates and optional compatibility adapters
- W152 · Agentic Software Engineering: Foundational Pillars and a Research Roadmap
- EN · From a request to a versioned intention ledger
EN/chapters/chapter04.tex:60 - EN · Architecture decision versus acceptance contract
EN/chapters/chapter04.tex:151 - EN · A delta-driven iterative brownfield lifecycle
EN/chapters/chapter04.tex:169 - ITA · Dalla richiesta a un registro versionato delle intenzioni
ITA/chapters/chapter04.tex:60 - ITA · Decisione architetturale e contratto di accettazione
ITA/chapters/chapter04.tex:151 - ITA · Un ciclo di vita brownfield iterativo, guidato dai delta
ITA/chapters/chapter04.tex:169
- EN · From a request to a versioned intention ledger
- W153 · Toward Agentic Software Engineering Beyond Code: Framing Vision, Values, and Vocabulary
- EN · Separate intention determination from design
EN/chapters/chapter04.tex:24 - ITA · Separare la definizione dell'intenzione dal design
ITA/chapters/chapter04.tex:24
- EN · Separate intention determination from design
- W191 · Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub
- EN · Separate intention determination from design
EN/chapters/chapter04.tex:24 - ITA · Separare la definizione dell'intenzione dal design
ITA/chapters/chapter04.tex:24
- EN · Separate intention determination from design
Editorial reading mappings
Broader topical suggestions can overlap the cited sources. A mapping does not add a citation to the published edition or establish that a practice is effective.
SE@PoliMi bibliography 23
- W002 — Code with Me or for Me? How Increasing AI Automation Transforms Developer Workflows
Chen · 2026 - W011 — The Productivity-Reliability Paradox: Specification-Driven Governance for AI-Augmented Software Development
Farrag · 2026 - W037 — After the Party: Growth, Governance, and Security Scanning in the OpenClaw Agent Skill Ecosystem
Xiong · 2026 - W043 — We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs
Spracklen · 2025 - W071 — Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study
Peralta · 2026 - W077 — Evaluating and Mitigating the Misguidance Effect of Buggy Code in LLM-Generated Unit Tests
Zhao · 2026 - W083 — A Study on Developer Behaviors for Validating and Repairing LLM-Generated Code Using Eye Tracking and IDE Actions
Tang · 2024 - W097 — Programmers Are Poor and Overconfident Judges of LLM-Generated Assertions
Kaufman · 2026 - W099 — From Code Review to Code Critique: Intent, Drift, and Spotlight for AI-Generated Diffs at Scale
Maddila · 2026 - W101 — Articulate but Wrong: Self-Review Failures in LLM-Based Code Modernization
Purnachandra Reddy · 2026 - W111 — Many SWE-bench-Passing PRs Would Not Be Merged into Main
Whitfill · 2026 - W113 — I Would Have Written My Code Differently: Beginners Struggle to Understand LLM-Generated Code
Zi · 2025 - W131 — The Broken Ladder: AI, Remote Work, and Early-Career Hiring
Lambert · 2026 - W138 — AI's Impact on Labor and Hiring
Athreya · 2026 - W147 — To Ban or not to Ban? How Open Source Projects Govern GenAI Contributions
Yang · 2026 - W148 — SOEN-101: Code Generation by Emulating Software Process Models Using Large Language Model Agents
Lin · 2026 - W149 — Making AI Visible, Not Vanished: How AI Policies Reshape Developer Experience on GitHub
Chen · 2026 - W150 — We Permit the Use of AI, but [...]: The Landscape of AI Policies in Popular Open Source Projects
Hora · 2026 - W151 — Blueprint First, Model Second: A Framework for Deterministic LLM Workflow
Qiu · 2026 - W152 — Agentic Software Engineering: Foundational Pillars and a Research Roadmap
Hassan · 2026 - W153 — Toward Agentic Software Engineering Beyond Code: Framing Vision, Values, and Vocabulary
Hoda · 2026 - W175 — Code Ownership and Software Quality: A Replication Study
Greiler · 2015 - W191 — Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub
Ehsani · 2026
Addy Osmani 5
- O018 — How to write a good spec for AI agents
Addy Osmani · 2026-01-19 - O021 — My LLM coding workflow going into 2026
Addy Osmani · 2025-12-18 - O028 — Vibe coding is not the same as AI-Assisted engineering.
Addy Osmani · 2025-08-30 - O034 — The Prompt Engineering Playbook for Programmers
Addy Osmani · 2025-05-27 - O051 — Agentic Verification
Addy Osmani · 2026-10-14
The Pragmatic Engineer 5
- P013 — How Shopify Built Its Live Globe for Black Friday
Gergely Orosz · 2024-12-17 - P031 — What is Growth Engineering?
Gergely Orosz; Alexey Komissarouk · 2025-03-20 - P046 — Being an “Intrapreneur” as a software engineer
Gergely Orosz; Chaitali Narla · 2025-06-17 - P053 — Building great SDKs
Gergely Orosz; Quentin Pradet · 2025-07-29 - P082 — The Product-Minded Engineer: The importance of good errors and warnings
Gergely Orosz (interview/introduction); Drew Hoskins (excerpt) · 2026-01-20
Martin Fowler’s website 5
- F007 — How is GenAI different from other code generators?
Birgitta Böckeler · 2023-09-19 - F015 — Building TMT Mirror Visualization with LLM: A Step-by-Step Journey
Unmesh Joshi · 2025-04-30 - F022 — Anchoring AI to a reference application
Birgitta Böckeler · 2025-09-25 - F023 — Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl
Birgitta Böckeler · 2025-10-15 - F033 — Are Harnesses Worth the Cost?
Naresh Jain · 2026-10-13
Earlier Non-Deterministic books 48
- B005 — Vibe Coding vs. AI-Assisted Engineering
Enrico Papalini · - B007 — New Workflows for the AI Era
Enrico Papalini · - B012 — The Pattern Catalog
Enrico Papalini · - B013 — PART I: Core Practices
Enrico Papalini · - B017 — Pattern Recap: Quick Reference Guide
Enrico Papalini · - B032 — Quick Reference Guides
Enrico Papalini · - B036 — Introduzioni e postfazione — The Bigger Picture
Enrico Papalini · - B037 — Preface
Enrico Papalini · - B038 — The Shift
Enrico Papalini · - B039 — The Process
Enrico Papalini · - B040 — The Toolkit
Enrico Papalini · - B041 — The Integration
Enrico Papalini · - B042 — Advanced Patterns
Enrico Papalini · - B043 — Limitations and Judgment
Enrico Papalini · - B044 — Templates
Enrico Papalini · - B045 — Complete Implementation Examples
Enrico Papalini · - B046 — Playbook Quick Reference
Enrico Papalini · - B047 — Introduzioni alle parti — SDD, seconda edizione
Enrico Papalini · - B048 — Preface
Enrico Papalini · - B049 — The Shift
Enrico Papalini · - B050 — The Process: Four Phases, Four Gates
Enrico Papalini · - B051 — Anatomy of an AI SDD Framework
Enrico Papalini · - B052 — The Ecosystem: A Map of Public Frameworks
Enrico Papalini · - B053 — The Lightweight Protocols: GSD v1 and GSD-2
Enrico Papalini · - B054 — The Specification Toolkits: Spec Kit and OpenSpec (openspec.dev)
Enrico Papalini · - B055 — The Agentic Orchestrators: BMAD Method and AI-RPI Protocol
Enrico Papalini · - B056 — Autonomous Loops and Behavioral Foundations
Enrico Papalini · - B057 — The Comparison: Patterns, Divergences, and Convergences
Enrico Papalini · - B058 — Design Boundaries: What to Adopt, What to Avoid
Enrico Papalini · - B059 — Constitution and Architecture: The Framework Foundation
Enrico Papalini · - B060 — The Agent Pipeline and Gates
Enrico Papalini · - B063 — Advanced Patterns: From Frameworks to Practice
Enrico Papalini · - B064 — Limitations and Professional Judgment
Enrico Papalini · - B065 — How to Design a New Framework
Enrico Papalini · - B067 — Playbooks
Enrico Papalini · - B068 — Template Reference
Enrico Papalini · - B069 — Framework Reference Cards
Enrico Papalini · - B070 — Enterprise SDD
Enrico Papalini · - B071 — Spec Kit
Enrico Papalini · - B072 — OpenSpec (openspec.dev)
Enrico Papalini · - B073 — BMAD Method
Enrico Papalini · - B074 — AI-RPI Protocol
Enrico Papalini · - B077 — GSD v1
Enrico Papalini · - B078 — GSD-2
Enrico Papalini · - B079 — Karpathy-Inspired Skills
Enrico Papalini · - B081 — AIDD
Enrico Papalini · - B089 — Task Decomposition for Machines
Enrico Papalini · - B092 — Advanced Prompting for Autonomous Systems
Enrico Papalini ·
Software Engineering Practices 11
- PAT:005 — Feature List as Immutable Contract
- PAT:043 — Spec-First Generation
- PAT:061 — Consistency Analysis Gate
- PAT:064 — Specification Scale Management
- PAT:066 — Constitution-Driven Development
- PAT:067 — Clarify Before Plan
- PAT:068 — Progressive Specification
- PAT:069 — Red-Team Specification
- PAT:070 — Gap-Closure Analysis
- PAT:071 — Ambiguity Scoring
- PAT:076 — Gate-Enforced Progression