Commit Graph

268 Commits

Author SHA1 Message Date
Jordan Ritter 5cc3e04033 fix: debounce image drift alerts — only alert when stale set changes, not every 15min 2026-04-10 11:15:37 -07:00
Jordan Ritter e5b323902e fix: disable LFS in showcase drift detection checkout (fixes LFS fetch failures) 2026-04-10 11:13:35 -07:00
Jordan Ritter 49861ae3b4 ci: refactor showcase_deploy from 23 duplicate jobs to dynamic matrix
Replaced 23 identical build jobs with one parameterized matrix job.
1200 lines to ~250. Service config as JSON, matrix generated from
path-filter results. Shell special cases (LFS, build-args, custom
Dockerfile) handled via matrix properties and dedicated prep step.
2026-04-10 10:37:51 -07:00
Jordan Ritter d55870c499 ci: consolidate commitlint into static_quality, add auto-fix on PRs
Merged standalone commitlint into static_quality as 4th parallel job.
Upgraded all actions to v4, added concurrency group. Format job now
auto-fixes and commits back to same-repo PR branches. Commitlint
posts helpful PR comment with valid prefixes on failure.
2026-04-10 10:37:51 -07:00
Jordan Ritter 189e20424b ci: add concurrency groups to test workflows
Added cancel-in-progress concurrency to e2e_dojo, e2e_examples,
test_runtime-servers, and test_unit. Added pnpm cache to test_unit.
2026-04-10 10:37:51 -07:00
Jordan Ritter d3e0e2d8db ci: add path filters to publish-commit, upgrade actions and caching
publish-commit had no path/branch filters — fired on every push.
Restricted to packages/**, upgraded checkout to v4, added pnpm
cache and --frozen-lockfile to both publish workflows.
2026-04-10 10:37:50 -07:00
Jordan Ritter f5462915c3 ci: fix static_danger matrix bug, python-sdk concurrency and dep pin
- static_danger: removed undefined matrix.node-version, upgraded to
  v4, added concurrency and timeout
- python-sdk: added concurrency and timeout, pinned ag-ui-langgraph
  <0.0.32 (0.0.32 imports non-existent ImageInputContent from ag_ui.core)
2026-04-10 10:37:42 -07:00
Jordan Ritter 38d22f5b6f fix: skip drift check if main commit <20min old, fix literal newline in Slack message 2026-04-09 20:59:01 -07:00
Jordan Ritter 6f3b52f1ef fix: remove || true from E2E install, add DOCKER_CLI_EXPERIMENTAL for image drift 2026-04-09 20:02:44 -07:00
Jordan Ritter 1d725e04da fix: format shell-dojolike files and add binary check exclusion 2026-04-09 16:45:33 -07:00
Jordan Ritter ac698e03c2 feat: add Dockerfile and deploy pipeline for shell-dojolike 2026-04-09 16:43:01 -07:00
Jordan Ritter c4460d9610 feat: add image drift detection to showcase drift checks (#3732)
## Summary

Adds an image drift check to the 6-hourly drift detection workflow. For
each showcase service, compares the GHCR `:latest` image digest against
the image tagged with the current main HEAD SHA. If they don't match,
the service's image is stale (main has code that hasn't been
built/deployed).

Posts to #oss-alerts when stale images are detected:
```
📦 Image Drift Detected
⚠️ ms-agent-dotnet — GHCR image not built for current main
```

This catches the scenario where a merge to main changes showcase code
but the deploy workflow misses it due to timing/cancellation.
2026-04-09 16:09:02 -07:00
Jordan Ritter 3821e95b01 fix: guard redirect report to only run on schedule/dispatch (#3731)
Same fix as #3730 for the smoke monitor — push events trigger ghost runs
with no jobs. Stops the noisy GitHub notifications.
2026-04-09 16:06:54 -07:00
Jordan Ritter 5579cfd6aa feat: add image drift detection to showcase drift checks 2026-04-09 15:54:10 -07:00
Jordan Ritter 1622186728 revert: restore NPM_TOKEN auth in release workflow (changesets doesn't support OIDC) 2026-04-09 15:54:01 -07:00
Jordan Ritter 28ef0856fb ci: switch npm publish to OIDC trusted publishing (remove NPM_TOKEN) 2026-04-09 15:46:12 -07:00
Jordan Ritter 627009d3e1 fix(ci): remove empty with: block from showcase redirect-report workflow 2026-04-09 15:35:49 -07:00
Jordan Ritter 5ce8cd9a09 fix: guard redirect report to only run on schedule/dispatch 2026-04-09 15:30:21 -07:00
Jordan Ritter 93bca3d8ac fix: guard smoke monitor job to only run on schedule/dispatch, not push 2026-04-09 15:20:20 -07:00
Jordan Ritter 168297fbda feat: add Slack notifications for docs sync (auto-push and review PR) 2026-04-09 15:06:04 -07:00
Jordan Ritter 8ce19c5f6a fix: remove hardcoded pnpm version 9, use packageManager from package.json 2026-04-09 14:50:20 -07:00
Jordan Ritter a38a0747ab fix: add per-service smoke/health links to Slack alerts 2026-04-09 14:37:54 -07:00
Jordan Ritter 0e53a48c19 feat: add aimock proxy for showcase smoke checks 2026-04-09 13:53:58 -07:00
Tyler Slaton b3aa8ea18c Merge branch 'main' into claude/debug-github-actions-ehR2n 2026-04-09 13:22:39 -07:00
Jordan Ritter b97f03d111 fix(ci): use block scalar for jq in smoke-monitor workflow 2026-04-09 13:20:28 -07:00
Tyler Slaton 551f85db21 Merge branch 'main' into claude/debug-github-actions-ehR2n 2026-04-09 13:14:48 -07:00
Jordan Ritter 7eed375cfd fix(ci): use block scalar for jq command in showcase redirect workflow 2026-04-09 13:11:05 -07:00
Claude 27625a9afd fix(ci): write npm auth to correct config file for publish
The changesets/action@v1 writes auth to ~/.npmrc but
actions/setup-node sets NPM_CONFIG_USERCONFIG to a temp path,
causing pnpm to read a different .npmrc during publish. All packages
fail with E404 on PUT because the auth token isn't picked up.

This adds an explicit `npm config set` step that writes the literal
token to whichever file NPM_CONFIG_USERCONFIG points at.

https://claude.ai/code/session_01KnUcvcGEthP64SKk98HzJ6
2026-04-09 20:09:57 +00:00
Jordan Ritter a3a0cae762 fix: use toJSON for safe Slack payload escaping 2026-04-09 12:48:23 -07:00
Jordan Ritter edfc48585e fix: use GitHub API for blame context instead of deep clone (repo is 750MB) 2026-04-09 12:46:00 -07:00
Jordan Ritter 1fc8b00128 fix: use full clone for git log blame context on all triggers 2026-04-09 12:45:08 -07:00
Jordan Ritter 8194630f45 fix: move capture before teardown, fix fetch-depth, safe env injection 2026-04-09 12:43:50 -07:00
Jordan Ritter 78285f448a fix: remove duplicate GITHUB_OUTPUT redirect 2026-04-09 12:42:06 -07:00
Jordan Ritter 4c1b70ea7b feat: include blame context in failure alerts (PR author/commits or dep drift) 2026-04-09 12:37:04 -07:00
Jordan Ritter 9a377c7574 feat: include failure cause in Slack alerts and GitHub issues 2026-04-09 12:37:04 -07:00
Jordan Ritter 123a5d76f9 fix: switch Slack alerts to slackapi/slack-github-action, gate drift alerts to schedule-only 2026-04-09 12:24:34 -07:00
Jordan Ritter 74fc015dbf fix: remove GHCR login — public images should pull without auth 2026-04-09 09:18:52 -07:00
Jordan Ritter b8dc9ad843 fix: add packages:read permission for GHCR aimock image pull 2026-04-09 09:17:24 -07:00
Jordan Ritter ef55874072 fix: format files and add GHCR login to CI workflow 2026-04-09 09:16:05 -07:00
Jordan Ritter 7e7311bf21 ci: add workflow for starter smoke tests 2026-04-09 08:33:25 -07:00
Jordan Ritter 204dd29a97 fix: standardize health checks on /health port 8000 2026-04-08 21:22:35 -07:00
Jordan Ritter 6d05499ecd feat: add automated docs sync from main with transform pipeline 2026-04-08 19:59:31 -07:00
Jordan Ritter 31f046d0ac feat: add SEO redirect infrastructure with PostHog tracking 2026-04-08 19:59:30 -07:00
Jordan Ritter 5284614227 feat: add health monitoring with smoke endpoints, drift detection, and Slack alerts 2026-04-08 19:59:30 -07:00
Jordan Ritter 759ffeb29a feat: add animated preview GIFs with per-demo capture automation 2026-04-08 19:59:30 -07:00
Jordan Ritter 479e62cb7f feat: add unified showcase platform with CI, Docker starters, and 13 deployed integrations 2026-04-08 19:59:29 -07:00
Jordan Ritter bd119c29e1 fix(docs): update stale model names + add CI validation (#3666)
## Summary

Comprehensive docs quality infrastructure — model name validation,
executable doc tests, and 8 community docs fixes rolled up.

### Docs fixes (supersedes 8 PRs)
- **gpt-5.2 → gpt-5.4** across 70 files, 124 occurrences (supersedes
#3655)
- **Anthropic model IDs** dots → hyphens to match API/AI SDK format
(supersedes #3656)
- **LangGraph FastAPI quickstart** — missing `import uvicorn`, missing
`MemorySaver` checkpointer, `port` string→int (supersedes #3661, with
contributor's `langgrapg` typo fixed)
- **AG2 ContextVariables import** — moved from `autogen` to
`autogen.agentchat` per latest AG2 (supersedes #3658, verified via
Docker)
- **CrewAI Flows** — comment out deprecated CLI option (supersedes
#3667)
- **Pydantic quickstart** — pin Starlette 0.45.3 (1.0.0 is incompatible,
verified via Docker) (supersedes #3660)
- **CopilotChat example** — add missing `default` export for Next.js
page components (supersedes #3669)
- **globals.css import** — add to all 9 quickstart layout examples so
customization section works (supersedes #3665)

### Model name validation (new)
- `docs/model-allowlist.json` — maintained list of valid model names by
provider (OpenAI, Anthropic, Google, Cohere, Meta)
- `scripts/validate-doc-model-names.ts` — CI lint that extracts model
names from docs code blocks and validates against allowlist
- 20 tests

### Executable doc tests (new, Phase 1)
- `scripts/doc-tests/extract.ts` — remark + remark-mdx AST parser finds
`doctest`-tagged code blocks in MDX
- `scripts/doc-tests/run.ts` — execution harness: installs deps, points
at aimock, runs server/script/component snippets
- `.github/workflows/test_doc-examples.yml` — CI triggered on `docs/**`
changes (previously excluded from ALL CI)
- LangGraph FastAPI quickstart tagged as first `doctest="server"`
example
- 10 tests for extraction

### Spec
[Executable Doc Tests proposal on
Notion](https://www.notion.so/33c3aa38185281388a21e8dfe752ac5e)

## Supersedes
| PR | Fix | Status |
|----|-----|--------|
| #3655 | gpt-5.2-mini → gpt-5.4-mini | ✅ Included (all 70 files, not
just 22) |
| #3656 | Anthropic dots → hyphens | ✅ Included |
| #3658 | AG2 ContextVariables import | ✅ Included (verified via Docker)
|
| #3660 | Starlette pin | ✅ Included (verified via Docker) |
| #3661 | LangGraph FastAPI quickstart | ✅ Included (with typo fix) |
| #3665 | globals.css import | ✅ Included |
| #3667 | CrewAI deprecated CLI | ✅ Included |
| #3669 | CopilotChat default export | ✅ Included |

All 8 PRs can be closed when this merges.

## Test plan
- [x] Model name validator passes (0 violations)
- [x] 20 validator unit tests pass
- [x] 10 extraction unit tests pass
- [x] Build passes
- [x] Commitlint passes
- [ ] CI workflow validates doc examples on docs/** changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-08 19:53:11 -07:00
Jordan Ritter aabce2c548 chore: add remark/unified deps for doc test extraction 2026-04-08 19:46:15 -07:00
Jordan Ritter 84fb4c6c0a feat: executable doc tests — extract, run, and validate MDX code snippets
AST-based extraction (remark + remark-mdx) finds doctest-tagged code
blocks in MDX files. Execution harness runs them against aimock with
category-specific validation (server health-check, script exit code,
component type-check). CI workflow triggers on docs/** changes.

- stripCommonIndent for JSX-indented blocks
- validateDepName for shell injection prevention
- try/finally process cleanup on all spawn paths
- 10 extraction tests
2026-04-08 18:55:39 -07:00
Tyler Slaton 6637142c72 ci: remove prerelease auto-merge 2026-04-08 17:12:05 -07:00