Skip to content

2: #390 async GoodJob sync onto main#510

Open
superconductor-for-github[bot] wants to merge 47 commits into
mainfrom
cycomachead/preview-only-pr-390-async-good-job-sync
Open

2: #390 async GoodJob sync onto main#510
superconductor-for-github[bot] wants to merge 47 commits into
mainfrom
cycomachead/preview-only-pr-390-async-good-job-sync

Conversation

@superconductor-for-github

Copy link
Copy Markdown

Preview-only sync of #390 (async sync via GoodJob) onto current main.

Preserves PR #390 history (stacked on #392/#394) and merges current main, reusing the earlier resolutions and integrating the async feature onto main's refactored code.

Key resolutions:

Full RSpec suite green (587 examples); RuboCop clean.

Original PR: #390 · Stacked on #509

gobears01 and others added 30 commits April 20, 2026 13:13
Late days column
Added one minor logic fix, resolved merge conflict due to UI change. All tests are passing
Enable/ Disable assignments

update_all method fixed. Skip rubocop validations
gobears01 and others added 13 commits April 30, 2026 12:04
… not being one(no canvas association) => Fail after 1s
Sync PR #390 (async sync via GoodJob) with current berkeley-cdss/main.
Reuses #394/#392 resolutions and integrates the async feature:
- perform_later + GoodJob adapter (external execution mode in tests)
- adapted #390's controller/UI from old auth (@role/@is_course_admin/@user)
  to main's current_user/staff_user?; kept main's display_role + last-synced UI
- regenerated schema with good_jobs tables + notes column
- adapted new sync_users_from_canvas_job_spec to the Enrollment model
Full RSpec suite green (587); RuboCop clean.
…ance)

Run GoodJob via execution_mode = :async in production (inherited by
staging), so the single EB web instance processes background jobs in
its own thread pool without a separate worker process or tier — and
without depending on EB starting a Procfile `worker`.

- production.rb: async execution mode + tunable max_threads/poll_interval/queues
- database.yml: size prod/staging pool for Puma threads + GoodJob threads + listener
- Procfile: drop the now-redundant `worker` entry (documented how to re-enable)

good_jobs tables are created on deploy by the existing db:migrate step
(.ebextensions/02_migrations.config).
- Edit Notes button: btn-outline-secondary (California gold #FDB515 on
  white, 1.78:1) -> btn-outline-primary, which is already tuned for AA
  contrast in both light and dark themes.
- 'No notes yet.' placeholder: .text-muted inside a .bg-light box washed
  out in dark mode (1.16:1) because bg-light keeps a light surface while
  text-muted goes near-white. Pin .text-muted to a readable gray within
  the dark-theme .bg-light override (same pattern already used there for
  p/li/strong).

Verified: full a11y suite (spec/ --tag a11y) 40 examples, 0 failures.
@cycomachead cycomachead changed the title Preview sync: #390 async GoodJob sync onto main 2: #390 async GoodJob sync onto main Jul 16, 2026
Re-sync with main after #508 (student notes) merged. Brings in #506
(code-quality audit) and dependabot bumps. Clean auto-merge; schema
retains good_jobs tables + notes column. Full RSpec (594) + a11y (40)
green; RuboCop clean.
Re-sync with main after #509 (late days column) merged. Clean auto-merge;
schema retains good_jobs tables + notes column. Full RSpec (594) + a11y (40)
green; RuboCop clean.
@cycomachead cycomachead mentioned this pull request Jul 16, 2026
20 tasks
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.

3 participants