Skip to content

Commit 2d7ca47

Browse files
timsaucerclaude
andcommitted
Replace static FFI type list with dynamic discovery instruction
The supported FFI types list would go stale as new types are added. Replace it with a grep instruction to discover them at check time, keeping only the "evaluated and not requiring exposure" list which captures rationale not derivable from code. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c953930 commit 2d7ca47

File tree

1 file changed

+3
-14
lines changed

1 file changed

+3
-14
lines changed

.claude/skills/check-upstream/SKILL.md

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -114,19 +114,8 @@ The user may specify an area via `$ARGUMENTS`. If no area is specified or "all"
114114
- FFI example: `examples/datafusion-ffi-example/src/`
115115
- Dependency declared in root `Cargo.toml` and `crates/core/Cargo.toml`
116116

117-
**Currently supported FFI types:**
118-
- `FFI_ScalarUDF``crates/core/src/udf.rs`
119-
- `FFI_AggregateUDF``crates/core/src/udaf.rs`
120-
- `FFI_WindowUDF``crates/core/src/udwf.rs`
121-
- `FFI_TableFunction``crates/core/src/udtf.rs`
122-
- `FFI_TableProvider``crates/core/src/table.rs`, `crates/util/src/lib.rs`
123-
- `FFI_TableProviderFactory``crates/core/src/context.rs`
124-
- `FFI_CatalogProvider``crates/core/src/catalog.rs`, `crates/core/src/context.rs`
125-
- `FFI_CatalogProviderList``crates/core/src/context.rs`
126-
- `FFI_SchemaProvider``crates/core/src/catalog.rs`
127-
- `FFI_LogicalExtensionCodec` — multiple files
128-
- `FFI_ExtensionOptions``crates/core/src/context.rs`
129-
- `FFI_TaskContextProvider``crates/core/src/context.rs`
117+
**Discovering currently supported FFI types:**
118+
Grep for `use datafusion_ffi::` in `crates/core/src/` and `crates/util/src/` to find all FFI types currently imported and used.
130119

131120
**Evaluated and not requiring direct Python exposure:**
132121
These upstream FFI types have been reviewed and do not need to be independently exposed to end users:
@@ -141,7 +130,7 @@ These upstream FFI types have been reviewed and do not need to be independently
141130
- Supporting/utility types (`FFI_Option`, `FFI_Result`, `WrappedSchema`, `WrappedArray`, `FFI_ColumnarValue`, `FFI_Volatility`, `FFI_InsertOp`, `FFI_AccumulatorArgs`, `FFI_Accumulator`, `FFI_GroupsAccumulator`, `FFI_EmitTo`, `FFI_AggregateOrderSensitivity`, `FFI_PartitionEvaluator`, `FFI_PartitionEvaluatorArgs`, `FFI_Range`, `FFI_SortOptions`, `FFI_Distribution`, `FFI_ExprProperties`, `FFI_SortProperties`, `FFI_Interval`, `FFI_TableProviderFilterPushDown`, `FFI_TableType`) — used as building blocks within the types above, not independently exposed
142131

143132
**How to check:**
144-
1. Compare the upstream `datafusion-ffi` crate's `lib.rs` exports against the lists above
133+
1. Discover currently supported types by grepping for `use datafusion_ffi::` in `crates/core/src/` and `crates/util/src/`, then compare against the upstream `datafusion-ffi` crate's `lib.rs` exports
145134
2. If new FFI types appear upstream, evaluate whether they represent a user-facing capability
146135
3. Check against the "evaluated and not requiring exposure" list before flagging as a gap
147136
4. Report any genuinely new types that enable user-facing functionality

0 commit comments

Comments
 (0)