Skip to content

ci: reconcile Project Intake through REST with scheduled recovery - #421

Merged
codeforester merged 89 commits into
mainfrom
ci/311-20261003-v1-0-make-project-intake-resilient-to-graphql-quota-exhausti
Oct 5, 2026
Merged

codeforester merged 89 commits into
mainfrom
ci/311-20261003-v1-0-make-project-intake-resilient-to-graphql-quota-exhausti

Conversation

@codeforester

@codeforester codeforester commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Project Intake now uses REST for issue and Project reconciliation, preserves active statuses and existing planning fields, batches missing-field updates, and independently verifies every managed field. It no longer depends on GraphQL owner discovery.

Quota exhaustion and long Retry-After/reset windows report a deferred reconciliation; an hourly full issue sweep retries events even if no card was created. Authentication failures remain explicit. Workflow logs redact credentials and report API usage.

Fixes #311.

Branch maintenance

Refs #426. Targets the branch for #420. Retarget and refresh after that parent is squash-merged; preserve the ordered stack.

The branch was refreshed without rewriting history to include main at a576cc279739eae5e4cfc33ffab2a7fb56de24de.

Current-head validation

At f5330b22446191532fb9c518c1f8f06522d777d7: uv lock freshness and baseline, runtime, strict typing, style, and contracts passed locally with all declared extras. Runtime result: 658 passed, 1 warning, 282 subtests passed in 10.05s.

Hosted checks: 7/7 required checks passed; 0 checks pending; 0 unsuccessful checks at 2026-10-04T14:19:40.760978+00:00. See the PR Checks tab and #426 for subsequent results.

…07-us-record-about-20x-stdlib' into bug/378-20261003-bug-run-bundle-retention-is-inoperative-on-native-windows
…e-on-native-windows' into enhancement/386-20261003-perf-retention-serializes-concurrent-invocations-on-an-untim
…urrent-invocations-on-an-untim' into security/385-20261003-security-validate-trust-of-ancestor-discovered-project-confi
…or-discovered-project-confi' into bug/379-20261003-bug-json-single-envelope-stdout-contract-is-broken-by-any-wr
…ct-is-broken-by-any-wr' into ci/311-20261003-v1-0-make-project-intake-resilient-to-graphql-quota-exhausti
…ff-check-and-mypy-do-not-cover-the-compatibility-consum
…-compatibility-consum' into bug/387-20261003-bug-configure-logger-closes-consumer-owned-handlers-and-forc
…wned-handlers-and-forc' into enhancement/381-20261003-perf-lifecycle-logging-costs-107-us-record-about-20x-stdlib
…07-us-record-about-20x-stdlib' into bug/378-20261003-bug-run-bundle-retention-is-inoperative-on-native-windows
…e-on-native-windows' into enhancement/386-20261003-perf-retention-serializes-concurrent-invocations-on-an-untim
…urrent-invocations-on-an-untim' into security/385-20261003-security-validate-trust-of-ancestor-discovered-project-confi
…or-discovered-project-confi' into bug/379-20261003-bug-json-single-envelope-stdout-contract-is-broken-by-any-wr
…ct-is-broken-by-any-wr' into ci/311-20261003-v1-0-make-project-intake-resilient-to-graphql-quota-exhausti
…07-us-record-about-20x-stdlib' into bug/378-20261003-bug-run-bundle-retention-is-inoperative-on-native-windows
…e-on-native-windows' into enhancement/386-20261003-perf-retention-serializes-concurrent-invocations-on-an-untim
…fecycle-logging-costs-107-us-record-about-20x-stdlib' into bug/378-20261003-bug-run-bundle-retention-is-inoperative-on-native-windows
…ff-check-and-mypy-do-not-cover-the-compatibility-consum
…d-mypy-do-not-cover-the-compatibility-consum' into bug/387-20261003-bug-configure-logger-closes-consumer-owned-handlers-and-forc

# Conflicts:
#	docs/integrations.md
…ogger-closes-consumer-owned-handlers-and-forc' into enhancement/381-20261003-perf-lifecycle-logging-costs-107-us-record-about-20x-stdlib
…fecycle-logging-costs-107-us-record-about-20x-stdlib' into bug/378-20261003-bug-run-bundle-retention-is-inoperative-on-native-windows
…retention-is-inoperative-on-native-windows' into enhancement/386-20261003-perf-retention-serializes-concurrent-invocations-on-an-untim
…tention-serializes-concurrent-invocations-on-an-untim' into security/385-20261003-security-validate-trust-of-ancestor-discovered-project-confi
…alidate-trust-of-ancestor-discovered-project-confi' into bug/379-20261003-bug-json-single-envelope-stdout-contract-is-broken-by-any-wr
…-envelope-stdout-contract-is-broken-by-any-wr' into ci/311-20261003-v1-0-make-project-intake-resilient-to-graphql-quota-exhausti
@codeforester

Copy link
Copy Markdown
Contributor Author

Re-verified at 52f2e4e: all three threads addressed ✅. Scheduled sweeps isolate per-issue failures and report them together at the end, the items cache is invalidated before each duplicate-add reread, and the already-fetched issue object is passed into main(). Keeping the full state=all sweep as the recovery path is a reasonable call. Small non-blocking nit: when a DeferredReconciliation aborts the sweep, failures already collected are discarded without being printed. Logging them before the re-raise would help. The threads can be resolved.

Base automatically changed from bug/379-20261003-bug-json-single-envelope-stdout-contract-is-broken-by-any-wr to main October 5, 2026 15:58
@codeforester

Copy link
Copy Markdown
Contributor Author

Resolved the merge conflicts by merging current main, including merged PR #420, into this branch in commit 8118173. Preserved the #311 Project Intake REST reconciliation and recovery documentation, current main logging sidecar recovery, and the combined hot-path tests. Local validation passed: Project Intake-focused tests, full pytest, Ruff check and format, strict mypy, and documentation validation. GitHub reports the PR as conflict-free; hosted checks are running on the new head. The PR remains open and unmerged.

@codeforester
codeforester merged commit 0bb4cc7 into main Oct 5, 2026
107 checks passed
@codeforester
codeforester deleted the ci/311-20261003-v1-0-make-project-intake-resilient-to-graphql-quota-exhausti branch October 5, 2026 16:06
codeforester added a commit that referenced this pull request Oct 5, 2026
## Summary

The comparative benchmark now gates concurrent retention and sustained
logging. Twelve synchronized processes share a warmed cache, and
persistent/ephemeral logging emits 3,000 records per sample. Reports use
schema v2 with explicit latency, throughput, ratio, and budget units;
the retained CI artifact remains compatible by filename.

## Issue

Fixes #391

## Branch maintenance

PR #421, the Project Intake parent car, has merged into `main`. GitHub
retargeted this benchmark PR from the parent branch to `main`; the
benchmark changes remain unchanged in the current head. This car is now
the first open implementation car in the 0.5.0 train, followed by the
release candidate in #423.

## Current-head validation

At `0418cd45a59a9465934e85a6ed1edbb1f7759ffa`: the branch includes the
current `main` and the benchmark gate changes. The prior local
validation covered uv lock freshness and baseline, runtime, strict
typing, style, and contracts with all declared extras: 660 passed, 1
warning, and 294 subtests passed in 10.63s. Hosted checks are being
rerun after the retarget; report their live result from the Checks tab
before merge.
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.

[v1.0] Make Project Intake resilient to GraphQL quota exhaustion

1 participant