=== BEGIN ARTIFACT TOPOLOGY.md ===
# TOPOLOGY: jq
## story architecture
summary: Define the standalone interpreter architecture and module boundaries.
type: foundational
kind: capability
phase: 1
implements: ARCHITECTURE.md
stack: common.md, python.md
provides: interpreter module boundaries, executable boundary
acceptance: yes
instructions: |
Establish the Python standard-library architecture, executable boundary, lexer/parser/evaluator
ownership, immutable value and path-operation boundaries, and diagnostic flow. Do not add
third-party dependencies or shell out to another jq implementation.
scope: blueprint
## story exec-001
summary: Implement the executable jq entry point.
type: service
kind: capability
phase: 1
implements: FEATURE-Executable-Entry-Point.md
covers: EXEC-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/INSTRUCTIONS.md, sources/run_conformance.py
provides: ./jq -c program execution
consumes: interpreter parser and evaluator
depends: architecture
acceptance: yes
instructions: |
Deliver an executable named jq at the application root. Accept the exercised -c program
interface, read JSON input from stdin, evaluate the filter, and emit each result as one compact
JSON value per line. Gate with the EXEC-001 selector from STORY_GUIDANCE.json, executing cases.
scope: target
## story exec-002
summary: Implement jq process exit and diagnostic behavior.
type: service
kind: capability
phase: 1
implements: FEATURE-Process-Contract.md
covers: EXEC-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/INSTRUCTIONS.md, sources/run_conformance.py
provides: compile exit 3, runtime exit 5, success exit 0, stderr diagnostics
consumes: ./jq -c program execution
depends: exec-001
acceptance: yes
instructions: |
Keep compilation failures distinct from runtime failures and preserve partial stdout before a
runtime error. Send diagnostics only to stderr. Gate with the EXEC-002-related corpus slice using
the runner's executing scoped mode.
scope: target
## story exec-003
summary: Implement JSON input, Unicode, numeric, and compact output handling.
type: service
kind: capability
phase: 1
implements: FEATURE-Json-IO.md
covers: EXEC-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq.test, sources/run_conformance.py
provides: JSON stdin parsing, compact JSON serialization, ordered output stream
consumes: ./jq -c program execution
depends: exec-002
acceptance: yes
instructions: |
Support multiple JSON input values, Unicode escapes and characters, special numeric values
required by the corpus, structural output ordering, and one output value per line. Gate the
EXEC-003-related executing corpus slice.
scope: target
## story parse-001
summary: Implement jq lexical scanning.
type: service
kind: capability
phase: 2
implements: FEATURE-Lexer.md
covers: PARSE-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/lexer.l, sources/parser.y, sources/jq.test
provides: jq tokenization
consumes: interpreter executable boundary
depends: exec-003
acceptance: yes
instructions: |
Implement lexical scanning for literals, identifiers, fields, bindings, keywords, operators,
delimiters, comments, formats, and interpolation markers according to sources/lexer.l. Gate
with the PARSE-001 executing selector.
scope: target
## story parse-002
summary: Implement literals, escapes, and string interpolation.
type: service
kind: capability
phase: 2
implements: FEATURE-Strings-and-Interpolation-Parser.md
covers: PARSE-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/lexer.l, sources/parser.y, sources/jq.test
provides: JSON string literals, escapes, interpolation, format literals
consumes: jq tokenization
depends: parse-001
acceptance: yes
instructions: |
Parse JSON escapes, Unicode, formatted strings, and \(expression) interpolation with generator
multiplicity preserved. Gate with the PARSE-002 executing selector.
scope: target
## story parse-003
summary: Implement the jq filter expression grammar.
type: service
kind: capability
phase: 2
implements: FEATURE-Filter-Parser.md
covers: PARSE-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/lexer.l, sources/jq.test
provides: AST for pipes, commas, precedence, indexing, slices, arrays, objects, operators
consumes: jq tokenization
depends: parse-002
acceptance: yes
instructions: |
Implement expression parsing and precedence for pipes, commas, indexing, slicing, arrays,
objects, unary operators, binary operators, and optional expressions. Gate with the PARSE-003
executing selector.
scope: target
## story parse-004
summary: Implement declarations and control syntax parsing.
type: service
kind: capability
phase: 2
implements: FEATURE-Declaration-Parser.md
covers: PARSE-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/lexer.l, sources/jq.test
provides: declarations, modules grammar, conditionals, exceptions, reductions, labels, bindings
consumes: AST for filter expressions
depends: parse-003
acceptance: yes
instructions: |
Parse def, module/include grammar, conditionals, try/catch, reductions, foreach, labels,
bindings, destructuring, and required rejection cases without loading excluded module fixtures.
Gate with the PARSE-004 executing selector.
scope: target
## story core-001
summary: Implement stream-valued filter evaluation.
type: service
kind: capability
phase: 3
implements: FEATURE-Generator-Core.md
covers: CORE-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: ordered generator evaluation, empty, iteration, range
consumes: AST for filter expressions
depends: parse-004
acceptance: yes
instructions: |
Evaluate every filter as an ordered generator supporting zero, one, or many outputs, backtracking,
identity, iteration, range, and empty. Gate with the CORE-001 executing selector.
scope: target
## story core-002
summary: Implement composition and Cartesian evaluation.
type: service
kind: capability
phase: 3
implements: FEATURE-Composition.md
covers: CORE-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: pipe, comma, argument Cartesian products, collection, object construction
consumes: ordered generator evaluation
depends: core-001
acceptance: yes
instructions: |
Implement generator composition, Cartesian argument evaluation, array collection, object
construction, and multiplicity/order semantics. Gate with the CORE-002 executing selector.
scope: target
## story core-003
summary: Implement empty, runtime errors, optional evaluation, and try.
type: service
kind: capability
phase: 3
implements: FEATURE-Error-and-Optional-Evaluation.md
covers: CORE-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: empty, error, runtime failure, optional operator, try/catch
consumes: ordered generator evaluation
depends: core-002
acceptance: yes
instructions: |
Preserve errors, suppression, try/catch behavior, optional operators, and output emitted before
runtime failure. Gate with the CORE-003 executing selector.
scope: target
## story core-004
summary: Implement jq truthiness, equality, and ordering.
type: service
kind: capability
phase: 3
implements: FEATURE-Truthiness-and-Comparison.md
covers: CORE-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: truthiness, equality, inequality, type ordering, comparisons
consumes: ordered generator evaluation
depends: core-003
acceptance: yes
instructions: |
Implement false/null truthiness, strict jq equality, numeric equivalence, and total ordering
across jq value types. Gate with the CORE-004 executing selector.
scope: target
## story value-001
summary: Implement the jq value model and special numbers.
type: service
kind: capability
phase: 4
implements: FEATURE-Value-Model.md
covers: VALUE-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: null, booleans, numbers, strings, arrays, objects, NaN, infinities
consumes: truthiness, equality, and ordering
depends: core-004
acceptance: yes
instructions: |
Represent jq values using only the standard library, preserving required literal-number
behavior and supporting NaN and infinities. Gate with the VALUE-001 executing selector.
scope: target
## story value-002
summary: Implement field and index access.
type: service
kind: capability
phase: 4
implements: FEATURE-Accessors.md
covers: VALUE-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: object fields, array indices, optional access, negative indices
consumes: jq value model
depends: value-001
acceptance: yes
instructions: |
Implement object-field access, array indexing, missing values, optional access, and negative
indices with jq error semantics. Gate with the VALUE-002 executing selector.
scope: target
## story value-003
summary: Implement slices and collection iteration.
type: service
kind: capability
phase: 4
implements: FEATURE-Slices-and-Iteration.md
covers: VALUE-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: array/string slices, array/object iteration, fractional bounds
consumes: field and index access
depends: value-002
acceptance: yes
instructions: |
Implement array and string slices, array/object iteration, optional iteration, fractional and
out-of-range bounds. Gate with the VALUE-003 executing selector.
scope: target
## story value-004
summary: Implement type, length, numeric predicates, and math primitives.
type: service
kind: capability
phase: 4
implements: FEATURE-Type-and-Numeric-Builtins.md
covers: VALUE-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: type, length, utf8bytelength, numeric predicates, conversion, arithmetic math
consumes: jq value model, field and index access
depends: value-003
acceptance: yes
instructions: |
Implement type and length behavior, UTF-8 byte length, numeric predicates, tonumber,
tostring-related conversion, arithmetic primitives, and required math functions. Gate with the
VALUE-004 executing selector.
scope: target
## story flow-001
summary: Implement arithmetic and structural operators.
type: service
kind: capability
phase: 5
implements: FEATURE-Arithmetic-Operators.md
covers: FLOW-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: plus, minus, multiply, divide, modulo, negation, recursive merge, repetition
consumes: type and numeric builtins
depends: value-004
acceptance: yes
instructions: |
Implement numeric, array, string, and object arithmetic; recursive object merge; string
repetition and splitting; unary negation and division errors. Gate with the FLOW-001 selector.
scope: target
## story flow-002
summary: Implement boolean and alternative operators.
type: service
kind: capability
phase: 5
implements: FEATURE-Boolean-and-Alternative-Operators.md
covers: FLOW-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: and, or, not, defined-or, defined-or assignment
consumes: truthiness and generator evaluation
depends: flow-001
acceptance: yes
instructions: |
Implement boolean operators, not, //, and //= with jq generator filtering and short-circuit
behavior. Gate with the FLOW-002 executing selector.
scope: target
## story flow-003
summary: Implement conditionals and exception flow.
type: service
kind: capability
phase: 5
implements: FEATURE-Conditionals-and-Exceptions.md
covers: FLOW-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/jq-manual.txt, sources/jq.test
provides: if, elif, else, try, catch, optional branches
consumes: boolean and alternative operators
depends: flow-002
acceptance: yes
instructions: |
Implement branching over generator results, optional else behavior, and exception flow with
correct partial-output and backtracking semantics. Gate with the FLOW-003 executing selector.
scope: target
## story flow-004
summary: Implement lexical labels and breaks.
type: service
kind: capability
phase: 5
implements: FEATURE-Labels-and-Breaks.md
covers: FLOW-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/jq-manual.txt, sources/jq.test
provides: label and break
consumes: conditionals and exception flow
depends: flow-003
acceptance: yes
instructions: |
Implement lexically scoped labels and breaks that terminate only the matching generator
context, including invalid-label compile behavior. Gate with the FLOW-004 executing selector.
scope: target
## story flow-005
summary: Implement reductions and iteration controls.
type: service
kind: capability
phase: 5
implements: FEATURE-Reductions-and-Iteration-Control.md
covers: FLOW-005
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: reduce, foreach, limit, skip, first, last, nth, range
consumes: labels and breaks, generator evaluation
depends: flow-004
acceptance: yes
instructions: |
Implement reduce and foreach state transitions plus limit, skip, first, last, nth, and
generator-preserving range behavior. Gate with the FLOW-005 executing selector.
scope: target
## story flow-006
summary: Implement recursive generators.
type: service
kind: capability
phase: 5
implements: FEATURE-Recursive-Generators.md
covers: FLOW-006
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: while, until, repeat, recurse, recursive descent
consumes: reductions and iteration controls
depends: flow-005
acceptance: yes
instructions: |
Implement while, until, repeat, recurse, recursive descent, termination, and generator
ordering without incorrect recursion cutoffs. Gate with the FLOW-006 executing selector.
scope: target
## story func-001
summary: Implement lexical variable bindings.
type: service
kind: capability
phase: 6
implements: FEATURE-Variable-Bindings.md
covers: FUNC-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/jq-manual.txt, sources/jq.test
provides: as bindings, lexical scope, shadowing, keyword identifiers
consumes: recursive generators
depends: flow-006
acceptance: yes
instructions: |
Implement as bindings, nested lexical scope, shadowing, keyword names, and value lifetime.
Gate with the FUNC-001 executing selector.
scope: target
## story func-002
summary: Implement filter and value function parameters.
type: service
kind: capability
phase: 6
implements: FEATURE-Function-Parameters.md
covers: FUNC-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/jq-manual.txt, sources/jq.test
provides: filter parameters, value parameters, multiple arities, Cartesian arguments
consumes: lexical variable bindings
depends: func-001
acceptance: yes
instructions: |
Implement user-defined filter and value parameters, multiple arities, closures, callback
evaluation, and Cartesian argument streams. Gate with the FUNC-002 executing selector.
scope: target
## story func-003
summary: Implement function definitions, scope, and recursion.
type: service
kind: capability
phase: 6
implements: FEATURE-Function-Definitions.md
covers: FUNC-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/jq-manual.txt, sources/jq.test
provides: def, function redefinition, recursion, forward and self references
consumes: function parameters
depends: func-002
acceptance: yes
instructions: |
Implement definitions, lexical function scope, arity-specific redefinition, recursion, and
self/forward references as specified. Gate with the FUNC-003 executing selector.
scope: target
## story func-004
summary: Implement destructuring patterns and alternatives.
type: service
kind: capability
phase: 6
implements: FEATURE-Destructuring.md
covers: FUNC-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/parser.y, sources/jq-manual.txt, sources/jq.test
provides: array/object patterns, missing bindings, ?// alternatives
consumes: function definitions and lexical bindings
depends: func-003
acceptance: yes
instructions: |
Implement array/object destructuring, missing bindings, ?// alternatives, fallback binding
behavior, and error-driven alternative selection. Gate with the FUNC-004 executing selector.
scope: target
## story path-001
summary: Implement path discovery and projection.
type: service
kind: capability
phase: 7
implements: FEATURE-Path-Discovery.md
covers: PATH-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: path, paths, pick, path projections
consumes: destructuring and accessors
depends: func-004
acceptance: yes
instructions: |
Implement exact and iterated path discovery, paths filtering, and pick projections while
preserving path ordering and invalid-path errors. Gate with the PATH-001 executing selector.
scope: target
## story path-002
summary: Implement path access and mutation primitives.
type: service
kind: capability
phase: 7
implements: FEATURE-Path-Primitives.md
covers: PATH-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: getpath, setpath, delpaths
consumes: path discovery and projection
depends: path-001
acceptance: yes
instructions: |
Implement nested path reads, creation and replacement, deletion, array expansion, invalid path
handling, and depth limits for getpath, setpath, and delpaths. Gate with PATH-002.
scope: target
## story path-003
summary: Implement deletion and assignment operators.
type: service
kind: capability
phase: 7
implements: FEATURE-Assignment-Operators.md
covers: PATH-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: del, =, |=, arithmetic assignments, defined-or assignment
consumes: getpath, setpath, delpaths
depends: path-002
acceptance: yes
instructions: |
Implement immutable deletion, plain and update assignment, arithmetic assignment, multi-path
updates, and empty-update deletion semantics. Gate with the PATH-003 executing selector.
scope: target
## story path-004
summary: Implement complex assignment edge cases.
type: service
kind: capability
phase: 7
implements: FEATURE-Complex-Assignments.md
covers: PATH-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: iterated assignment edge cases, array expansion, invalid and deep paths
consumes: deletion and assignment operators
depends: path-003
acceptance: yes
instructions: |
Handle iterated paths, empty updates, array expansion, invalid paths, negative and NaN indices,
and path/depth limits. Gate with the PATH-004 executing selector.
scope: target
## story data-001
summary: Implement collection transformation builtins.
type: service
kind: capability
phase: 8
implements: FEATURE-Collection-Transforms.md
covers: DATA-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/builtin.jq, sources/jq-manual.txt, sources/jq.test
provides: map, map_values, select, add, flatten, transpose, combinations, walk
consumes: assignment operators, generator evaluation
depends: path-004
acceptance: yes
instructions: |
Implement collection transformation builtins and their generator, empty, recursion, and
mutation semantics. Gate with the DATA-001 executing selector.
scope: target
## story data-002
summary: Implement sorting, grouping, and extrema builtins.
type: service
kind: capability
phase: 8
implements: FEATURE-Sorting-and-Grouping.md
covers: DATA-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: sort, sort_by, group_by, unique, unique_by, min, max, keyed extrema
consumes: jq comparison and generator semantics
depends: data-001
acceptance: yes
instructions: |
Implement sorting and grouping by jq ordering, stable keyed projections, uniqueness, and
minimum/maximum variants. Gate with the DATA-002 executing selector.
scope: target
## story data-003
summary: Implement object-entry and containment builtins.
type: service
kind: capability
phase: 8
implements: FEATURE-Object-and-Containment-Builtins.md
covers: DATA-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: keys, keys_unsorted, has, in, inside, contains, to_entries, from_entries, with_entries
consumes: jq value model and comparison semantics
depends: data-002
acceptance: yes
instructions: |
Implement object/array key utilities, containment relations, entry conversion, and entry
transformations with jq ordering and structural equality. Gate with DATA-003.
scope: target
## story data-004
summary: Implement index and membership utilities.
type: service
kind: capability
phase: 8
implements: FEATURE-Index-and-Membership.md
covers: DATA-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/builtin.jq, sources/jq-manual.txt, sources/jq.test
provides: indices, index, rindex, bsearch, all, any, isempty, IN
consumes: collection and comparison builtins
depends: data-003
acceptance: yes
instructions: |
Implement string/array indexing, binary search, all/any short-circuiting, isempty, and SQL-style
IN utilities with generator arguments. Gate with the DATA-004 executing selector.
scope: target
## story text-001
summary: Implement string manipulation builtins.
type: service
kind: capability
phase: 9
implements: FEATURE-String-Builtins.md
covers: TEXT-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: trimming, prefixes, suffixes, case conversion, explode, implode, split, join
consumes: jq value model and generator evaluation
depends: data-004
acceptance: yes
instructions: |
Implement trimming, prefix/suffix operations, ASCII case conversion, codepoint
explode/implode, split, join, and interpolation-compatible string behavior. Gate with TEXT-001.
scope: target
## story text-002
summary: Implement JSON and output format filters.
type: service
kind: capability
phase: 9
implements: FEATURE-Output-Formats.md
covers: TEXT-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: tostring, tojson, fromjson, @text, @json, @html, @uri, @urid, @csv, @tsv, @sh, @base64, @base64d
consumes: string manipulation builtins and JSON serializer
depends: text-001
acceptance: yes
instructions: |
Implement JSON conversion and all required format filters, escaping, encoding, decoding, and
interpolation behavior. Gate with the TEXT-002 executing selector.
scope: target
## story text-003
summary: Implement regular-expression filters.
type: service
kind: capability
phase: 9
implements: FEATURE-Regular-Expressions.md
covers: TEXT-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: test, match, capture, scan, splits, regex split, sub, gsub
consumes: string manipulation builtins
depends: text-002
acceptance: yes
instructions: |
Implement the standard-library regex surface required by the corpus, flags, captures, offsets,
streams, splitting, substitution, and global substitution. Gate with TEXT-003.
scope: target
## story text-004
summary: Implement date and time filters.
type: service
kind: capability
phase: 9
implements: FEATURE-Date-and-Time.md
covers: TEXT-004
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: fromdateiso8601, todateiso8601, strptime, strftime, gmtime, localtime, mktime
consumes: jq string and numeric values
depends: text-003
acceptance: yes
instructions: |
Implement UTC ISO date conversion and required low-level date/time filters using the Python
standard library, including supplied invalid-input behavior. Gate with TEXT-004.
scope: target
## story io-001
summary: Implement input stream controls.
type: service
kind: capability
phase: 10
implements: FEATURE-Input-Streams.md
covers: IO-001
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/jq.test
provides: input, inputs, input_filename, input_line_number
consumes: executable JSON input boundary
depends: text-004
acceptance: yes
instructions: |
Implement input and inputs over the fixed stdin interface and the available filename and line
number metadata. Gate with the IO-001 executing selector.
scope: target
## story io-002
summary: Implement diagnostics and stderr output filters.
type: service
kind: capability
phase: 10
implements: FEATURE-Diagnostics.md
covers: IO-002
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: debug, stderr, halt_error
consumes: process exit and diagnostic behavior
depends: io-001
acceptance: yes
instructions: |
Implement debug, stderr, and halt_error channel behavior, preserving stdout values and exit
status semantics. Gate with the IO-002 executing selector.
scope: target
## story io-003
summary: Implement streaming transformations.
type: service
kind: capability
phase: 10
implements: FEATURE-Streaming.md
covers: IO-003
stack: common.md, python.md
context: ARCHITECTURE.md, sources/jq-manual.txt, sources/builtin.jq, sources/jq.test
provides: tostream, fromstream, truncate_stream
consumes: generator evaluation and input stream controls
depends: io-002
acceptance: yes
instructions: |
Implement jq streaming value representations, truncation, reconstruction, and round-trip
behavior required by the corpus. Gate with the IO-003 executing selector.
scope: target
## story conf-001
summary: Stage and validate immutable conformance assets.
type: foundational
kind: test harness
phase: 1
implements: FEATURE-Conformance-Assets.md
covers: CONF-001
stack: common.md, python.md
context: sources/run_conformance.py, sources/jq.test, sources/exclusions.txt, sources/full_test.sh, sources/jq-manual.txt, sources/parser.y, sources/lexer.l, sources/builtin.jq
provides: staged conformance corpus, exclusions, runner, scoring script
consumes: none
depends: architecture
acceptance: yes
instructions: |
Stage all required sources verbatim under sources/. Validate the runner's corpus parser and
exclusion application directly in Python, including complete and mutually consistent assets.
Do not modify any supplied source.
scope: both
## story conf-002
summary: Provide scoped conformance verification for implementation slices.
type: service
kind: test harness
phase: 10
implements: FEATURE-Scoped-Conformance.md
covers: CONF-002
stack: common.md, python.md
context: sources/run_conformance.py, sources/jq.test, sources/exclusions.txt
provides: executing scoped conformance gates
consumes: ./jq -c program execution
depends: io-003, conf-001
acceptance: yes
instructions: |
Ensure each implementation story invokes the supplied runner with JQ supplied through the
inherited environment and a selector that executes a non-empty slice of its owned constructs.
Scoped checks must assert parsed failure/error tallies and exit status, never enumerate-only modes.
scope: target
## story conf-003
summary: Pass the complete jq conformance corpus.
type: feature
kind: test harness
phase: 11
implements: FEATURE-Complete-Conformance.md
covers: CONF-003
accepts: st-001
stack: common.md, python.md
context: sources/full_test.sh, sources/run_conformance.py, sources/jq.test, sources/exclusions.txt
provides: complete conformance release verification
consumes: ./jq -c program execution
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
instructions: |
Run the supplied sh sources/full_test.sh as the sole terminal whole-corpus acceptance. Print
captured stdout and stderr for diagnosis and assert only the completed suite's successful exit
status, with zero failed or errored cases as reported by the authoritative runner.
scope: target
=== END ARTIFACT ===
=== BEGIN ARTIFACT DECISIONS.json ===
[
{
"id": "Q-001",
"type": "choice",
"severity": "material",
"blueprint": "ARCHITECTURE.md",
"story": "architecture",
"title": "Interpreter implementation structure",
"description": "The project needs a standalone jq interpreter while the sources leave the internal module structure open.",
"options": [
{
"value": "single-executable",
"label": "Single executable script"
},
{
"value": "modular-python",
"label": "Modular Python implementation"
}
],
"system_choice": "modular-python"
},
{
"id": "Q-002",
"type": "choice",
"severity": "material",
"blueprint": "ARCHITECTURE.md",
"story": "architecture",
"title": "Numeric representation",
"description": "The corpus requires jq-compatible numeric behavior, including special values and large literals, while runtime dependencies are restricted to the standard library.",
"options": [
{
"value": "float-only",
"label": "Native floating point"
},
{
"value": "literal-aware-standard-library",
"label": "Literal-aware numeric model"
}
],
"system_choice": "literal-aware-standard-library"
}
]
=== END ARTIFACT ===Run artifact