Skip to content

docs: document upstream sync policy and ecosystem-port framing#56

Merged
Jamkris merged 2 commits into
mainfrom
docs/upstream-policy
May 12, 2026
Merged

docs: document upstream sync policy and ecosystem-port framing#56
Jamkris merged 2 commits into
mainfrom
docs/upstream-policy

Conversation

@Jamkris
Copy link
Copy Markdown
Owner

@Jamkris Jamkris commented May 12, 2026

Summary

Response to @affaan-m's review on affaan-m/everything-claude-code#1343. The maintainer flagged drift risk, asked for a documented sync policy, and asked for a clear "changed vs copied" delta. This PR addresses each of those asks in a doc-only change.

  • docs/UPSTREAM.md (new): records the upstream baseline (ECC 9db98673... — the ECC HEAD ~1h before EGC's initial commit ff331996), a best-effort sync policy, a category-level changed/copied/removed/added table, and an honest "known drift" section.
  • docs/.upstream-sync.json (new): machine-readable mirror of the same baseline. Sets up the state file that the planned upstream-drift-tracker Action (follow-up PR) will read.
  • README.md: adds an "ecosystem port, not official ECC release" disclaimer right under the existing attribution line, with a link to docs/UPSTREAM.md.
  • CONTRIBUTING.md: adds a new "Upstream contributions (ECC backports)" section between "Submitting a PR" and "Tool Name Conversion". Explains when a change belongs upstream too, how to dual-PR, and how to record a sync.

Maintainer asks → file mapping

Maintainer ask Addressed by
"Sync policy with upstream ECC" docs/UPSTREAM.mdSync policy section
"Ecosystem port, not an official compatibility claim" README.md disclaimer + docs/UPSTREAM.md opening paragraph
"Document what is changed versus copied" docs/UPSTREAM.mdWhat was copied vs. changed vs. removed vs. added table

Sync cadence chosen: best-effort, no committed schedule

Rationale: a solo maintainer cannot reliably commit to a calendar cadence, and a missed promise is itself the kind of drift the policy is meant to prevent. Instead, drift is made mechanically visible by recording the baseline SHA in two places (prose + JSON) and (in a follow-up PR) running a weekly cron Action that opens a tracking issue if the baseline lags upstream HEAD.

Out of scope (deferred)

  • Upstream-drift-tracker GitHub Action — follow-up PR on its own branch (feat/upstream-drift-tracker). Will read docs/.upstream-sync.json, compare against affaan-m/everything-claude-code HEAD on a weekly cron, and maintain a single rolling upstream-sync tracking issue.
  • CI validator asserting that the SHAs in UPSTREAM.md prose and docs/.upstream-sync.json agree. Will land with the action PR (Phase 3 of that plan).
  • ko-KR / zh-CN mirrors of the new doc and the README disclaimer — separate follow-up PR. Will also fix the verified gap that docs/zh-CN/README.md is missing the attribution line that the English and Korean READMEs have.

Test plan

  • npm run lint — clean
  • npm test — 222/222 (no test changes; doc-only)
  • Manual link check: README → docs/UPSTREAM.md, docs/UPSTREAM.mddocs/.upstream-sync.json + ECC repo + baseline commit + initial EGC commit, CONTRIBUTING → docs/UPSTREAM.md
  • Re-read all four paragraphs of @affaan-m's reply and verify each is addressed by a specific section

Summary by cubic

Documents the upstream sync policy and clarifies EGC as an ecosystem port, now organized under a dedicated upstream/ folder with a machine-readable baseline, status badges, conflict-resolution guidance, and ko‑KR/zh‑CN translations. Updates README.md, localized READMEs, and CONTRIBUTING.md to link to upstream/README.md, add the disclaimer (and missing Chinese attribution), and explain backports, dual‑PRs, and how to record syncs.

Written for commit a176681. Summary will update on new commits.

Summary by CodeRabbit

  • Documentation
    • Clarified that EGC is an ecosystem port rather than an official release, with no guaranteed API/behavioral compatibility
    • Added upstream synchronization policy documentation and procedures
    • Added contributor guidance for managing upstream contributions and backports

Review Change Stack

In response to @affaan-m's review on
affaan-m/everything-claude-code#1343 (drift concern, request for a
documented sync policy and a clear "changed vs copied" delta).

