Skip to content

Commit 7ffe55a

Browse files
authored
Merge pull request #589 from raifdmueller/fix/article-review-followups
fix(docs): address review on the Anchors and Training Data article
2 parents 5793584 + 7b45d16 commit 7ffe55a

3 files changed

Lines changed: 6 additions & 3 deletions

File tree

docs/training-data-vs-practice.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ _What a pull request about "use cases" taught us about semantic anchors — with
88

99
[NOTE]
1010
====
11-
*The short version.* A semantic anchor works by triggering a concept the model already learned. Its power is therefore proportional to how _densely_ that concept appears in the training data. We tested this directly: naming "Cockburn use cases" reshapes a generic answer into a full fully-dressed use case (the anchor delivers), while naming "Use-Case 3.0" delivers nothing distinct — the model silently falls back to the nearest concept it does know. That is why an anchor's popup describes the _triggered_ definition, not the state of the art, and why weak-prior terms belong in a *contract* (which supplies its own meaning), not an anchor.
11+
*The short version.* A semantic anchor works by triggering a concept the model already learned. Its power is therefore proportional to how _densely_ that concept appears in the training data. We tested this directly: naming "Cockburn use cases" reshapes a generic answer into a complete fully-dressed use case (the anchor delivers), while naming "Use-Case 3.0" delivers nothing distinct — the model silently falls back to the nearest concept it does know. That is why an anchor's popup describes the _triggered_ definition, not the state of the art, and why weak-prior terms belong in a *contract* (which supplies its own meaning), not an anchor.
1212
====
1313

1414
== A Discussion About One Anchor Started It
1515

1616
Simon Martinelli opened a https://github.com/LLM-Coding/Semantic-Anchors/pull/582[pull request] proposing to rename the _Cockburn Use Cases_ anchor to plain _Use Cases_, fix the attribution, and modernise it with Use-Case 2.0 and 3.0.
1717

18-
His facts are correct. Ivar Jacobson invented use cases (OOPSLA 1987, _Object-Oriented Software Engineering_, 1992); Cockburn did not — his _Writing Effective Use Cases_ (2001) codified how to write them well. The technique later grew into Use-Case 2.0 (Jacobson, Spence & Bittner, 2011) and Use-Case 3.0 (Jacobson, Spence & de Mendonca, 2024). As a daily practitioner, Simon added that most teams no longer separate Cockburn from Jacobson, and that the full fully-dressed ceremony is rarely used.
18+
His facts are correct. Ivar Jacobson invented use cases (OOPSLA 1987, _Object-Oriented Software Engineering_, 1992); Cockburn did not — his _Writing Effective Use Cases_ (2001) codified how to write them well. The technique later grew into Use-Case 2.0 (Jacobson, Spence & Bittner, 2011) and Use-Case 3.0 (Jacobson, Spence & de Mendonca, 2024). As a daily practitioner, Simon added that most teams no longer separate Cockburn from Jacobson, and that the fully-dressed ceremony is rarely used.
1919

2020
When the discussion continued, Simon made a fair challenge: he pasted output from several chatbots to show they clearly _know_ use cases. They do — and that turned out to be beside the point. The question is not whether a model knows the term, but _which_ definition the term triggers and _how far_ that knowledge reaches. The rest of this article answers that question with an experiment, and the answer is what decided the pull request.
2121

website/src/main.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,8 @@ function handleLanguageChange() {
584584
loadDocContent('docs/brownfield-fair-comparison.adoc')
585585
} else if (currentRoute === '/harness-inventory') {
586586
loadDocContent('docs/harness-inventory.adoc')
587+
} else if (currentRoute === '/training-data-vs-practice') {
588+
loadDocContent('docs/training-data-vs-practice.adoc')
587589
} else if (currentRoute === '/contracts') {
588590
renderContractsPageHandler()
589591
} else if (currentRoute === '/') {

website/src/utils/router.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ const ROUTE_TITLES = {
2222
'/brownfield-fair-comparison': 'Brownfield Fair Comparison — Semantic Anchors',
2323
'/socratic-recovery-skill': 'Socratic Code-Theory Recovery Skill — Semantic Anchors',
2424
'/harness-inventory': 'The Harness Inventory — Semantic Anchors',
25-
'/training-data-vs-practice': 'Anchors and Training Data — Semantic Anchors',
25+
'/training-data-vs-practice':
26+
'An Anchor Delivers Only as Far as the Prior Reaches — Semantic Anchors',
2627
'/evaluations': 'Evaluations — Semantic Anchors',
2728
'/contributing': 'Contributing — Semantic Anchors',
2829
'/changelog': 'Changelog — Semantic Anchors',

0 commit comments

Comments
 (0)