<pblock label="Plan topology repair" kind="repair">
# Plan Topology Repair

Drydock accepted the Blueprint artifact batch but rejected its transient work graph.
Repair only the deterministic defect reported below. Preserve every story ID,
implements assignment and story fields that do not need
to change. Dependencies must name exact story IDs declared in this topology.

Emit each artifact below in exactly this form, and emit no other text:

=== BEGIN ARTIFACT <FILENAME> ===
<the complete file body>
=== END ARTIFACT ===

The filename appears once, in the opening delimiter. The closing delimiter is the
constant token above and never carries a name.

Emit exactly one such block for each of: TOPOLOGY.md.

Repair pass: 1

Deterministic validation defect:
Plan generation failed: the declared work graph is inconsistent.
  dependency cycle: exec-002 -> core-003 -> exec-002
  No Blueprint or Manifest artifacts were written.
  Execution output: /mnt/c/Users/barlo/projects/drydock/uat/jq/runs/20260822.044627/workspace/logs/20260822.153150.857Z_jq_plan_codex.output.txt

Original TOPOLOGY.md, in the same form your reply must use:
=== BEGIN ARTIFACT TOPOLOGY.md ===
# TOPOLOGY: jq

## story architecture
summary: Define the standalone jq interpreter architecture and boundaries.
type: foundational
kind: capability
phase: 1
implements: ARCHITECTURE.md
context: sources/jq-manual.txt, sources/parser.y, sources/lexer.l, TECHNOLOGY_STACK.md
context_roles: |
  jq-manual.txt: normative specification
  parser.y: normative specification
  lexer.l: normative specification
  TECHNOLOGY_STACK.md: technology decisions
stack: common.md, python.md
provides: interpreter architecture, executable boundary, generator evaluation model
consumes:
acceptance: yes
scope: both
instructions: |
  Define the Python standard-library interpreter architecture, parser/evaluator boundaries,
  immutable value handling, generator semantics, diagnostics, and executable process contract.
  Establish module ownership so later stories extend the architecture without external runtimes.

## story exec-001
summary: Implement the executable jq entry point.
type: service
kind: capability
phase: 2
implements: FEATURE-Executable-Entry-Point.md
covers: EXEC-001
context: sources/INSTRUCTIONS.md, sources/run_conformance.py, sources/full_test.sh
context_roles: |
  INSTRUCTIONS.md: author intent
  run_conformance.py: conformance harness
  full_test.sh: conformance harness
stack: common.md, python.md
provides: executable jq, -c filter invocation
consumes: interpreter architecture, JSON input stream
depends: architecture, conf-001
acceptance: yes
scope: target
instructions: |
  Create an executable named jq at the application root. Accept the exercised -c '<program>'
  interface, read JSON values from stdin, evaluate the filter, and emit compact JSON values one
  per line. Keep the executable self-contained within the standard-library implementation.

## story exec-002
summary: Implement jq compilation and runtime exit contracts.
type: service
kind: capability
phase: 2
implements: FEATURE-Process-Contract.md
covers: EXEC-002
context: sources/INSTRUCTIONS.md, sources/run_conformance.py
context_roles: |
  INSTRUCTIONS.md: author intent
  run_conformance.py: conformance harness
stack: common.md, python.md
provides: compile exit 3, runtime exit 5, success exit 0, stderr diagnostics
consumes: executable jq, parser, evaluator
depends: exec-001, parse-004, core-003
acceptance: yes
scope: target
instructions: |
  Distinguish syntax/static rejection from runtime errors. Return 3 for compile failures, 5 for
  runtime failures, and 0 for successful completion. Preserve values emitted before a runtime error
  and send diagnostics only to stderr.

## story exec-003
summary: Implement JSON process input and compact output handling.
type: service
kind: capability
phase: 2
implements: FEATURE-JSON-IO-Boundary.md
covers: EXEC-003
context: sources/INSTRUCTIONS.md, sources/run_conformance.py
context_roles: |
  INSTRUCTIONS.md: author intent
  run_conformance.py: conformance harness
