Skip to content

Commit fb3c5e2

Browse files
docs: add ecosystem conventions and event design lessons from PR review
Distill learnings from reviewing PRs #14 (amplifier-core) and #78 (amplifier-foundation) with the project owner. Captures metadata philosophy, extensibility patterns, and code quality standards. New entries: - Ecosystem Conventions & Event Design subsection (4 entries): metadata naming, proactive extensibility slots, raw-data-through pattern, promotion threshold for helpers - PR Review subsection additions (3 entries): zero-consumer compat burden, no fragile approaches, exemplar contract docs 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
1 parent 74748d3 commit fb3c5e2

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

context/ISSUE_HANDLING.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,13 +506,32 @@ For PR review guidance, see `docs/PR_REVIEW_GUIDE.md`.
506506
- If algorithm rejects X, trace what depends on X loading successfully.
507507
- Simple and complete beats elegant and incomplete.
508508

509+
### Ecosystem Conventions & Event Design
510+
- `metadata` is THE property bag name across the ecosystem. Don't rename it,
511+
don't introduce alternatives. It's the standard extensibility slot for
512+
experimentation and convention.
513+
- Add empty extensibility slots (`metadata: None`) to event payloads proactively.
514+
Overhead is negligible next to LLM calls; the slot enables future use without
515+
changing the event shape.
516+
- Don't decompose at the emitter. Raw data (e.g., qualified agent names) flows
517+
through events intact; consumers parse at their site. Emitters shouldn't bake
518+
in assumptions about what decomposition consumers need.
519+
- Don't promote helpers to foundation until 2+ independent consumers exist.
520+
Patterns stay in the consuming code (e.g., a specific hook) until then.
521+
509522
### PR Review
510523
- Each fix round changes the attack surface. Review adversarially every time.
511524
- Tests must guard contracts, not implementations. If "X is overridable" is
512525
the design claim, test the override.
513526
- Kernel fields with ambiguous semantics need `Field(description=...)` not
514527
inline comments -- invisible in IDE hover, help(), JSON schema.
515528
- Even owner PRs need independent expert review.
529+
- Zero consumers means zero backward-compat burden. Don't add aliases for
530+
events nobody is listening to. Clean over compatible-with-nothing.
531+
- Don't ship fragile approaches with caveats. If it breaks for edge cases,
532+
find a reliable approach or leave it out entirely.
533+
- Contract docs are copy-paste targets. Examples must show the exemplar case
534+
(populated, useful), not the degenerate case (null, empty).
516535

517536
### Multiple Perspectives
518537
- Parallel agent dispatch surfaces ground truth through convergence.

0 commit comments

Comments
 (0)