=== no config file (built-in defaults)
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=false
CFG_GATES_UNMET=''
CFG_GATE_COUNT=0
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=''
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=''
CFG_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_PATH_SUITES_COUNT=0
CFG_PROFILE_SUITES=''
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=''
CFG_PROJECT_NAME=''
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=''
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[<dflt>]
project.description=[<dflt>]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[<dflt>]
stack.layout=[<dflt>]
stack.package_manager=[<dflt>]
stack.scoped_test_template=[<dflt>]
stack.workspace_roots=[<dflt>]
stack.lane_bootstrap=[<dflt>]
stack.lane_refresh=[<dflt>]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[<dflt>]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[<dflt>]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[<dflt>]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[<dflt>]
profile.live_stack.drivers=[<dflt>]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys

--- cfg_pack_keys

--- cfg_packs_resolved

--- cfg_packs_unresolved

--- gates (0)
--- profile
suites:

path_suites count=0
path_suites 0 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
--- pack compliance
--- pack standards
=== examples/brownfield-python
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=''
CFG_GATE_0_ID=test
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=bash\ scripts/test.sh
CFG_GATE_COUNT=1
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=''
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=''
CFG_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_PATH_SUITES_COUNT=0
CFG_PROFILE_SUITES=''
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=Example\ brownfield\ python\ project\ driven\ by\ the\ engine
CFG_PROJECT_NAME=brownfield-python
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tbrownfield-python\nproject.description\tExample brownfield python project driven by the engine\nproject.default_branch\tmain\nstack.languages\t[python]\nstack.layout\tsingle\nrunners.implementer.bin\tclaude\nrunners.implementer.timeout_seconds\t1800\ngates[].id\ttest\ngates[].run\tbash scripts/test.sh\ngates[].phase\tpost_impl\nstandards.fragments\t[harness/standards/house-rules.md]\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STACK_LANGUAGES=python
CFG_STACK_LAYOUT=single
CFG_STANDARDS_FRAGMENTS=harness/standards/house-rules.md
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[brownfield-python]
project.description=[Example brownfield python project driven by the engine]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[python]
stack.layout=[single]
stack.package_manager=[<dflt>]
stack.scoped_test_template=[<dflt>]
stack.workspace_roots=[<dflt>]
stack.lane_bootstrap=[<dflt>]
stack.lane_refresh=[<dflt>]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[<dflt>]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[harness/standards/house-rules.md]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[<dflt>]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[<dflt>]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[<dflt>]
profile.live_stack.drivers=[<dflt>]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	brownfield-python
project.description	Example brownfield python project driven by the engine
project.default_branch	main
stack.languages	[python]
stack.layout	single
runners.implementer.bin	claude
runners.implementer.timeout_seconds	1800
gates[].id	test
gates[].run	bash scripts/test.sh
gates[].phase	post_impl
standards.fragments	[harness/standards/house-rules.md]

--- cfg_pack_keys

--- cfg_packs_resolved

--- cfg_packs_unresolved

--- gates (1)
gate 0 id=[test]
gate 0 run=[bash scripts/test.sh]
gate 0 phase=[post_impl]
gate 0 when=[<dflt>]
gate 0 scope=[<dflt>]
gate 0 heavy=[<dflt>]
gate 0 requires=[<dflt>]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
--- profile
suites:

path_suites count=0
path_suites 0 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
--- pack compliance
--- pack standards
=== examples/greenfield-node
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=''
CFG_GATE_0_ID=test
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=npm\ test
CFG_GATE_COUNT=1
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=''
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=''
CFG_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_PATH_SUITES_COUNT=0
CFG_PROFILE_SUITES=''
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=Example\ greenfield\ node\ project\ driven\ by\ the\ engine
CFG_PROJECT_NAME=greenfield-node
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tgreenfield-node\nproject.description\tExample greenfield node project driven by the engine\nproject.default_branch\tmain\nstack.languages\t[node]\nstack.package_manager\tnpm\nstack.layout\tsingle\nrunners.implementer.bin\tclaude\nrunners.implementer.timeout_seconds\t1800\ngates[].id\ttest\ngates[].run\tnpm test\ngates[].phase\tpost_impl\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STACK_LANGUAGES=node
CFG_STACK_LAYOUT=single
CFG_STACK_PACKAGE_MANAGER=npm
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[greenfield-node]
project.description=[Example greenfield node project driven by the engine]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[node]
stack.layout=[single]
stack.package_manager=[npm]
stack.scoped_test_template=[<dflt>]
stack.workspace_roots=[<dflt>]
stack.lane_bootstrap=[<dflt>]
stack.lane_refresh=[<dflt>]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[<dflt>]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[<dflt>]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[<dflt>]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[<dflt>]
profile.live_stack.drivers=[<dflt>]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	greenfield-node
project.description	Example greenfield node project driven by the engine
project.default_branch	main
stack.languages	[node]
stack.package_manager	npm
stack.layout	single
runners.implementer.bin	claude
runners.implementer.timeout_seconds	1800
gates[].id	test
gates[].run	npm test
gates[].phase	post_impl

--- cfg_pack_keys

--- cfg_packs_resolved

--- cfg_packs_unresolved

--- gates (1)
gate 0 id=[test]
gate 0 run=[npm test]
gate 0 phase=[post_impl]
gate 0 when=[<dflt>]
gate 0 scope=[<dflt>]
gate 0 heavy=[<dflt>]
gate 0 requires=[<dflt>]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
--- profile
suites:

