Repository navigation
Two-way GitHub Sync (Cycle 0021) #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
a7a1172
cycles: design 0021-two-way-github-sync
flyingrobots 154fc83
cycles: design 0021-two-way-github-sync
flyingrobots e6b3262
cycles: update 0021 design for true two-way sync
flyingrobots 0b108ba
feat: adopt sponsor-abstractness invariant; update all design docs
flyingrobots 921706b
chore: capture i18n-string-extraction into inbox
flyingrobots c280ec2
cycles: close 0021-two-way-github-sync
flyingrobots 912e439
chore: capture new cool ideas and bad code
flyingrobots b171062
Fix: Add missing frontmatter to new backlog items
flyingrobots 6566f98
Fix: Resolve all CodeRabbit feedback on PR #7
flyingrobots 4224605
Fix: Final hardening pass based on PR review
flyingrobots fb299da
docs(backlog): add RED phase coverage task
flyingrobots d6e6ec4
docs(backlog): add Method consistency follow-ups
flyingrobots 0be0553
Fix: Resolve PR #7 feedback — frontmatter, path sanitization, trailin…
flyingrobots File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
79 changes: 79 additions & 0 deletions
79
docs/design/0021-two-way-github-sync/two-way-github-sync.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,79 @@ | ||
| --- | ||
| title: "Two-way GitHub Sync" | ||
| legend: PROCESS | ||
| --- | ||
|
|
||
| # Two-way GitHub Sync | ||
|
|
||
| Source backlog item: `docs/method/backlog/up-next/PROCESS_two-way-github-sync.md` | ||
| Legend: PROCESS | ||
|
|
||
| ## Sponsors | ||
|
|
||
| - Human: Backlog Operator | ||
| - Agent: Sync Automator | ||
|
|
||
| ## Hill | ||
|
|
||
| Extend the GitHub adapter to support full two-way synchronization between | ||
| the local filesystem and GitHub Issues. The filesystem remains the | ||
| authority for local content; the adapter will: | ||
| 1. **Push**: Update existing GitHub issues if the local title or body has | ||
| changed since the last sync. (This is the default action for | ||
| `sync github`). | ||
| 2. **Pull**: Update local backlog items with remote labels, status | ||
| (Open/Closed), and top-level comments to keep the local context rich. | ||
|
|
||
| If both `--push` and `--pull` are provided, they run sequentially: | ||
| local changes are pushed first, then remote updates are pulled. | ||
|
|
||
| ## Playback Questions | ||
|
|
||
| ### Human | ||
|
|
||
| - [ ] `method sync github --push` (or default) updates the title and | ||
| description of an existing GitHub issue if the local file changes. | ||
| - [ ] `method sync github --pull` updates local backlog files with data | ||
| from GitHub (labels, status, comments). | ||
| - [ ] `method sync github --push --pull` runs both operations | ||
| sequentially (Push then Pull). | ||
| - [ ] Local files reflect GitHub status (e.g., if an issue is closed on | ||
| GitHub, the local file is updated or moved). | ||
|
|
||
| ### Agent | ||
|
|
||
| - [ ] `GitHubAdapter.pushBacklog()` and `GitHubAdapter.pullBacklog()` are | ||
| implemented and tested with mocks. | ||
| - [ ] `tests/github-adapter.test.ts` proves that both remote-to-local and | ||
| local-to-remote updates work correctly. | ||
|
|
||
| ## Accessibility and Assistive Reading | ||
|
|
||
| - Linear truth / reduced-complexity posture: Syncing remote comments | ||
| locally ensures the full context of an item is available in a single | ||
| linear markdown file. | ||
| - Non-visual or alternate-reading expectations: Same as one-way sync. | ||
|
|
||
| ## Localization and Directionality | ||
|
|
||
| - Locale / wording / formatting assumptions: Standard English for synced | ||
| content headers. | ||
|
|
||
| ## Agent Inspectability and Explainability | ||
|
|
||
| - What must be explicit and deterministic for agents: The mapping of | ||
| GitHub states to local lane movements must be deterministic. | ||
| - What must be attributable, evidenced, or governed: The source of the | ||
| synced data (GitHub) must be clear. | ||
|
|
||
| ## Non-goals | ||
|
|
||
| - [ ] Real-time sync (this remains a manual command-triggered move). | ||
| - [ ] Conflicts resolution (filesystem wins for title/body content on | ||
| push; metadata like labels and comments are enriched on pull). | ||
|
|
||
| ## Backlog Context | ||
|
|
||
| Implement two-way synchronization for the GitHub adapter, allowing | ||
| labels, comments, and issue status to sync back from GitHub to the local | ||
| filesystem backlog. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| --- | ||
| title: "Invariant: Sponsor Abstractness" | ||
| --- | ||
|
|
||
| ## What must remain true? | ||
|
|
||
| Sponsors named in design documents are abstract roles, not specific | ||
| individuals or agent instances. | ||
|
|
||
| ## Why does it matter? | ||
|
|
||
| METHOD is a coordination protocol between two seats at the table: the | ||
| Human and the Agent. Naming literal people (e.g., "@james") or literal | ||
| agents (e.g., "@gemini-cli") creates a brittle, person-dependent history. | ||
| Roles (e.g., "Repository Operator", "Code Hardener", "Protocol Designer") | ||
| describe *who would care* about the feature and *what perspective* they | ||
| bring, which remains true regardless of who is currently sitting in the seat. | ||
|
|
||
| ## How do you check? | ||
|
|
||
| - Design documents name sponsors as roles (e.g., "Human: System Architect"). | ||
| - No literal personal names or specific agent brand names are used in | ||
| the `Sponsors` section. | ||
| - The roles named are descriptive of the interests being represented | ||
| in the cycle. | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| - This is enforced by the automated docs test (`tests/docs.test.ts`). | ||
27 changes: 27 additions & 0 deletions
27
docs/method/backlog/asap/PROCESS_branch-naming-consistency.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| --- | ||
| title: "Branch Naming Consistency" | ||
| legend: PROCESS | ||
| lane: asap | ||
| --- | ||
|
|
||
| # Unify branch naming rules across METHOD docs | ||
|
|
||
| METHOD currently names cycle branches inconsistently. | ||
|
|
||
| Examples in the docs point in different directions: | ||
| - `docs/method/process.md` says cycle work must happen on | ||
| `cycles/<cycle_name>` | ||
| - the same document's branch naming section says cycle branches use | ||
| `####-slug` | ||
|
|
||
| That should be one rule, not two. | ||
|
|
||
| Why this matters: | ||
| - branch naming is part of METHOD's coordination surface | ||
| - conflicting examples create unnecessary drift across repos | ||
| - agents and humans should not have to guess which rule is canonical | ||
|
|
||
| Deliverable: | ||
| - choose one branch naming rule for cycle branches | ||
| - update `README.md` and `docs/method/process.md` to match | ||
| - include one clear example and remove contradictory wording |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.