docs(thesis): rewrite FFL scoping to the shipped relative model#21
Conversation
Recast Chapter 4 (and all four addendums) from the old flat container model to the relative $-scoping the compiler now ships: - §4.2/§4.3: $ = immediate container; $$/$$$ walk up one lexical level each; steps in other blocks are never nameable. - §4.3.2 (new): nested blocks + up-level operators, anchored on the real migrated ExtractPlacesAcrossSubregions fanout and the o1/o2/o3 shadowing case that forces $$$ (REF_DOLLAR_OVERFLOW at $$$$); adds the facet-typed-parameter decomposition idiom as the anti-pyramid pattern. - §4.5.1: fix the step-level-block example — container is the step itself ($.a, never g.a); the caller is reached with $$. - §4.6: fix the stale catch example — $ is the caught step, exposing synthetic $.error_type/$.error; workflow inputs via $$. Every FFL snippet validated against the live compiler (relative scoping default-on). Addendums (ai-authorship, defense Q8a/Q8b, future-thoughts ai-native §9, positioning-dissent §7) document the AI-authored redesign, migration, and fleet deployment. PDFs regenerated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request updates several thesis chapters to document the transition of FFL's scoping model from a flat container scheme to a relative scoping model using
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
|
||
| ### 7.3 The "simple" migration was safe because of the boring discipline around it | ||
|
|
||
| Finally, the episode is a corrective to the "just let the agent rewrite it" gloss. The migration did not land as a big-bang replacement. It shipped flag-gated behind a dual model, backward-compatible — the new runtime still runs old FFL — with layered verification at each stage and a live rollout across the fleet rather than an in-place swap. That is competent, ordinary engineering discipline: compatibility windows, staged rollout, a rollback path. It is also exactly the discipline that the optimistic phrase elides. The agent's fluency at *writing* the redesign is real; what made the redesign *safe to deploy* was the same set of practices any careful team would have insisted on, and none of them were made unnecessary by the fact that an agent produced the diff. The headline ("an agent redesigned the language and shipped it") is true. The subtext ("and it was safe because it was dual-modeled, compat-preserving, staged, and reversible") is where the actual assurance lives — and that subtext is human-invariant. |
There was a problem hiding this comment.
The spelling "dual-modeled" uses the US convention. To maintain consistency with the UK spelling style used throughout the rest of the thesis (e.g., "modelling", "apologised", "serialised", "favour", "generalisation"), this should be changed to "dual-modelled".
| Finally, the episode is a corrective to the "just let the agent rewrite it" gloss. The migration did not land as a big-bang replacement. It shipped flag-gated behind a dual model, backward-compatible — the new runtime still runs old FFL — with layered verification at each stage and a live rollout across the fleet rather than an in-place swap. That is competent, ordinary engineering discipline: compatibility windows, staged rollout, a rollback path. It is also exactly the discipline that the optimistic phrase elides. The agent's fluency at *writing* the redesign is real; what made the redesign *safe to deploy* was the same set of practices any careful team would have insisted on, and none of them were made unnecessary by the fact that an agent produced the diff. The headline ("an agent redesigned the language and shipped it") is true. The subtext ("and it was safe because it was dual-modeled, compat-preserving, staged, and reversible") is where the actual assurance lives — and that subtext is human-invariant. | |
| The subtext ("and it was safe because it was dual-modelled, compat-preserving, staged, and reversible") is where the actual assurance lives — and that subtext is human-invariant. |
Recast Chapter 4 and all four addendums from the old flat container model to the relative
$-scoping the compiler now ships.Chapter 4 (thesis.md)
$= immediate container;$$/$$$walk up one lexical level each; steps in other blocks are never nameable.ExtractPlacesAcrossSubregionsfanout and theo1/o2/o3shadowing case that forces$$$(REF_DOLLAR_OVERFLOWat$$$$); adds the facet-typed-parameter decomposition idiom as the anti-pyramid pattern.$.a, neverg.a); the caller is reached with$$.catchexample:$is the caught step, exposing synthetic$.error_type/$.error; workflow inputs via$$.Every FFL snippet was validated against the live compiler (relative scoping default-on).
Addendums
ai-authorship.md— AI authored the redesign end-to-end; the parked$$-contract data point.defense.md— corrected Q8's stale prediction; added Q8a (up-levels + parked caller-contract) and Q8b (decomposition idiom + live flag-gated migration).future-thoughts-ai-native.md— terse-$operators as a machine-oriented-notation data point; §9 centerpiece on AI-authored language + migration + deployment.future-thoughts-positioning-dissent.md— new §7 partitioning the optimistic claim.PDFs regenerated.
🤖 Generated with Claude Code