Skip to content

Commit 0f37a8a

Browse files
authored
Merge pull request #534 from raifdmueller/feat/link-harness-inventory
Link the Harness Inventory page from nav and related workflow pages
2 parents e0ffd30 + e01f2e4 commit 0f37a8a

7 files changed

Lines changed: 8 additions & 0 deletions

File tree

docs/brownfield-workflow.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ If the system cannot be built or started, you have a different problem -- fix th
302302

303303
== Further Reading
304304

305+
* link:#/harness-inventory[The Harness Inventory] -- the error-correction layers that surround any agentic workflow, including this one. Brownfield Recovery raises the signal; the Harness Inventory catalogues what catches the remaining noise.
305306
* Simon Martinelli, https://unifiedprocess.ai/[AI Unified Process] -- the bounded-context approach to spec-driven development in existing systems.
306307
* Eric Evans, https://www.domainlanguage.com/ddd/[Domain-Driven Design] -- the foundational work on bounded contexts and strategic design.
307308
* Michael Feathers, _Working Effectively with Legacy Code_ -- techniques for establishing test coverage in systems without tests.

docs/brownfield-workflow.de.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ Wenn das System nicht gebaut oder gestartet werden kann, liegt ein anderes Probl
300300

301301
== Weiterführende Literatur
302302

303+
* link:#/harness-inventory[The Harness Inventory] -- die Error-Correction-Schichten, die jeden agentischen Workflow umgeben, auch diesen. Brownfield Recovery erhöht das Signal; das Harness-Inventar katalogisiert, was das verbleibende Rauschen abfängt.
303304
* Simon Martinelli, https://unifiedprocess.ai/[AI Unified Process] -- der Bounded-Context-Ansatz für Spec-Driven Development in bestehenden Systemen.
304305
* Eric Evans, https://www.domainlanguage.com/ddd/[Domain-Driven Design] -- das grundlegende Werk zu Bounded Contexts und strategischem Design.
305306
* Michael Feathers, _Working Effectively with Legacy Code_ -- Techniken zum Aufbau von Testabdeckung in Systemen ohne Tests.

docs/spec-driven-workflow.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,7 @@ See link:#/brownfield[Adapting the Workflow to Brownfield Projects] for a step-b
622622

623623
=== Further Reading
624624

625+
* link:#/harness-inventory[The Harness Inventory] -- the error-correction layers that surround this workflow. Spec-Driven Development raises the signal; the Harness Inventory catalogues what catches the remaining noise (tests, linters, reviews, observability).
625626
* Birgitta Böckeler, https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html[Exploring Gen AI] (martinfowler.com) -- a critical analysis of spec-driven development tools (Kiro, spec-kit, Tessl) and their trade-offs. Examines where elaborate upfront specifications help and where they create overhead.
626627
* Simon Martinelli, https://unifiedprocess.ai/[AI Unified Process] -- a requirements-driven methodology combining Rational Unified Process principles with AI tooling. Treats AI as a consistency engine that regenerates code from evolving specifications, with four phases: Inception, Elaboration, Construction, Transition.
627628
* Ralf D. Müller & Simon Martinelli, https://software-architektur.tv/2026/01/16/folge298.html[Spec-Driven Development] (software-architektur.tv, Episode 298) -- podcast discussion on how specifications and requirements take center stage in AI-assisted development, and why iterative refinement beats perfect upfront specs.

docs/spec-driven-workflow.de.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,7 @@ Siehe link:#/brownfield[Workflow-Anpassung für Brownfield-Projekte] für eine S
639639

640640
=== Weiterführende Literatur
641641