stack: common.md, python.md
provides: JSON stdin decoding, compact JSON line serialization, Unicode and special-number handling
consumes: executable jq, JSON value model
depends: exec-001, value-001
acceptance: yes
scope: target
instructions: |
  Decode the harness-provided JSON input stream and serialize every generated value as one compact
  JSON value per line. Preserve ordering, Unicode, NaN, infinity, and numeric behavior required by
  the corpus.

## story parse-001
summary: Implement jq lexical scanning.
type: service
kind: capability
phase: 2
implements: FEATURE-Lexer.md
covers: PARSE-001
context: sources/lexer.l, sources/parser.y, sources/jq.test
context_roles: |
  lexer.l: normative specification
  parser.y: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: jq tokens, comments, delimiters, identifiers, literals, bindings
consumes: interpreter architecture
depends: architecture, conf-001
acceptance: yes
scope: target
instructions: |
  Implement a standard-library lexer matching the supplied tokenization rules, including keywords,
  identifiers, fields, bindings, literals, comments, formats, delimiters, and interpolation states.

## story parse-002
summary: Implement literals, escapes, formats, and interpolation parsing.
type: service
kind: capability
phase: 2
implements: FEATURE-Literals-And-Interpolation.md
covers: PARSE-002
context: sources/lexer.l, sources/parser.y, sources/jq.test
context_roles: |
  lexer.l: normative specification
  parser.y: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: JSON string escapes, Unicode literals, interpolation, format tokens
consumes: lexer, interpreter architecture
depends: parse-001
acceptance: yes
scope: target
instructions: |
  Parse and evaluate JSON escapes, Unicode strings, formatted strings, and \(expression)
  interpolation. Reject invalid escapes and malformed interpolation at compile time.

## story parse-003
summary: Implement the jq filter expression grammar.
type: service
kind: capability
phase: 2
implements: FEATURE-Filter-Grammar.md
covers: PARSE-003
context: sources/parser.y, sources/lexer.l, sources/jq.test
context_roles: |
  parser.y: normative specification
  lexer.l: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: AST grammar for pipes, commas, indexing, slices, arrays, objects, operators, optionals
consumes: lexer, literal parser
depends: parse-001, parse-002
acceptance: yes
scope: target
instructions: |
  Implement parser precedence and associativity for filter composition, indexing, slicing, arrays,
  objects, unary operators, binary operators, and optional expressions. Produce an executable AST
  or equivalent intermediate representation.

## story parse-004
summary: Implement declarations and control syntax parsing.
type: service
kind: capability
phase: 2
implements: FEATURE-Declarations-And-Control-Syntax.md
covers: PARSE-004
context: sources/parser.y, sources/lexer.l, sources/jq.test
context_roles: |
  parser.y: normative specification
  lexer.l: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: def, module grammar, imports grammar, conditionals, try, reductions, foreach, labels, patterns
consumes: filter grammar, lexer
depends: parse-003
acceptance: yes
scope: target
instructions: |
  Parse declarations, module syntax, conditionals, try/catch, reduce, foreach, labels, bindings,
  and destructuring patterns. Reject invalid module grammar and unresolved labels at compile time
  without loading excluded module fixtures.

## story core-001
summary: Implement stream-valued filter evaluation.
type: service
kind: capability
phase: 2
implements: FEATURE-Generator-Core.md
covers: CORE-001
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: ordered filter generators, empty, iteration, backtracking
consumes: parsed AST, JSON value model
depends: parse-003, value-001
acceptance: yes
scope: target
instructions: |
  Evaluate every filter as an ordered generator supporting zero, one, or many outputs. Preserve
  backtracking, multiplicity, and ordering for identity, iteration, range, empty, and downstream
  pipeline evaluation.

## story core-002
summary: Implement composition and Cartesian generator evaluation.
type: service
kind: capability
phase: 2
implements: FEATURE-Composition-And-Cartesian-Evaluation.md
covers: CORE-002
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: pipes, commas, Cartesian arguments, arrays, objects, binary filter composition
consumes: generator core, parsed expressions
depends: core-001, parse-003
acceptance: yes
scope: target
instructions: |
  Implement composition semantics for pipes and commas, Cartesian products across multi-output
  arguments, array collection, object construction, and binary operators.

## story core-003
summary: Implement empty results and runtime error flow.
type: service
kind: capability
phase: 2
implements: FEATURE-Errors-And-Optional-Evaluation.md
covers: CORE-003
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: empty, runtime errors, optional filters, try/catch, partial output
consumes: generator core, process contract
depends: core-001, core-002, exec-002
acceptance: yes
scope: target
instructions: |
  Implement runtime error propagation, try/catch, optional operators, empty behavior, and partial
  output before failure. Preserve the distinction between suppressed and unsuppressed errors.

## story core-004
summary: Implement jq truthiness, equality, and ordering.
type: service
kind: capability
phase: 2
implements: FEATURE-Truthiness-And-Comparison.md
covers: CORE-004
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: false/null truthiness, equality, ordering, numeric equivalence
consumes: generator core, JSON value model
depends: core-002, value-001
acceptance: yes
scope: target
instructions: |
  Implement jq truthiness in which only false and null are falsey. Implement structural equality,
  numeric equivalence, and jq's total type ordering for comparisons.

## story value-001
summary: Implement the jq JSON value model and numeric edge cases.
type: service
kind: capability
phase: 2
implements: FEATURE-Value-Model.md
covers: VALUE-001
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: null, booleans, numbers, strings, arrays, objects, NaN, infinities
consumes: interpreter architecture
depends: architecture, conf-001
acceptance: yes
scope: target
instructions: |
  Define immutable jq values using only the standard library. Preserve numeric literals where
  required, support NaN and infinities, and provide JSON conversion behavior compatible with the
  harness.

## story value-002
summary: Implement field and index access.
type: service
kind: capability
phase: 2
implements: FEATURE-Field-And-Index-Access.md
covers: VALUE-002
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: object fields, array indices, optional access, negative indices, missing values
consumes: value model, generator core
depends: value-001, core-001, parse-003
acceptance: yes
scope: target
instructions: |
  Implement object field access, array and string indexing, optional access, negative indices,
  missing-field null behavior, and corresponding runtime errors.

## story value-003
summary: Implement slices and collection iteration.
type: service
kind: capability
phase: 2
implements: FEATURE-Slices-And-Iteration.md
covers: VALUE-003
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: array/string slices, array/object iteration, fractional bounds, out-of-range behavior
consumes: field and index access, generator core
depends: value-002
acceptance: yes
scope: target
instructions: |
  Implement array and string slices, object and array iteration, optional iteration, fractional
  bounds, negative bounds, and out-of-range behavior.

## story value-004
summary: Implement type and numeric primitive builtins.
type: service
kind: capability
phase: 2
implements: FEATURE-Type-And-Numeric-Primitives.md
covers: VALUE-004
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: type, length, utf8bytelength, numeric predicates, conversions, arithmetic math primitives
consumes: value model, comparison semantics
depends: value-001, value-002, core-004
acceptance: yes
scope: target
instructions: |
  Implement type, length, UTF-8 byte length, numeric predicates, tonumber/toboolean, floor,
  sqrt, and the standard mathematical primitives required by the corpus.

## story flow-001
summary: Implement arithmetic and structural operators.
type: service
kind: capability
phase: 3
implements: FEATURE-Arithmetic-And-Structural-Operators.md
covers: FLOW-001
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: plus, minus, multiply, divide, modulo, negation, recursive merge, string operations
consumes: value model, comparison semantics
depends: value-004, core-002, core-003
acceptance: yes
scope: target
instructions: |
  Implement typed arithmetic and structural operators, including recursive object merge, string
  repetition and splitting, array subtraction, division-by-zero errors, and unary negation.

## story flow-002
summary: Implement boolean and alternative operators.
type: service
kind: capability
phase: 3
implements: FEATURE-Boolean-And-Alternative-Operators.md
covers: FLOW-002
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: and, or, not, defined-or, defined-or assignment
consumes: truthiness, generator core, arithmetic operators
depends: core-004, flow-001
acceptance: yes
scope: target
instructions: |
  Implement Boolean operators, not, defined-or fallback semantics, and //= while preserving
  generator multiplicity and short-circuit behavior.

## story flow-003
summary: Implement conditionals and exception flow.
type: service
kind: capability
phase: 3
implements: FEATURE-Conditionals-And-Exception-Flow.md
covers: FLOW-003
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: if/then/elif/else/end, try/catch, optional operators
consumes: truthiness, runtime error flow
depends: core-003, core-004, flow-002
acceptance: yes
scope: target
instructions: |
  Implement branching over generator-valued conditions, optional else branches, elif chains,
  try/catch propagation, and optional error suppression.

## story flow-004
summary: Implement lexical labels and breaks.
type: service
kind: capability
phase: 3
implements: FEATURE-Labels-And-Breaks.md
covers: FLOW-004
context: sources/parser.y, sources/jq-manual.txt, sources/jq.test
context_roles: |
  parser.y: normative specification
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: label, break, lexical generator termination
consumes: parser declarations, runtime error flow, generator core
depends: parse-004, core-003, flow-003
acceptance: yes
scope: target
instructions: |
  Implement lexically scoped labels and break control so the correct enclosing generator stops
  without leaking unrelated outputs. Reject breaks without visible labels.

## story flow-005
summary: Implement reductions and iteration controls.
type: service
kind: capability
phase: 3
implements: FEATURE-Reductions-And-Iteration-Control.md
covers: FLOW-005
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: reduce, foreach, range, limit, skip, first, last, nth
consumes: generator core, labels, bindings
depends: core-002, flow-004, func-001
acceptance: yes
scope: target
instructions: |
  Implement reduce and foreach state transitions plus range, limit, skip, first, last, and nth.
  Preserve Cartesian argument evaluation, backtracking, extraction, and label-based termination.

## story flow-006
summary: Implement recursive generators.
type: service
kind: capability
phase: 3
implements: FEATURE-Recursive-Generators.md
covers: FLOW-006
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: while, until, repeat, recurse, recursive descent
consumes: generator core, function definitions, conditionals
depends: flow-003, flow-005, func-003
acceptance: yes
scope: target
instructions: |
  Implement while, until, repeat, recurse, recursive descent, and safe recursive generator
  termination with the stream semantics specified by the manual.

## story func-001
summary: Implement lexical variable bindings.
type: service
kind: capability
phase: 3
implements: FEATURE-Variable-Bindings.md
covers: FUNC-001
context: sources/parser.y, sources/jq-manual.txt, sources/jq.test
context_roles: |
  parser.y: normative specification
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: as bindings, nested scope, shadowing, keyword identifiers, value lifetime
consumes: parser, generator evaluator
depends: parse-004, core-002
acceptance: yes
scope: target
instructions: |
  Implement lexical as bindings, nested scope, shadowing, keyword variable names, and binding
  lifetime across generator backtracking.

## story func-002
summary: Implement filter and value function parameters.
type: service
kind: capability
phase: 3
implements: FEATURE-Function-Parameters.md
covers: FUNC-002
context: sources/parser.y, sources/jq-manual.txt, sources/jq.test
context_roles: |
  parser.y: normative specification
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: filter parameters, value parameters, multiple arities, closures, Cartesian arguments
consumes: lexical bindings, generator evaluator
depends: func-001, core-002
acceptance: yes
scope: target
instructions: |
  Implement user-defined filter and value parameters, multiple arities, closures, and repeated
  argument evaluation under jq's callback/filter parameter semantics.

## story func-003
summary: Implement function definitions, scope, and recursion.
type: service
kind: capability
phase: 3
implements: FEATURE-Function-Definitions-And-Recursion.md
covers: FUNC-003
context: sources/parser.y, sources/jq-manual.txt, sources/jq.test
context_roles: |
  parser.y: normative specification
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: def declarations, redefinitions, lexical function scope, recursion, forward/self references
consumes: parser, function parameters, bindings
depends: parse-004, func-001, func-002
acceptance: yes
scope: target
instructions: |
  Implement definitions and lexical function scope, redefinitions by arity, self-recursion, and
  the function visibility rules settled by the parser and manual.

## story func-004
summary: Implement destructuring patterns and alternatives.
type: service
kind: capability
phase: 3
implements: FEATURE-Destructuring-Patterns.md
covers: FUNC-004
context: sources/parser.y, sources/jq-manual.txt, sources/jq.test
context_roles: |
  parser.y: normative specification
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: array/object patterns, missing bindings, ?// alternatives
consumes: lexical bindings, generator errors, function scope
depends: func-001, flow-003, parse-004
acceptance: yes
scope: target
instructions: |
  Implement array and object destructuring, null bindings for missing members, and ?// fallback
  alternatives including retry after downstream errors.

## story path-001
summary: Implement path discovery and projection.
type: service
kind: capability
phase: 4
implements: FEATURE-Path-Discovery.md
covers: PATH-001
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: path, paths, pick, path projections
consumes: accessors, iteration, generator evaluator
depends: value-003, func-004, flow-006
acceptance: yes
scope: target
instructions: |
  Implement exact and pattern path discovery, paths, path filters, and pick projections while
  preserving path ordering and invalid-path errors.

## story path-002
summary: Implement path access and mutation primitives.
type: service
kind: capability
phase: 4
implements: FEATURE-Path-Primitives.md
covers: PATH-002
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: getpath, setpath, delpaths
consumes: path discovery, immutable value model
depends: path-001, value-002
acceptance: yes
scope: target
instructions: |
  Implement getpath, setpath, and delpaths with nested object/array creation, deletion,
  invalid-path handling, negative-index rules, and depth limits.

## story path-003
summary: Implement deletion and assignment operators.
type: service
kind: capability
phase: 4
implements: FEATURE-Deletion-And-Assignment.md
covers: PATH-003
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: del, =, |=, +=, -=, *=, /=, %=, //=
consumes: path primitives, arithmetic operators, generator evaluator
depends: path-002, flow-001, flow-002
acceptance: yes
scope: target
instructions: |
  Implement immutable deletion, plain assignment, update assignment, arithmetic assignment,
  defined-or assignment, multi-path updates, and first-result update semantics.

## story path-004
summary: Implement complex assignment edge cases.
type: service
kind: capability
phase: 4
implements: FEATURE-Complex-Assignment-Edges.md
covers: PATH-004
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: iterated paths, empty updates, array expansion, invalid paths, assignment depth limits
consumes: assignment operators, path primitives
depends: path-003
acceptance: yes
scope: target
instructions: |
  Complete iterated path assignments, empty-update deletion, array expansion, invalid and
  fractional/NaN indices, negative-index behavior, and depth-limit protections.

## story data-001
summary: Implement collection transformation builtins.
type: service
kind: capability
phase: 4
implements: FEATURE-Collection-Transformations.md
covers: DATA-001
context: sources/builtin.jq, sources/jq-manual.txt, sources/jq.test
context_roles: |
  builtin.jq: reference implementation
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: map, map_values, select, add, flatten, transpose, combinations, walk
consumes: generator evaluator, operators, path mutation
depends: flow-005, path-003, value-004
acceptance: yes
scope: target
instructions: |
  Implement collection transformation builtins and their generator behavior, including map,
  map_values, select, add, flatten, transpose, combinations, and recursive walk.

## story data-002
summary: Implement sorting and grouping builtins.
type: service
kind: capability
phase: 4
implements: FEATURE-Sorting-And-Grouping.md
covers: DATA-002
context: sources/builtin.jq, sources/jq-manual.txt, sources/jq.test
context_roles: |
  builtin.jq: reference implementation
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: sort, sort_by, group_by, unique, unique_by, min, max, keyed variants
consumes: comparison and ordering semantics, collection transformations
depends: core-004, data-001
acceptance: yes
scope: target
instructions: |
  Implement sorting, keyed sorting, grouping, uniqueness, minimum, maximum, and keyed variants
  using jq's structural ordering and stable generator behavior.

## story data-003
summary: Implement object-entry and containment builtins.
type: service
kind: capability
phase: 4
implements: FEATURE-Object-Entries-And-Containment.md
covers: DATA-003
context: sources/builtin.jq, sources/jq-manual.txt, sources/jq.test
context_roles: |
  builtin.jq: reference implementation
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: keys, keys_unsorted, has, in, inside, contains, to_entries, from_entries, with_entries
consumes: value access, equality, collection transformations
depends: value-002, core-004, data-001
acceptance: yes
scope: target
instructions: |
  Implement object and array key utilities, containment and inverse containment, membership,
  entry conversions, and with_entries including supported key aliases.

## story data-004
summary: Implement index and membership utilities.
type: service
kind: capability
phase: 4
implements: FEATURE-Index-And-Membership-Utilities.md
covers: DATA-004
context: sources/builtin.jq, sources/jq-manual.txt, sources/jq.test
context_roles: |
  builtin.jq: reference implementation
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: indices, index, rindex, bsearch, all, any, isempty, SQL IN
consumes: comparison semantics, generator evaluator
depends: core-004, flow-005, data-003
acceptance: yes
scope: target
instructions: |
  Implement string and array index searches, binary search, all/any short-circuiting, isempty,
  and SQL-style IN operators over generator streams.

## story text-001
summary: Implement string manipulation builtins.
type: service
kind: capability
phase: 4
implements: FEATURE-String-Manipulation.md
covers: TEXT-001
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: trim, ltrim, rtrim, prefix/suffix, case conversion, explode, implode, split, join, interpolation
consumes: string values, generator evaluator
depends: value-004, parse-002, core-002
acceptance: yes
scope: target
instructions: |
  Implement string trimming, prefix/suffix operations, ASCII case conversion, codepoint
  explode/implode, split/join, and string interpolation.

## story text-002
summary: Implement JSON and output format filters.
type: service
kind: capability
phase: 4
implements: FEATURE-JSON-And-Output-Formats.md
covers: TEXT-002
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: tostring, tojson, fromjson, @text, @json, @html, @uri, @urid, @csv, @tsv, @sh, @base64, @base64d
consumes: value model, string manipulation
depends: value-001, text-001
acceptance: yes
scope: target
instructions: |
  Implement JSON conversion and all required format filters using standard-library escaping,
  encoding, and decoding rules, including formatted interpolation behavior.

## story text-003
summary: Implement regular-expression filters.
type: service
kind: capability
phase: 4
implements: FEATURE-Regular-Expressions.md
covers: TEXT-003
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: test, match, capture, scan, split, splits, sub, gsub
consumes: string values, interpolation, generator evaluator
depends: text-001, parse-002, core-002
acceptance: yes
scope: target
instructions: |
  Implement regex filters with standard-library regex support, required flags, named and unnamed
  captures, offsets, lengths, streams, splitting, substitution, and global substitution.

## story text-004
summary: Implement date and time filters.
type: service
kind: capability
phase: 4
implements: FEATURE-Date-And-Time-Filters.md
covers: TEXT-004
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: fromdate, todate, strptime, strftime, gmtime, localtime, mktime
consumes: value conversion, string values
depends: value-004, text-001
acceptance: yes
scope: target
instructions: |
  Implement UTC ISO date conversion and the supplied low-level date/time filters using Python
  datetime and time facilities, preserving jq's broken-down time representation.

## story io-001
summary: Implement input stream controls.
type: service
kind: capability
phase: 4
implements: FEATURE-Input-Streams.md
covers: IO-001
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: input, inputs, input_filename, input_line_number
consumes: JSON process boundary, generator evaluator
depends: exec-003, core-001
acceptance: yes
scope: target
instructions: |
  Implement input and inputs against the fixed stdin interface, together with input filename and
  line number behavior available within that interface.

## story io-002
summary: Implement diagnostics and stderr filters.
type: service
kind: capability
phase: 4
implements: FEATURE-Diagnostics-And-Stderr.md
covers: IO-002
context: sources/jq-manual.txt, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  jq.test: conformance suite
stack: common.md, python.md
provides: debug, stderr, halt_error
consumes: process exit contract, JSON serialization
depends: exec-002, exec-003, core-003
acceptance: yes
scope: target
instructions: |
  Implement debug, stderr, halt_error, and their output-channel and exit-code semantics. Keep
  diagnostics out of stdout and preserve partial output behavior.

## story io-003
summary: Implement streaming transformations.
type: service
kind: capability
phase: 4
implements: FEATURE-Streaming-Transformations.md
covers: IO-003
context: sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
context_roles: |
  jq-manual.txt: normative specification
  builtin.jq: reference implementation
  jq.test: conformance suite
stack: common.md, python.md
provides: tostream, fromstream, truncate_stream
consumes: generator evaluator, path operations
depends: path-001, core-001, data-001
acceptance: yes
scope: target
instructions: |
  Implement jq streaming representations and tostream, fromstream, and truncate_stream over the
  fixed non-streaming process boundary.

## story conf-001
summary: Stage and validate immutable conformance assets.
type: foundational
kind: test harness
phase: 1
implements: FEATURE-Conformance-Asset-Staging.md
covers: CONF-001
context: sources/INSTRUCTIONS.md, sources/run_conformance.py, sources/full_test.sh, sources/exclusions.txt, sources/jq.test, sources/jq-manual.txt, sources/parser.y, sources/lexer.l, sources/builtin.jq
context_roles: |
  INSTRUCTIONS.md: author intent
  run_conformance.py: conformance harness
  full_test.sh: conformance harness
  exclusions.txt: conformance harness
  jq.test: normative specification and conformance suite
  jq-manual.txt: normative specification
  parser.y: normative specification
  lexer.l: normative specification
  builtin.jq: reference implementation
stack: common.md, python.md
provides: staged sources/* assets, parsed corpus and exclusions
consumes:
acceptance: yes
scope: both
instructions: |
  Stage all imported sources byte-for-byte into the build directory under sources/. Validate the
  corpus and exclusions by importing run_conformance.parse_corpus and apply_exclusions directly.
  Do not launch the harness and do not modify any supplied source asset.

## story conf-002
summary: Provide scoped conformance verification.
type: service
kind: test harness
phase: 5
implements: FEATURE-Scoped-Conformance-Verification.md
covers: CONF-002
context: sources/run_conformance.py, sources/jq.test, sources/exclusions.txt
context_roles: |
  run_conformance.py: conformance harness
  jq.test: conformance suite
  exclusions.txt: conformance harness
stack: common.md, python.md
provides: scoped conformance execution contract
consumes: executable jq, staged conformance assets
depends: exec-003, parse-004, core-004, value-004, flow-006, func-004, path-004, data-004, text-004, io-003, conf-001
acceptance: yes
scope: both
instructions: |
  Ensure each implementation story can invoke the supplied runner with a construct-specific
  --select slice, JQ set to the candidate executable, --json enabled, and assertions on parsed
  summary state with nonzero selected case count and zero failures/errors.

## story conf-003
summary: Pass the complete jq conformance corpus.
type: service
kind: test harness
phase: 6
implements: FEATURE-Complete-Conformance-Verification.md
covers: CONF-003
accepts: st-001
context: sources/full_test.sh, sources/run_conformance.py, sources/jq.test, sources/exclusions.txt
context_roles: |
  full_test.sh: conformance harness
  run_conformance.py: conformance harness
  jq.test: conformance suite
  exclusions.txt: conformance harness
stack: common.md, python.md
provides: complete conformance release verification
consumes: executable jq, all interpreter capabilities, staged conformance assets
depends: architecture, exec-001, exec-002, exec-003, parse-001, parse-002, parse-003, parse-004, core-001, core-002, core-003, core-004, value-001, value-002, value-003, value-004, flow-001, flow-002, flow-003, flow-004, flow-005, flow-006, func-001, func-002, func-003, func-004, path-001, path-002, path-003, path-004, data-001, data-002, data-003, data-004, text-001, text-002, text-003, text-004, io-001, io-002, io-003, conf-001, conf-002
acceptance: yes
scope: both
instructions: |
  Run the supplied sources/full_test.sh as the sole terminal full-suite verification. Require the
  executable interface check and a zero harness exit status. Do not filter, skip, reinterpret, or
  edit the scoring assets.
=== END ARTIFACT ===
</pblock>

