Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
65 changes: 65 additions & 0 deletions .agents/skills/docs-product/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
name: docs-product
description: Public docs product workflow for src/docs Fumadocs/Next content, generated route metadata, SDK matrices, API references, tested snippets, release docs gates, and llms.txt/llms-full.txt output. Use when editing src/docs, public docs content, docs-manifest.toml, docs generation scripts, API reference generation, or LLM docs output.
---

# Docs Product

## Workflow

1. Identify the docs surface:
- public content: `src/docs/content/`
- route/source manifest: `src/docs/docs-manifest.toml`
- generated docs logic: `src/docs/tools/generate-content.mjs`
- docs policy checks: `src/docs/tools/check-docs-product.mjs`
- Next/Fumadocs app: `src/docs/src/`
- static/LLM output: generated under `target/docs/`
2. Keep public product docs in `src/docs/content`. Root `docs/` is maintainer,
architecture, and internal source material.
3. Treat `llms.txt` and `llms-full.txt` as generated docs artifacts, not hand
edited source files.
4. Verify content claims against product source, release metadata, generated
SDK metadata, and tests; maintainer docs may lag.

## Commands

```sh
moon run docs:check
moon run docs:test
moon run docs:build
moon run docs:smoke
moon run docs:release-check
pnpm --dir src/docs run generate
pnpm --dir src/docs run check
pnpm --dir src/docs run test
pnpm --dir src/docs run build
pnpm --dir src/docs run smoke
```

Use `pnpm --dir src/docs run api-reference:check` when API reference output is
part of the change.

## Validation Rules

- `check` runs docs generation, Fumadocs source checks, Next typegen, and
TypeScript checks.
- `test` validates tested snippets and source-backed docs contracts.
- `build` exports the public site to `target/docs/build`.
- `smoke` validates built-site outputs, including `llms.txt` and
`llms-full.txt`.
- `release-check` validates release-readiness docs gates.

## Edit Checklist

- Update `docs-manifest.toml` when adding/removing routes or required SDK pages.
- Keep SDK quickstart snippets source-backed through the manifest's
`tested_snippet_path` and marker fields.
- Keep generated navigation, route metadata, SDK matrices, extension catalog,
version matrix, and API-reference pages generated through docs tools.
- Do not expose monorepo source paths in public docs chrome.
- Do not commit `target/docs` output unless a future policy explicitly changes.

## Evidence To Report

Report docs routes touched, manifest changes, generated outputs affected,
snippet/API-reference evidence, and docs commands run.
72 changes: 72 additions & 0 deletions .agents/skills/extension-artifact/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
name: extension-artifact
description: Exact SQL extension workflow for Oliphaunt extension catalog metadata, contrib/external source pins, recipes, generated SDK/docs/mobile/WASIX metadata, native and WASIX extension artifacts, mobile static registry, release products, and evidence tables. Use when adding, promoting, packaging, or changing extension support.
---

# Extension Artifact

## Workflow

1. Identify the extension class:
- PostgreSQL contrib: `src/extensions/contrib/`
- external source-pinned extension: `src/extensions/external/<name>/`
- generated catalog or SDK metadata: `src/extensions/generated/`
- artifact build/package path: `src/extensions/artifacts/`
2. Preserve exact names:
- internal extension IDs are snake_case;
- SQL extension names are exact PostgreSQL names;
- release products use `oliphaunt-extension-*`.
3. Update metadata across catalog, generated SDK/docs/mobile/WASIX outputs,
release metadata, and evidence together.
4. Run static model checks before artifact build paths.

## Commands

```sh
moon run extensions:check
moon run extension-model:check
moon run extension-artifacts-native:check
moon run extension-artifacts-wasix:check
python3 src/extensions/tools/check-extension-model.py --check
tools/release/release.py check
```

Use artifact builders only when native/WASIX release assets are required:

```sh
moon run extension-artifacts-native:release-check
moon run extension-packages:assemble-release
```

## Metadata Checklist

- `src/extensions/catalog/extensions.promoted.toml`
- `src/extensions/catalog/extensions.smoke.toml`
- `src/extensions/contrib/postgres18.toml`
- `src/extensions/external/<name>/source.toml`
- `src/extensions/external/<name>/recipe.toml` when external build logic exists
- `src/extensions/generated/extensions.catalog.json`
- `src/extensions/generated/extensions.build-plan.json`
- `src/extensions/generated/sdk/*.json`
- `src/extensions/generated/docs/*.json`
- `src/extensions/generated/mobile/*`
- `src/extensions/generated/wasix/extensions.json`
- affected SDK generated source files
- affected product `release.toml`
- `release-please-config.json` for new release products

## Decision Rules

- Do not add aliases, bundles, or extension packs.
- Do not mark an extension mobile-release-ready unless native artifacts,
generated static registry metadata, package checks, and platform evidence
agree.
- Keep dependency expansion exact for selected extensions, shared preload
libraries, runtime share data files, and native module stems.
- Treat generated metadata as policy output: regenerate intentionally and review
the diff.

## Evidence To Report