642+
* link:#/harness-inventory[The Harness Inventory] -- die Error-Correction-Schichten rund um diesen Workflow. Spec-Driven Development erhöht das Signal; das Harness-Inventar katalogisiert, was das verbleibende Rauschen abfängt (Tests, Linter, Reviews, Observability).
642643
* Birgitta Böckeler, https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html[Exploring Gen AI] (martinfowler.com) -- eine kritische Analyse von Spec-Driven-Development-Tools (Kiro, spec-kit, Tessl) und deren Trade-offs. Untersucht, wo aufwändige Upfront-Spezifikationen helfen und wo sie Overhead erzeugen.
643644
* Simon Martinelli, https://unifiedprocess.ai/[AI Unified Process] -- eine anforderungsgetriebene Methodik, die Rational-Unified-Process-Prinzipien mit KI-Tooling kombiniert. Behandelt KI als Konsistenz-Engine, die Code aus sich entwickelnden Spezifikationen regeneriert, in vier Phasen: Inception, Elaboration, Construction, Transition.
644645
* Ralf D. Müller & Simon Martinelli, https://software-architektur.tv/2026/01/16/folge298.html[Spec-Driven Development] (software-architektur.tv, Folge 298) -- Podcast-Diskussion darüber, wie Spezifikationen und Anforderungen in den Mittelpunkt KI-gestützter Entwicklung rücken, und warum iterative Verfeinerung besser funktioniert als perfekte Upfront-Specs.

website/src/components/header.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export function renderHeader() {
4545
<div id="more-menu-dropdown" class="absolute left-0 top-full mt-1 hidden bg-[var(--color-bg)] border border-[var(--color-border)] rounded-lg shadow-lg py-2 min-w-[160px] z-50">
4646
<a href="#/about" class="nav-link block px-4 py-2 text-base text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/about" data-i18n="nav.about">${i18n.t('nav.about')}</a>
4747
<a href="#/agentskill" class="nav-link block px-4 py-2 text-base text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/agentskill" data-i18n="nav.agentskill">${i18n.t('nav.agentskill')}</a>
48+
<a href="#/harness-inventory" class="nav-link block px-4 py-2 text-base text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/harness-inventory" data-i18n="nav.harnessInventory">${i18n.t('nav.harnessInventory')}</a>
4849
<a href="#/contributing" class="nav-link block px-4 py-2 text-base text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/contributing" data-i18n="nav.contributing">${i18n.t('nav.contributing')}</a>
4950
<a href="#/changelog" class="nav-link block px-4 py-2 text-base text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/changelog" data-i18n="nav.changelog">${i18n.t('nav.changelog')}</a>
5051
</div>
@@ -158,6 +159,7 @@ export function renderHeader() {
158159
<a href="#/spec-driven-development" class="nav-link mobile-nav-link px-3 py-2 rounded-md text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/spec-driven-development" data-i18n="nav.workflow">${i18n.t('nav.workflow')}</a>
159160
<a href="#/about" class="nav-link mobile-nav-link px-3 py-2 rounded-md text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/about" data-i18n="nav.about">${i18n.t('nav.about')}</a>
160161
<a href="#/agentskill" class="nav-link mobile-nav-link px-3 py-2 rounded-md text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/agentskill" data-i18n="nav.agentskill">${i18n.t('nav.agentskill')}</a>
162+
<a href="#/harness-inventory" class="nav-link mobile-nav-link px-3 py-2 rounded-md text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/harness-inventory" data-i18n="nav.harnessInventory">${i18n.t('nav.harnessInventory')}</a>
161163
<a href="#/contributing" class="nav-link mobile-nav-link px-3 py-2 rounded-md text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/contributing" data-i18n="nav.contributing">${i18n.t('nav.contributing')}</a>
162164
<a href="#/changelog" class="nav-link mobile-nav-link px-3 py-2 rounded-md text-[var(--color-text-secondary)] hover:text-[var(--color-text)] hover:bg-[var(--color-bg-secondary)] transition-colors" data-route="/changelog" data-i18n="nav.changelog">${i18n.t('nav.changelog')}</a>
163165
</div>

website/src/translations/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"nav.contributing": "Mitwirken",
1212
"nav.changelog": "Änderungsprotokoll",
1313
"nav.agentskill": "AgentSkill",
14+
"nav.harnessInventory": "Harness-Inventar",
1415
"nav.workflow": "Spec-Driven Dev",
1516
"nav.more": "Mehr",
1617
"nav.contracts": "Contracts",

website/src/translations/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"nav.contributing": "Contributing",
1212
"nav.changelog": "Changelog",
1313
"nav.agentskill": "AgentSkill",
14+
"nav.harnessInventory": "Harness Inventory",
1415
"nav.workflow": "Spec-Driven Dev",
1516
"nav.more": "More",
1617
"nav.contracts": "Contracts",

0 commit comments

Comments
 (0)