=== schema-newer
config: error: <T>/err-schema-newer/harness.config.yaml:schema: config schema 2 is newer than this engine understands (≤1) — upgrade the engine (harness upgrade)
cfg_load rc=2
schema=[2] name=[n] gates=[0] file_keys:
schema	2
project.name	n
--- CFG_* that differ from the defaults
CFG_PROJECT_NAME=n
CFG_SCHEMA=2
CFG_SEEN_PATHS=$'schema\t2\nproject.name\tn\n'
--- packs: [] unresolved: []
=== schema-older
config: warning: <T>/err-schema-older/harness.config.yaml: config schema 0 is older than the engine's (1) — run `harness upgrade --config` to apply migrations
cfg_load rc=0
schema=[0] name=[o] gates=[0] file_keys:
schema	0
project.name	o
--- CFG_* that differ from the defaults
CFG_PROJECT_NAME=o
CFG_SCHEMA=0
CFG_SEEN_PATHS=$'schema\t0\nproject.name\to\n'
--- packs: [] unresolved: []
=== schema-text
config: error: <T>/err-schema-text/harness.config.yaml:schema: schema must be an integer (got 'one')
cfg_load rc=2
schema=[one] name=[] gates=[0] file_keys:
schema	one
--- CFG_* that differ from the defaults
CFG_SCHEMA=one
CFG_SEEN_PATHS=$'schema\tone\n'
--- packs: [] unresolved: []
=== schema-quoted
cfg_load rc=0
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== schema-null
config: warning: <T>/err-schema-null/harness.config.yaml: config schema  is older than the engine's (1) — run `harness upgrade --config` to apply migrations
cfg_load rc=0
schema=[] name=[] gates=[0] file_keys:
schema	
--- CFG_* that differ from the defaults
CFG_SCHEMA=''
CFG_SEEN_PATHS=$'schema\t\n'
--- packs: [] unresolved: []
=== unknown-section
config: warning: <T>/err-unknown-section/harness.config.yaml:2: unknown section 'widgets' (ignored keys still load)
config: warning: <T>/err-unknown-section/harness.config.yaml:5: unknown section 'more' (ignored keys still load)
cfg_load rc=0
schema=[1] name=[] gates=[0] file_keys:
schema	1
widgets.a	1
widgets	2
more.k	v
--- CFG_* that differ from the defaults
CFG_MORE_K=v
CFG_SEEN_PATHS=$'schema\t1\nwidgets.a\t1\nwidgets\t2\nmore.k\tv\n'
CFG_WIDGETS=2
CFG_WIDGETS_A=1
--- packs: [] unresolved: []
=== inline-map-malformed
config: error: <T>/err-inline-map-malformed/harness.config.yaml:2: malformed inline map entry ' bad '
cfg_load rc=2
schema=[1] name=[x] gates=[0] file_keys:
schema	1
project.name	x
--- CFG_* that differ from the defaults
CFG_PROJECT_NAME=x
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tx\n'
--- packs: [] unresolved: []
=== gate-field-first
config: error: <T>/err-gate-field-first/harness.config.yaml:3: gate field before any '- id:' entry
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_GATES_DECLARED=true
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== gate-entry-malformed
config: error: <T>/err-gate-entry-malformed/harness.config.yaml:3: malformed gate entry 'just words'
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_GATES_DECLARED=true
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== indented-no-section
config: error: <T>/err-indented-no-section/harness.config.yaml:1: indented key with no open section
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:

--- CFG_* that differ from the defaults
--- packs: [] unresolved: []
=== deep-no-submap
config: error: <T>/err-deep-no-submap/harness.config.yaml:3: deep key with no open sub-map
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== unparseable
config: error: <T>/err-unparseable/harness.config.yaml:3: unparseable line '   three: x' (constrained YAML subset — see lib/config.sh header)
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== tab-line
config: error: <T>/err-tab-line/harness.config.yaml:2: unparseable line '	project: x' (constrained YAML subset — see lib/config.sh header)
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== profile-list-not-map
config: error: <T>/err-profile-list-not-map/harness.config.yaml:4: profile list entries must be inline maps ('- { key: value }'), got 'glob'
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
--- CFG_* that differ from the defaults
CFG_SEEN_PATHS=$'schema\t1\n'
--- packs: [] unresolved: []
=== profile-entry-malformed
config: error: <T>/err-profile-entry-malformed/harness.config.yaml:4: malformed inline map entry ' bad '
cfg_load rc=2
schema=[1] name=[] gates=[0] file_keys:
schema	1
profile.path_suites[].glob	a/**
--- CFG_* that differ from the defaults
CFG_PROFILE_PATH_SUITES_0_GLOB=a/\*\*
CFG_SEEN_PATHS=$'schema\t1\nprofile.path_suites[].glob\ta/**\n'
--- packs: [] unresolved: []
=== comments-and-quotes
cfg_load rc=0
schema=[1] name=[it''s] gates=[0] file_keys:
schema	1
project.name	it''s
project.description	"a
project.default_branch	dev#1
paths.state	s, t
paths.stories	[a, b]
--- CFG_* that differ from the defaults
CFG_PATHS_STATE=s\,\ t
CFG_PATHS_STORIES=$'a\nb'
CFG_PROJECT_DEFAULT_BRANCH=dev#1
CFG_PROJECT_DESCRIPTION=\"a
CFG_PROJECT_NAME=it\'\'s
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tit\'\'s\nproject.description\t"a\nproject.default_branch\tdev#1\npaths.state\ts, t\npaths.stories\t[a, b]\n'
--- packs: [] unresolved: []
=== lists
cfg_load rc=0
schema=[1] name=[] gates=[0] file_keys:
schema	1
stack.languages	[ a , "b", 'c', null, , d ]
stack.workspace_roots	[]
stack.layout	
--- CFG_* that differ from the defaults
CFG_SEEN_PATHS=$'schema\t1\nstack.languages\t[ a , "b", \'c\', null, , d ]\nstack.workspace_roots\t[]\nstack.layout\t\n'
CFG_STACK_LANGUAGES=$'a\nb\nc\nd'
CFG_STACK_LAYOUT=''
CFG_STACK_WORKSPACE_ROOTS=''
--- packs: [] unresolved: []
=== gates-mixed
cfg_load rc=0
schema=[1] name=[] gates=[3] file_keys:
schema	1
gates[].id	a
gates[].run	x, y
gates[].phase	post_impl
gates[].id	b
gates[].run	z
gates[].id	a
gates[].when	later
--- CFG_* that differ from the defaults
CFG_GATES_DECLARED=true
CFG_GATE_0_ID=a
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=x\,\ y
CFG_GATE_1_ID=b
CFG_GATE_1_RUN=z
CFG_GATE_2_ID=a
CFG_GATE_2_WHEN=later
CFG_GATE_COUNT=3
CFG_SEEN_PATHS=$'schema\t1\ngates[].id\ta\ngates[].run\tx, y\ngates[].phase\tpost_impl\ngates[].id\tb\ngates[].run\tz\ngates[].id\ta\ngates[].when\tlater\n'
--- packs: [] unresolved: []
=== profile-shapes
cfg_load rc=0
schema=[1] name=[] gates=[0] file_keys:
schema	1
profile.suites.one.run	r, 1
profile.suites.one.counts	junit
profile.suites.two.run	r2
profile.suites.one.counts	tap
profile.path_suites[].glob	x/**
profile.path_suites[].suites	[one, two]
profile.path_suites[].glob	it's
profile.path_suites[].suites	[two]
profile.risk.L1	[a]
--- CFG_* that differ from the defaults
CFG_PROFILE_PATH_SUITES_0_GLOB=x/\*\*
CFG_PROFILE_PATH_SUITES_0_SUITES=$'one\ntwo'
CFG_PROFILE_PATH_SUITES_1_GLOB=it\'s
CFG_PROFILE_PATH_SUITES_1_SUITES=two
CFG_PROFILE_PATH_SUITES_COUNT=2
CFG_PROFILE_RISK_L1=a
CFG_PROFILE_SUITES=$'one\ntwo'
CFG_PROFILE_SUITES_ONE_COUNTS=tap
CFG_PROFILE_SUITES_ONE_RUN=r\,\ 1
CFG_PROFILE_SUITES_TWO_RUN=r2
CFG_SEEN_PATHS=$'schema\t1\nprofile.suites.one.run\tr, 1\nprofile.suites.one.counts\tjunit\nprofile.suites.two.run\tr2\nprofile.suites.one.counts\ttap\nprofile.path_suites[].glob\tx/**\nprofile.path_suites[].suites\t[one, two]\nprofile.path_suites[].glob\tit\'s\nprofile.path_suites[].suites\t[two]\nprofile.risk.L1\t[a]\n'
--- packs: [] unresolved: []
=== unresolved-pack
cfg_load rc=0
schema=[1] name=[] gates=[0] file_keys:
schema	1
profile.extends	[stack-packs/nope, stack-python-uv, ../escape]
--- CFG_* that differ from the defaults
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=$'pytest\tpytest\nruff\truff\nmypy\tmypy'
CFG_PACKS_RESOLVED=$'stack-python-uv\tstack-python-uv'
CFG_PACKS_UNRESOLVED=$'stack-packs/nope\n../escape'
CFG_PACK_SEEN_PATHS=$'gates[].id\tpytest\tpack:stack-python-uv\ngates[].run\tuv run --frozen pytest -q\tpack:stack-python-uv\ngates[].phase\tpost_impl\tpack:stack-python-uv\ngates[].when\t*.py,*pyproject.toml,*uv.lock,*pytest.ini\tpack:stack-python-uv\ngates[].heavy\ttrue\tpack:stack-python-uv\ngates[].requires\tpytest\tpack:stack-python-uv\ngates[].id\truff\tpack:stack-python-uv\ngates[].run\tuv run --frozen ruff check .\tpack:stack-python-uv\ngates[].phase\tpost_impl\tpack:stack-python-uv\ngates[].when\t*.py,*pyproject.toml,*ruff.toml\tpack:stack-python-uv\ngates[].requires\truff\tpack:stack-python-uv\ngates[].id\tmypy\tpack:stack-python-uv\ngates[].run\tuv run --frozen mypy .\tpack:stack-python-uv\ngates[].phase\tpost_impl\tpack:stack-python-uv\ngates[].when\t*.py,*.pyi,*pyproject.toml,*mypy.ini\tpack:stack-python-uv\ngates[].requires\tmypy\tpack:stack-python-uv\nprofile.suites.python.run\tuv run --frozen pytest -q\tpack:stack-python-uv\nprofile.suites.python.counts\tpytest\tpack:stack-python-uv\n'
CFG_PROFILE_EXTENDS=$'stack-packs/nope\nstack-python-uv\n../escape'
CFG_PROFILE_SUITES=python
CFG_PROFILE_SUITES_PYTHON_COUNTS=pytest
CFG_PROFILE_SUITES_PYTHON_RUN=uv\ run\ --frozen\ pytest\ -q
CFG_SEEN_PATHS=$'schema\t1\nprofile.extends\t[stack-packs/nope, stack-python-uv, ../escape]\n'
--- packs: [stack-python-uv	stack-python-uv] unresolved: [stack-packs/nope
../escape]
=== pack-gate-override
cfg_load rc=0
schema=[1] name=[] gates=[2] file_keys:
schema	1
profile.extends	[stack-packs/python-uv]
gates[].id	pytest
gates[].requires	
gates[].run	custom
gates[].id	extra
gates[].run	e
--- CFG_* that differ from the defaults
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=$'ruff\truff\nmypy\tmypy'
CFG_GATE_0_HEAVY=true
CFG_GATE_0_ID=pytest
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_REQUIRES=''
CFG_GATE_0_RUN=custom
CFG_GATE_0_WHEN=\*.py\,\*pyproject.toml\,\*uv.lock\,\*pytest.ini
CFG_GATE_1_ID=extra
CFG_GATE_1_RUN=e
CFG_GATE_COUNT=2
CFG_PACKS_RESOLVED=$'stack-packs/python-uv\tstack-python-uv'
CFG_PACK_SEEN_PATHS=$'gates[].id\tpytest\tpack:stack-python-uv\ngates[].run\tuv run --frozen pytest -q\tpack:stack-python-uv\ngates[].phase\tpost_impl\tpack:stack-python-uv\ngates[].when\t*.py,*pyproject.toml,*uv.lock,*pytest.ini\tpack:stack-python-uv\ngates[].heavy\ttrue\tpack:stack-python-uv\ngates[].requires\tpytest\tpack:stack-python-uv\ngates[].id\truff\tpack:stack-python-uv\ngates[].run\tuv run --frozen ruff check .\tpack:stack-python-uv\ngates[].phase\tpost_impl\tpack:stack-python-uv\ngates[].when\t*.py,*pyproject.toml,*ruff.toml\tpack:stack-python-uv\ngates[].requires\truff\tpack:stack-python-uv\ngates[].id\tmypy\tpack:stack-python-uv\ngates[].run\tuv run --frozen mypy .\tpack:stack-python-uv\ngates[].phase\tpost_impl\tpack:stack-python-uv\ngates[].when\t*.py,*.pyi,*pyproject.toml,*mypy.ini\tpack:stack-python-uv\ngates[].requires\tmypy\tpack:stack-python-uv\nprofile.suites.python.run\tuv run --frozen pytest -q\tpack:stack-python-uv\nprofile.suites.python.counts\tpytest\tpack:stack-python-uv\n'
CFG_PROFILE_EXTENDS=stack-packs/python-uv
CFG_PROFILE_SUITES=python
CFG_PROFILE_SUITES_PYTHON_COUNTS=pytest
CFG_PROFILE_SUITES_PYTHON_RUN=uv\ run\ --frozen\ pytest\ -q
CFG_SEEN_PATHS=$'schema\t1\nprofile.extends\t[stack-packs/python-uv]\ngates[].id\tpytest\ngates[].requires\t\ngates[].run\tcustom\ngates[].id\textra\ngates[].run\te\n'
--- packs: [stack-packs/python-uv	stack-python-uv] unresolved: []
