overengineeringstudio / overengineeringstudio/effect-utils

notion-datasource-sync: define views and optional Notion API surfaces

Open
#720 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:notion origin:agent state:needs-research type:feature
Dominant language
TypeScript
Stars
82
Forks
2
Avg merge
1d 8h
Merged PRs (30d)
121

Description

Parent epic: #698

Problem

View inventory and webhook hints exist in limited form, but Notion views and optional API surfaces need explicit authority boundaries before they can be promoted.

Current Evidence

  • View inventory is read-only and non-authoritative for row membership.
  • No view create/update/delete command path or query-through-view authority model is implemented.
  • Webhook dirty hints are wired into watch mode.
  • Templates, comments/discussions, and user/profile privacy boundaries are not evidenced as complete.

Scope

  • Define view create/update/delete authority, base hashes, cleanup semantics, and cache/version behavior.
  • Decide whether query-through-view is only a display/read model or can ever produce membership proof.
  • Gate behavior on Notion API version when view endpoints differ.
  • Model templates as read-only inventory or future row-creation source.
  • Keep comments/discussions out of body sync unless a separate comment authority, anchoring model, and attachment identity exist.
  • Treat user/profile fields as permission-shaped partial identity; canonical identity should use stable user IDs.

Repro / Proof Instructions

  1. Add fake-service tests for view inventory and any candidate view write command before live mutation.
  2. For live view mutations, use disposable views with cleanup proof.
  3. For query-through-view, prove pagination, cache semantics, and absence classification rules.
  4. For comments/templates/users, start with read-only inventory and fail-closed write attempts.

Acceptance Criteria

  • Views are never used as implicit row-membership authority without explicit proof.
  • View writes fail closed until stale-base, cleanup, API-version, and cache semantics are modeled.
  • Optional surfaces are documented as supported, read-only, feasible follow-up, or out of scope.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with parent epic #698 and the existing view inventory and watch-mode webhook behavior. Define and document explicit authority, stale-base, cleanup, API-version, cache, and membership-proof boundaries, then add fake-service tests for view inventory and candidate writes. Done means optional surfaces are classified and view writes fail closed until those semantics are proven.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.