feat(examples): forge-eda-example reference project (B.6.8)#47
Merged
Conversation
Ship the third archetype reference project under examples/ — forge-eda-example/ — demonstrating the now-promoted event-driven-eu archetype, mirroring the b7-7-example (RAG) and c1 (FSM) precedents. Key divergence from b7-7-example (recorded as ADR-B6-8-001): because b6-7-harness already promoted event-driven-eu to stage: stable / scaffoldable: true on main, the tree is rendered through the REAL public CLI — `forge init --archetype event-driven-eu` — exactly as an adopter would, rather than through the overlay.sh workaround b7-7 needed while ai-native-rag was still a candidate. This is a stronger demonstration: it proves the promoted archetype scaffolds end-to-end through the public path. What ships: - examples/forge-eda-example/: a full event-driven-eu/1.0.0 tree (backend events/eventstore/saga/bin-server, infra NATS+Postgres+Temporal, shared AsyncAPI 3.1 + protos) rendered via the real forge init CLI, plus its own .forge/ framework assets + .claude/ so it self-validates, and an authored navigation README (4 canonical H2 sections). - 3 archived demo changes: demo-001-ingestion-http-nats ([backend], HTTP -> NATS JetStream publish with Nats-Msg-Id dedup), demo-002-projection- readmodel ([backend], event store -> deterministic read-model projection + inbox dedup), demo-003-order-saga ([backend, infra] multi-layer/Janus, Temporal activity-only 3-step saga with reverse-order compensation, Article VIII.2). demo-003 is [backend, infra] rather than [backend, frontend] because the archetype's frontend layer is deferred (ADR-B6-8-002). - .forge/changes/b6-8-example/: the full Forge spec pipeline (proposal, specs, design with 4 ADRs, tasks, open-questions), archived; consolidated into .forge/specs/example-reference.md (FR-EDAEX-001..010) and .forge/specs/forge-ci.md (MODIFIED FR-CI-012). - .forge/scripts/tests/b6-8.test.sh: new harness (23 checks, manifest pattern, L1 + L2 opt-in), registered in forge-ci.yml's harness loop. - forge-ci.yml example job: a third parse-only / own-gates-only EDA gate block under the existing examples/** filter (ADR-B6-8-004); FSM + RAG blocks byte-preserved. Coupled lockstep changes (same commit): - forge-ci.yml line budget bumped 400 -> 420 (the third gate block + the b6-8.test.sh loop entry push it to 409 lines), updated in lockstep across the four asserting harnesses (c1, g1, t5-1, t5-otel-live-run) and the forge-self-ci.md standard. - b8-signoz.test.sh: exclude examples/forge-eda-example/ from the repo-wide docker-compose mirror-count scan, exactly as b7-7 excluded forge-rag-example (the EDA example ships its own NATS/Postgres + Temporal compose files that are not SigNoz mirror copies). No archetype template, schema, standard, constitution, or CLI code is edited — B.6.8 consumes the archetype, it does not modify it. Gates: full 76-harness forge-ci sweep GREEN; verify.sh (564/0), constitution-linter.sh (83/0), validate-foundations.sh all PASS; b6-8.test.sh 23/0 (L1 + L2); the EDA tree's own gates PASS standalone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
examples/forge-eda-example/— the third archetype reference project underexamples/, demonstrating the now-promotedevent-driven-euarchetype. It is the event-driven sibling offorge-fsm-example/(c1,full-stack-monorepo) andforge-rag-example/(b7-7,ai-native-rag), and closes brick B.6.8 of the B.6 chain.Key divergence from
b7-7-example(ADR-B6-8-001)b7-7-examplehad to render its RAG tree viaoverlay.shdirectly becauseai-native-ragwas still acandidate(scaffoldable: false) at its creation time. b6-8 is different and simpler:b6-7-harnessalready promotedevent-driven-eutostage: stable/scaffoldable: trueon main, so this example is rendered through the real public CLI —forge init --archetype event-driven-eu— exactly as an adopter would. This is a stronger demonstration: it proves the promoted archetype scaffolds end-to-end through the public path, not just through the internal renderer.What ships
examples/forge-eda-example/— a fullevent-driven-eu/1.0.0tree (backend/{events,eventstore,saga,bin-server},infra/NATS JetStream + Postgres event store + Temporal cluster,shared/asyncapi/AsyncAPI 3.1 +shared/protos/v1/events/) rendered via the real CLI, plus its own.forge/framework assets +.claude/so it self-validates, and an authored navigationREADME.md(4 canonical H2 sections, replacing the archetype-rendered README).demo-001-ingestion-http-nats[backend]— HTTP ingestion → NATS JetStream publish (versioned idempotentEventEnvelope,Nats-Msg-Iddedup).demo-002-projection-readmodel[backend]— Postgres event store → deterministic, replayable read-model projection + inbox dedup (outbox/inbox).demo-003-order-saga[backend, infra]— multi-layer (Janus) Temporal activity-only 3-step saga (reserve stock → charge payment → confirm shipment) with reverse-order compensation (Article VIII.2). Per-layer designs/ + tasks/..forge/changes/b6-8-example/— the full Forge spec pipeline (proposal, specs, design with 4 ADRs, tasks, open-questions), archived; consolidated into.forge/specs/example-reference.md(FR-EDAEX-001..010/NFR-EDAEX-001..005) and.forge/specs/forge-ci.md(MODIFIEDFR-CI-012)..forge/scripts/tests/b6-8.test.sh— new harness (23 checks, manifest pattern, L1 + L2 opt-in via--require-example-tools), registered inforge-ci.yml's harness loop.forge-ci.ymlexamplejob — a third parse-only / own-gates-only EDA gate block under the existingexamples/**filter (ADR-B6-8-004); FSM + RAG blocks byte-preserved.Design decisions (ADRs)
forge initCLI (the archetype is promoted/scaffoldable) — the divergence from b7-7's overlay.sh workaround.[backend, infra]; the archetype'sfrontendlayer is deferred (ADR-B6-1-004), so there is no[backend, frontend]demo.specified, mirroring b7-7).forge-ci.ymlline budget bumped 400→420 in lockstep.[NEEDS CLARIFICATION]decisionsAll three open questions were resolved at design and recorded in
open-questions.md(real-CLI render → ADR-B6-8-001; multi-layer axis[backend, infra]→ ADR-B6-8-002; 3 archived demos → ADR-B6-8-003). None left open.Scope discipline
No archetype template, schema, standard, constitution, or CLI code is edited — B.6.8 consumes the archetype, it does not modify it. Coupled lockstep edits (same commit): the four budget-asserting harnesses (
c1,g1,t5-1,t5-otel-live-run) +forge-self-ci.mdfor the 400→420 bump, andb8-signoz.test.shto excludeforge-eda-example/from its repo-wide docker-compose mirror-count scan (exactly as b7-7 excludedforge-rag-example/).CI budget (before / after)
Test plan
Live render (reproducible):
Gates (all GREEN locally):
b6-8.test.sh— 23/23 (L1) and 23/23 (L2--require-example-tools).verify.sh— 564 passed / 0 failed (PASS).constitution-linter.sh— 83 pass / 0 fail (PASS).validate-foundations.sh— PASS (event-driven-eu 1.0.0 confirmedstage=stable).verify.sh(18/0) +constitution-linter.sh(2/0) PASS standalone.c130/0,g114/0,t5-117/0,t5-otel-live-run8/0.b8-signoz.test.sh21/0 after the mirror-count exclusion fix.Plan doc
docs/new-archetypes-plan.mdupdated: §0.13 B.6 brick table row 10 flipped ⏸️ Pending → ✅ archived, and the §11 T7 row updated to reflect B.6 event-driven-eu COMPLET (10/10).🤖 Generated with Claude Code