feat: fold Google Analytics into the CEO digest (ceo_read_ga) [depends on #329] #330

Closed
opened 2026-07-03 05:41:04 +00:00 by igor · 0 comments
Collaborator

Goal

Fold Google Analytics into the CEO board digest, alongside the existing GSC scoreboard.
The GA client (lib/ga.sh) + the SEO-side fold-in landed in #331 (now on master); this is the
CEO side.

Work (lib/ceo.sh)

  • Add ceo_read_ga <repo> — sibling to ceo_read_gsc — resolving the repo's domain the same way
    (ga_property_for_domain from lib/ga.sh), emitting an "Analytics — on-site behavior" markdown
    section (sessions / engagement / conversions vs the prior window).
  • Wire it into the digest assembly right after the GSC scoreboard.
  • Same graceful degradation as ceo_read_gsc: not-configured / no-property / token-fail → note
    it, do NOT guess.

Tests — REQUIRED

  • Extend bin/test-ceo.sh with a ceo_read_ga block mirroring the ceo_read_gsc block (fixture
    JSON, present + degraded paths). bash bin/check-sync.sh green.

Constraints

  • set -euo pipefail; 2-space; no new env knobs; don't touch agent-settings.json / systemd/
    / .forgejo/workflows/.
  • Turn budget: 50 turns, and the harness commits only on a clean exit — build, verify once,
    stop. Run scripts as bash bin/x.sh (no > redirects, no &&/; compounds, no ./relative
    exec — they trip the permission profile and waste turns).

Ready to build

lib/ga.sh is on master as of #331 (merged) — ga_property_for_domain and ga_run_report are
available to source/mirror, exactly as ceo_read_gsc uses lib/gsc.sh. No blockers.

<!-- agent:enqueue --> ## Goal Fold **Google Analytics** into the CEO board digest, alongside the existing GSC scoreboard. The GA client (`lib/ga.sh`) + the SEO-side fold-in landed in #331 (now on master); this is the CEO side. ## Work (`lib/ceo.sh`) - Add `ceo_read_ga <repo>` — sibling to `ceo_read_gsc` — resolving the repo's domain the same way (`ga_property_for_domain` from `lib/ga.sh`), emitting an "Analytics — on-site behavior" markdown section (sessions / engagement / conversions vs the prior window). - Wire it into the digest assembly right after the GSC scoreboard. - Same graceful degradation as `ceo_read_gsc`: not-configured / no-property / token-fail → note it, do NOT guess. ## Tests — REQUIRED - Extend `bin/test-ceo.sh` with a `ceo_read_ga` block mirroring the `ceo_read_gsc` block (fixture JSON, present + degraded paths). `bash bin/check-sync.sh` green. ## Constraints - `set -euo pipefail`; 2-space; no new env knobs; don't touch `agent-settings.json` / `systemd/` / `.forgejo/workflows/`. - **Turn budget:** 50 turns, and the harness commits only on a clean exit — build, verify once, stop. Run scripts as `bash bin/x.sh` (no `>` redirects, no `&&`/`;` compounds, no `./relative` exec — they trip the permission profile and waste turns). ## Ready to build `lib/ga.sh` is on master as of #331 (merged) — `ga_property_for_domain` and `ga_run_report` are available to source/mirror, exactly as `ceo_read_gsc` uses `lib/gsc.sh`. No blockers.
igor self-assigned this 2026-07-04 01:37:29 +00:00
igor added spent time 2026-07-04 01:42:26 +00:00
4 minutes 38 seconds
igor removed their assignment 2026-07-04 01:42:27 +00:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Total time spent: 4 minutes 38 seconds
igor
4 minutes 38 seconds
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joshtronic/igor#330
No description provided.