Report exact SQL extension names, generated files changed, artifact targets
affected, release products affected, support/evidence changes, and checks run.
58 changes: 58 additions & 0 deletions .agents/skills/mobile-smoke/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
name: mobile-smoke
description: React Native mobile smoke and E2E workflow for the Expo development-client harness, Android/iOS native artifacts, Metro with EXPO_UNSTABLE_MCP_SERVER, Maestro flows, emulator/simulator triage, and installed-app validation. Use when touching src/sdks/react-native mobile runners, Expo example, Android/iOS adapter code, or mobile CI.
---

# Mobile Smoke

## Workflow

1. Identify the changed surface:
- package/API: `src/sdks/react-native/src/`
- Codegen spec: `src/sdks/react-native/src/specs/NativeOliphaunt.ts`
- Android adapter: `src/sdks/react-native/android/`
- iOS adapter: `src/sdks/react-native/ios/`
- Expo harness: `src/sdks/react-native/examples/expo/`
- mobile runner scripts: `src/sdks/react-native/tools/`
2. Keep React Native as adapter glue over Swift/Kotlin SDKs. Do not duplicate
runtime lifecycle or native artifact packaging in React Native.
3. Keep the Expo example on development-client, not Expo Go.
4. Keep generated app projects and build output untracked.

## Commands

```sh
moon run oliphaunt-react-native:check
moon run oliphaunt-react-native:test
moon run oliphaunt-react-native:package
moon run oliphaunt-react-native:build-android-bridge
moon run oliphaunt-react-native:build-ios-bridge
moon run oliphaunt-react-native:smoke-android --cache off
moon run oliphaunt-react-native:smoke-ios --cache off
moon run oliphaunt-react-native:smoke-mobile --cache off
pnpm --dir src/sdks/react-native/examples/expo run smoke:android
pnpm --dir src/sdks/react-native/examples/expo run smoke:ios
```

Android bridge/smoke paths require Android SDK/NDK. iOS bridge/smoke paths
require macOS with Xcode/CoreSimulator unless running build-only modes.

## Triage Rules

- If Metro/dev-server behavior changes, verify scripts keep
`EXPO_UNSTABLE_MCP_SERVER=1 expo start --dev-client`.
- If installed-app smoke fails, inspect artifact materialization, generated
native project setup, Metro startup, device/simulator availability, and
Maestro logs before changing provider/tooling decisions.
- If Android packaging changes, inspect Kotlin SDK dependency resolution and
generated asset manifests.
- If iOS packaging changes, inspect Swift SDK dependency resolution and reject
macOS dylibs in iOS paths.
- If binary transport changes, reject base64/Buffer paths and keep byte
transport in JSI ArrayBuffer code.

## Evidence To Report

Report platform, host prerequisites, native artifact source, whether generated
Expo projects were reused or regenerated, Metro/MCP mode, and exact smoke/E2E
commands run.
56 changes: 56 additions & 0 deletions .agents/skills/native-track/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
name: native-track
description: Native liboliphaunt workflow for C ABI, PostgreSQL 18 patches, native runtime targets, native extension matrix, and SDK parity validation. Use when changing src/runtimes/liboliphaunt/native, native target metadata, native runtime env vars, native performance harnesses, or SDK behavior that depends on the native runtime.
---

# Native Track

## Workflow

1. Identify the touched layer:
- C ABI/header: `src/runtimes/liboliphaunt/native/include/oliphaunt.h`
- C runtime implementation: `src/runtimes/liboliphaunt/native/src/`
- PostgreSQL patch stack: `src/runtimes/liboliphaunt/native/patches/postgresql-18.4/`
- platform build scripts: `src/runtimes/liboliphaunt/native/bin/`
- target metadata: `src/runtimes/liboliphaunt/native/targets/*.toml`
- Rust consumer/runtime bridge: `src/sdks/rust/src/runtimes/liboliphaunt/native/`
2. Verify current behavior from `src/runtimes/liboliphaunt/native/moon.yml`,
`src/runtimes/liboliphaunt/native/tools/check-track.sh`, and
`tools/runtime/preflight.sh`.
3. Keep native and WASIX lanes separate. Do not solve native SDK problems by
depending on `oliphaunt-wasix`, WASIX AOT crates, or Wasmer runtime packages.
4. Prefer the smallest runtime lane that proves the change. Avoid broad rebuilds
until static and targeted checks pass.

## Commands

```sh
moon run liboliphaunt-native:check
OLIPHAUNT_TRACK_BUILD=never moon run liboliphaunt-native:test
moon run liboliphaunt-native:smoke
src/runtimes/liboliphaunt/native/tools/check-track.sh quick
src/runtimes/liboliphaunt/native/tools/check-track.sh rust
src/runtimes/liboliphaunt/native/tools/check-track.sh sdks
src/runtimes/liboliphaunt/native/tools/check-track.sh extensions
tools/perf/check-native-perf-harness.sh
tools/release/release.py check
```

`OLIPHAUNT_TRACK_BUILD=never` fails when artifacts are missing or stale.
`missing` builds absent/stale artifacts. `always` is for deliberate rebuilds.

