wall-sync #80
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
| # Founders' Wall sync — rebuilds docs/wall-data.json from Razorpay truth. | |
| # Additions open a PR for founder review; refund/dispute removals commit directly. | |
| # Requires repo Actions secrets: RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET. | |
| name: wall-sync | |
| on: | |
| schedule: | |
| # HOURLY (was every 30 min). ONE CADENCE across the whole metrics stack — | |
| # the local dashboard runner is hourly too, and the two must not drift apart. | |
| # | |
| # :50 is chosen so this lands just BEFORE the dashboard's hourly pass at :07, | |
| # not after it. The dashboard reports wall_published / wall_pending by | |
| # comparing Razorpay truth against the published wall, so it should read a | |
| # wall that was reconciled minutes ago rather than most of an hour ago. | |
| # Off :00 on purpose: GitHub's scheduled-workflow queue is busiest there and | |
| # starts get delayed most. | |
| # | |
| # Additions still wait on a review PR, so wall_pending legitimately stays | |
| # non-zero until the founder merges — that is the gate working, not drift. | |
| - cron: "50 * * * *" | |
| workflow_dispatch: {} | |
| concurrency: | |
| group: wall-sync | |
| cancel-in-progress: false | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| sync: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Sync wall from Razorpay | |
| env: | |
| RAZORPAY_KEY_ID: ${{ secrets.RAZORPAY_KEY_ID }} | |
| RAZORPAY_KEY_SECRET: ${{ secrets.RAZORPAY_KEY_SECRET }} | |
| GH_TOKEN: ${{ github.token }} | |
| run: node scripts/wall-sync.mjs |