overengineeringstudio / overengineeringstudio/effect-utils
Plan shared Notion domain and transport reuse architecture
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 82
- Forks
- 2
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 121
Description
Context
The Notion package VRS docs were aligned with current implementation reality on branch schickling/2026-05-25-notion-md-db. The review found recurring duplication and architectural pressure across NotionMD, datasource-sync, notion-react, notion-cli, @overeng/notion-effect-schema, and @overeng/notion-effect-client.
Existing related issue: #729 covers CLI descriptor/parser/help drift. This issue covers the broader domain and transport architecture.
Findings to address
- Decide which shared Notion identity/property/block concepts belong in
@overeng/notion-effect-schemaversus package-local domains. - Make the lower Notion client boundary explicit: typed API/transport/decode failures versus today's datasource-sync gateway adapter receiving unknown client failures.
- Define whether canonical property capability descriptors should be shared, and how they map between raw Notion schema, datasource-sync planners, and
.nmdfrontmatter. - Keep datasource-sync store/planner/outbox boundaries extractable without prematurely inventing public
notion-domainornotion-sync-corepackages. - Preserve public API migration discipline for branded IDs and canonical value types.
Proposed milestone order
- Characterization tests for current cross-package behavior before refactors.
- Shared schema primitives only where contracts already exist or are easy to prove.
- Gateway/client typed-error cleanup with adapter tests.
- Property/block capability reuse behind explicit adapters.
- Re-evaluate package extraction only after imports and tests show a stable boundary.
Open decisions
- Should branded Notion IDs become public API immediately, or stay decoder-internal during a transition?
- Should
.nmdpreserve author-written frontmatter shape over normalization when semantically equivalent? - Should transport/decode errors become normative client API variants now, or remain gateway-local until implemented?
Verification expectations
Use focused unit/adapter tests first, then fake datasource-sync E2E and existing NotionMD/React regression tests. Avoid changing requirements-level VRS docs until decisions above are confirmed.
Posted on behalf of @schickling
| field | value |
|---|---|
agent_name |
🦣 co3-steppe |
agent_session_id |
141727fd-13d9-4bc4-8cb3-7c4e9e55b0da |
agent_tool |
Codex CLI |
agent_tool_version |
0.131.0 |
agent_runtime |
Codex CLI 0.131.0 |
agent_model |
unknown |
worktree |
effect-utils/schickling/2026-05-25-notion-md-db |
machine |
dev3 |
tooling_profile |
dotfiles@4db6783 |
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with characterization tests for current behavior across NotionMD, datasource-sync, notion-react, notion-cli, @overeng/notion-effect-schema, and @overeng/notion-effect-client. Trace the current client gateway, schema, planner, store, and outbox boundaries before making changes. Done means the open API, error, capability, and package-boundary decisions are resolved and focused unit, adapter, fake E2E, NotionMD, and React regression tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend-api-design
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100