|
|
|
@@ -0,0 +1,229 @@
|
|
|
|
|
apiVersion: devrunbook.io/v1alpha1
|
|
|
|
|
kind: Playbook
|
|
|
|
|
metadata:
|
|
|
|
|
id: feature-implementation.search-filter
|
|
|
|
|
slug: search-filter
|
|
|
|
|
version: 1.0.0
|
|
|
|
|
title: Add Search and Faceted Filtering
|
|
|
|
|
summary: Implement useful query, filter, sorting, URL state and no-results behavior over an existing dataset.
|
|
|
|
|
category: feature-implementation
|
|
|
|
|
tags:
|
|
|
|
|
- search
|
|
|
|
|
- filters
|
|
|
|
|
- ux
|
|
|
|
|
lifecycle: reviewed
|
|
|
|
|
riskTier: moderate
|
|
|
|
|
authors:
|
|
|
|
|
- name: DevRunbook Core Team
|
|
|
|
|
license: MIT
|
|
|
|
|
package:
|
|
|
|
|
files:
|
|
|
|
|
- path: prompt.md
|
|
|
|
|
role: template
|
|
|
|
|
digest: true
|
|
|
|
|
exportByDefault: false
|
|
|
|
|
- path: README.md
|
|
|
|
|
role: documentation
|
|
|
|
|
digest: true
|
|
|
|
|
exportByDefault: false
|
|
|
|
|
- path: CHANGELOG.md
|
|
|
|
|
role: changelog
|
|
|
|
|
digest: true
|
|
|
|
|
exportByDefault: false
|
|
|
|
|
- path: examples/minimal.yaml
|
|
|
|
|
role: example
|
|
|
|
|
digest: true
|
|
|
|
|
exportByDefault: false
|
|
|
|
|
- path: evaluations/static-structure.yaml
|
|
|
|
|
role: evaluation
|
|
|
|
|
digest: true
|
|
|
|
|
exportByDefault: false
|
|
|
|
|
spec:
|
|
|
|
|
type: guided
|
|
|
|
|
intent:
|
|
|
|
|
problem: Development work around add search and faceted filtering is often underspecified, inconsistently executed or
|
|
|
|
|
reported without enough evidence.
|
|
|
|
|
outcome: Implement useful query, filter, sorting, URL state and no-results behavior over an existing dataset.
|
|
|
|
|
whenToUse:
|
|
|
|
|
- Use this playbook when the repository needs a bounded add search and faceted filtering task with explicit evidence and
|
|
|
|
|
completion criteria.
|
|
|
|
|
- Use it when Codex should follow a repeatable workflow rather than improvise from a one-line request.
|
|
|
|
|
whenNotToUse:
|
|
|
|
|
- Do not use it when the desired outcome or authority boundaries are still materially undecided.
|
|
|
|
|
- Do not use it to access unavailable production credentials, bypass safeguards or claim validation that cannot be performed.
|
|
|
|
|
modes:
|
|
|
|
|
- guided
|
|
|
|
|
- execute
|
|
|
|
|
- recovery
|
|
|
|
|
defaultMode: execute
|
|
|
|
|
autonomy:
|
|
|
|
|
min: implement
|
|
|
|
|
max: repair
|
|
|
|
|
default: verify
|
|
|
|
|
inputs:
|
|
|
|
|
- key: searchFields
|
|
|
|
|
label: Search fields
|
|
|
|
|
description: List fields and content that should participate in search.
|
|
|
|
|
type: string-list
|
|
|
|
|
required: true
|
|
|
|
|
sensitive: false
|
|
|
|
|
includeInOutput: true
|
|
|
|
|
- key: filterDimensions
|
|
|
|
|
label: Filter dimensions
|
|
|
|
|
description: List supported filters and expected combination behavior.
|
|
|
|
|
type: string-list
|
|
|
|
|
required: true
|
|
|
|
|
sensitive: false
|
|
|
|
|
includeInOutput: true
|
|
|
|
|
compatibility:
|
|
|
|
|
repositoryRequired: true
|
|
|
|
|
languages: []
|
|
|
|
|
frameworks: []
|
|
|
|
|
packageManagers: []
|
|
|
|
|
databases: []
|
|
|
|
|
deploymentTypes: []
|
|
|
|
|
requiredProfileCapabilities: []
|
|
|
|
|
incompatibleConditions: []
|
|
|
|
|
guardrails:
|
|
|
|
|
- id: guardrail-1
|
|
|
|
|
severity: blocking
|
|
|
|
|
text: Define matching, sorting and filter semantics before implementation.
|
|
|
|
|
- id: guardrail-2
|
|
|
|
|
severity: blocking
|
|
|
|
|
text: Do not load unbounded datasets into the browser when server-side search is required.
|
|
|
|
|
- id: guardrail-3
|
|
|
|
|
severity: blocking
|
|
|
|
|
text: Keep URL state, accessibility and empty results behavior consistent.
|
|
|
|
|
workflow:
|
|
|
|
|
- id: inspect-data
|
|
|
|
|
title: Inspect data and UX
|
|
|
|
|
instruction: Map searchable fields, permissions, data volume, existing query patterns and UI conventions.
|
|
|
|
|
required: true
|
|
|
|
|
- id: define-semantics
|
|
|
|
|
title: Define semantics
|
|
|
|
|
instruction: Specify tokenization, exact/fuzzy behavior, filter combination, sorting, pagination and no-result recovery.
|
|
|
|
|
required: true
|
|
|
|
|
- id: implement-query
|
|
|
|
|
title: Implement query layer
|
|
|
|
|
instruction: Add indexed, authorized and deterministic query behavior with bounded pagination.
|
|
|
|
|
required: true
|
|
|
|
|
- id: implement-ui
|
|
|
|
|
title: Implement interface
|
|
|
|
|
instruction: Add search, filters, active chips, URL state, clear actions, loading and empty states.
|
|
|
|
|
required: true
|
|
|
|
|
- id: test-combinations
|
|
|
|
|
title: Test combinations
|
|
|
|
|
instruction: Cover search terms, combined filters, permissions, pagination and edge cases.
|
|
|
|
|
required: true
|
|
|
|
|
- id: measure
|
|
|
|
|
title: Measure performance
|
|
|
|
|
instruction: Verify query plans or representative timing against expected data volume.
|
|
|
|
|
required: true
|
|
|
|
|
- id: verify
|
|
|
|
|
title: Run full validation
|
|
|
|
|
instruction: Run automated and browser validation across critical viewports.
|
|
|
|
|
required: true
|
|
|
|
|
validation:
|
|
|
|
|
commandRoles:
|
|
|
|
|
- lint
|
|
|
|
|
- typecheck
|
|
|
|
|
- unit-test
|
|
|
|
|
- integration-test
|
|
|
|
|
- end-to-end-test
|
|
|
|
|
- build
|
|
|
|
|
checks:
|
|
|
|
|
- id: check-1
|
|
|
|
|
type: assertion
|
|
|
|
|
description: Search and filter semantics are documented and covered by combined tests.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Referenced files, command results or explicit review notes.
|
|
|
|
|
- id: check-2
|
|
|
|
|
type: assertion
|
|
|
|
|
description: URL state and accessible keyboard behavior work in the running interface.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Referenced files, command results or explicit review notes.
|
|
|
|
|
- id: command-lint
|
|
|
|
|
type: command
|
|
|
|
|
description: Run the resolved lint command when the repository profile provides it and record the result.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Resolved command, exit status and concise result summary.
|
|
|
|
|
- id: command-typecheck
|
|
|
|
|
type: command
|
|
|
|
|
description: Run the resolved typecheck command when the repository profile provides it and record the result.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Resolved command, exit status and concise result summary.
|
|
|
|
|
- id: command-unit-test
|
|
|
|
|
type: command
|
|
|
|
|
description: Run the resolved unit-test command when the repository profile provides it and record the result.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Resolved command, exit status and concise result summary.
|
|
|
|
|
- id: command-integration-test
|
|
|
|
|
type: command
|
|
|
|
|
description: Run the resolved integration-test command when the repository profile provides it and record the result.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Resolved command, exit status and concise result summary.
|
|
|
|
|
- id: command-end-to-end-test
|
|
|
|
|
type: command
|
|
|
|
|
description: Run the resolved end-to-end-test command when the repository profile provides it and record the result.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Resolved command, exit status and concise result summary.
|
|
|
|
|
- id: command-build
|
|
|
|
|
type: command
|
|
|
|
|
description: Run the resolved build command when the repository profile provides it and record the result.
|
|
|
|
|
blocking: true
|
|
|
|
|
evidence: Resolved command, exit status and concise result summary.
|
|
|
|
|
completion:
|
|
|
|
|
criteria:
|
|
|
|
|
- Results and combinations are correct and performant.
|
|
|
|
|
- URL and refresh preserve state.
|
|
|
|
|
- Validation evidence and unresolved limitations are reported honestly.
|
|
|
|
|
failurePolicy:
|
|
|
|
|
onValidationFailure: Investigate failures caused by the current work, repair them when they remain within scope, rerun
|
|
|
|
|
affected validation and report any genuine blocker without claiming success.
|
|
|
|
|
onAmbiguity: Use repository evidence and existing conventions for minor reversible choices. Preserve current behavior
|
|
|
|
|
and stop before any material irreversible decision that the specification does not resolve.
|
|
|
|
|
onMissingContext: Inspect the repository for missing non-sensitive context. Never invent commands, credentials, production
|
|
|
|
|
behavior or validation results; report what remains unavailable.
|
|
|
|
|
onOutOfScopeCause: Explain the evidenced out-of-scope cause, avoid unrelated changes and provide the smallest safe follow-up
|
|
|
|
|
recommendation.
|
|
|
|
|
onExternalDependencyUnavailable: Use an approved local substitute or fixture only when it preserves the behavior under
|
|
|
|
|
test. Otherwise record the blocked validation and do not claim the external path succeeded.
|
|
|
|
|
onUnableToReproduce: Record attempted reproduction, environment and observed evidence. Do not apply speculative production
|
|
|
|
|
changes; provide the narrowest next diagnostic action.
|
|
|
|
|
reporting:
|
|
|
|
|
sections:
|
|
|
|
|
- id: outcome
|
|
|
|
|
title: Outcome
|
|
|
|
|
required: true
|
|
|
|
|
description: State the delivered result or audit conclusion without overstating evidence.
|
|
|
|
|
- id: evidence
|
|
|
|
|
title: Evidence and scope
|
|
|
|
|
required: true
|
|
|
|
|
description: List inspected or changed areas and the evidence supporting the result.
|
|
|
|
|
- id: validation
|
|
|
|
|
title: Validation
|
|
|
|
|
required: true
|
|
|
|
|
description: Report commands, manual checks and their actual outcomes.
|
|
|
|
|
- id: risks
|
|
|
|
|
title: Risks and limitations
|
|
|
|
|
required: true
|
|
|
|
|
description: State residual risk, inaccessible evidence and untested conditions.
|
|
|
|
|
- id: follow-up
|
|
|
|
|
title: Recommended follow-up
|
|
|
|
|
required: true
|
|
|
|
|
description: List the smallest useful next actions or state None.
|
|
|
|
|
template:
|
|
|
|
|
main: prompt.md
|
|
|
|
|
partials: []
|
|
|
|
|
exports:
|
|
|
|
|
prompt: true
|
|
|
|
|
markdown: true
|
|
|
|
|
runPack: false
|
|
|
|
|
agentsSuggestion: false
|
|
|
|
|
quality:
|
|
|
|
|
reviewStatus: editorial-reviewed
|
|
|
|
|
testedStacks: []
|
|
|
|
|
knownLimitations:
|
|
|
|
|
- Repository-specific effectiveness depends on the accuracy of the selected profile and the evidence available to Codex.
|
|
|
|
|
evaluationCaseIds:
|
|
|
|
|
- search-filter.static-structure
|