Skip to content

Commit 73fe2de

Browse files
Release Architecture Memory platform foundation (v1.5.0).
Ship Memory through ArchitectureContextEnvelope, product constitution, and Architecture Moments discovery β€” freeze the foundation before surfaces or AI. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent c65a42a commit 73fe2de

192 files changed

Lines changed: 17681 additions & 39 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.5.0] - 2026-07-23
11+
1012
### Added
1113

12-
- GoF design-pattern generators (distinct from architecture presets):
13-
- `strategy` β€” contract, default/alternative strategies, strategy context
14-
- `state` β€” contract, draft/published/archived states, state context with transitions
15-
- `singleton` β€” `{Model}Registry` with classic Singleton semantics (documents Laravel container preference)
16-
- `abstract-factory` β€” component factory family (notifier + serializer) + client; separate from Eloquent `factory`
17-
- [ADR-0007](docs/adr/0007-event-bus-for-engine-extensibility.md): event bus for engine extensibility (planned for **v1.5 / Integration** β€” public extension events, compatibility promise, observational listeners).
14+
- **Architecture Memory platform** (Workspace): append-only events, baselines, stories, decisions, intelligence, guidance, journeys, standards, governance, evolution, learning, collaboration, knowledge transfer, questions, conversations, decision history, identity, communication, and architecture context.
15+
- **ArchitectureIdentitySnapshot** β€” stable identity contract with inertia and identity history; `identity_observed` only via explicit `observe()`.
16+
- **Architecture Brief** (Phase 16) β€” living transferable understanding with Audience (`developer` / `architect` / `contributor`); not static documentation.
17+
- **Architecture Context** (Phase 17) β€” β€œWhat should I know before I touch this?” composition from identity, decisions, evolution, and guidance.
18+
- **ArchitectureContextEnvelope v1.0** β€” stable pre-AI boundary for UI Β· IDE Β· PR Β· AI; `can_explain` / `can_modify`; typed `allowed_questions`.
19+
- CLI: `architect:ask`, `architect:workspace` enhancements; Ask is read-only.
20+
- Product constitution: [VISION.md](VISION.md), [philosophy](docs/philosophy.md), [roadmap](docs/roadmap.md), [Architecture Moment Map](docs/architecture/moments.md) (Phase 18 discovery β€” evidence before surfaces).
21+
- [ADR-0008](docs/adr/0008-visualize-architecture-assistant-ux.md): Architecture Workspace UX boundary.
22+
- Unit tests for memory, controlled change, fix proposals, and workspace services.
23+
24+
### Changed
25+
26+
- Product positioning: **architecture continuity system** β€” preserves architectural intent; AI speaks from architectural memory, never replaces it.
27+
- Foundation frozen at Envelope; next work is evidence collection (Architecture Moments), not engine expansion.
1828

1929
## [1.4.3] - 2026-07-22
2030

β€ŽCONTRIBUTING.mdβ€Ž

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
Thank you for considering contributing to LaraArchitect! Contributions of all kinds are welcome: bug reports, feature ideas, documentation improvements and pull requests.
44

5+
## Before you write code
6+
7+
1. Read **[VISION.md](VISION.md)** β€” why the project exists (North Star, principles, constitution).
8+
2. Read **[docs/philosophy.md](docs/philosophy.md)** β€” the project constitution.
9+
3. Skim **[docs/roadmap.md](docs/roadmap.md)** and the **[ADR index](docs/adr/README.md)** β€” how we build.
10+
11+
**Every new feature should strengthen the engine or improve the developer’s daily workflow inside the Workspace.** If it does neither, reconsider.
12+
13+
**Permanent principle:** *AI speaks from architectural memory β€” never replaces it.*
14+
15+
**Feature checkpoint:** *Which existing architectural memory does this feature help a developer access?* If unclear, it probably does not belong here.
16+
17+
Before proposing AI or language-layer work, ask: **Does this help developers understand existing architectural intent?** If it would create new architectural truth, it does not belong in the AI layer.
18+
19+
Maintainers releasing versions: see **[MAINTAINERS.md](MAINTAINERS.md)**.
20+
521
## Reporting issues
622

723
Before opening an issue, please:

β€ŽMAINTAINERS.mdβ€Ž

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Maintainer notes
2+
3+
> For future you. Things nobody else should have to rediscover.
4+
> Contributors start at [VISION.md](VISION.md). Users start at the [README](README.md).
5+
6+
## Release checklist
7+
8+
- [ ] `composer format` (Pint)
9+
- [ ] `composer analyse` (PHPStan / Larastan)
10+
- [ ] `composer test` (PHPUnit β€” full suite)
11+
- [ ] Update `[Unreleased]` β†’ version section in `CHANGELOG.md`
12+
- [ ] Verify **public API** surface (below) β€” no accidental breaks
13+
- [ ] Review **ADR impact** β€” does this change need a new ADR or an amendment?
14+
- [ ] Check **backward compatibility** (SemVer; BC aliases; config merge)
15+
- [ ] Docs still match behavior (`README`, `docs/`, `VISION.md` if product intent shifted)
16+
- [ ] Tag release (`vX.Y.Z`) and push tag
17+
- [ ] Packagist / GitHub release notes as needed
18+
19+
## Public API (stable β€” SemVer)
20+
21+
Treat breaking changes here as **major** (unless clearly experimental and documented).
22+
23+
### Architecture engine
24+
25+
| Symbol | Role |
26+
| --- | --- |
27+
| `ArchitectureEngine` | Entry point for analyze / lint |
28+
| `AnalysisResult` | Immutable analysis output |
29+
| `LayerRegistry` | Layer definitions |
30+
| `ArchitectureRule` | Rule contract |
31+
| `RulePack` | Pack of rules |
32+
| `DependencyExtractor` | Extraction contract |
33+
| `Renderer` | Report rendering contract |
34+
| `MetricCalculator` | Metrics contract (plugins later) |
35+
| `SuggestionProvider` | Suggestions contract (plugins later) |
36+
| Value objects / IDs used in public results | e.g. `Violation`, `Hotspot`, `Baseline`, `RuleId`, `LayerId`, `NodeId`, … |
37+
38+
### Workspace read model (Experience β€” evolving)
39+
40+
| Symbol | Role |
41+
| --- | --- |
42+
| `WorkspaceService` | Builds `WorkspaceSnapshot` from analysis + context |
43+
| `FixProposalService` | Builds `FixProposal` for Preview (no Apply yet) |
44+
| `WorkspaceSnapshot` | Immutable payload (`schema_version` 1.1) for UI/CLI/adapters |
45+
| `FixProposal` Β· `FileChange` Β· `VerificationPlan` Β· `FixConfidence` Β· `FixRisk` | Preview / verification contract |
46+
| `WorkspaceContext` / `Finding` / `WorkspaceIssue` / `IssueExplanation` / `WorkspaceAction` / `WorkspaceHealth` | Domain concepts |
47+
| `WorkspaceId` Β· `ContextId` Β· `FindingId` Β· `IssueId` Β· `ActionId` Β· `SessionId` Β· `FixProposalId` | Typed identities |
48+
49+
Treat additive snapshot fields as minor; removing/renaming fields as major once declared stable in a release.
50+
51+
### Generation (application-facing)
52+
53+
| Symbol | Role |
54+
| --- | --- |
55+
| Generator contract + registered patterns | `make:module` / feature / wizard surface |
56+
| Published config keys under `lara-architect.generation` | Presets, namespaces, generators |
57+
| Runtime bases | e.g. `ArchitectRepository`, `ArchitectService`, … (+ BC aliases) |
58+
59+
### Extension events (when ADR-0007 ships)
60+
61+
Public lifecycle events + `ArchitectureEvent` contract β€” SemVer-stable per ADR-0007.
62+
63+
## Internal (no compatibility promise)
64+
65+
May change in any minor/patch without notice. Do not depend on these from app code or sibling packages.
66+
67+
| Symbol | Role |
68+
| --- | --- |
69+
| `DependencyGraph` | Graph structure |
70+
| `RegexExtractor` | Default extractor implementation |
71+
| `FileScanner` | Filesystem scanning |
72+
| `EngineFactory` wiring details | Construction internals |
73+
| Scanners / use-case helpers not exported as API | β€” |
74+
| Stub file paths / private generator helpers | β€” |
75+
76+
When unsure: if it is not documented as public here or in the README/engine docs, treat it as **internal**.
77+
78+
## Product discipline
79+
80+
1. Read [VISION.md](VISION.md) and [docs/philosophy.md](docs/philosophy.md) before large changes.
81+
2. Prefer strengthening the **engine** or the **Workspace experience** over unrelated features.
82+
3. **Enterprise** stays a future direction until the open-source edition proves the architecture β€” do not build it early.
83+
4. Update the [ADR index](docs/adr/README.md) when adding a decision record.
84+
85+
## Useful links
86+
87+
- [Roadmap](docs/roadmap.md)
88+
- [Architecture notes](docs/architecture/)
89+
- [ADR index](docs/adr/README.md)
90+
- [Contributing](CONTRIBUTING.md)

β€ŽREADME.mdβ€Ž

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,41 @@
1-
# LaraArchitect
1+
# Lara Architect
22

3-
**Build, enforce, analyze, and evolve Laravel architecture.**
3+
**Architecture Memory and Improvement Platform for Laravel**
44

5-
LaraArchitect is an architecture operating system for Laravel β€” not just a generator. It covers the full lifecycle:
5+
The Composer package `karim-ashraf/lara-architect` is the entry point. The product vision is a **platform** (core + UI + future integrations) β€” see [VISION.md](VISION.md) and [docs/architecture/platform.md](docs/architecture/platform.md).
6+
7+
Lara Architect helps you generate solid structure, catch layer violations early, remember what worked, and continuously improve how your app is built β€” so architecture stays intentional as the codebase grows.
8+
9+
```bash
10+
composer require karim-ashraf/lara-architect
11+
12+
php artisan architect:new # generate a module the right way
13+
php artisan architect:lint # enforce layer rules
14+
php artisan architect:analyze # see health, hotspots, structure
15+
php artisan architect:workspace # context + issues + explain (Workspace snapshot)
16+
php artisan architect:ask "why ProductService exists" # Phase 13 β€” living knowledge query
17+
```
18+
19+
| You want… | Start here |
20+
| --- | --- |
21+
| **To use it** | This README β†’ [Getting started](docs/getting-started.md) |
22+
| **To contribute** | [VISION.md](VISION.md) β†’ [docs/](docs/index.md) β†’ [ADRs](docs/adr/) |
23+
| **To maintain / release** | [MAINTAINERS.md](MAINTAINERS.md) |
24+
25+
---
26+
27+
**Lara Architect Platform** β€” package is the entry; platform is the vision ([VISION.md](VISION.md)).
28+
29+
| Install | You get |
30+
| --- | --- |
31+
| `karim-ashraf/lara-architect` | Core engine Β· memory Β· intelligence Β· guidance Β· learning |
32+
| + `karim-ashraf/lara-architect-ui` | Architecture Workspace at `/architect/workspace` |
33+
| + future packages | Debugbar Β· VS Code Β· GitHub Β· AI Β· Enterprise |
34+
35+
Lifecycle:
636

737
```
8-
Design β†’ Generate β†’ Analyze β†’ Enforce β†’ Evolve
38+
Design β†’ Generate β†’ Analyze β†’ Enforce β†’ Visualize β†’ Integrate β†’ Platform
939
```
1040

1141
| Pillar | What it does |
@@ -14,7 +44,9 @@ Design β†’ Generate β†’ Analyze β†’ Enforce β†’ Evolve
1444
| **Generate** | `make:module`, `architect:feature`, `architect:new` wizard |
1545
| **Analyze** | Dependency graph, layer counts, hotspots (`architect:analyze`) |
1646
| **Enforce** | Declarative layer rules + baseline (`architect:lint`) |
17-
| **Evolve** | Health score & actionable suggestions (v1.4.1 / v1.6) |
47+
| **Visualize** | Architecture Workspace via [lara-architect-ui](../lara-architect-ui/README.md) ([ADR-0008](docs/adr/0008-visualize-architecture-assistant-ux.md)) |
48+
| **Integrate** | Event bus / public extension events ([ADR-0007](docs/adr/0007-event-bus-for-engine-extensibility.md)) |
49+
| **Platform** | Sibling packages around a small, trustworthy core ([platform.md](docs/architecture/platform.md)) |
1850

1951
Under the hood sits a **framework-agnostic ArchitectureEngine** β€” Artisan commands are thin adapters. You can analyze a codebase with no Laravel bootstrap:
2052

@@ -293,9 +325,14 @@ php artisan architect:lint --format=json
293325
# Layer counts + violations + hotspots
294326
php artisan architect:analyze
295327
php artisan architect:analyze --format=json
328+
329+
# Workspace snapshot β€” current context, issues, explain (UI adapters consume the same JSON)
330+
php artisan architect:workspace --context=ProductController
331+
php artisan architect:workspace --format=json
332+
php artisan architect:workspace --explain="<issue-id>"
296333
```
297334

298-
### Baseline (adopt on day one)
335+
The Workspace command builds a **WorkspaceSnapshot** read model from the engine ([spec](docs/architecture/workspace.md)). React / Debugbar / VS Code will share that payload later.
299336

300337
Existing apps often have hundreds of violations. Freeze them so only *new* ones fail CI:
301338

0 commit comments

Comments
Β (0)