| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Master plan + verified inventories in specs/pegasus-removal/;
13 OpenSpec changes in 5 dependency tiers:
tier 1: dead-code-sweep, core-ext-extraction, cron-detach,
shared-resources-port, poste-dead-links
tier 2: db-hoc, db-poste, db-properties, db-forms-drop
tier 3: db-retire
tier 4: directory-removal
tier 5: marketing-rename, gem-final-sweep (needs sinatra-port series)
Also archives remove-pegasus-dead-data (landed upstream as #73597).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… measured, manual-task stops) - dead-code-sweep: production-pegasus ELB verified absent (read-only AWS check; zero classic ELBs remain) — deregister_frontends_internal deletes whole if caller-free - shared-resources-port: SassC vs Ruby Sass measured on all 19 scss: 12 identical, 6 whitespace-only, hamburger.scss selector-order only (semantically equal) — visual parity proven, task becomes regression check - poste-dead-links: List-Unsubscribe header drop explicitly approved - db-hoc/db-poste/db-forms-drop/db-retire/marketing-rename: data-team and chef-globals gates reworded as MANUAL TASK hard stops for implementing agents Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Manual-task stop semantics, cross-series conflict ordering, local environment prerequisites, line-drift handling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Close the gaps a weaker implementing model would fall into: - test_helper.rb globally disables forgery protection, so CSRF-rejection tests silently test nothing; foundation now ships a with-forgery- protection block helper and every phase's tasks require it. - assert_lms_landing_policy rides the same before_action as handle_cap_lockout and is another redirect-on-API hazard; skip it on the shared base (same preserve-the-bypass rationale as CAP). - sources-public/files-public 'no Set-Cookie' scenarios contradicted strict parity: legacy get_file resolves get_storage_id which writes the storage-id cookie for cookieless anonymous requesters; scenarios now scoped to the Rails session cookie. - Routing gotchas spelled out per phase: format: false on filename segments (Rails eats .json/.png as formats), glob segments for slash-bearing curated-library names, literal '*' delete-all handling, netsim @min_id parsing, codeprojects Sinatra-pass semantics via routes constraints lambdas. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All 31 tasks are done and shipped as a six-PR stack on staging (#74753-#74758, stack #74759; supersedes draft #74751). The implementation notes record the scope extensions found during verification: two k8s suppliers of pegasus_honeybadger_api_key, the dockerignore generated from aws/.gitignore, one co-deleted orphan, and the finding that the whole ServerTools class is dead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…C template Two files with a deploy surface still reference pegasus. cookbooks/cdo-apps/templates/default/crontab.erb defines a pegasus_dir helper that no cron entry in the template calls. Delete the definition. The template renders on chef converge; a local render under seven node/env combinations produces identical cron entries with no pegasus reference. aws/cloudformation/vpc.yml.erb carries three "Pegasus Puma" ingress/egress rules for port 9001. Nothing listens on 9001; no nginx or puma config binds it, and pegasus_port has no configured value. Delete the three rules. This edit is inert until the next VPC stack update; the rendered template still parses, and all three security groups keep their remaining rules (ports 22, 80, 443, 9000). Part 6/6 of the pegasus dead-code sweep (openspec change pegasus-dead-code-sweep, plan in #73702). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…4754) Four library files and one Rails view survived the pegasus server removal with zero callers. lib/cdo/languages.rb defines an abstract class with no subclass and no callsite; every method raises on call. lib/cdo/pegasus/actionview_sinatra.rb is referenced only by its own test. lib/cdo/pegasus/screencap.rb and screencap.js have no callers and no build-pipeline reference. The view api/terms_interstitial_for_pegasus.html.haml has no route, no action, and no render site; its consumer was removed in 300a327. Delete the five files, the actionview_sinatra test, and the two require sites: the stale require 'cdo/languages' in dashboard/app/helpers/levels_helper.rb and the screencap require in lib/cdo/pegasus.rb. The other requires in lib/cdo/pegasus.rb stay; live cron scripts load them. Verified: rails boots, the lib/ suite passes (736 tests), and levels_helper_test passes (82 tests). Part 2/6 of the pegasus dead-code sweep (openspec change pegasus-dead-code-sweep, plan in #73702). Co-authored-by: Stephen Liang <538214+stephenliang@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…C template Two files with a deploy surface still reference pegasus. cookbooks/cdo-apps/templates/default/crontab.erb defines a pegasus_dir helper that no cron entry in the template calls. Delete the definition. The template renders on chef converge; a local render under seven node/env combinations produces identical cron entries with no pegasus reference. aws/cloudformation/vpc.yml.erb carries three "Pegasus Puma" ingress/egress rules for port 9001. Nothing listens on 9001; no nginx or puma config binds it, and pegasus_port has no configured value. Delete the three rules. This edit is inert until the next VPC stack update; the rendered template still parses, and all three security groups keep their remaining rules (ports 22, 80, 443, 9000). Part 6/6 of the pegasus dead-code sweep (openspec change pegasus-dead-code-sweep, plan in #73702). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…C template Two files with a deploy surface still reference pegasus. cookbooks/cdo-apps/templates/default/crontab.erb defines a pegasus_dir helper that no cron entry in the template calls. Delete the definition. The template renders on chef converge; a local render under seven node/env combinations produces identical cron entries with no pegasus reference. aws/cloudformation/vpc.yml.erb carries three "Pegasus Puma" ingress/egress rules for port 9001. Nothing listens on 9001; no nginx or puma config binds it, and pegasus_port has no configured value. Delete the three rules. This edit is inert until the next VPC stack update; the rendered template still parses, and all three security groups keep their remaining rules (ports 22, 80, 443, 9000). Part 6/6 of the pegasus dead-code sweep (openspec change pegasus-dead-code-sweep, plan in #73702). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Planning-only PR: OpenSpec artifacts for the full removal of the Pegasus subsystem — the pegasus/ directory, the lib/cdo/pegasus/ library tree, the pegasus MySQL schema, the last Sinatra app in the Rack stack (SharedResources), and the gems/infra wiring that exist only to serve them. No application code changes in this PR.
The master plan and three verified inventories live in specs/pegasus-removal/ (force-added; specs/ and openspec/ are normally git-excluded). Thirteen OpenSpec changes in five dependency tiers, all passing openspec validate:
Load-bearing findings baked into the plan: the pegasus "database" is a sibling schema on the same Aurora cluster, so table moves are atomic RENAME TABLE + updatable compatibility views (precedent: the channels move_user_storage_ids_to_dashboard.rb oneoff); Poste is the production ActionMailer delivery method and moves under its per-minute drain cron; String#to_bool and Object#nil_or_empty? are live monkeypatches whose only definitions sit in pegasus files loaded via fragile require chains; SharedResources (the sixth Sinatra app, which the sinatra-port series deliberately keeps) still compiles SCSS at request time with dead Ruby Sass into pegasus/cache/.
Gates already resolved during planning: List-Unsubscribe/X-Unsubscribe-Web headers pointing at the dead /u/ URL will be dropped (product-approved; all Poste mail is transactional); the production-pegasus ELB is verified gone (read-only AWS check — zero classic ELBs remain, so deregister_frontends_internal is dead whole); SassC vs Ruby Sass output was measured on all 19 shared SCSS files (12 identical, 6 whitespace-only, 1 selector-order-only — visual parity proven, no pinning needed).
Remaining gates are written into the task lists as MANUAL TASK hard stops for implementing agents: data-team sign-offs on DMS/Redshift relocation (db-hoc, db-poste, db-forms-drop), the chef-globals sweep before any marketing-rename work, and all ops runbooks (renames, view drops, schema drops). The sequel/mysql2 gems stay (DASHBOARD_DB consumers); pegasus_read_replica is a misnamed Gatekeeper flag gating read-splitting for all pools and is never removed.
Stacked on #73697 (sinatra-port plan) — pegasus-gem-final-sweep depends on that series completing.
Links
Testing story
Planning documents only. All 13 changes pass openspec validate. Two claims were verified empirically during planning: read-only AWS ELB check and a Ruby Sass/SassC compile diff across all 19 shared/css/*.scss files.
🤖 Generated with Claude Code