From 3c5f13b2ca2bf849c0b66d207eb40e3bea085477 Mon Sep 17 00:00:00 2001 From: "Val (orchestrator)" <63680283+iselur@users.noreply.github.com> Date: Fri, 14 Aug 2026 19:37:26 +0000 Subject: [PATCH] provenance: SPEC-082 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auto-committed by dispatch integrate (Gate 4): spec, approval(s), and any escalations. Attempt evidence stays gitignored — an on-box audit record (see SECURITY.md). --- ...377e0412d37c3a1f104acf7daf9.attempt-1.json | 10 ++++ ...5983cd9c8c377e0412d37c3a1f104acf7daf9.json | 12 +++++ specs/SPEC-082.yaml | 52 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 .orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.attempt-1.json create mode 100644 .orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.json create mode 100644 specs/SPEC-082.yaml diff --git a/.orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.attempt-1.json b/.orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.attempt-1.json new file mode 100644 index 0000000..c515548 --- /dev/null +++ b/.orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.attempt-1.json @@ -0,0 +1,10 @@ +{ + "spec_id": "SPEC-082", + "spec_digest": "043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9", + "instance_id": "8df1bb382ccf098793c4ba37e9b2ec32", + "attempt": 1, + "approver": "val", + "risk_class": "high", + "timestamp": "2026-08-14T19:28:27+00:00", + "note": "Orchestrator-transcribed per-dispatch approval under the owner's verbatim instruction: \"No Claude as utility subagent - Luna instead\"." +} diff --git a/.orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.json b/.orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.json new file mode 100644 index 0000000..bc18874 --- /dev/null +++ b/.orchestrator/approvals/043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9.json @@ -0,0 +1,12 @@ +{ + "spec_id": "SPEC-082", + "spec_digest": "043d29757b1c7783b1294c9b6a95983cd9c8c377e0412d37c3a1f104acf7daf9", + "instance_id": "8df1bb382ccf098793c4ba37e9b2ec32", + "approver": "val", + "risk_class": "high", + "timestamp": "2026-08-14T19:28:27+00:00", + "note": "Orchestrator-transcribed approval quoting the owner's instruction verbatim: \"No Claude as utility subagent - Luna instead\" (2026-08-14). The delegated spec changes only roles.utility_subagent.model to gpt-5.6-luna, retains default effort, and adds no fallback.", + "approved_scope": [ + "scripts/models.json" + ] +} diff --git a/specs/SPEC-082.yaml b/specs/SPEC-082.yaml new file mode 100644 index 0000000..d0131e6 --- /dev/null +++ b/specs/SPEC-082.yaml @@ -0,0 +1,52 @@ +id: SPEC-082 +title: Use Luna for utility subagents with no Claude fallback +risk_class: high +depends_on: [] +objective: > + Apply the owner's R131 instruction verbatim: "No Claude as utility subagent - Luna instead". + Change only roles.utility_subagent.model in scripts/models.json from claude-sonnet-4-6 to + gpt-5.6-luna. Preserve its default effort and every other role, alias, and vendor declaration. + The configuration schema permits only model and effort for this role, so selecting Luna is the + single utility-subagent route and introduces no fallback. Reuse the existing + vendor_map entry that already declares gpt-5.6-luna as codex; do not edit vendor_map. +in_scope: + - scripts/models.json +out_of_scope: + - scripts/models_check.py + - scripts/dispatch.py + - scripts/vendor_adapters.py + - scripts/codex-plan + - scripts/review + - tests/** + - AGENTS.md + - CLAUDE.md + - SECURITY.md + - .orchestrator/** + - everything else +acceptance_criteria: + - > + scripts/models.json sets roles.utility_subagent exactly to + {"model": "gpt-5.6-luna", "effort": "default"}; it contains no fallback field or alternate + model for that role. + - > + The existing vendor_map entry for gpt-5.6-luna remains codex. No vendor_map or cli_aliases + entry is added, removed, or changed, including the retained Claude declarations needed to + classify other configured or recorded models. + - > + The only repository diff is the one model-string substitution in scripts/models.json; every + other role and configuration byte is unchanged. + - > + scripts/models_check.py accepts the complete configuration, reports gpt-5.6-luna for + roles.utility_subagent.model, reports default for roles.utility_subagent.effort, and reports + codex as the declared vendor for gpt-5.6-luna. + - The installed required test suite passes against the exact candidate commit. +test_command: >- + ./scripts/models_check.py scripts/models.json && + test "$(./scripts/models_check.py scripts/models.json get roles.utility_subagent.model)" = + gpt-5.6-luna && + test "$(./scripts/models_check.py scripts/models.json get roles.utility_subagent.effort)" = + default && + test "$(./scripts/models_check.py scripts/models.json vendor gpt-5.6-luna)" = codex +hard_ceiling_hours: 1 +needs_network: false +context: []