Skip to content

Align project with architecture-knowledge-toolkit (reference model, arc42 migration, docs CI) - #2

Merged
dieterbaier merged 10 commits into
mainfrom
feature/align-architecture-knowledge-toolkit
Jul 12, 2026
Merged

Align project with architecture-knowledge-toolkit (reference model, arc42 migration, docs CI)#2
dieterbaier merged 10 commits into
mainfrom
feature/align-architecture-knowledge-toolkit

Conversation

@dieterbaier

Copy link
Copy Markdown
Owner

Aligns Event Processing Lab with the current
docs-as-code-toolkit/architecture-knowledge-toolkit "reference, don't copy"
model — as if the project had been bootstrapped with today's toolkit while
keeping its existing implementation and documentation.

What changed

Toolkit alignment (reference model)

  • Sync vendored executable tooling: metamodel schemas, validate-metamodel.rb
    (now with generation), ADR/quality-scenario/risk templates, and the generic
    agent-adapter generator.
  • Rewrite AGENTS.md from the toolkit project-agents template — thin contract
    order + toolkit lookup order; project delta points at src/docs/ instead of
    restating toolkit rules.
  • Add .github/copilot-instructions.md entry point and generate thin
    adapters/ (codex, vibe, github-copilot, cursor); pin the adapter project
    name via adapters/agent-adapters.config.json.
  • Stop committing derived output: ignore **/generated/, build/, and untrack
    the previously committed generated fragments.

arc42 content migration to the toolkit scheme

  • Renumber chapter IDs to the DOC-0XX00 decimal scheme and rename every source
    file to its normalized ID (doc-001-arc42.adoc, doc-0XX00-* chapters,
    lowercase adr-*/risk-*/td-*).
  • Fix artifact types (ArchitectureDecisionADR, DocumentSet
    Document), the .tags: typo, and all relation targets/xrefs/includes.
  • Author the 15 referenced quality scenarios (qs-001qs-015) that never
    existed, and remove all canvas references (the project has no canvases).

Tooling & CI

  • Add build.sh: a docs-toolbox task runner (validate/generate/build) modeled
    on the toolkit's reference implementation.
  • ci.yml: validate + generate + adapter check (in docs-toolbox) and a Java
    build/test job on every PR and on main.
  • pages.yml: render the arc42 HTML and publish to GitHub Pages on main.
  • Refresh README.md for the new structure, links, and doc build commands.

Verification

  • ./build.sh validate → 46 artifacts, 0 errors, 0 warnings.
  • ./build.sh build renders build/architecture/index.html cleanly under
    --failure-level=ERROR (all includes and generated fragments resolve).

Related

🤖 Generated with Claude Code

Dieter Baier and others added 9 commits July 12, 2026 11:41
- Replace flat src/docs/adr/*.md and architecture.adoc with full arc42
  chapter structure under src/docs/arc42/ (ADRs, quality scenarios,
  risks, technical debt) plus generated traceability views
- Add architecture-knowledge-toolkit metamodel contracts
  (metamodel/artifact.schema.yaml, relations.schema.yaml) and Ruby
  metamodel validation script + tests under scripts/
- Add Gradle multi-module build (root + per-module build.gradle,
  settings.gradle)
- Add vision-mission, roadmap, questions-and-answers docs
- Refresh AGENTS.md and README for the toolkit conventions; remove
  PROJECT_SUMMARY.md
- Minor updates to Java sources across modules

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Adopt the toolkit's current consuming-project model: vendor only the
executable tooling and reference the toolkit for skills and contracts.

Vendored/synced from the toolkit:
- metamodel/artifact.schema.yaml, relations.schema.yaml (adds derived_from,
  new DOC decimal ID examples)
- scripts/validate-metamodel.rb (adds deterministic generation)
- templates/adr.adoc, quality-scenario.adoc, risk.adoc
- scripts/build-agent-adapters.js, check-agent-adapters.js (generic generator)

Reference model (skills/contracts not copied):
- Rewrite AGENTS.md from the toolkit project-agents template: thin contract
  order, toolkit lookup order, reference-don't-copy, adapter wiring; keep only
  a short project-context delta and point to src/docs for the rest
- Add .github/copilot-instructions.md entry point
- Generate adapters/ (codex, vibe, github-copilot, cursor) via the generator

Derived output:
- Ignore **/generated/, target/, out/ and untrack committed generated fragments
- Rename questions-and-answers.adoc -> doc-005-questions-and-answers.adoc to
  match the toolkit inception filename (unblocks generation)

Fix relation metamodel violations: 'informs' -> 'relates_to' in
vision-mission and roadmap. Remove dead vendored validator test (no fixtures;
the toolkit owns validator tests).

validate + generate now pass (0 errors; 28 filename warnings remain for the
older artifact ID scheme, tracked as a follow-up content migration).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Bring the existing documentation to the shape a fresh toolkit bootstrap
would produce:

- Renumber chapter IDs to the DOC-0XX00 decimal scheme
  (DOC-101 -> DOC-01000, ... DOC-111 -> DOC-11000); entry DOC-000 -> DOC-001;
  root inception docs -> DOC-002-vision-mission, DOC-004-roadmap
- Rename every source file to match its normalized ID: chapter overviews to
  doc-0XX00-*.adoc, entry to doc-001-arc42.adoc, and lowercase the
  adr-*/risk-*/td-* detail files
- Fix artifact types: ArchitectureDecision -> ADR, DocumentSet -> Document
- Fix `.tags:` YAML key typo -> `tags:` across 25 files
- Update all relation targets, includes, and xrefs to the new IDs/filenames;
  add the missing arc42/ include prefix and leveloffset in the entry point

Validator now reports 0 errors and 0 warnings; generate succeeds.

Known follow-up (pre-existing content gaps, not introduced here): some
xrefs point to quality-scenario (QS-*) and canvas artifacts that were never
authored.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Add a project task runner modeled on the toolkit's reference build.sh. By
default it runs inside the pinned docs-as-code-toolkit/docs-toolbox image
(Docker/Podman) so local and CI runs share one reproducible toolchain;
DOCS_TOOLBOX_LOCAL=1 falls back to the host toolchain.

Tasks: validate, generate, adapters, check-adapters, build (renders
build/architecture/index.html from src/docs/doc-001-arc42.adoc), all, clean.
Java modules stay on ./gradlew (docs-toolbox has no JDK).

Also fix invalid PlantUML in the building-block view: semantic-anchor
annotations inside the @startuml block broke rendering under
--failure-level=ERROR. The anchors remain as AsciiDoc prose below the diagram.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
- .github/workflows/ci.yml: on pull_request and pushes to main, validate
  architecture metadata/relations, run the generator (reproducibility), and
  check agent adapters are current — all via ./build.sh in the pinned
  docs-toolbox image; plus a Java job (JDK 21 + Gradle 8.5) running gradle build.
- .github/workflows/pages.yml: on main, render the arc42 HTML with
  ./build.sh build (docs-toolbox) and deploy build/architecture to GitHub Pages.
- adapters/agent-adapters.config.json: pin the adapter project name to
  event-processing-lab so check-adapters is stable regardless of the CI
  checkout directory name.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
- Author QS-001..QS-015 as QualityScenario artifacts under
  src/docs/arc42/10-quality-requirements/ using the toolkit six-part template,
  each tracing to the quality goal it concretizes. These were referenced by the
  chapter 10 index and by risk/TD xrefs but the files never existed.
- Fix chapter 10 to actually include them: `Include::` -> `include::` and
  QS- -> qs- filenames; lowercase the QS xref paths in the risk/TD detail files.
- Remove all canvas references (this project has no canvases): xref bullets,
  a risk traceability row each in risk-003 and risk-006, canvas semantic-anchors,
  and the business-context-diagram pointer in chapter 3.
- Repair adjacent broken prose xrefs to the introduction chapter exposed while
  editing (uppercase DOC-*.adoc id-form links -> correct doc-*.adoc paths).

Validator: 46 artifacts, 0 errors, 0 warnings. ./build.sh build renders the
full arc42 HTML cleanly (all QS includes and generated fragments resolve).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Update the project front door to match the current layout:

- Correct the src/docs tree: doc-001-arc42.adoc entry, doc-0XX00 chapter
  sources, lowercase adr-*/risk-*/td-* and the new qs-* detail files; add the
  vendored metamodel/, templates/, scripts/, adapters/, and .github/ tooling.
- Fix the Java module layout (modules live at the repository root, not under a
  modules/ directory) and drop the non-existent 12-glossary entry.
- Repoint all architecture-doc links to the new doc-001/doc-0XX00 filenames and
  remove references to canvases the project does not have.
- Add a "Validating and building the documentation" section describing
  ./build.sh validate|generate|build and the CI + GitHub Pages workflows.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
The flink-cep module never compiled. Repair it so `gradle build` (and the CI
Java job) passes:

- Add missing imports: org.apache.flink.api.java.functions.KeySelector and
  org.apache.flink.util.Collector.
- Remove invalid `.build()` calls on Flink CEP Pattern chains (the Pattern API
  has no build(); the chain already yields the Pattern). The KafkaSource
  builder's build() is unchanged.
- Restore the commented-out createOrderCreationPattern() that buildJob() calls.
- Remove the dead, non-compiling SameOrderCondition (unused; relied on a
  non-existent IterativeCondition.Context.getEvents()).
