Skip to content

feat(sync): read-only GitHub Issue/PR sync engine (17-state matrix, batched GraphQL, cached, fail-closed) + GET /api/issues and /api/sync (#242) - #269

Merged
DanielNetzer merged 2 commits into
mainfrom
forgecell/issue-242-6cfbecf508fe690a7963e27a
Oct 27, 2026
Merged

DanielNetzer merged 2 commits into
mainfrom
forgecell/issue-242-6cfbecf508fe690a7963e27a

Conversation

@DanielNetzer

Copy link
Copy Markdown
Owner

Implements issue #242.

Molecule: mol-242-8d304c351bc4ca45bdf6fcb8
Formula: forgecell-github-issue
Base: 6bd19d73efc11cac4400d97256a320aecaacae0b
Delivery: d1fad87ec4ccce85ddea535626eace6f541c05a2

Awaiting exact-commit CI and human review. Harness-reported checks are not independent CI evidence. No merge, deployment or issue closure is authorized.

Daniel Netzer and others added 2 commits October 27, 2026 14:14
…atched GraphQL, cached, fail-closed) + GET /api/issues and /api/sync (#242)
… Molecule view + per-Issue lock)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@DanielNetzer

Copy link
Copy Markdown
Owner Author

Adversarial review: remaining LOW findings (not fixed in this slice)

  1. The cache ignores new numbers within the TTL. A just-published PR, or a new Molecule on a closed Issue, shows "not checked" for up to 60 s. The UI flickers but never shows a wrong state. Fix: treat the snapshot as not fresh when the wanted set has numbers it lacks.
  2. TestFetcherByteCapWithTheRealRunner spawns sh -c head -c …. That's POSIX-only, which is fine while CI runs on Linux and macOS.

Fixed in this slice:

  • row 15 timing (the reopen must come after the merge);
  • Startable fails closed on stale data;
  • a panic in the fetcher no longer freezes the cache, and the single-flight waits are bounded;
  • Unicode format characters (bidi overrides) are stripped from titles;
  • the missing matrix test cases are added.

@DanielNetzer

Copy link
Copy Markdown
Owner Author

Merged main into this branch (560c62f) to resolve a server.go conflict with #268 (#251) and #267 (#254): union of the handler fields (forge sync + amend/numstat/diffs), keeping runIssue: molecule.RunIntake. Verified on the merged tree: build, vet, go test -count=1 ./internal/ui/... ./internal/forgesync/... ./internal/delivery/... pass.

@DanielNetzer
DanielNetzer marked this pull request as ready for review October 27, 2026 12:15
@DanielNetzer
DanielNetzer merged commit 2a2b1a5 into main Oct 27, 2026
2 checks passed
@DanielNetzer
DanielNetzer deleted the forgecell/issue-242-6cfbecf508fe690a7963e27a branch October 27, 2026 12:24
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