ci: execution-based test gate for all sample apps (PIN-57)#80
Open
jhamon wants to merge 1 commit into
Open
Conversation
Establishes the reusable build+drive test gate for this repo (PIN-57): every
app is compiled and then driven while running, with Pinecone mocked or gated
by a dummy key so CI needs no live Pinecone connection (per AGENTS.md).
- .github/workflows/ci.yml: one job per app —
legal-semantic-search, namespace-notes/{client,server},
pinecone-assistant, shop-the-look/{web,api}.
Each builds (next build / tsc / pip) then runs a per-app smoke check.
- scripts/ci/smoke_http.sh: reusable boot-and-poll HTTP smoke helper.
- shop-the-look/tests/test_smoke.py + requirements-dev.txt: FastAPI boots
under pytest with pinecone.Pinecone mocked; asserts the root route serves.
- TESTING.md: documents the pattern, the manual "run against real Pinecone"
path, and the PIN-50-blocked live CI lane.
- namespace-notes/package.json: fix install:server/start:server paths
(server/node -> server) so the documented commands actually run.
Live validation against real Pinecone is intentionally deferred to a
secret-gated job, blocked on PIN-50 (PINECONE_API_KEY, owner jhamon@pinecone.io).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Establishes the reusable execution-based test gate for this repo (PIN-57, DevRel First Assignment #2). Every sample app is now built and then driven while running, wired into GitHub Actions CI. Pinecone is mocked or gated with a dummy key — CI needs no live Pinecone connection and no real API key (per
AGENTS.md).Before this PR,
sample-appshad zero tests and no CI — the highest-traffic in-scope repo with no check at all (per the DevRel OSS inventory, PIN-52).The gate (
.github/workflows/ci.yml)One job per app, in parallel. Each builds (compile + typecheck) then runs a per-app smoke/behavior check:
legal-semantic-searchnext buildnext start, expect HTTP 200 on/namespace-notes/clientnext buildnext start, expect HTTP 200 on/namespace-notes/servertscnode dist/index.js, expect any HTTP response (alive + routing; handler 500s because Pinecone is gated)pinecone-assistantnext build(pnpm)next start, expect HTTP 200 on/shop-the-look/webnext buildnext start, expect HTTP 200 on/shop-the-look/apipytestboots FastAPI withpinecone.Pineconemocked; asserts root route servesAll six were verified green locally before pushing (builds + smokes + pytest).
Pinecone mocked / gated (AGENTS.md)
PINECONE_API_KEY=pclocal-ci-dummy-key(client only needs a non-empty string to construct; homepage smokes never make a live call).pinecone.Pineconemocked + dummy env inshop-the-look/tests/test_smoke.py.Reusable pieces
scripts/ci/smoke_http.sh— boot-and-poll HTTP smoke helper (<url> <200|any> -- <cmd>), reusable across example repos.TESTING.md— documents the pattern, the manual run-against-real-Pinecone path, and the PIN-50-blocked live lane.Also fixed
namespace-notes/package.json:install:server/start:serverpointed atserver/node(doesn't exist) ->server, so the documented commands actually run.Out of scope / follow-ups
PINECONE_API_KEYsecret): deliberately deferred, blocked on PIN-50 (owner jhamon@pinecone.io).^4.1.0/^2.1.0, Pythonpinecone-client==4.1.0). This PR keeps them as-is and only proves they still build/run; upgrades are First Assignment Add Legal Semantic Search sample app #3.🤖 Generated with Claude Code