path_suites count=0
path_suites 0 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
--- pack compliance
--- pack standards
=== examples/laravel-vue
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=$'vue-tsc\tvue-tsc\nvitest\tvitest\neslint\teslint'
CFG_GATE_0_ID=test
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=php\ artisan\ test
CFG_GATE_1_ID=pint
CFG_GATE_1_PHASE=post_impl
CFG_GATE_1_RUN=git\ ls-files\ -z\ -co\ --exclude-standard\ --\ \"\*.php\"\ artisan\ \|\ xargs\ -0\ php\ -l
CFG_GATE_1_WHEN=app/\*\*\,bootstrap/\*\*\,config/\*\*\,database/\*\*\,routes/\*\*\,tests/\*\*
CFG_GATE_2_ID=composer-audit
CFG_GATE_2_PHASE=post_impl
CFG_GATE_2_RUN=composer\ audit\ --locked\ --no-interaction
CFG_GATE_2_WHEN=composer.lock
CFG_GATE_COUNT=3
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_FULL_TEST_CMD=''
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=$'stack-packs/laravel\tstack-laravel\nstack-packs/vue-ts\tstack-vue-ts'
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=$'stack.package_manager\tcomposer\tpack:stack-laravel\nstack.lane_bootstrap\tcomposer install --no-interaction --prefer-dist --no-progress\tpack:stack-laravel\nstack.lane_refresh\tcomposer install --no-interaction --prefer-dist --no-progress\tpack:stack-laravel\nstack.lane_lockfiles\tcomposer.lock\tpack:stack-laravel\nstack.integration_sync\tcomposer install --no-interaction --prefer-dist --no-progress\tpack:stack-laravel\ngates[].id\ttest\tpack:stack-laravel\ngates[].run\tphp artisan test\tpack:stack-laravel\ngates[].phase\tpost_impl\tpack:stack-laravel\ngates[].id\tpint\tpack:stack-laravel\ngates[].run\tphp vendor/bin/pint --test\tpack:stack-laravel\ngates[].phase\tpost_impl\tpack:stack-laravel\ngates[].when\tapp/**,bootstrap/**,config/**,database/**,routes/**,tests/**\tpack:stack-laravel\ngates[].id\tcomposer-audit\tpack:stack-laravel\ngates[].run\tcomposer audit --locked --no-interaction\tpack:stack-laravel\ngates[].phase\tpost_impl\tpack:stack-laravel\ngates[].when\tcomposer.lock\tpack:stack-laravel\nprofile.suites.laravel-unit.run\tphp artisan test --testsuite=Unit --log-junit=$EVIDENCE/laravel-unit.xml\tpack:stack-laravel\nprofile.suites.laravel-unit.counts\tphpunit-junit\tpack:stack-laravel\nprofile.suites.laravel-feature.run\tphp artisan test --testsuite=Feature --log-junit=$EVIDENCE/laravel-feature.xml\tpack:stack-laravel\nprofile.suites.laravel-feature.counts\tphpunit-junit\tpack:stack-laravel\nprofile.path_suites[].glob\tapp/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-unit, laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\troutes/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\tdatabase/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\tconfig/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\ttests/Unit/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-unit]\tpack:stack-laravel\nprofile.path_suites[].glob\ttests/Feature/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.risk.L3\t[\'database/migrations/**\', \'app/Policies/**\', \'app/Http/Middleware/**\', \'config/auth.php\']\tpack:stack-laravel\nprofile.risk.L2\t[\'routes/api.php\', \'app/Http/Controllers/**\', \'app/GraphQL/**\', \'graphql/**\', \'composer.lock\']\tpack:stack-laravel\nprofile.live_stack.up\t./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed --force\tpack:stack-laravel\nprofile.live_stack.probe\tcurl -fsS http://localhost/up\tpack:stack-laravel\nprofile.live_stack.down\t./vendor/bin/sail down -v\tpack:stack-laravel\nprofile.live_stack.drivers\t[\'vendor/bin/sail\', \'artisan dusk\']\tpack:stack-laravel\nnightly.full_test_cmd\tphp artisan test\tpack:stack-laravel\ngates[].id\tvue-tsc\tpack:stack-vue-ts\ngates[].run\tnpx --no -- vue-tsc --noEmit\tpack:stack-vue-ts\ngates[].phase\tpost_impl\tpack:stack-vue-ts\ngates[].when\t*.vue,*.ts,*.tsx,*.mts,*tsconfig*.json,*package.json\tpack:stack-vue-ts\ngates[].requires\tvue-tsc\tpack:stack-vue-ts\ngates[].id\tvitest\tpack:stack-vue-ts\ngates[].run\tnpx --no -- vitest run\tpack:stack-vue-ts\ngates[].phase\tpost_impl\tpack:stack-vue-ts\ngates[].when\t*.vue,*.ts,*.tsx,*.js,*.mjs,*.mts,*vite.config.*,*vitest.config.*,*package.json\tpack:stack-vue-ts\ngates[].heavy\ttrue\tpack:stack-vue-ts\ngates[].requires\tvitest\tpack:stack-vue-ts\ngates[].id\teslint\tpack:stack-vue-ts\ngates[].run\tnpx --no -- eslint .\tpack:stack-vue-ts\ngates[].phase\tpost_impl\tpack:stack-vue-ts\ngates[].when\t*.vue,*.ts,*.tsx,*.js,*.mjs,*eslint.config.*,*.eslintrc*\tpack:stack-vue-ts\ngates[].requires\teslint\tpack:stack-vue-ts\nprofile.suites.vue.run\tnpx --no -- vitest run\tpack:stack-vue-ts\nprofile.suites.vue.counts\tvitest\tpack:stack-vue-ts\n'
CFG_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_EXTENDS=$'stack-packs/laravel\nstack-packs/vue-ts'
CFG_PROFILE_LIVE_STACK_DOWN=./vendor/bin/sail\ down\ -v
CFG_PROFILE_LIVE_STACK_DRIVERS=$'vendor/bin/sail\nartisan dusk'
CFG_PROFILE_LIVE_STACK_PROBE=curl\ -fsS\ http://localhost/up
CFG_PROFILE_LIVE_STACK_UP=./vendor/bin/sail\ up\ -d\ \&\&\ ./vendor/bin/sail\ artisan\ migrate:fresh\ --seed\ --force
CFG_PROFILE_PATH_SUITES_0_GLOB=app/\*\*
CFG_PROFILE_PATH_SUITES_0_SUITES=$'laravel-unit\nlaravel-feature'
CFG_PROFILE_PATH_SUITES_1_GLOB=routes/\*\*
CFG_PROFILE_PATH_SUITES_1_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_2_GLOB=database/\*\*
CFG_PROFILE_PATH_SUITES_2_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_3_GLOB=config/\*\*
CFG_PROFILE_PATH_SUITES_3_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_4_GLOB=tests/Unit/\*\*
CFG_PROFILE_PATH_SUITES_4_SUITES=laravel-unit
CFG_PROFILE_PATH_SUITES_5_GLOB=tests/Feature/\*\*
CFG_PROFILE_PATH_SUITES_5_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_6_GLOB=resources/js/\*\*
CFG_PROFILE_PATH_SUITES_6_SUITES=vue
CFG_PROFILE_PATH_SUITES_COUNT=7
CFG_PROFILE_RISK_L2=$'routes/api.php\napp/Http/Controllers/**\napp/GraphQL/**\ngraphql/**\ncomposer.lock'
CFG_PROFILE_RISK_L3=$'database/migrations/**\napp/Policies/**\napp/Http/Middleware/**\nconfig/auth.php'
CFG_PROFILE_SUITES=$'laravel-unit\nlaravel-feature\nvue'
CFG_PROFILE_SUITES_LARAVEL_FEATURE_COUNTS=phpunit-junit
CFG_PROFILE_SUITES_LARAVEL_FEATURE_RUN=php\ artisan\ test\ --testsuite=Feature\ --log-junit=\$EVIDENCE/laravel-feature.xml
CFG_PROFILE_SUITES_LARAVEL_UNIT_COUNTS=phpunit-junit
CFG_PROFILE_SUITES_LARAVEL_UNIT_RUN=php\ artisan\ test\ --testsuite=Unit\ --log-junit=\$EVIDENCE/laravel-unit.xml
CFG_PROFILE_SUITES_VUE_COUNTS=junit
CFG_PROFILE_SUITES_VUE_RUN=node\ --test\ --test-reporter=junit\ --test-reporter-destination=\$EVIDENCE/vue.xml\ \"resources/js/\*\*/\*.test.ts\"
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=Example\ Laravel\ +\ Vue\ 3\ application\ driven\ by\ the\ engine
CFG_PROJECT_NAME=laravel-vue-example
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tlaravel-vue-example\nproject.description\tExample Laravel + Vue 3 application driven by the engine\nproject.default_branch\tmain\nstack.languages\t[php, typescript]\nstack.layout\tsingle\nstack.lane_bootstrap\tphp artisan --version\nstack.lane_refresh\tphp artisan --version\nstack.integration_sync\tphp artisan --version\nrunners.implementer.bin\tclaude\nrunners.implementer.timeout_seconds\t1800\ngates[].id\tpint\ngates[].run\tgit ls-files -z -co --exclude-standard -- "*.php" artisan | xargs -0 php -l\nprofile.extends\t[stack-packs/laravel, stack-packs/vue-ts]\nprofile.suites.vue.run\tnode --test --test-reporter=junit --test-reporter-destination=$EVIDENCE/vue.xml "resources/js/**/*.test.ts"\nprofile.suites.vue.counts\tjunit\nprofile.path_suites[].glob\tresources/js/**\nprofile.path_suites[].suites\t[vue]\nnightly.full_test_cmd\t\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STACK_INTEGRATION_SYNC=php\ artisan\ --version
CFG_STACK_LANE_BOOTSTRAP=php\ artisan\ --version
CFG_STACK_LANE_LOCKFILES=composer.lock
CFG_STACK_LANE_REFRESH=php\ artisan\ --version
CFG_STACK_LANGUAGES=$'php\ntypescript'
CFG_STACK_LAYOUT=single
CFG_STACK_PACKAGE_MANAGER=composer
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[laravel-vue-example]
project.description=[Example Laravel + Vue 3 application driven by the engine]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[php
typescript]
stack.layout=[single]
stack.package_manager=[composer]
stack.scoped_test_template=[<dflt>]
stack.workspace_roots=[<dflt>]
stack.lane_bootstrap=[php artisan --version]
stack.lane_refresh=[php artisan --version]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[php artisan --version]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[stack-packs/laravel
stack-packs/vue-ts]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[database/migrations/**
app/Policies/**
app/Http/Middleware/**
config/auth.php]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed --force]
profile.live_stack.drivers=[vendor/bin/sail
artisan dusk]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	laravel-vue-example
project.description	Example Laravel + Vue 3 application driven by the engine
project.default_branch	main
stack.languages	[php, typescript]
stack.layout	single
stack.lane_bootstrap	php artisan --version
stack.lane_refresh	php artisan --version
stack.integration_sync	php artisan --version
runners.implementer.bin	claude
runners.implementer.timeout_seconds	1800
gates[].id	pint
gates[].run	git ls-files -z -co --exclude-standard -- "*.php" artisan | xargs -0 php -l
profile.extends	[stack-packs/laravel, stack-packs/vue-ts]
profile.suites.vue.run	node --test --test-reporter=junit --test-reporter-destination=$EVIDENCE/vue.xml "resources/js/**/*.test.ts"
profile.suites.vue.counts	junit
profile.path_suites[].glob	resources/js/**
profile.path_suites[].suites	[vue]
nightly.full_test_cmd	

--- cfg_pack_keys
stack.package_manager	composer	pack:stack-laravel
stack.lane_bootstrap	composer install --no-interaction --prefer-dist --no-progress	pack:stack-laravel
stack.lane_refresh	composer install --no-interaction --prefer-dist --no-progress	pack:stack-laravel
stack.lane_lockfiles	composer.lock	pack:stack-laravel
stack.integration_sync	composer install --no-interaction --prefer-dist --no-progress	pack:stack-laravel
gates[].id	test	pack:stack-laravel
gates[].run	php artisan test	pack:stack-laravel
gates[].phase	post_impl	pack:stack-laravel
gates[].id	pint	pack:stack-laravel
gates[].run	php vendor/bin/pint --test	pack:stack-laravel
gates[].phase	post_impl	pack:stack-laravel
gates[].when	app/**,bootstrap/**,config/**,database/**,routes/**,tests/**	pack:stack-laravel
gates[].id	composer-audit	pack:stack-laravel
gates[].run	composer audit --locked --no-interaction	pack:stack-laravel
gates[].phase	post_impl	pack:stack-laravel
gates[].when	composer.lock	pack:stack-laravel
profile.suites.laravel-unit.run	php artisan test --testsuite=Unit --log-junit=$EVIDENCE/laravel-unit.xml	pack:stack-laravel
profile.suites.laravel-unit.counts	phpunit-junit	pack:stack-laravel
profile.suites.laravel-feature.run	php artisan test --testsuite=Feature --log-junit=$EVIDENCE/laravel-feature.xml	pack:stack-laravel
profile.suites.laravel-feature.counts	phpunit-junit	pack:stack-laravel
profile.path_suites[].glob	app/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-unit, laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	routes/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	database/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	config/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	tests/Unit/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-unit]	pack:stack-laravel
profile.path_suites[].glob	tests/Feature/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.risk.L3	['database/migrations/**', 'app/Policies/**', 'app/Http/Middleware/**', 'config/auth.php']	pack:stack-laravel
profile.risk.L2	['routes/api.php', 'app/Http/Controllers/**', 'app/GraphQL/**', 'graphql/**', 'composer.lock']	pack:stack-laravel
profile.live_stack.up	./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed --force	pack:stack-laravel
profile.live_stack.probe	curl -fsS http://localhost/up	pack:stack-laravel
profile.live_stack.down	./vendor/bin/sail down -v	pack:stack-laravel
profile.live_stack.drivers	['vendor/bin/sail', 'artisan dusk']	pack:stack-laravel
nightly.full_test_cmd	php artisan test	pack:stack-laravel
gates[].id	vue-tsc	pack:stack-vue-ts
gates[].run	npx --no -- vue-tsc --noEmit	pack:stack-vue-ts
gates[].phase	post_impl	pack:stack-vue-ts
gates[].when	*.vue,*.ts,*.tsx,*.mts,*tsconfig*.json,*package.json	pack:stack-vue-ts
gates[].requires	vue-tsc	pack:stack-vue-ts
gates[].id	vitest	pack:stack-vue-ts
gates[].run	npx --no -- vitest run	pack:stack-vue-ts
gates[].phase	post_impl	pack:stack-vue-ts
gates[].when	*.vue,*.ts,*.tsx,*.js,*.mjs,*.mts,*vite.config.*,*vitest.config.*,*package.json	pack:stack-vue-ts
gates[].heavy	true	pack:stack-vue-ts
gates[].requires	vitest	pack:stack-vue-ts
gates[].id	eslint	pack:stack-vue-ts
gates[].run	npx --no -- eslint .	pack:stack-vue-ts
gates[].phase	post_impl	pack:stack-vue-ts
gates[].when	*.vue,*.ts,*.tsx,*.js,*.mjs,*eslint.config.*,*.eslintrc*	pack:stack-vue-ts
gates[].requires	eslint	pack:stack-vue-ts
profile.suites.vue.run	npx --no -- vitest run	pack:stack-vue-ts
profile.suites.vue.counts	vitest	pack:stack-vue-ts

--- cfg_packs_resolved
stack-packs/laravel	stack-laravel
stack-packs/vue-ts	stack-vue-ts
--- cfg_packs_unresolved

--- gates (3)
gate 0 id=[test]
gate 0 run=[php artisan test]
gate 0 phase=[post_impl]
gate 0 when=[<dflt>]
gate 0 scope=[<dflt>]
gate 0 heavy=[<dflt>]
gate 0 requires=[<dflt>]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
gate 1 id=[pint]
gate 1 run=[git ls-files -z -co --exclude-standard -- "*.php" artisan | xargs -0 php -l]
gate 1 phase=[post_impl]
gate 1 when=[app/**,bootstrap/**,config/**,database/**,routes/**,tests/**]
gate 1 scope=[<dflt>]
gate 1 heavy=[<dflt>]
gate 1 requires=[<dflt>]
gate 1 select=[<dflt>]
gate 1 scoped_run=[<dflt>]
gate 1 nope=[<dflt>]
gate 2 id=[composer-audit]
gate 2 run=[composer audit --locked --no-interaction]
gate 2 phase=[post_impl]
gate 2 when=[composer.lock]
gate 2 scope=[<dflt>]
gate 2 heavy=[<dflt>]
gate 2 requires=[<dflt>]
gate 2 select=[<dflt>]
gate 2 scoped_run=[<dflt>]
gate 2 nope=[<dflt>]
--- profile
suites:
laravel-unit
laravel-feature
vue
path_suites count=7
path_suites 0 glob=[app/**] suites=[laravel-unit
laravel-feature]
path_suites 1 glob=[routes/**] suites=[laravel-feature]
path_suites 2 glob=[database/**] suites=[laravel-feature]
path_suites 3 glob=[config/**] suites=[laravel-feature]
path_suites 4 glob=[tests/Unit/**] suites=[laravel-unit]
path_suites 5 glob=[tests/Feature/**] suites=[laravel-feature]
path_suites 6 glob=[resources/js/**] suites=[vue]
path_suites 7 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
<E>/plugins/stack-laravel/compliance/laravel.checks
--- pack compliance
<E>/plugins/stack-laravel/compliance
--- pack standards
== <E>/plugins/stack-laravel/standards/laravel.md
-- facts
-- rendered
## Laravel standards (stack-laravel pack)

Follow the conventions this repository already uses. Where it has none, use these.

- **Reuse before adding.** Look for an existing Action, Service, Job, Policy, FormRequest, Resource or Eloquent scope that does the job, and extend it. Do not add a parallel one.
- **Validation** goes in a FormRequest, or wherever the repository already validates. Do not validate inline in a controller when the codebase uses FormRequests.
- **Authorization** goes through the existing Policies and Gates (`$this->authorize`, `can` middleware, `Gate::allows`). Never hand-roll a role check in a controller or a view.
- **Configuration** is read with `config()`. `env()` belongs only in `config/*.php`, because `config:cache` makes it return null everywhere else.
- **Database access** uses Eloquent or the query builder with bindings. Never interpolate a variable into raw SQL.
- **Mass assignment:** declare `$fillable` (or a narrow `$guarded`). Never set `$guarded = []`.
- **Migrations** add; they do not destroy. Add new columns and tables, and keep `down()` able to reverse `up()`. Dropping, renaming or retyping a column or table, or deleting rows, in `up()` is escalated to a human by the arch-check. Do not try to work around that check. Say in your summary why the change is needed.
- **API responses** keep the shape the existing API Resources and controllers return.
- **Tests:** add a Feature test for every new route or behaviour, in the repository's framework (Pest or PHPUnit). Run them with `php artisan test`.
- **Formatting:** the code must pass `vendor/bin/pint --test`. Leave no `dd()`, `dump()` or `ray()` behind.
- **Front end** (Blade, Livewire, Inertia or Vue): use the UI component library already in the repository. Do not add a second one. Avoid `v-html` and `{!! !!}` on user data.
== <E>/plugins/stack-vue-ts/standards/vue.md
-- facts
vue3.component-library	primevue
-- rendered
## Vue 3 + TypeScript standards (stack-vue-ts pack)

Follow the conventions this repository already uses. Where it has none, use these.

- **Reuse before adding.** Look for an existing component, composable, store, API client or type that does the job, and extend it. Do not add a parallel one.
- **Component library: `primevue`** (detected in `package.json`). Build UI from its components, its theming and its form controls, in the way the existing screens use them. Do not hand-roll a component it already provides, and do not add another UI component library.
- **Components:** write new ones as `<script setup lang="ts">` single-file components, the Composition API, unless the surrounding code uses the Options API. Type props and emits (`defineProps<…>()`, `defineEmits<…>()`).
- **State and data:** use the store (Pinia or whatever the repository uses) and the API client the codebase already has. Put shared logic in a composable (`useX`). Do not call `fetch` or `axios` directly from a component when a client exists.
- **Validation and authorization** follow the existing pattern: the form-validation library already in use, and the server as the authority. A client-side permission check only hides UI; never treat it as the security check.
- **Types:** the change passes `vue-tsc --noEmit` at the strictness the project holds. Do not silence it with `any`, `// @ts-ignore` or `// @ts-nocheck`.
- **Security:** never bind user data with `v-html`. Do not build URLs, styles or HTML from unescaped user input.
- **Dependencies:** add one only when the task needs it, with the project's package manager, so `package.json` and its lockfile change together. Never edit a lockfile by hand.
- **Tests:** add or update vitest tests (with `@vue/test-utils` or `@testing-library/vue`, whichever the repository uses) for every new behaviour, next to the existing ones. Leave no `console.log` or `debugger` behind.
=== examples/monorepo-workspaces
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=''
CFG_GATE_0_ID=test
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=bash\ scripts/test-all.sh
CFG_GATE_0_SCOPE=affected
CFG_GATE_COUNT=1
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=''
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=''
CFG_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_PATH_SUITES_COUNT=0
CFG_PROFILE_SUITES=''
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=Example\ workspace\ monorepo\ driven\ by\ the\ engine
CFG_PROJECT_NAME=monorepo-workspaces
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tmonorepo-workspaces\nproject.description\tExample workspace monorepo driven by the engine\nproject.default_branch\tmain\nstack.languages\t[node]\nstack.package_manager\tnpm\nstack.layout\tmonorepo\nstack.workspace_roots\t[packages]\nstack.scoped_test_template\tbash scripts/test-affected.sh {sha}\nrunners.implementer.bin\tclaude\nrunners.implementer.timeout_seconds\t1800\ngates[].id\ttest\ngates[].run\tbash scripts/test-all.sh\ngates[].phase\tpost_impl\ngates[].scope\taffected\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STACK_LANGUAGES=node
CFG_STACK_LAYOUT=monorepo
CFG_STACK_PACKAGE_MANAGER=npm
CFG_STACK_SCOPED_TEST_TEMPLATE=bash\ scripts/test-affected.sh\ \{sha\}
CFG_STACK_WORKSPACE_ROOTS=packages
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[monorepo-workspaces]
project.description=[Example workspace monorepo driven by the engine]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[node]
stack.layout=[monorepo]
stack.package_manager=[npm]
stack.scoped_test_template=[bash scripts/test-affected.sh {sha}]
stack.workspace_roots=[packages]
stack.lane_bootstrap=[<dflt>]
stack.lane_refresh=[<dflt>]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[<dflt>]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[<dflt>]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[<dflt>]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[<dflt>]
profile.live_stack.drivers=[<dflt>]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	monorepo-workspaces
project.description	Example workspace monorepo driven by the engine
project.default_branch	main
stack.languages	[node]
stack.package_manager	npm
stack.layout	monorepo
stack.workspace_roots	[packages]
stack.scoped_test_template	bash scripts/test-affected.sh {sha}
runners.implementer.bin	claude
runners.implementer.timeout_seconds	1800
gates[].id	test
gates[].run	bash scripts/test-all.sh
gates[].phase	post_impl
gates[].scope	affected

--- cfg_pack_keys

--- cfg_packs_resolved

--- cfg_packs_unresolved

--- gates (1)
gate 0 id=[test]
gate 0 run=[bash scripts/test-all.sh]
gate 0 phase=[post_impl]
gate 0 when=[<dflt>]
gate 0 scope=[affected]
gate 0 heavy=[<dflt>]
gate 0 requires=[<dflt>]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
--- profile
suites:

path_suites count=0
path_suites 0 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
--- pack compliance
--- pack standards
=== examples/python-uv
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=$'mypy\tmypy'
CFG_GATE_0_HEAVY=true
CFG_GATE_0_ID=pytest
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_REQUIRES=pytest
CFG_GATE_0_RUN=uv\ run\ --frozen\ pytest\ -q
CFG_GATE_0_WHEN=\*.py\,\*pyproject.toml\,\*uv.lock\,\*pytest.ini
CFG_GATE_1_ID=ruff
CFG_GATE_1_PHASE=post_impl
CFG_GATE_1_REQUIRES=ruff
CFG_GATE_1_RUN=uv\ run\ --frozen\ ruff\ check\ .
CFG_GATE_1_WHEN=\*.py\,\*pyproject.toml\,\*ruff.toml
CFG_GATE_2_ID=test
CFG_GATE_2_PHASE=post_impl
CFG_GATE_2_RUN=uv\ run\ --frozen\ pytest\ -q
CFG_GATE_COUNT=3
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=$'stack-packs/python-uv\tstack-python-uv'
CFG_PACKS_UNRESOLVED=''
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_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_EXTENDS=stack-packs/python-uv
CFG_PROFILE_PATH_SUITES_0_GLOB=\*.py
CFG_PROFILE_PATH_SUITES_0_SUITES=python
CFG_PROFILE_PATH_SUITES_COUNT=1
CFG_PROFILE_SUITES=python
CFG_PROFILE_SUITES_PYTHON_COUNTS=pytest
CFG_PROFILE_SUITES_PYTHON_RUN=uv\ run\ --frozen\ pytest\ -q
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=Example\ Python\ project\ on\ uv\ driven\ by\ the\ engine
CFG_PROJECT_NAME=python-uv-example
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tpython-uv-example\nproject.description\tExample Python project on uv driven by the engine\nproject.default_branch\tmain\nstack.languages\t[python]\nstack.layout\tsingle\nrunners.implementer.bin\tclaude\nrunners.implementer.timeout_seconds\t1800\ngates[].id\ttest\ngates[].run\tuv run --frozen pytest -q\ngates[].phase\tpost_impl\nprofile.extends\t[stack-packs/python-uv]\nprofile.path_suites[].glob\t*.py\nprofile.path_suites[].suites\t[python]\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STACK_LANGUAGES=python
CFG_STACK_LAYOUT=single
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[python-uv-example]
project.description=[Example Python project on uv driven by the engine]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[python]
stack.layout=[single]
stack.package_manager=[<dflt>]
stack.scoped_test_template=[<dflt>]
stack.workspace_roots=[<dflt>]
stack.lane_bootstrap=[<dflt>]
stack.lane_refresh=[<dflt>]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[<dflt>]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[stack-packs/python-uv]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[<dflt>]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[<dflt>]
profile.live_stack.drivers=[<dflt>]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	python-uv-example
project.description	Example Python project on uv driven by the engine
project.default_branch	main
stack.languages	[python]
stack.layout	single
runners.implementer.bin	claude
runners.implementer.timeout_seconds	1800
gates[].id	test
gates[].run	uv run --frozen pytest -q
gates[].phase	post_impl
profile.extends	[stack-packs/python-uv]
profile.path_suites[].glob	*.py
profile.path_suites[].suites	[python]

--- cfg_pack_keys
gates[].id	pytest	pack:stack-python-uv
gates[].run	uv run --frozen pytest -q	pack:stack-python-uv
gates[].phase	post_impl	pack:stack-python-uv
gates[].when	*.py,*pyproject.toml,*uv.lock,*pytest.ini	pack:stack-python-uv
gates[].heavy	true	pack:stack-python-uv
gates[].requires	pytest	pack:stack-python-uv
gates[].id	ruff	pack:stack-python-uv
gates[].run	uv run --frozen ruff check .	pack:stack-python-uv
gates[].phase	post_impl	pack:stack-python-uv
gates[].when	*.py,*pyproject.toml,*ruff.toml	pack:stack-python-uv
gates[].requires	ruff	pack:stack-python-uv
gates[].id	mypy	pack:stack-python-uv
gates[].run	uv run --frozen mypy .	pack:stack-python-uv
gates[].phase	post_impl	pack:stack-python-uv
gates[].when	*.py,*.pyi,*pyproject.toml,*mypy.ini	pack:stack-python-uv
gates[].requires	mypy	pack:stack-python-uv
profile.suites.python.run	uv run --frozen pytest -q	pack:stack-python-uv
profile.suites.python.counts	pytest	pack:stack-python-uv

--- cfg_packs_resolved
stack-packs/python-uv	stack-python-uv
--- cfg_packs_unresolved

--- gates (3)
gate 0 id=[pytest]
gate 0 run=[uv run --frozen pytest -q]
gate 0 phase=[post_impl]
gate 0 when=[*.py,*pyproject.toml,*uv.lock,*pytest.ini]
gate 0 scope=[<dflt>]
gate 0 heavy=[true]
gate 0 requires=[pytest]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
gate 1 id=[ruff]
gate 1 run=[uv run --frozen ruff check .]
gate 1 phase=[post_impl]
gate 1 when=[*.py,*pyproject.toml,*ruff.toml]
gate 1 scope=[<dflt>]
gate 1 heavy=[<dflt>]
gate 1 requires=[ruff]
gate 1 select=[<dflt>]
gate 1 scoped_run=[<dflt>]
gate 1 nope=[<dflt>]
gate 2 id=[test]
gate 2 run=[uv run --frozen pytest -q]
gate 2 phase=[post_impl]
gate 2 when=[<dflt>]
gate 2 scope=[<dflt>]
gate 2 heavy=[<dflt>]
gate 2 requires=[<dflt>]
gate 2 select=[<dflt>]
gate 2 scoped_run=[<dflt>]
gate 2 nope=[<dflt>]
--- profile
suites:
python
path_suites count=1
path_suites 0 glob=[*.py] suites=[python]
path_suites 1 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
--- pack compliance
--- pack standards
== <E>/plugins/stack-python-uv/standards/python.md
-- facts
-- rendered
## Python standards (stack-python-uv pack)

Follow the conventions this repository already uses. Where it has none, use these.

- **Reuse before adding.** Look for an existing module, service, client, schema or fixture that does the job, and extend it. Do not add a parallel one.
- **Python version:** write for the version the project declares (`requires-python` in `pyproject.toml`, or `.python-version`). Do not use syntax or standard-library features newer than that.
- **Tooling is the project's.** Run everything through uv (`uv run pytest`, `uv run ruff`, `uv run mypy`). Do not call `pip install`, and do not add a second package manager, formatter, linter or test runner.
- **Dependencies:** add one only when the task needs it, with `uv add` (or `uv add --dev`), so `pyproject.toml` and `uv.lock` change together. Never edit `uv.lock` by hand.
- **Validation** follows the existing pattern (Pydantic models, dataclasses, marshmallow, Django forms — whichever the codebase uses). Validate input at the boundary where the repository already does.
- **Authorization** goes through the existing dependencies, decorators or permission classes. Never hand-roll a role check inside a handler.
- **Configuration and secrets** are read the way the project already reads them (a settings object, environment-backed config). Never hard-code a secret, URL or credential.
- **Database access** uses the project's ORM or query layer with bound parameters. Never format a value into SQL. Schema changes go in a new migration; do not edit one that has already shipped.
- **Types:** annotate new and changed functions to the strictness the project already holds. When mypy is configured, the change passes it; do not silence it with a bare `# type: ignore` or `Any`.
- **Tests:** add or update pytest tests for every new behaviour, next to the existing ones and with the existing fixtures. Leave no `print()`, `breakpoint()` or `pdb` behind; use the project's logger.
=== sdk/testing/profiles/laravel.profile.yaml over a minimal config (laravel-vue tree)
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=''
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=''
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_EXTENSIONS_ENABLED=''
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=''
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=$'vue-tsc\tvue-tsc\nvitest\tvitest\neslint\teslint\npytest\tpytest\nruff\truff\nmypy\tmypy'
CFG_GATE_0_ID=test
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=php\ artisan\ test
CFG_GATE_1_ID=pint
CFG_GATE_1_PHASE=post_impl
CFG_GATE_1_RUN=php\ vendor/bin/pint\ --test
CFG_GATE_1_WHEN=app/\*\*\,bootstrap/\*\*\,config/\*\*\,database/\*\*\,routes/\*\*\,tests/\*\*
CFG_GATE_2_ID=composer-audit
CFG_GATE_2_PHASE=post_impl
CFG_GATE_2_RUN=composer\ audit\ --locked\ --no-interaction
CFG_GATE_2_WHEN=composer.lock
CFG_GATE_COUNT=3
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=''
CFG_NIGHTLY_E2E_REAL_CMD=''
CFG_NIGHTLY_FULL_TEST_CMD=php\ artisan\ test
CFG_NIGHTLY_SECURITY_CMD=''
CFG_PACKS_RESOLVED=$'stack-packs/laravel\tstack-laravel\nstack-packs/vue-ts\tstack-vue-ts\nstack-packs/python-uv\tstack-python-uv'
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=$'stack.package_manager\tcomposer\tpack:stack-laravel\nstack.lane_bootstrap\tcomposer install --no-interaction --prefer-dist --no-progress\tpack:stack-laravel\nstack.lane_refresh\tcomposer install --no-interaction --prefer-dist --no-progress\tpack:stack-laravel\nstack.lane_lockfiles\tcomposer.lock\tpack:stack-laravel\nstack.integration_sync\tcomposer install --no-interaction --prefer-dist --no-progress\tpack:stack-laravel\ngates[].id\ttest\tpack:stack-laravel\ngates[].run\tphp artisan test\tpack:stack-laravel\ngates[].phase\tpost_impl\tpack:stack-laravel\ngates[].id\tpint\tpack:stack-laravel\ngates[].run\tphp vendor/bin/pint --test\tpack:stack-laravel\ngates[].phase\tpost_impl\tpack:stack-laravel\ngates[].when\tapp/**,bootstrap/**,config/**,database/**,routes/**,tests/**\tpack:stack-laravel\ngates[].id\tcomposer-audit\tpack:stack-laravel\ngates[].run\tcomposer audit --locked --no-interaction\tpack:stack-laravel\ngates[].phase\tpost_impl\tpack:stack-laravel\ngates[].when\tcomposer.lock\tpack:stack-laravel\nprofile.suites.laravel-unit.run\tphp artisan test --testsuite=Unit --log-junit=$EVIDENCE/laravel-unit.xml\tpack:stack-laravel\nprofile.suites.laravel-unit.counts\tphpunit-junit\tpack:stack-laravel\nprofile.suites.laravel-feature.run\tphp artisan test --testsuite=Feature --log-junit=$EVIDENCE/laravel-feature.xml\tpack:stack-laravel\nprofile.suites.laravel-feature.counts\tphpunit-junit\tpack:stack-laravel\nprofile.path_suites[].glob\tapp/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-unit, laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\troutes/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\tdatabase/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\tconfig/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.path_suites[].glob\ttests/Unit/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-unit]\tpack:stack-laravel\nprofile.path_suites[].glob\ttests/Feature/**\tpack:stack-laravel\nprofile.path_suites[].suites\t[laravel-feature]\tpack:stack-laravel\nprofile.risk.L3\t[\'database/migrations/**\', \'app/Policies/**\', \'app/Http/Middleware/**\', \'config/auth.php\']\tpack:stack-laravel\nprofile.risk.L2\t[\'routes/api.php\', \'app/Http/Controllers/**\', \'app/GraphQL/**\', \'graphql/**\', \'composer.lock\']\tpack:stack-laravel\nprofile.live_stack.up\t./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed --force\tpack:stack-laravel\nprofile.live_stack.probe\tcurl -fsS http://localhost/up\tpack:stack-laravel\nprofile.live_stack.down\t./vendor/bin/sail down -v\tpack:stack-laravel\nprofile.live_stack.drivers\t[\'vendor/bin/sail\', \'artisan dusk\']\tpack:stack-laravel\nnightly.full_test_cmd\tphp artisan test\tpack:stack-laravel\ngates[].id\tvue-tsc\tpack:stack-vue-ts\ngates[].run\tnpx --no -- vue-tsc --noEmit\tpack:stack-vue-ts\ngates[].phase\tpost_impl\tpack:stack-vue-ts\ngates[].when\t*.vue,*.ts,*.tsx,*.mts,*tsconfig*.json,*package.json\tpack:stack-vue-ts\ngates[].requires\tvue-tsc\tpack:stack-vue-ts\ngates[].id\tvitest\tpack:stack-vue-ts\ngates[].run\tnpx --no -- vitest run\tpack:stack-vue-ts\ngates[].phase\tpost_impl\tpack:stack-vue-ts\ngates[].when\t*.vue,*.ts,*.tsx,*.js,*.mjs,*.mts,*vite.config.*,*vitest.config.*,*package.json\tpack:stack-vue-ts\ngates[].heavy\ttrue\tpack:stack-vue-ts\ngates[].requires\tvitest\tpack:stack-vue-ts\ngates[].id\teslint\tpack:stack-vue-ts\ngates[].run\tnpx --no -- eslint .\tpack:stack-vue-ts\ngates[].phase\tpost_impl\tpack:stack-vue-ts\ngates[].when\t*.vue,*.ts,*.tsx,*.js,*.mjs,*eslint.config.*,*.eslintrc*\tpack:stack-vue-ts\ngates[].requires\teslint\tpack:stack-vue-ts\nprofile.suites.vue.run\tnpx --no -- vitest run\tpack:stack-vue-ts\nprofile.suites.vue.counts\tvitest\tpack:stack-vue-ts\ngates[].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_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=4200
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=3600
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_EXTENDS=$'stack-packs/laravel\nstack-packs/vue-ts\nstack-packs/python-uv'
CFG_PROFILE_ID_GRAMMAR_STORY=ACME-\[0-9\]+
CFG_PROFILE_ID_GRAMMAR_TASK=ACME-\[0-9\]+
CFG_PROFILE_LAYOUT=single
CFG_PROFILE_LIVE_STACK_DOWN=./vendor/bin/sail\ down\ -v
CFG_PROFILE_LIVE_STACK_DRIVERS=$'vendor/bin/sail\nartisan dusk'
CFG_PROFILE_LIVE_STACK_JOURNEYS=npx\ playwright\ test\ --project=smoke
CFG_PROFILE_LIVE_STACK_PROBE=curl\ -fsS\ http://localhost/up
CFG_PROFILE_LIVE_STACK_UP=./vendor/bin/sail\ up\ -d\ \&\&\ ./vendor/bin/sail\ artisan\ migrate:fresh\ --seed
CFG_PROFILE_PATH_SUITES_0_GLOB=app/\*\*
CFG_PROFILE_PATH_SUITES_0_SUITES=$'laravel-unit\nlaravel-feature'
CFG_PROFILE_PATH_SUITES_10_GLOB=services/ai/\*\*
CFG_PROFILE_PATH_SUITES_10_SUITES=ai
CFG_PROFILE_PATH_SUITES_1_GLOB=routes/\*\*
CFG_PROFILE_PATH_SUITES_1_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_2_GLOB=database/\*\*
CFG_PROFILE_PATH_SUITES_2_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_3_GLOB=config/\*\*
CFG_PROFILE_PATH_SUITES_3_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_4_GLOB=tests/Unit/\*\*
CFG_PROFILE_PATH_SUITES_4_SUITES=laravel-unit
CFG_PROFILE_PATH_SUITES_5_GLOB=tests/Feature/\*\*
CFG_PROFILE_PATH_SUITES_5_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_6_GLOB=app/\*\*
CFG_PROFILE_PATH_SUITES_6_SUITES=$'laravel-unit\nlaravel-feature'
CFG_PROFILE_PATH_SUITES_7_GLOB=routes/\*\*
CFG_PROFILE_PATH_SUITES_7_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_8_GLOB=database/migrations/\*\*
CFG_PROFILE_PATH_SUITES_8_SUITES=laravel-feature
CFG_PROFILE_PATH_SUITES_9_GLOB=resources/js/\*\*
CFG_PROFILE_PATH_SUITES_9_SUITES=vue
CFG_PROFILE_PATH_SUITES_COUNT=11
CFG_PROFILE_RISK_L2=$'routes/api.php\napp/GraphQL/**\n*.lock'
CFG_PROFILE_RISK_L3=$'app/Policies/**\napp/Http/Middleware/**\ndatabase/migrations/**\nconfig/auth.php'
CFG_PROFILE_SUITES=$'laravel-unit\nlaravel-feature\nvue\npython\nai'
CFG_PROFILE_SUITES_AI_COUNTS=junit
CFG_PROFILE_SUITES_AI_RUN=cd\ services/ai\ \&\&\ uv\ run\ pytest\ -q\ --junitxml=\$EVIDENCE/ai.xml
CFG_PROFILE_SUITES_LARAVEL_FEATURE_COUNTS=phpunit-junit
CFG_PROFILE_SUITES_LARAVEL_FEATURE_RUN=php\ artisan\ test\ --parallel\ --testsuite=Feature
CFG_PROFILE_SUITES_LARAVEL_UNIT_COUNTS=phpunit-junit
CFG_PROFILE_SUITES_LARAVEL_UNIT_RUN=php\ artisan\ test\ --testsuite=Unit
CFG_PROFILE_SUITES_PYTHON_COUNTS=pytest
CFG_PROFILE_SUITES_PYTHON_RUN=uv\ run\ --frozen\ pytest\ -q
CFG_PROFILE_SUITES_VUE_COUNTS=junit
CFG_PROFILE_SUITES_VUE_RUN=npx\ vitest\ related\ \{files\}\ --run\ --reporter=junit
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=''
CFG_PROJECT_NAME=profile-fixture
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_LIMIT_RESET_TZ=UTC
CFG_RUNNERS_PLANNER_BIN=''
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=''
CFG_RUNNERS_QA_TIMEOUT_SECONDS=''
CFG_RUNNERS_REVIEWER_BIN=''
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=''
CFG_RUNNERS_RULES_FILE=''
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tprofile-fixture\nprofile.extends\t[stack-packs/laravel, stack-packs/vue-ts, stack-packs/python-uv]\nprofile.layout\tsingle\nprofile.id_grammar.story\tACME-[0-9]+\nprofile.id_grammar.task\tACME-[0-9]+\nprofile.suites.laravel-feature.run\tphp artisan test --parallel --testsuite=Feature\nprofile.suites.laravel-feature.counts\tphpunit-junit\nprofile.suites.laravel-unit.run\tphp artisan test --testsuite=Unit\nprofile.suites.laravel-unit.counts\tphpunit-junit\nprofile.suites.vue.run\tnpx vitest related {files} --run --reporter=junit\nprofile.suites.vue.counts\tjunit\nprofile.suites.ai.run\tcd services/ai && uv run pytest -q --junitxml=$EVIDENCE/ai.xml\nprofile.suites.ai.counts\tjunit\nprofile.path_suites[].glob\tapp/**\nprofile.path_suites[].suites\t[laravel-unit, laravel-feature]\nprofile.path_suites[].glob\troutes/**\nprofile.path_suites[].suites\t[laravel-feature]\nprofile.path_suites[].glob\tdatabase/migrations/**\nprofile.path_suites[].suites\t[laravel-feature]\nprofile.path_suites[].glob\tresources/js/**\nprofile.path_suites[].suites\t[vue]\nprofile.path_suites[].glob\tservices/ai/**\nprofile.path_suites[].suites\t[ai]\nprofile.risk.L3\t[\'app/Policies/**\', \'app/Http/Middleware/**\', \'database/migrations/**\', \'config/auth.php\']\nprofile.risk.L2\t[\'routes/api.php\', \'app/GraphQL/**\', \'*.lock\']\nprofile.live_stack.up\t./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed\nprofile.live_stack.probe\tcurl -fsS http://localhost/up\nprofile.live_stack.down\t./vendor/bin/sail down -v\nprofile.live_stack.journeys\tnpx playwright test --project=smoke\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_STACK_INTEGRATION_SYNC=composer\ install\ --no-interaction\ --prefer-dist\ --no-progress
CFG_STACK_LANE_BOOTSTRAP=composer\ install\ --no-interaction\ --prefer-dist\ --no-progress
CFG_STACK_LANE_LOCKFILES=composer.lock
CFG_STACK_LANE_REFRESH=composer\ install\ --no-interaction\ --prefer-dist\ --no-progress
CFG_STACK_PACKAGE_MANAGER=composer
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[profile-fixture]
project.description=[<dflt>]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[<dflt>]
stack.layout=[<dflt>]
stack.package_manager=[composer]
stack.scoped_test_template=[<dflt>]
stack.workspace_roots=[<dflt>]
stack.lane_bootstrap=[composer install --no-interaction --prefer-dist --no-progress]
stack.lane_refresh=[composer install --no-interaction --prefer-dist --no-progress]
stack.lane_build=[<dflt>]
stack.full_test_build=[<dflt>]
stack.integration_sync=[composer install --no-interaction --prefer-dist --no-progress]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[1800]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[<dflt>]
runners.reviewer.timeout_seconds=[<dflt>]
runners.reviewer.model=[<dflt>]
runners.qa.bin=[<dflt>]
runners.qa.timeout_seconds=[<dflt>]
runners.planner.bin=[<dflt>]
runners.rules_file=[<dflt>]
runners.limit_reset_tz=[UTC]
runners.trueforge.base_url=[<dflt>]
arch_check.enabled=[true]
arch_check.check_sets=[<dflt>]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[<dflt>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[4200]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[<dflt>]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[<dflt>]
extensions.tracker-sync.tracker_path=[<dflt>]
domains.enabled=[<dflt>]
skills.budget_tokens=[6000]
skills.implementer=[<dflt>]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[<dflt>]
nightly.security_cmd=[<dflt>]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[stack-packs/laravel
stack-packs/vue-ts
stack-packs/python-uv]
profile.layout=[single]
profile.deployment=[operator]
profile.risk.l3=[app/Policies/**
app/Http/Middleware/**
database/migrations/**
config/auth.php]
profile.risk.span_roots=[<dflt>]
profile.live_stack.up=[./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed]
profile.live_stack.drivers=[vendor/bin/sail
artisan dusk]
profile.id_grammar.story=[ACME-[0-9]+]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	profile-fixture
profile.extends	[stack-packs/laravel, stack-packs/vue-ts, stack-packs/python-uv]
profile.layout	single
profile.id_grammar.story	ACME-[0-9]+
profile.id_grammar.task	ACME-[0-9]+
profile.suites.laravel-feature.run	php artisan test --parallel --testsuite=Feature
profile.suites.laravel-feature.counts	phpunit-junit
profile.suites.laravel-unit.run	php artisan test --testsuite=Unit
profile.suites.laravel-unit.counts	phpunit-junit
profile.suites.vue.run	npx vitest related {files} --run --reporter=junit
profile.suites.vue.counts	junit
profile.suites.ai.run	cd services/ai && uv run pytest -q --junitxml=$EVIDENCE/ai.xml
profile.suites.ai.counts	junit
profile.path_suites[].glob	app/**
profile.path_suites[].suites	[laravel-unit, laravel-feature]
profile.path_suites[].glob	routes/**
profile.path_suites[].suites	[laravel-feature]
profile.path_suites[].glob	database/migrations/**
profile.path_suites[].suites	[laravel-feature]
profile.path_suites[].glob	resources/js/**
profile.path_suites[].suites	[vue]
profile.path_suites[].glob	services/ai/**
profile.path_suites[].suites	[ai]
profile.risk.L3	['app/Policies/**', 'app/Http/Middleware/**', 'database/migrations/**', 'config/auth.php']
profile.risk.L2	['routes/api.php', 'app/GraphQL/**', '*.lock']
profile.live_stack.up	./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed
profile.live_stack.probe	curl -fsS http://localhost/up
profile.live_stack.down	./vendor/bin/sail down -v
profile.live_stack.journeys	npx playwright test --project=smoke

--- cfg_pack_keys
stack.package_manager	composer	pack:stack-laravel
stack.lane_bootstrap	composer install --no-interaction --prefer-dist --no-progress	pack:stack-laravel
stack.lane_refresh	composer install --no-interaction --prefer-dist --no-progress	pack:stack-laravel
stack.lane_lockfiles	composer.lock	pack:stack-laravel
stack.integration_sync	composer install --no-interaction --prefer-dist --no-progress	pack:stack-laravel
gates[].id	test	pack:stack-laravel
gates[].run	php artisan test	pack:stack-laravel
gates[].phase	post_impl	pack:stack-laravel
gates[].id	pint	pack:stack-laravel
gates[].run	php vendor/bin/pint --test	pack:stack-laravel
gates[].phase	post_impl	pack:stack-laravel
gates[].when	app/**,bootstrap/**,config/**,database/**,routes/**,tests/**	pack:stack-laravel
gates[].id	composer-audit	pack:stack-laravel
gates[].run	composer audit --locked --no-interaction	pack:stack-laravel
gates[].phase	post_impl	pack:stack-laravel
gates[].when	composer.lock	pack:stack-laravel
profile.suites.laravel-unit.run	php artisan test --testsuite=Unit --log-junit=$EVIDENCE/laravel-unit.xml	pack:stack-laravel
profile.suites.laravel-unit.counts	phpunit-junit	pack:stack-laravel
profile.suites.laravel-feature.run	php artisan test --testsuite=Feature --log-junit=$EVIDENCE/laravel-feature.xml	pack:stack-laravel
profile.suites.laravel-feature.counts	phpunit-junit	pack:stack-laravel
profile.path_suites[].glob	app/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-unit, laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	routes/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	database/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	config/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.path_suites[].glob	tests/Unit/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-unit]	pack:stack-laravel
profile.path_suites[].glob	tests/Feature/**	pack:stack-laravel
profile.path_suites[].suites	[laravel-feature]	pack:stack-laravel
profile.risk.L3	['database/migrations/**', 'app/Policies/**', 'app/Http/Middleware/**', 'config/auth.php']	pack:stack-laravel
profile.risk.L2	['routes/api.php', 'app/Http/Controllers/**', 'app/GraphQL/**', 'graphql/**', 'composer.lock']	pack:stack-laravel
profile.live_stack.up	./vendor/bin/sail up -d && ./vendor/bin/sail artisan migrate:fresh --seed --force	pack:stack-laravel
profile.live_stack.probe	curl -fsS http://localhost/up	pack:stack-laravel
profile.live_stack.down	./vendor/bin/sail down -v	pack:stack-laravel
profile.live_stack.drivers	['vendor/bin/sail', 'artisan dusk']	pack:stack-laravel
nightly.full_test_cmd	php artisan test	pack:stack-laravel
gates[].id	vue-tsc	pack:stack-vue-ts
gates[].run	npx --no -- vue-tsc --noEmit	pack:stack-vue-ts
gates[].phase	post_impl	pack:stack-vue-ts
gates[].when	*.vue,*.ts,*.tsx,*.mts,*tsconfig*.json,*package.json	pack:stack-vue-ts
gates[].requires	vue-tsc	pack:stack-vue-ts
gates[].id	vitest	pack:stack-vue-ts
gates[].run	npx --no -- vitest run	pack:stack-vue-ts
gates[].phase	post_impl	pack:stack-vue-ts
gates[].when	*.vue,*.ts,*.tsx,*.js,*.mjs,*.mts,*vite.config.*,*vitest.config.*,*package.json	pack:stack-vue-ts
gates[].heavy	true	pack:stack-vue-ts
gates[].requires	vitest	pack:stack-vue-ts
gates[].id	eslint	pack:stack-vue-ts
gates[].run	npx --no -- eslint .	pack:stack-vue-ts
gates[].phase	post_impl	pack:stack-vue-ts
gates[].when	*.vue,*.ts,*.tsx,*.js,*.mjs,*eslint.config.*,*.eslintrc*	pack:stack-vue-ts
gates[].requires	eslint	pack:stack-vue-ts
profile.suites.vue.run	npx --no -- vitest run	pack:stack-vue-ts
profile.suites.vue.counts	vitest	pack:stack-vue-ts
gates[].id	pytest	pack:stack-python-uv
gates[].run	uv run --frozen pytest -q	pack:stack-python-uv
gates[].phase	post_impl	pack:stack-python-uv
gates[].when	*.py,*pyproject.toml,*uv.lock,*pytest.ini	pack:stack-python-uv
gates[].heavy	true	pack:stack-python-uv
gates[].requires	pytest	pack:stack-python-uv
gates[].id	ruff	pack:stack-python-uv
gates[].run	uv run --frozen ruff check .	pack:stack-python-uv
gates[].phase	post_impl	pack:stack-python-uv
gates[].when	*.py,*pyproject.toml,*ruff.toml	pack:stack-python-uv
gates[].requires	ruff	pack:stack-python-uv
gates[].id	mypy	pack:stack-python-uv
gates[].run	uv run --frozen mypy .	pack:stack-python-uv
gates[].phase	post_impl	pack:stack-python-uv
gates[].when	*.py,*.pyi,*pyproject.toml,*mypy.ini	pack:stack-python-uv
gates[].requires	mypy	pack:stack-python-uv
profile.suites.python.run	uv run --frozen pytest -q	pack:stack-python-uv
profile.suites.python.counts	pytest	pack:stack-python-uv

--- cfg_packs_resolved
stack-packs/laravel	stack-laravel
stack-packs/vue-ts	stack-vue-ts
stack-packs/python-uv	stack-python-uv
--- cfg_packs_unresolved

--- gates (3)
gate 0 id=[test]
gate 0 run=[php artisan test]
gate 0 phase=[post_impl]
gate 0 when=[<dflt>]
gate 0 scope=[<dflt>]
gate 0 heavy=[<dflt>]
gate 0 requires=[<dflt>]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
gate 1 id=[pint]
gate 1 run=[php vendor/bin/pint --test]
gate 1 phase=[post_impl]
gate 1 when=[app/**,bootstrap/**,config/**,database/**,routes/**,tests/**]
gate 1 scope=[<dflt>]
gate 1 heavy=[<dflt>]
gate 1 requires=[<dflt>]
gate 1 select=[<dflt>]
gate 1 scoped_run=[<dflt>]
gate 1 nope=[<dflt>]
gate 2 id=[composer-audit]
gate 2 run=[composer audit --locked --no-interaction]
gate 2 phase=[post_impl]
gate 2 when=[composer.lock]
gate 2 scope=[<dflt>]
gate 2 heavy=[<dflt>]
gate 2 requires=[<dflt>]
gate 2 select=[<dflt>]
gate 2 scoped_run=[<dflt>]
gate 2 nope=[<dflt>]
--- profile
suites:
laravel-unit
laravel-feature
vue
python
ai
path_suites count=11
path_suites 0 glob=[app/**] suites=[laravel-unit
laravel-feature]
path_suites 1 glob=[routes/**] suites=[laravel-feature]
path_suites 2 glob=[database/**] suites=[laravel-feature]
path_suites 3 glob=[config/**] suites=[laravel-feature]
path_suites 4 glob=[tests/Unit/**] suites=[laravel-unit]
path_suites 5 glob=[tests/Feature/**] suites=[laravel-feature]
path_suites 6 glob=[app/**] suites=[laravel-unit
laravel-feature]
path_suites 7 glob=[routes/**] suites=[laravel-feature]
path_suites 8 glob=[database/migrations/**] suites=[laravel-feature]
path_suites 9 glob=[resources/js/**] suites=[vue]
path_suites 10 glob=[services/ai/**] suites=[ai]
path_suites 11 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[1800] fb=[1800]
reviewer=[1800] fb=[77]
qa=[1800] fb=[77]
planner=[1800] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
<E>/plugins/stack-laravel/compliance/laravel.checks
--- pack compliance
<E>/plugins/stack-laravel/compliance
--- pack standards
== <E>/plugins/stack-laravel/standards/laravel.md
-- facts
-- rendered
## Laravel standards (stack-laravel pack)

Follow the conventions this repository already uses. Where it has none, use these.

- **Reuse before adding.** Look for an existing Action, Service, Job, Policy, FormRequest, Resource or Eloquent scope that does the job, and extend it. Do not add a parallel one.
- **Validation** goes in a FormRequest, or wherever the repository already validates. Do not validate inline in a controller when the codebase uses FormRequests.
- **Authorization** goes through the existing Policies and Gates (`$this->authorize`, `can` middleware, `Gate::allows`). Never hand-roll a role check in a controller or a view.
- **Configuration** is read with `config()`. `env()` belongs only in `config/*.php`, because `config:cache` makes it return null everywhere else.
- **Database access** uses Eloquent or the query builder with bindings. Never interpolate a variable into raw SQL.
- **Mass assignment:** declare `$fillable` (or a narrow `$guarded`). Never set `$guarded = []`.
- **Migrations** add; they do not destroy. Add new columns and tables, and keep `down()` able to reverse `up()`. Dropping, renaming or retyping a column or table, or deleting rows, in `up()` is escalated to a human by the arch-check. Do not try to work around that check. Say in your summary why the change is needed.
- **API responses** keep the shape the existing API Resources and controllers return.
- **Tests:** add a Feature test for every new route or behaviour, in the repository's framework (Pest or PHPUnit). Run them with `php artisan test`.
- **Formatting:** the code must pass `vendor/bin/pint --test`. Leave no `dd()`, `dump()` or `ray()` behind.
- **Front end** (Blade, Livewire, Inertia or Vue): use the UI component library already in the repository. Do not add a second one. Avoid `v-html` and `{!! !!}` on user data.
== <E>/plugins/stack-vue-ts/standards/vue.md
-- facts
vue3.component-library	primevue
-- rendered
## Vue 3 + TypeScript standards (stack-vue-ts pack)

Follow the conventions this repository already uses. Where it has none, use these.

- **Reuse before adding.** Look for an existing component, composable, store, API client or type that does the job, and extend it. Do not add a parallel one.
- **Component library: `primevue`** (detected in `package.json`). Build UI from its components, its theming and its form controls, in the way the existing screens use them. Do not hand-roll a component it already provides, and do not add another UI component library.
- **Components:** write new ones as `<script setup lang="ts">` single-file components, the Composition API, unless the surrounding code uses the Options API. Type props and emits (`defineProps<…>()`, `defineEmits<…>()`).
- **State and data:** use the store (Pinia or whatever the repository uses) and the API client the codebase already has. Put shared logic in a composable (`useX`). Do not call `fetch` or `axios` directly from a component when a client exists.
- **Validation and authorization** follow the existing pattern: the form-validation library already in use, and the server as the authority. A client-side permission check only hides UI; never treat it as the security check.
- **Types:** the change passes `vue-tsc --noEmit` at the strictness the project holds. Do not silence it with `any`, `// @ts-ignore` or `// @ts-nocheck`.
- **Security:** never bind user data with `v-html`. Do not build URLs, styles or HTML from unescaped user input.
- **Dependencies:** add one only when the task needs it, with the project's package manager, so `package.json` and its lockfile change together. Never edit a lockfile by hand.
- **Tests:** add or update vitest tests (with `@vue/test-utils` or `@testing-library/vue`, whichever the repository uses) for every new behaviour, next to the existing ones. Leave no `console.log` or `debugger` behind.
== <E>/plugins/stack-python-uv/standards/python.md
-- facts
-- rendered
## Python standards (stack-python-uv pack)

Follow the conventions this repository already uses. Where it has none, use these.

- **Reuse before adding.** Look for an existing module, service, client, schema or fixture that does the job, and extend it. Do not add a parallel one.
- **Python version:** write for the version the project declares (`requires-python` in `pyproject.toml`, or `.python-version`). Do not use syntax or standard-library features newer than that.
- **Tooling is the project's.** Run everything through uv (`uv run pytest`, `uv run ruff`, `uv run mypy`). Do not call `pip install`, and do not add a second package manager, formatter, linter or test runner.
- **Dependencies:** add one only when the task needs it, with `uv add` (or `uv add --dev`), so `pyproject.toml` and `uv.lock` change together. Never edit `uv.lock` by hand.
- **Validation** follows the existing pattern (Pydantic models, dataclasses, marshmallow, Django forms — whichever the codebase uses). Validate input at the boundary where the repository already does.
- **Authorization** goes through the existing dependencies, decorators or permission classes. Never hand-roll a role check inside a handler.
- **Configuration and secrets** are read the way the project already reads them (a settings object, environment-backed config). Never hard-code a secret, URL or credential.
- **Database access** uses the project's ORM or query layer with bound parameters. Never format a value into SQL. Schema changes go in a new migration; do not edit one that has already shipped.
- **Types:** annotate new and changed functions to the strictness the project already holds. When mypy is configured, the change passes it; do not silence it with a bare `# type: ignore` or `Any`.
- **Tests:** add or update pytest tests for every new behaviour, next to the existing ones and with the existing fixtures. Leave no `print()`, `breakpoint()` or `pdb` behind; use the project's logger.
=== a FactoryOS-shaped config (node-pnpm pack, empty tree)
cfg_load rc=0
--- stderr
--- CFG_*
CFG_ARCH_CHECK_CHECK_SETS=harness/extensions/acme/compliance/arch-check.checks
CFG_ARCH_CHECK_ENABLED=true
CFG_ARCH_CHECK_PACK_CHECK_SETS=true
CFG_COMMIT_CO_AUTHOR=Bot\ \<bot@example.invalid\>
CFG_COMMIT_MAX_ATTEMPTS=4
CFG_COMMIT_MODE=all
CFG_DEPLOYMENT=solo
CFG_DOMAINS_ENABLED=acme
CFG_EXTENSIONS_ENABLED=$'self-repair\ntracker-sync'
CFG_EXTENSIONS_TRACKER_SYNC_TRACKER_PATH=docs/tasks/execution-queue.md
CFG_GATES_DECLARED=true
CFG_GATES_UNMET=''
CFG_GATE_0_ID=test
CFG_GATE_0_PHASE=post_impl
CFG_GATE_0_RUN=pnpm\ -r\ run\ test\ --silent
CFG_GATE_0_SCOPE=affected
CFG_GATE_1_ID=lint
CFG_GATE_1_PHASE=post_impl
CFG_GATE_1_RUN=pnpm\ -r\ run\ lint
CFG_GATE_1_WHEN=services/\*\*\,packages/\*\*\,apps/\*\*
CFG_GATE_2_ID=typecheck
CFG_GATE_2_PHASE=post_impl
CFG_GATE_2_RUN=pnpm\ -r\ run\ typecheck
CFG_GATE_2_WHEN=services/\*\*\,packages/\*\*\,apps/\*\*
CFG_GATE_3_HEAVY=true
CFG_GATE_3_ID=py-test
CFG_GATE_3_PHASE=post_impl
CFG_GATE_3_RUN=uv\ run\ pytest\ -q
CFG_GATE_3_SCOPED_RUN=uv\ run\ pytest\ -q\ -p\ no:cacheprovider\ \{selection\}
CFG_GATE_3_SELECT=bash\ scripts/select-pytest.sh\ map.yaml\ \{files\}
CFG_GATE_3_WHEN=services/\*\*/\*.py
CFG_GATE_4_ID=size
CFG_GATE_4_PHASE=post_impl
CFG_GATE_4_RUN=bash\ scripts/check-size.sh
CFG_GATE_4_WHEN=core/orchestrate.sh
CFG_GATE_COUNT=5
CFG_INTEGRATION_HANDOFF_BASE=exact
CFG_INTEGRATION_MODE=local-ff
CFG_INTEGRATION_PR_GRANULARITY=task
CFG_NIGHTLY_E2E_CMD=pnpm\ --filter\ @acme/web\ run\ e2e:mock
CFG_NIGHTLY_E2E_REAL_CMD=pnpm\ --filter\ @acme/web\ run\ e2e:real
CFG_NIGHTLY_FULL_TEST_CMD=pnpm\ -r\ run\ test\ --silent
CFG_NIGHTLY_SECURITY_CMD=bash\ qa/authz/run.sh\ \&\&\ bash\ qa/secrets/run.sh
CFG_PACKS_RESOLVED=$'stack-packs/node-pnpm\tstack-node-pnpm'
CFG_PACKS_UNRESOLVED=''
CFG_PACK_SEEN_PATHS=$'stack.package_manager\tpnpm\tpack:stack-node-pnpm\nstack.lane_bootstrap\tpnpm install --frozen-lockfile --prefer-offline\tpack:stack-node-pnpm\nstack.lane_refresh\tpnpm install --prefer-offline\tpack:stack-node-pnpm\nstack.lane_build\tpnpm run --if-present build\tpack:stack-node-pnpm\nstack.lane_lockfiles\tpnpm-lock.yaml\tpack:stack-node-pnpm\nstack.integration_sync\tpnpm install --frozen-lockfile --prefer-offline\tpack:stack-node-pnpm\nstack.full_test_build\tpnpm run --if-present build\tpack:stack-node-pnpm\nstack.control_refresh\tpnpm install --frozen-lockfile --prefer-offline && pnpm run --if-present build\tpack:stack-node-pnpm\nstack.integration_check\tpnpm -r run typecheck\tpack:stack-node-pnpm\ngates[].id\ttest\tpack:stack-node-pnpm\ngates[].run\tpnpm -r run test --silent\tpack:stack-node-pnpm\ngates[].phase\tpost_impl\tpack:stack-node-pnpm\ngates[].scope\taffected\tpack:stack-node-pnpm\ngates[].id\tlint\tpack:stack-node-pnpm\ngates[].run\tpnpm -r run lint\tpack:stack-node-pnpm\ngates[].phase\tpost_impl\tpack:stack-node-pnpm\ngates[].id\ttypecheck\tpack:stack-node-pnpm\ngates[].run\tpnpm -r run typecheck\tpack:stack-node-pnpm\ngates[].phase\tpost_impl\tpack:stack-node-pnpm\nnightly.full_test_cmd\tpnpm -r run test --silent\tpack:stack-node-pnpm\n'
CFG_PATHS_OVERRIDES=harness/templates
CFG_PATHS_STATE=harness/state
CFG_PATHS_STORIES=harness/stories
CFG_PATHS_WORKSPACE=harness
CFG_POLICY_BASELINE_MAX_AGE_DAYS=30
CFG_POLICY_COMPOSE_PROJECT=''
CFG_POLICY_CONSECUTIVE_FAIL_LIMIT=2
CFG_POLICY_ESCALATION_CHAIN_DEPTH=3
CFG_POLICY_FULL_RUN_WHEN_UNSCOPED=false
CFG_POLICY_HEAVY_TEST_CONCURRENCY=1
CFG_POLICY_LANE_POOL_ENABLED=true
CFG_POLICY_LEASE_HEARTBEAT_SECONDS=60
CFG_POLICY_LEASE_TTL_SECONDS=6000
CFG_POLICY_LIVE_QA_CONCURRENCY=1
CFG_POLICY_MAX_CONCURRENT_LANES=2
CFG_POLICY_MAX_LANES_PER_STORY=1
CFG_POLICY_MAX_TASKS_PER_RUN=50
CFG_POLICY_PAUSE_SECONDS=3
CFG_POLICY_QA_FORCE_LIVE=''
CFG_POLICY_QA_RISK_TIERING=false
CFG_POLICY_QUARANTINE_FAILED_WORK=true
CFG_POLICY_RESOLVE_DEPENDENCY_CONFLICTS=true
CFG_POLICY_REVIEW_REPAIR_ROUNDS=3
CFG_POLICY_SCAN_MAX_CANDIDATES=0
CFG_POLICY_SCHEDULER_TICK_SECONDS=15
CFG_POLICY_SELF_REPAIR_COMMIT=true
CFG_POLICY_SEMAPHORE_TIMEOUT_SECONDS=5400
CFG_POLICY_TASK_COST_ESCALATE_USD=20
CFG_POLICY_TASK_COST_WARN_USD=8
CFG_POLICY_VERIFICATION_TIMEOUT_SECONDS=7200
CFG_PROFILE_DEPLOYMENT=operator
CFG_PROFILE_EXTENDS=stack-packs/node-pnpm
CFG_PROFILE_LIVE_STACK_DOWN=docker\ compose\ stop
CFG_PROFILE_LIVE_STACK_DRIVERS=$'(^|[^[:alnum:]_./-])(docker[[:space:]]+compose)\nbin/stack'
CFG_PROFILE_LIVE_STACK_JOURNEYS=pnpm\ --filter\ @acme/web\ e2e:mock
CFG_PROFILE_LIVE_STACK_PORTS=3102
CFG_PROFILE_LIVE_STACK_PROBE=curl\ -fsS\ http://localhost:3000/health
CFG_PROFILE_LIVE_STACK_UP=docker\ compose\ up\ -d\ --build
CFG_PROFILE_PATH_SUITES_COUNT=0
CFG_PROFILE_RISK_L3=$'*migrations/*\n*/migrate.py\n*.sql\n*auth/*\n*secret*'
CFG_PROFILE_RISK_SPAN_ROOTS=services
CFG_PROFILE_SUITES=''
CFG_PROJECT_DEFAULT_BRANCH=main
CFG_PROJECT_DESCRIPTION=A\ governance\ plane\ —\ with\ an\ em\ dash\,\ a\ comma\,\ and\ \"quotes\"
CFG_PROJECT_NAME=Acme\ Factory
CFG_RUNNERS_IMPLEMENTER_ADAPTER=claude
CFG_RUNNERS_IMPLEMENTER_BIN=claude
CFG_RUNNERS_IMPLEMENTER_BUDGET_USD=''
CFG_RUNNERS_IMPLEMENTER_TIMEOUT_SECONDS=5400
CFG_RUNNERS_LIMIT_RESET_TZ=Australia/Sydney
CFG_RUNNERS_PLANNER_BIN=claude
CFG_RUNNERS_PLANNER_TIMEOUT_SECONDS=''
CFG_RUNNERS_QA_BIN=claude
CFG_RUNNERS_QA_TIMEOUT_SECONDS=5400
CFG_RUNNERS_REVIEWER_BIN=claude
CFG_RUNNERS_REVIEWER_MODEL=some-model-id
CFG_RUNNERS_REVIEWER_TIMEOUT_SECONDS=1800
CFG_RUNNERS_RULES_FILE=AGENTS.md
CFG_RUNNERS_TRUEFORGE_BASE_URL=http://127.0.0.1:8790
CFG_SCHEMA=1
CFG_SEEN_PATHS=$'schema\t1\nproject.name\tAcme Factory\nproject.description\tA governance plane — with an em dash, a comma, and "quotes"\nproject.default_branch\tmain\nstack.languages\t[typescript, python]\nstack.layout\tmonorepo\nstack.scoped_test_template\tbash scripts/test-scoped.sh {packages}\nstack.workspace_roots\t[services, packages, apps, integrations, tooling, tests]\nstack.lane_refresh\tpnpm install --prefer-offline && pnpm --filter @acme/core run build\nstack.lane_lockfiles\tpnpm-lock.yaml uv.lock\nstack.lane_env_check\tuv sync --all-packages --dev --frozen --check\nstack.lane_env_repair\tuv sync --all-packages --dev --frozen\nstack.integration_sync\tpnpm install --frozen-lockfile && if [[ " $LANE_CHANGED_LOCKFILES " == *" uv.lock "* ]]; then uv sync --frozen; fi\nrunners.implementer.bin\tclaude\nrunners.implementer.timeout_seconds\t5400\nrunners.reviewer.bin\tclaude\nrunners.reviewer.timeout_seconds\t1800\nrunners.reviewer.model\tsome-model-id\nrunners.qa.bin\tclaude\nrunners.qa.timeout_seconds\t5400\nrunners.planner.bin\tclaude\nrunners.rules_file\tAGENTS.md\nrunners.limit_reset_tz\tAustralia/Sydney\nrunners.trueforge.base_url\thttp://127.0.0.1:8790\ngates[].id\ttest\ngates[].id\tlint\ngates[].when\tservices/**,packages/**,apps/**\ngates[].id\ttypecheck\ngates[].when\tservices/**,packages/**,apps/**\ngates[].id\tpy-test\ngates[].run\tuv run pytest -q\ngates[].phase\tpost_impl\ngates[].when\tservices/**/*.py\ngates[].heavy\ttrue\ngates[].select\tbash scripts/select-pytest.sh map.yaml {files}\ngates[].scoped_run\tuv run pytest -q -p no:cacheprovider {selection}\ngates[].id\tsize\ngates[].run\tbash scripts/check-size.sh\ngates[].phase\tpost_impl\ngates[].when\tcore/orchestrate.sh\narch_check.enabled\ttrue\narch_check.check_sets\t[harness/extensions/acme/compliance/arch-check.checks]\ncommit.co_author\tBot <bot@example.invalid>\npolicy.max_tasks_per_run\t50\npolicy.scan_max_candidates\t0\npolicy.verification_timeout_seconds\t7200\npolicy.task_cost_warn_usd\t8\npolicy.task_cost_escalate_usd\t20\npolicy.consecutive_fail_limit\t2\npolicy.escalation_chain_depth\t3\npolicy.self_repair_commit\ttrue\npolicy.review_repair_rounds\t3\npolicy.quarantine_failed_work\ttrue\npolicy.max_concurrent_lanes\t2\npolicy.max_lanes_per_story\t1\npolicy.lane_pool_enabled\ttrue\npolicy.live_qa_concurrency\t1\npolicy.heavy_test_concurrency\t1\npolicy.scheduler_tick_seconds\t15\npolicy.lease_ttl_seconds\t6000\nextensions.enabled\t[self-repair, tracker-sync]\nextensions.tracker-sync.tracker_path\tdocs/tasks/execution-queue.md\ndomains.enabled\t[acme]\nskills.implementer\t[snapshot-before-action]\nskills.qa\t[snapshot-before-action]\nnightly.e2e_cmd\tpnpm --filter @acme/web run e2e:mock\nnightly.e2e_real_cmd\tpnpm --filter @acme/web run e2e:real\nnightly.security_cmd\tbash qa/authz/run.sh && bash qa/secrets/run.sh\nprofile.extends\t[stack-packs/node-pnpm]\nprofile.risk.L3\t[\'*migrations/*\', \'*/migrate.py\', \'*.sql\', \'*auth/*\', \'*secret*\']\nprofile.risk.span_roots\t[services]\nprofile.live_stack.up\tdocker compose up -d --build\nprofile.live_stack.probe\tcurl -fsS http://localhost:3000/health\nprofile.live_stack.down\tdocker compose stop\nprofile.live_stack.journeys\tpnpm --filter @acme/web e2e:mock\nprofile.live_stack.ports\t[3102]\nprofile.live_stack.drivers\t[\'(^|[^[:alnum:]_./-])(docker[[:space:]]+compose)\', \'bin/stack\']\n'
CFG_SKILLS_BUDGET_TOKENS=6000
CFG_SKILLS_IMPLEMENTER=snapshot-before-action
CFG_SKILLS_QA=snapshot-before-action
CFG_STACK_CONTROL_REFRESH=pnpm\ install\ --frozen-lockfile\ --prefer-offline\ \&\&\ pnpm\ run\ --if-present\ build
CFG_STACK_FULL_TEST_BUILD=pnpm\ run\ --if-present\ build
CFG_STACK_INTEGRATION_CHECK=pnpm\ -r\ run\ typecheck
CFG_STACK_INTEGRATION_SYNC=pnpm\ install\ --frozen-lockfile\ \&\&\ if\ \[\[\ \"\ \$LANE_CHANGED_LOCKFILES\ \"\ ==\ \*\"\ uv.lock\ \"\*\ \]\]\;\ then\ uv\ sync\ --frozen\;\ fi
CFG_STACK_LANE_BOOTSTRAP=pnpm\ install\ --frozen-lockfile\ --prefer-offline
CFG_STACK_LANE_BUILD=pnpm\ run\ --if-present\ build
CFG_STACK_LANE_ENV_CHECK=uv\ sync\ --all-packages\ --dev\ --frozen\ --check
CFG_STACK_LANE_ENV_REPAIR=uv\ sync\ --all-packages\ --dev\ --frozen
CFG_STACK_LANE_LOCKFILES=pnpm-lock.yaml\ uv.lock
CFG_STACK_LANE_REFRESH=pnpm\ install\ --prefer-offline\ \&\&\ pnpm\ --filter\ @acme/core\ run\ build
CFG_STACK_LANGUAGES=$'typescript\npython'
CFG_STACK_LAYOUT=monorepo
CFG_STACK_PACKAGE_MANAGER=pnpm
CFG_STACK_SCOPED_TEST_TEMPLATE=bash\ scripts/test-scoped.sh\ \{packages\}
CFG_STACK_WORKSPACE_ROOTS=$'services\npackages\napps\nintegrations\ntooling\ntests'
CFG_STANDARDS_FRAGMENTS=''
CFG_STANDARDS_PACK_FRAGMENTS=true
CFG_TEAM_BRANCH_PATTERN=factory/\<story-key\>
CFG_TOOLING_SKILL_DIRS=$'.claude/skills\n.agents/skills'
--- cfg_get
schema=[1]
project.name=[Acme Factory]
project.description=[A governance plane — with an em dash, a comma, and "quotes"]
project.default_branch=[main]
paths.workspace=[harness]
paths.state=[harness/state]
paths.stories=[harness/stories]
paths.overrides=[harness/templates]
stack.languages=[typescript
python]
stack.layout=[monorepo]
stack.package_manager=[pnpm]
stack.scoped_test_template=[bash scripts/test-scoped.sh {packages}]
stack.workspace_roots=[services
packages
apps
integrations
tooling
tests]
stack.lane_bootstrap=[pnpm install --frozen-lockfile --prefer-offline]
stack.lane_refresh=[pnpm install --prefer-offline && pnpm --filter @acme/core run build]
stack.lane_build=[pnpm run --if-present build]
stack.full_test_build=[pnpm run --if-present build]
stack.integration_sync=[pnpm install --frozen-lockfile && if [[ " $LANE_CHANGED_LOCKFILES " == *" uv.lock "* ]]; then uv sync --frozen; fi]
runners.implementer.bin=[claude]
runners.implementer.adapter=[claude]
runners.implementer.timeout_seconds=[5400]
runners.implementer.budget_usd=[<dflt>]
runners.implementer.sandbox=[<dflt>]
runners.reviewer.bin=[claude]
runners.reviewer.timeout_seconds=[1800]
runners.reviewer.model=[some-model-id]
runners.qa.bin=[claude]
runners.qa.timeout_seconds=[5400]
runners.planner.bin=[claude]
runners.rules_file=[AGENTS.md]
runners.limit_reset_tz=[Australia/Sydney]
runners.trueforge.base_url=[http://127.0.0.1:8790]
arch_check.enabled=[true]
arch_check.check_sets=[harness/extensions/acme/compliance/arch-check.checks]
arch_check.pack_check_sets=[true]
commit.mode=[all]
commit.max_attempts=[4]
commit.co_author=[Bot <bot@example.invalid>]
policy.max_tasks_per_run=[50]
policy.max_concurrent_lanes=[2]
policy.max_lanes_per_story=[1]
policy.lease_ttl_seconds=[6000]
policy.scan_max_candidates=[0]
policy.review_repair_rounds=[3]
policy.qa_risk_tiering=[false]
policy.compose_project=[<dflt>]
policy.not_a_key=[<dflt>]
extensions.enabled=[self-repair
tracker-sync]
extensions.tracker-sync.tracker_path=[docs/tasks/execution-queue.md]
domains.enabled=[acme]
skills.budget_tokens=[6000]
skills.implementer=[snapshot-before-action]
standards.fragments=[<dflt>]
standards.pack_fragments=[true]
nightly.e2e_cmd=[pnpm --filter @acme/web run e2e:mock]
nightly.security_cmd=[bash qa/authz/run.sh && bash qa/secrets/run.sh]
tooling.skill_dirs=[.claude/skills
.agents/skills]
profile.extends=[stack-packs/node-pnpm]
profile.layout=[<dflt>]
profile.deployment=[operator]
profile.risk.l3=[*migrations/*
*/migrate.py
*.sql
*auth/*
*secret*]
profile.risk.span_roots=[services]
profile.live_stack.up=[docker compose up -d --build]
profile.live_stack.drivers=[(^|[^[:alnum:]_./-])(docker[[:space:]]+compose)
bin/stack]
profile.id_grammar.story=[<dflt>]
integration.mode=[local-ff]
integration.pr_granularity=[task]
integration.handoff_base=[exact]
deployment=[solo]
team.branch_pattern=[factory/<story-key>]
nosuch.section.key=[<dflt>]
--- cfg_file_keys
schema	1
project.name	Acme Factory
project.description	A governance plane — with an em dash, a comma, and "quotes"
project.default_branch	main
stack.languages	[typescript, python]
stack.layout	monorepo
stack.scoped_test_template	bash scripts/test-scoped.sh {packages}
stack.workspace_roots	[services, packages, apps, integrations, tooling, tests]
stack.lane_refresh	pnpm install --prefer-offline && pnpm --filter @acme/core run build
stack.lane_lockfiles	pnpm-lock.yaml uv.lock
stack.lane_env_check	uv sync --all-packages --dev --frozen --check
stack.lane_env_repair	uv sync --all-packages --dev --frozen
stack.integration_sync	pnpm install --frozen-lockfile && if [[ " $LANE_CHANGED_LOCKFILES " == *" uv.lock "* ]]; then uv sync --frozen; fi
runners.implementer.bin	claude
runners.implementer.timeout_seconds	5400
runners.reviewer.bin	claude
runners.reviewer.timeout_seconds	1800
runners.reviewer.model	some-model-id
runners.qa.bin	claude
runners.qa.timeout_seconds	5400
runners.planner.bin	claude
runners.rules_file	AGENTS.md
runners.limit_reset_tz	Australia/Sydney
runners.trueforge.base_url	http://127.0.0.1:8790
gates[].id	test
gates[].id	lint
gates[].when	services/**,packages/**,apps/**
gates[].id	typecheck
gates[].when	services/**,packages/**,apps/**
gates[].id	py-test
gates[].run	uv run pytest -q
gates[].phase	post_impl
gates[].when	services/**/*.py
gates[].heavy	true
gates[].select	bash scripts/select-pytest.sh map.yaml {files}
gates[].scoped_run	uv run pytest -q -p no:cacheprovider {selection}
gates[].id	size
gates[].run	bash scripts/check-size.sh
gates[].phase	post_impl
gates[].when	core/orchestrate.sh
arch_check.enabled	true
arch_check.check_sets	[harness/extensions/acme/compliance/arch-check.checks]
commit.co_author	Bot <bot@example.invalid>
policy.max_tasks_per_run	50
policy.scan_max_candidates	0
policy.verification_timeout_seconds	7200
policy.task_cost_warn_usd	8
policy.task_cost_escalate_usd	20
policy.consecutive_fail_limit	2
policy.escalation_chain_depth	3
policy.self_repair_commit	true
policy.review_repair_rounds	3
policy.quarantine_failed_work	true
policy.max_concurrent_lanes	2
policy.max_lanes_per_story	1
policy.lane_pool_enabled	true
policy.live_qa_concurrency	1
policy.heavy_test_concurrency	1
policy.scheduler_tick_seconds	15
policy.lease_ttl_seconds	6000
extensions.enabled	[self-repair, tracker-sync]
extensions.tracker-sync.tracker_path	docs/tasks/execution-queue.md
domains.enabled	[acme]
skills.implementer	[snapshot-before-action]
skills.qa	[snapshot-before-action]
nightly.e2e_cmd	pnpm --filter @acme/web run e2e:mock
nightly.e2e_real_cmd	pnpm --filter @acme/web run e2e:real
nightly.security_cmd	bash qa/authz/run.sh && bash qa/secrets/run.sh
profile.extends	[stack-packs/node-pnpm]
profile.risk.L3	['*migrations/*', '*/migrate.py', '*.sql', '*auth/*', '*secret*']
profile.risk.span_roots	[services]
profile.live_stack.up	docker compose up -d --build
profile.live_stack.probe	curl -fsS http://localhost:3000/health
profile.live_stack.down	docker compose stop
profile.live_stack.journeys	pnpm --filter @acme/web e2e:mock
profile.live_stack.ports	[3102]
profile.live_stack.drivers	['(^|[^[:alnum:]_./-])(docker[[:space:]]+compose)', 'bin/stack']

--- cfg_pack_keys
stack.package_manager	pnpm	pack:stack-node-pnpm
stack.lane_bootstrap	pnpm install --frozen-lockfile --prefer-offline	pack:stack-node-pnpm
stack.lane_refresh	pnpm install --prefer-offline	pack:stack-node-pnpm
stack.lane_build	pnpm run --if-present build	pack:stack-node-pnpm
stack.lane_lockfiles	pnpm-lock.yaml	pack:stack-node-pnpm
stack.integration_sync	pnpm install --frozen-lockfile --prefer-offline	pack:stack-node-pnpm
stack.full_test_build	pnpm run --if-present build	pack:stack-node-pnpm
stack.control_refresh	pnpm install --frozen-lockfile --prefer-offline && pnpm run --if-present build	pack:stack-node-pnpm
stack.integration_check	pnpm -r run typecheck	pack:stack-node-pnpm
gates[].id	test	pack:stack-node-pnpm
gates[].run	pnpm -r run test --silent	pack:stack-node-pnpm
gates[].phase	post_impl	pack:stack-node-pnpm
gates[].scope	affected	pack:stack-node-pnpm
gates[].id	lint	pack:stack-node-pnpm
gates[].run	pnpm -r run lint	pack:stack-node-pnpm
gates[].phase	post_impl	pack:stack-node-pnpm
gates[].id	typecheck	pack:stack-node-pnpm
gates[].run	pnpm -r run typecheck	pack:stack-node-pnpm
gates[].phase	post_impl	pack:stack-node-pnpm
nightly.full_test_cmd	pnpm -r run test --silent	pack:stack-node-pnpm

--- cfg_packs_resolved
stack-packs/node-pnpm	stack-node-pnpm
--- cfg_packs_unresolved

--- gates (5)
gate 0 id=[test]
gate 0 run=[pnpm -r run test --silent]
gate 0 phase=[post_impl]
gate 0 when=[<dflt>]
gate 0 scope=[affected]
gate 0 heavy=[<dflt>]
gate 0 requires=[<dflt>]
gate 0 select=[<dflt>]
gate 0 scoped_run=[<dflt>]
gate 0 nope=[<dflt>]
gate 1 id=[lint]
gate 1 run=[pnpm -r run lint]
gate 1 phase=[post_impl]
gate 1 when=[services/**,packages/**,apps/**]
gate 1 scope=[<dflt>]
gate 1 heavy=[<dflt>]
gate 1 requires=[<dflt>]
gate 1 select=[<dflt>]
gate 1 scoped_run=[<dflt>]
gate 1 nope=[<dflt>]
gate 2 id=[typecheck]
gate 2 run=[pnpm -r run typecheck]
gate 2 phase=[post_impl]
gate 2 when=[services/**,packages/**,apps/**]
gate 2 scope=[<dflt>]
gate 2 heavy=[<dflt>]
gate 2 requires=[<dflt>]
gate 2 select=[<dflt>]
gate 2 scoped_run=[<dflt>]
gate 2 nope=[<dflt>]
gate 3 id=[py-test]
gate 3 run=[uv run pytest -q]
gate 3 phase=[post_impl]
gate 3 when=[services/**/*.py]
gate 3 scope=[<dflt>]
gate 3 heavy=[true]
gate 3 requires=[<dflt>]
gate 3 select=[bash scripts/select-pytest.sh map.yaml {files}]
gate 3 scoped_run=[uv run pytest -q -p no:cacheprovider {selection}]
gate 3 nope=[<dflt>]
gate 4 id=[size]
gate 4 run=[bash scripts/check-size.sh]
gate 4 phase=[post_impl]
gate 4 when=[core/orchestrate.sh]
gate 4 scope=[<dflt>]
gate 4 heavy=[<dflt>]
gate 4 requires=[<dflt>]
gate 4 select=[<dflt>]
gate 4 scoped_run=[<dflt>]
gate 4 nope=[<dflt>]
--- profile
suites:

path_suites count=0
path_suites 0 glob=[<dflt>] suites=[<dflt>]
--- runner timeouts
implementer=[5400] fb=[5400]
reviewer=[1800] fb=[1800]
qa=[5400] fb=[5400]
planner=[5400] fb=[77]
--- checks
 rc=0
rc=0
--- pack check-sets
--- pack compliance
--- pack standards