- Declare `throws Exception` on start()/main() for env.execute().

Verified locally with `gradle build` (exit 0). This fixes compilation only;
runtime CEP behavior is still unverified — covered by the new roadmap item to
add unit tests for the implementations.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Move architectural content out of the README and into the arc42 docs, and
address anchor rendering:

- README: keep only overview, setup, running components, and a new
  "Running a use case to evaluate the Comparison Matrix" guide; replace the
  duplicated architecture sections (learning objectives, quality goals/scenarios,
  runtime scenarios, comparison matrix, focus areas, risks, conventions) with
  links into src/docs. Drop the now-empty Semantic Anchors section.
- Ch4 Solution Strategy: add the Comparison Matrix and comparison dimensions
  (previously only in the README) as reviewable content with anchors.
- Remove all [semantic-anchor: ...] markers from the documentation (242
  occurrences). They leaked into rendered headings, list items, and tables and
  duplicated the toolkit's metadata-relation model. Real AsciiDoc [[anchors]]
  are kept; verified the rendered HTML contains no [semantic-anchor] text and no
  raw [[...]] leakage, with no Asciidoctor reference warnings.
- Roadmap: expand Phase 4 to add unit tests for the implementations and
  Gherkin behaviour specs bridged to tests (bdd-specification skill); add a
  Phase 5 "Comparison Matrix Dashboard" for the evaluation metrics.
- Add features/order-lifecycle-processing.feature as living documentation for
  the shared use case (test bridge pending, per roadmap Phase 4).

Validator: 46 artifacts, 0 errors, 0 warnings. ./build.sh build renders cleanly.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

@dieterbaier dieterbaier left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Toolkit-/arc42-Migration ist insgesamt schlüssig und die CI ist grün. Ich habe einen technischen Punkt im Java-Build kommentiert, der vor dem Merge geklärt werden sollte: Das Flink-CEP-Modul mischt Flink-Core/Streaming 1.14.6 mit Flink CEP 1.15.0. Ein erfolgreicher Compile beweist hier leider keine Laufzeitkompatibilität; Gradles Versionsauflösung kann dabei still Teile auf 1.15 ziehen. Bitte die Flink-Artefakte auf eine gemeinsame Version bringen oder die bewusst gemischte Kombination mit einem ausführbaren Integrationstest absichern.

Comment thread build.gradle
kafkaVersion = '3.6.1'
kafkaClientsVersion = kafkaVersion

// Esper dependencies [semantic-anchor: technology.esper]

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte vereinheitlichen: flinkVersion = 1.14.6 und flinkCepVersion = 1.15.0 werden im flink-cep-Modul gemeinsam verwendet. Dadurch landen Core/Streaming/Kafka-Connector und CEP aus unterschiedlichen Flink-Releases im selben Runtime-Classpath; Gradle kann Transitives still auflösen, aber API-/Binärinkompatibilitäten zeigen sich dann erst beim Start oder bei Pattern-Ausführung. Am sichersten ist eine einzige Flink-Version für alle Flink-Artefakte. Falls die Mischung absichtlich nötig ist, sollte mindestens ein Test den CEP-Job tatsächlich initialisieren und ein Pattern ausführen.

flink-cep pulled flink-cep 1.15.0 while flink-core/streaming/connector were
1.14.6, mixing two Flink releases on one runtime classpath. Standardize on a
single release: drop flinkCepVersion and depend on
org.apache.flink:flink-cep_2.12:${flinkVersion} (1.14.6), matching the Scala
suffix and version of the other Flink artifacts. Verified with gradle build.

A CEP job that initializes and executes a pattern at runtime is covered by the
Phase 4 roadmap item (unit/behaviour tests for the implementations).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@dieterbaier

Copy link
Copy Markdown
Owner Author

Addressed in 5544304: unified all Flink artifacts on a single release. Dropped flinkCepVersion and switched flink-cep to org.apache.flink:flink-cep_2.12:${flinkVersion} (1.14.6), matching the Scala suffix and version of flink-core/streaming/connector — no more mixed releases on the runtime classpath. Verified with gradle build. A test that actually initializes the CEP job and executes a pattern is tracked as Phase 4 (issue #11).

@dieterbaier dieterbaier left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nachprüfung der Änderung: Das ursprüngliche Finding ist sauber behoben. Alle Flink-Artefakte im CEP-Modul verwenden jetzt konsistent flinkVersion = 1.14.6, einschließlich passendem _2.12-Suffix. Die aktuelle CI ist grün. Keine neuen Findings in der Nachbesserung.

@dieterbaier
dieterbaier merged commit 7134346 into main Jul 12, 2026
2 checks passed
@dieterbaier
dieterbaier deleted the feature/align-architecture-knowledge-toolkit branch July 12, 2026 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant