philipgreat's picture
feat: explain seven TeaQL runtimes (part 2)
0ccd578 verified
Raw History Blame Contribute Delete
5.35 kB
#!/usr/bin/env bash
set -euo pipefail
repo="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# file: dependencies resolve the package's dist entry points, not TypeScript source.
# Rebuild here so examples can never silently validate stale checked-in output.
(cd "$repo" && npm run build)
bash "$repo/examples/object-storage/verify.sh"
(cd "$repo" && npm test -- --runInBand tests/sql-relation-membership.test.ts)
mkdir -p "$repo/.local"
expected=(browser-sqlite conformance ensure-schema-bootstrap facet-trace object-storage order-management school-management task-board trace-chain)
mapfile -t actual < <(find "$repo/examples" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort)
if [[ "${actual[*]}" != "${expected[*]}" ]]; then
echo "example inventory changed; update scripts/verify-examples.sh: ${actual[*]}" >&2
exit 1
fi
if rg -n --glob '*.ts' --glob '!**/node_modules/**' --glob '!**/dist/**' \
'\b(executeForPage|ExecuteForPage|execute_for_page)\b' "$repo/examples"; then
echo 'FAIL: an example still exposes or calls a retired page terminal; regenerate its library' >&2
exit 1
fi
for example in conformance ensure-schema-bootstrap school-management; do
(
cd "$repo/examples/$example"
npm install
npm run build
if [[ "$example" == school-management ]]; then
npx ts-node app.ts
else
npm start
fi
)
done
(cd "$repo/examples/order-management" && npm install && npm run build && npm start)
(cd "$repo/examples/task-board" && npm install && npm run build)
(cd "$repo/examples/browser-sqlite" && npm install && npm run build && npm run smoke && npm run smoke:orders)
(
cd "$repo/examples/trace-chain"
npm install
npm run build
for attempt in 1 2; do
graph_log="$(mktemp -t teaql-ts-graph.XXXXXX.log)"
npm start | tee "$graph_log"
rg -Fxq 'PASS TypeScript graph identity controls: duplicate, missing and equal-ID type collapse rejected' "$graph_log"
rg -Fq 'GRAPH IDENTITY EVIDENCE ' "$graph_log"
rg -Fxq 'PASS TypeScript generated trace-chain example: 7 checks' "$graph_log"
[[ "$(rg -c '^PRIVATE_LINEAGE_OBSERVED ' "$graph_log")" == 8 ]]
[[ "$(rg -c '^PASS TypeScript complete private lineage:' "$graph_log")" == 8 ]]
done
env -u TEAQL_TELEMETRY_ENABLED -u TEAQL_TELEMETRY_SERVICE_NAME -u TEAQL_TELEMETRY_OTLP_ENDPOINT npm run test:standard-telemetry
env -u TEAQL_TELEMETRY_ENABLED -u TEAQL_TELEMETRY_SERVICE_NAME -u TEAQL_TELEMETRY_OTLP_ENDPOINT npm run test:standard-telemetry
env -u TEAQL_TELEMETRY_ENABLED -u TEAQL_TELEMETRY_SERVICE_NAME -u TEAQL_TELEMETRY_OTLP_ENDPOINT npm run test:standard-telemetry-graph
env -u TEAQL_TELEMETRY_ENABLED -u TEAQL_TELEMETRY_SERVICE_NAME -u TEAQL_TELEMETRY_OTLP_ENDPOINT npm run test:standard-telemetry-graph
response_directory="$(mktemp -d -t teaql-ts-response-example.XXXXXXXX)"
for attempt in 1 2; do
response_log="$response_directory/round-$attempt.log"
env -u TEAQL_TELEMETRY_ENABLED -u TEAQL_TELEMETRY_SERVICE_NAME -u TEAQL_TELEMETRY_OTLP_ENDPOINT \
TEAQL_STANDARD_RESPONSE_DB="$response_directory/graphs.sqlite" \
node node_modules/ts-node/dist/bin.js standard-export-responses.ts | tee "$response_log"
rg -Fxq 'PASS TypeScript standard response graph: create, rollback, retry, update, delete, Q/E, committed audit' "$response_log"
rg -Fq "\"firstSeedAudits\":$((2-attempt)),\"repeatSeedAudits\":0" "$response_log"
done
env -u TEAQL_TRACE_CHAIN_SCENARIO npm run test:shared-reference
env -u TEAQL_TRACE_CHAIN_SCENARIO npm run test:shared-reference
npm run test:page
npm run test:page
npm run test:stream-capture
npm run test:stream-capture
)
for attempt in 1 2; do
aggregate_log="$(mktemp -t teaql-ts-aggregate.XXXXXX.log)"
(cd "$repo/examples/trace-chain" && npm run test:relation-aggregate) | tee "$aggregate_log"
rg -Fq 'FORWARD_NOTLOADED_OBSERVED {"logging":true' "$aggregate_log"
rg -Fq 'FORWARD_NOTLOADED_OBSERVED {"logging":false' "$aggregate_log"
done
bash "$repo/scripts/verify-current-aggregate.sh"
for attempt in 1 2; do
checker_log="$(mktemp -t teaql-ts-checker.XXXXXX.log)"
TEAQL_TRACE_CHAIN_CHECKER_RUN="verify-examples-$attempt" \
bash "$repo/scripts/run-checker-overlap.sh" "$checker_log"
done
for attempt in 1 2; do
plan_log="$(mktemp -t teaql-ts-plan-items.XXXXXX.log)"
(cd "$repo/examples/trace-chain" && timeout --kill-after=5s 90s npm run test:plan-item-lineage) | tee "$plan_log"
rg -Fxq 'PASS TypeScript generated plan item lineage: 4 scenarios; one plan, ordered same-type items, sibling privacy, independent next request' "$plan_log"
done
bash "$repo/examples/facet-trace/verify.sh"
bootstrap_directory="$(mktemp -d -t teaql-ts-bootstrap.XXXXXXXX)"
for attempt in 1 2; do
bootstrap_log="$bootstrap_directory/round-$attempt.log"
(cd "$repo/examples/trace-chain" && TEAQL_TRACE_CHAIN_BOOTSTRAP_DB="$bootstrap_directory/bootstrap.sqlite" \
timeout --kill-after=5s 90s npm run test:bootstrap-intent) | tee "$bootstrap_log"
rg -Fxq 'PASS TypeScript generated bootstrap intent: logging off/on, committed audit, repeat no writes, unchanged generated library' "$bootstrap_log"
for logging in false true; do
rg -Fq "\"path\":\"generated default bootstrap\",\"logging\":$logging,\"firstWrites\":$((2-attempt)),\"repeatWrites\":0" "$bootstrap_log"
done
done
echo "PASS: all TypeScript examples"