## Decision Rules

- For patch-stack/source metadata changes, start with `liboliphaunt-native:check`.
- For ABI changes, update consumer bindings and run a host smoke path.
- For extension artifact changes, use `check-track.sh extensions` only after
static model and artifact metadata checks pass.
- For SDK parity changes, run `check-track.sh sdks` or targeted SDK tasks.
- For target matrix changes, inspect `targets/*.toml`,
`tools/release/artifact_targets.py`, `tools/release/check_artifact_targets.py`,
and CI matrix planner behavior.

## Evidence To Report

Report which layer changed, which runtime build policy was used, whether the
runtime was reused or rebuilt, and which Moon/script checks were run or skipped.
64 changes: 64 additions & 0 deletions .agents/skills/release-readiness/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: release-readiness
description: Release readiness workflow for Oliphaunt product releases, release-please metadata, product-local release.toml files, target matrices, package-shape checks, staged artifacts, registry checks, publish dry-runs, and verify-release. Use for release-sensitive changes or before merging product-surface changes.
---

# Release Readiness

## Workflow

1. Determine whether the change is release-affecting:
- product source, public API, package metadata, target metadata, runtime
artifacts, exact-extension artifacts, or SDK-visible generated metadata
usually is release-affecting;
- maintainer docs, tests, examples, CI policy, fixtures, and benchmark plans
are not release-affecting unless they change product-owned package source.
2. Inspect release identity from:
- `release-please-config.json`
- `.release-please-manifest.json`
- affected product `release.toml`
- affected product `moon.yml`
- product-local `targets/*.toml` when artifacts are involved
3. Use `tools/release/release.py plan` to reason about product impact.
4. Validate metadata before package/artifact dry-runs.

## Commands

```sh
tools/release/release.py plan
tools/release/release.py check
tools/release/release.py consumer-shape --format markdown
tools/release/release.py check-registries
tools/release/release.py publish-dry-run
tools/release/release.py verify-release
moon run release-tools:check
moon run repo:release-check
```

Use `--products-json` and `--head-ref` to reproduce workflow-selected product
sets. Do not publish locally unless explicitly asked and the protected release
environment is intentional.

## Release Metadata Rules

- Keep release-please components and Moon release-product components identical.
- Keep product-local `release.toml` IDs equal to product IDs.
- Keep artifact targets product-local under `targets/*.toml`.
- Keep package-native publication native: Cargo, npm, JSR, SwiftPM assets,
Gradle/Vanniktech, and GitHub Releases.
- Do not edit versions or changelogs directly for ordinary feature/fix work.

## Validation Choices

- Metadata-only release change: `release.py check`.
- Product selection concern: `release.py plan`.
- Consumer install/package shape concern: `release.py consumer-shape --format markdown`.
- Registry state concern: `release.py check-registries`.
- Staged artifact concern: run the relevant package/artifact check after CI
artifacts exist under `target/**`.
- Final post-publish evidence: `release.py verify-release`.

## Evidence To Report

Report selected products, release-affecting rationale, changed metadata files,
staged artifact assumptions, and the exact checks run.
22 changes: 22 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[profile.default]
retries = 0
fail-fast = false

[profile.ci]
retries = 0
fail-fast = false
status-level = "fail"
final-status-level = "slow"

[profile.ci.junit]
path = "junit.xml"

[profile.slow]
retries = 0
fail-fast = false
slow-timeout = { period = "120s", terminate-after = 2 }

[profile.release]
retries = 0
fail-fast = false
slow-timeout = { period = "300s", terminate-after = 2 }
4 changes: 3 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
spikes/wasix-postgres-build/patches/*.patch whitespace=-blank-at-eol,-space-before-tab
*.patch text eol=lf whitespace=-blank-at-eol,-space-before-tab
*.diff text eol=lf whitespace=-blank-at-eol,-space-before-tab
src/**/patches/series text eol=lf
24 changes: 20 additions & 4 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
name: Bug report
description: Report incorrect behavior in pglite-oxide.
description: Report incorrect Oliphaunt behavior in a product, SDK, runtime, or tool.
title: "bug: "
labels: ["bug"]
body:
- type: dropdown
id: product
attributes:
label: Product area
description: Which product or surface is affected?
options:
- liboliphaunt
- Rust SDK
- Swift SDK
- Kotlin SDK
- React Native SDK
- TypeScript SDK
- WASM/WASIX runtime
- Repo tooling / CI / release
- Documentation
validations:
required: true
- type: textarea
id: summary
attributes:
Expand All @@ -14,14 +31,13 @@ body:
id: repro
attributes:
label: Reproduction
description: Minimal Rust code or commands that reproduce the issue.
render: rust
description: Minimal code, commands, SQL, or app steps that reproduce the issue.
validations:
required: true
- type: input
id: versions
attributes:
label: Versions
description: pglite-oxide, Rust, OS, and architecture.
description: Oliphaunt package versions, platform versions, OS, architecture, and relevant toolchain versions.
validations:
required: true
Loading
Loading