- docs/UPSTREAM.md (new): records the upstream baseline SHA
  (9db98673... — ECC HEAD ~1h before EGC's initial commit), a
  best-effort sync policy, a category-level changed/copied/removed/
  added table, backporting guidance, and a "known drift" section.
- docs/.upstream-sync.json (new): machine-readable mirror of the
  baseline state. A follow-up PR will add a CI validator that
  asserts these two files agree on the SHA.
- README.md: ecosystem-port disclaimer added under the existing
  attribution. Clarifies EGC does not claim ECC compatibility and
  links to docs/UPSTREAM.md.
- CONTRIBUTING.md: new "Upstream contributions" section explaining
  when a change belongs upstream too, how to dual-PR, and the
  procedure for recording a sync.

Doc-only. npm run lint and npm test both green (222/222).
Copy link
Copy Markdown

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 12, 2026

Walkthrough

This PR establishes upstream synchronization policy for EGC as an ecosystem port of ECC. It adds docs/UPSTREAM.md with sync baseline, model, backport criteria, change inventory, and maintenance procedures; introduces docs/.upstream-sync.json for recording sync state; clarifies EGC's status in README; and extends CONTRIBUTING.md with ECC backport workflow guidance.

Changes

Upstream Synchronization & Backport Policy

Layer / File(s) Summary
Upstream Baseline Definition
docs/UPSTREAM.md, docs/.upstream-sync.json
Establishes upstream repository link (affaan-m/everything-claude-code), last-synced commit SHA (9db98673d054f5ed0991ba9d67ff4c883c81a42f), sync date (2026-02-09), and metadata structure for tracking.
Synchronization Model
docs/UPSTREAM.md
Defines best-effort sync cadence without fixed schedule; drift visibility via recorded SHAs and planned rolling upstream-sync GitHub issue.
Backport Eligibility Criteria
docs/UPSTREAM.md
Specifies harness-agnostic changes eligible for ECC backport and intentionally divergent features (Gemini-specific harness behavior, native CLI commands).
Change Inventory Matrix
docs/UPSTREAM.md
Enumerates categories of copied code (with path translation), changed code (Gemini CLI conventions), removed code (no equivalents), and added code (EGC-specific artifacts).
Backport Workflow
docs/UPSTREAM.md, CONTRIBUTING.md
Documents dual-PR process: land in EGC first, open corresponding ECC PR with Gemini-specific parts ported out, cross-link, and track acceptance.
Maintainer Sync Recording
docs/UPSTREAM.md
Defines step-by-step checklist for recording syncs: update metadata, refresh baseline, update drift notes, run npm run lint && npm test, commit with versioned message.
Known Drift & Open Questions
docs/UPSTREAM.md
Lists open questions: ECC maintainer end-to-end verification absent, expected inventory drift, asynchronous non-English doc mirror updates.
README Ecosystem Port Clarification
README.md
Clarifies EGC is an ecosystem port (not official ECC release) and disclaims API/behavioral compatibility; directs readers to docs/UPSTREAM.md.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Suggested labels

docs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: adding documentation for upstream synchronization policy and ecosystem-port framing across four files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/upstream-policy

Warning

Review ran into problems

🔥 Problems

Timed out fetching pipeline failures after 30000ms

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 4 files

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
CONTRIBUTING.md (1)

127-140: ⚠️ Potential issue | 🔴 Critical

Fix incorrect tool name mappings.

The Glob mapping is incorrect. According to Gemini CLI documentation, glob and list_directory are separate tools—glob is for pattern-based file discovery, while list_directory lists directory contents. Change Globlist_directory to Globglob.

Also, search_file_content is a legacy alias. The current tool name is grep_search; consider updating for consistency with the latest Gemini CLI.

The other mappings (read_file, write_file, replace, run_shell_command, google_web_search) are correct.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CONTRIBUTING.md` around lines 127 - 140, Update the tool-mapping table so the
"Glob" row maps to "glob" (not "list_directory") and replace the legacy
"search_file_content" entry with the current "grep_search" name; specifically
edit the table entries for the Claude→Gemini mappings (the rows referencing Glob
and Grep/search_file_content) to use "glob" and "grep_search" respectively while
leaving read_file, write_file, replace, run_shell_command, and google_web_search
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/UPSTREAM.md`:
- Around line 117-121: The three consecutive checklist items that start with
"Update" (items referencing updating `lastSyncedSha`/`lastSyncedAt`/`notes`, the
**Upstream baseline** section, and the **Open questions and known drift**
section) are repetitive; rephrase them so each begins differently for
readability—e.g., "Set" or "Modify" for the first, "Align the **Upstream
baseline** section to match" for the second, and "Revise the **Open questions
and known drift** section if any drift items are resolved" for the third—keeping
the meaning identical and preserving item 4 (lint/test) and item 5 (commit
message) as-is; update the bulleted numbered list in the UPSTREAM.md content
(the three list items and their surrounding sentences) accordingly.

---

Outside diff comments:
In `@CONTRIBUTING.md`:
- Around line 127-140: Update the tool-mapping table so the "Glob" row maps to
"glob" (not "list_directory") and replace the legacy "search_file_content" entry
with the current "grep_search" name; specifically edit the table entries for the
Claude→Gemini mappings (the rows referencing Glob and Grep/search_file_content)
to use "glob" and "grep_search" respectively while leaving read_file,
write_file, replace, run_shell_command, and google_web_search unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: a4cc4ba7-f926-4c6a-834e-72cc849ca441

📥 Commits

Reviewing files that changed from the base of the PR and between a5f85f4 and a4ca59c.

📒 Files selected for processing (4)
  • CONTRIBUTING.md
  • README.md
  • docs/.upstream-sync.json
  • docs/UPSTREAM.md

Comment thread docs/UPSTREAM.md Outdated
… translations

Response to design feedback on PR #56.

Restructure:
- docs/UPSTREAM.md       -> upstream/README.md
- docs/.upstream-sync.json -> upstream/.upstream-sync.json
- Co-locates the human doc, the machine state, and the per-language
  translations under a single dedicated upstream/ folder. The English
  doc lives at upstream/README.md so GitHub renders it on folder
  navigation, mirroring the existing docs/ko-KR/README.md convention.

Three improvements on the English doc:
- Status badges at top (Sync policy, upstream repo, baseline SHA)
  via Shields.io for at-a-glance signaling.
- New "Conflict resolution" subsection under Sync policy: when an
  upstream change collides with Gemini-native surface area, Gemini
  CLI native behavior stability takes precedence over upstream
  alignment.
- "Recording a sync" now states the procedure is open to community
  contributors via PR, not just the maintainer — reduces solo-
  maintainer bottleneck signal.

Translations:
- upstream/ko-KR/README.md (Korean) — mirrors English doc 1:1
  including badges, conflict resolution, and community language.
- upstream/zh-CN/README.md (Simplified Chinese) — same.

Cross-references:
- Root README.md: disclaimer link retargeted to upstream/README.md.
- CONTRIBUTING.md: all docs/UPSTREAM.md and docs/.upstream-sync.json
  links retargeted to upstream/* paths.
- docs/ko-KR/README.md: ecosystem-port disclaimer mirrored under
  the existing Korean attribution, linking to upstream/ko-KR/README.md.
- docs/zh-CN/README.md: previously had NO attribution at all (gap
  surfaced by planning). Adds the Chinese attribution line plus
  the ecosystem-port disclaimer, linking to upstream/zh-CN/README.md.

Nitpick fix from PR #56 review (CodeRabbit, line 121): "Recording
a sync" no longer opens three successive sentences with "Update.";
varied to "Update / Bring / If any item is resolved, remove it."

Doc-only. npm run lint and npm test both green (222/222).
@Jamkris Jamkris merged commit 4895cce into main May 12, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant