@@ -7,6 +7,56 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
77
88## [ Unreleased]
99
10+ ## [ 0.7.0-rc.12] — 2026-05-28
11+
12+ ### Changed
13+ - ** Three-way merge overwrite policy.** ` decideAndWrite() ` switched from
14+ marker-based (clobber if ` @generated ` is present, refuse otherwise — the
15+ rc.11-era strategy that silently lost hand-edits) to three-way merge
16+ against a canonical snapshot stored under ` .metaobjects/.gen-state/ ` .
17+ Hand-edits in generated files now survive regen automatically (the spike
18+ 002 "HARD" case); same-line edits surface as standard git-conflict
19+ markers (the "CONFLICT" case). The ` @generated ` marker becomes
20+ informational, no longer load-bearing.
21+
22+ Restated in adopter terms:
23+ - ** Easy case** (you add a comment): clean merge integrates it
24+ - ** Hard case** (you tweak a generated value): your edit survives
25+ - ** Conflict case** (both sides edit the same line): standard
26+ ` <<<<<<< ` / ` ||||||| ` / ` ======= ` / ` >>>>>>> ` markers — resolve like
27+ any git conflict; rerun ` meta gen ` to advance the snapshot
28+ - ** First-time-on-existing-file** : write-if-different baseline (no merge,
29+ no clobber). ` meta gen --baseline=fresh ` opts into "overwrite from
30+ fresh and re-baseline"
31+
32+ Add ` .metaobjects/.gen-state/ ` to your ` .gitignore ` . ` meta init `
33+ scaffolding handles this automatically. Integrity is sha-256 hashed at
34+ ` .gen-state/.hashes.json ` ; tampered snapshots fall back to first-time
35+ semantics with a warning.
36+
37+ ### Added
38+ - ** ` templateGenerator() ` stock generator** — a factory that walks
39+ ` MetaRoot ` → renders shared Mustache templates via the existing
40+ ` @metaobjectsdev/render ` engine → emits files in any format (Markdown /
41+ HTML / JSON / YAML / text). Establishes the framework line: ** code →
42+ hand-coded generators (ts-poet, idiomatic per-port); documents →
43+ templateGenerator (shared Mustache templates, port-agnostic)** .
44+ - ** ` docsFile() ` refactored to use ` templateGenerator() ` .** Markdown
45+ structure now lives in
46+ ` codegen-ts/templates/docs/entity-page.md.mustache ` ; adopters can
47+ override by placing same-named templates in their project's
48+ ` templates/ ` directory. Net: ~ 85 LOC + a template file replaces ~ 250
49+ LOC of hand-coded string emit. Conformance fixture
50+ ` docs-file-basic/expected/Author.md ` stays byte-identical.
51+ - ** ` EntityDocData ` exported as a public-API contract.** Template authors
52+ consuming the data dict get TypeScript type-checking. Versioning policy
53+ spelled out in the new ` docs/features/codegen-data-shapes.md ` .
54+
55+ ### Removed
56+ - The marker-based ` decideAndWrite() ` path. The ` <!-- @generated --> `
57+ HTML-comment marker that rc.11 added to docsFile output is retained as
58+ human-readable annotation, but the policy no longer checks for it.
59+
1060## [ 0.7.0-rc.11] — 2026-05-28
1161
1262### Fixed
0 commit comments