feat: contingent possible values (thread, scope, field anchor) #12

Merged
KofTwentyTwo merged 1 commits from feature/contingent-fields into develop 2026-10-14 01:22:27 +00:00
KofTwentyTwo commented 2026-10-14 01:18:37 +00:00 (Migrated from github.com)

Summary

Contingent (dependent) possible values, per the owner requirement (see qqq docs/CONTINGENT-POSSIBLE-VALUES.md):

Field Driven by Mechanism
collaboration_comment.parentCommentId threadId table PVS with filter threadId = ${input.threadId} OR id = ${input.threadId}, so the root and its replies
collaboration_feature_setting.scopeName scopeType CUSTOM FeatureScopeNamePossibleValueProvider: APP lists apps; TABLE lists eligible tables (not collaboration_*, not hidden, single primary key); INSTANCE lists none
collaboration_comment.fieldName tableName CUSTOM RecordFieldNamePossibleValueProvider (generic, reusable): the table's visible fields as "Label (name)", falling back to the comment row's table

Each pair has a TODO to add withDependsOn(...) once core ships it. The pairs work today through RC.5's ${input.x} filters and the providers' otherValues.

Test plan

  • ./mvnw -o verify: 87 tests, 96.9% instruction and 100% class coverage, checkstyle clean. DependentPossibleValuesTest has one case per pair, run through SearchPossibleValueSourceAction with otherValues as a frontend sends them.
  • CircleCI test_only.

🤖 Generated with Claude Code

## Summary Contingent (dependent) possible values, per the owner requirement (see qqq docs/CONTINGENT-POSSIBLE-VALUES.md): | Field | Driven by | Mechanism | |---|---|---| | `collaboration_comment.parentCommentId` | `threadId` | table PVS with filter `threadId = ${input.threadId} OR id = ${input.threadId}`, so the root and its replies | | `collaboration_feature_setting.scopeName` | `scopeType` | CUSTOM `FeatureScopeNamePossibleValueProvider`: APP lists apps; TABLE lists eligible tables (not `collaboration_*`, not hidden, single primary key); INSTANCE lists none | | `collaboration_comment.fieldName` | `tableName` | CUSTOM `RecordFieldNamePossibleValueProvider` (generic, reusable): the table's visible fields as "Label (name)", falling back to the comment row's table | Each pair has a `TODO` to add `withDependsOn(...)` once core ships it. The pairs work today through RC.5's `${input.x}` filters and the providers' `otherValues`. ## Test plan - [x] `./mvnw -o verify`: 87 tests, 96.9% instruction and 100% class coverage, checkstyle clean. `DependentPossibleValuesTest` has one case per pair, run through `SearchPossibleValueSourceAction` with `otherValues` as a frontend sends them. - [ ] CircleCI `test_only`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.