From e0f737daf4b1b1b63126dd7f8dfcd48c9c31be65 Mon Sep 17 00:00:00 2001 From: vimihi Date: Mon, 5 Oct 2026 16:19:55 +0700 Subject: [PATCH 1/2] fix: update token-saving BA preset to GPT-6.1 Sol --- .codex-plugin/plugin.json | 2 +- CHANGELOG.md | 6 ++++++ README.md | 8 +++++--- assets/framework.yaml | 2 +- docs/agent-models.md | 10 ++++++---- docs/cli-reference.md | 14 +++++++------- docs/getting-started.md | 2 +- docs/marketplace-submission.md | 12 +++++++----- docs/releases/1.0.1.md | 21 +++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- plugin.json | 2 +- skills/sdlc-setup/SKILL.md | 4 ++-- skills/sdlc/SKILL.md | 4 ++-- src/agents.ts | 2 +- src/constants.ts | 2 +- tests/agent-modes.test.ts | 29 +++++++++++++++++++++++++++-- tests/package-content.test.ts | 4 ++-- 18 files changed, 94 insertions(+), 36 deletions(-) create mode 100644 docs/releases/1.0.1.md diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index e72a83c..9218b02 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codex-sdlc", - "version": "1.0.0", + "version": "1.0.1", "description": "Run evidence-backed software delivery across one or more repositories with Codex.", "author": { "name": "vimihi", diff --git a/CHANGELOG.md b/CHANGELOG.md index 75e43bc..c3d128e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to codex-sdlc are documented here. +## 1.0.1 - Unreleased + +- Update `--save-my-token` to use `gpt-6.1-sol/high` for BA. PM inherits, and backend, web/mobile frontend, and QC continue to use `gpt-6-luna/xhigh`. +- Require plugin/runtime 1.0.1 for the updated preset and document reapplying it after upgrade. Saved project settings, existing run snapshots, optional PO settings, and explicitly chosen fallbacks are preserved until the user changes them. +- Add migration coverage for previewing and reapplying the preset, freezing earlier GPT-6 Sol runs, and rejecting a host without GPT-6.1 Sol instead of substituting another model. + ## 1.0.0 - 2026-09-25 - Add opt-in, assessed Compact runs with a frozen revisioned graph, one canonical BA specification, generated compatibility views, and one independent integrated QC record. Full remains the default; saved model settings and existing runs retain their meaning. diff --git a/README.md b/README.md index 48d658c..5751c9b 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,8 @@ Eight Codex skills and a repository-local CLI keep tasks, evidence, blockers, an ## Get started +**1.0.1 development:** Token-saving mode now selects GPT-6.1 Sol for BA. The new preset requires plugin/runtime 1.0.1; until publication, use the [local package procedure](docs/cli-reference.md#try-the-local-package-in-an-unrelated-repository). + **New in 1.0.0:** Runtime-assisted delivery reduces manual task bookkeeping, and eligible bounded features can use opt-in Compact mode. See the [release notes](docs/releases/1.0.0.md) for changes and upgrade guidance. You need **Codex**, **Node.js `>=24.16.0 <25`**, **npm 11**, and an existing application repository. Setup configures your application directories; it does not scaffold application code. @@ -124,7 +126,7 @@ The runtime can now prepare task assignments, record agent activation, collect d - `timing` reports recorded lifecycle intervals and collector durations, with overlapping work and unknown model time clearly distinguished. - Configured roots such as `apps/api` and Next.js route groups/dynamic segments work consistently. Several technical capabilities can reference one business requirement. -See [runtime-assisted delivery](skills/sdlc-pm/references/task-operations.md) and [1.0.0 release notes](docs/releases/1.0.0.md). Full remains the default; eligible new runs can now opt into Compact. Parallel scheduling, evidence caching, and model-default changes remain deferred. Automatic handoff verifies the caller-declared task-owned subset of actual uncommitted Git changes; it does not independently infer ownership of omitted files or support deleted product paths. +See [runtime-assisted delivery](skills/sdlc-pm/references/task-operations.md) and [1.0.0 release notes](docs/releases/1.0.0.md). Full remains the default; eligible new runs can now opt into Compact. Parallel scheduling and evidence caching remain deferred. Automatic handoff verifies the caller-declared task-owned subset of actual uncommitted Git changes; it does not independently infer ownership of omitted files or support deleted product paths. ### Compact delivery for bounded features @@ -199,9 +201,9 @@ These chat shortcuts, introduced in 0.6.0, remain available: /sdlc --normal ``` -Token-saving mode keeps PM inherited, uses Sol (`gpt-6-sol`) with high reasoning for BA, and Luna (`gpt-6-luna`) with extra-high reasoning for backend, web/mobile frontend, and QC. Normal mode restores inheritance for those roles. Both save to the current project's `.sdlc/project.yaml` for every new run; existing runs and optional AI Product Owner settings are preserved. +Token-saving mode keeps PM inherited, uses GPT-6.1 Sol (`gpt-6.1-sol`) with high reasoning for BA, and Luna (`gpt-6-luna`) with extra-high reasoning for backend, web/mobile frontend, and QC. Normal mode restores inheritance for those roles. Both save to the current project's `.sdlc/project.yaml` for every new run; existing runs and optional AI Product Owner settings are preserved. -These are skill-handled chat shortcuts. In clients that reject custom slash commands, invoke `$sdlc --save-my-token` or `$sdlc --normal`. Both plugin and runtime must be 0.6.0 or newer. See [project mode details and CLI equivalents](docs/agent-models.md#project-model-modes). +These are skill-handled chat shortcuts. In clients that reject custom slash commands, invoke `$sdlc --save-my-token` or `$sdlc --normal`. The updated token-saving preset requires plugin/runtime 1.0.1 or newer; normal mode requires 0.6.0 or newer. After upgrading an existing project, reapply `--save-my-token` to update its saved preset. See [project mode details and CLI equivalents](docs/agent-models.md#project-model-modes). ## What stays in your repository diff --git a/assets/framework.yaml b/assets/framework.yaml index 0807bcb..4bbc10a 100644 --- a/assets/framework.yaml +++ b/assets/framework.yaml @@ -1,7 +1,7 @@ schema_version: 1 framework: name: codex-sdlc - version: 1.0.0 + version: 1.0.1 run_schema_version: 1 project_schema_version: 2 installation: diff --git a/docs/agent-models.md b/docs/agent-models.md index b6a5a69..d1df148 100644 --- a/docs/agent-models.md +++ b/docs/agent-models.md @@ -1,6 +1,6 @@ # Choose a model for each SDLC role -Custom role settings are available in codex-sdlc 0.5.0. The project mode shortcuts below require both the 0.6.0 plugin and runtime. Updating the plugin does not upgrade existing projects; upgrade the runtime as described in the [getting started guide](getting-started.md). +Custom role settings are available in codex-sdlc 0.5.0. The updated token-saving preset requires both the 1.0.1 plugin and runtime; normal mode remains supported from 0.6.0. Updating the plugin does not upgrade existing projects; upgrade the runtime as described in the [getting started guide](getting-started.md). ## Project model modes @@ -15,7 +15,7 @@ The new `sdlc` skill interprets this chat shorthand and saves the following proj | Role | Model | Reasoning | | --- | --- | --- | | PM | Inherited | Inherited | -| BA | `gpt-6-sol` | `high` | +| BA | `gpt-6.1-sol` | `high` | | Backend | `gpt-6-luna` | `xhigh` (extra-high) | | Frontend, including web and mobile | `gpt-6-luna` | `xhigh` (extra-high) | | QC | `gpt-6-luna` | `xhigh` (extra-high) | @@ -28,7 +28,7 @@ To restore normal inherited models: Normal mode removes model, reasoning, and fallback overrides for PM, BA, backend, frontend, and QC. It does not restore custom models that existed before token-saving mode. Both commands preserve optional AI Product Owner configuration and all other project settings. -Each selection is stored in the coordinator's `.sdlc/project.yaml` and applies to **every new run** until you change it. Other projects and existing runs are unaffected. A mode-only request does not start a feature run. In a multi-repository workspace, run it in the coordinator to cover its mapped applications. An uninitialized project needs setup first. +Each selection is stored in the coordinator's `.sdlc/project.yaml` and applies to **every new run** until you change it. After upgrading from 1.0.0, send `/sdlc --save-my-token` again to replace the saved BA selection with GPT-6.1 Sol. Upgrading alone preserves saved settings. Other projects and existing runs are unaffected. A mode-only request does not start a feature run. In a multi-repository workspace, run it in the coordinator to cover its mapped applications. An uninitialized project needs setup first. Codex's explicit skill syntax is `$sdlc --save-my-token` or `$sdlc --normal`; use it if your client reserves slash commands for built-in actions. The plugin handles `/sdlc` as prompt shorthand rather than registering a native slash command. See [official skill invocation guidance](https://learn.chatgpt.com/docs/build-skills). @@ -41,7 +41,9 @@ node .sdlc/runtime.cjs configure-agents --normal Add `--dry-run --json` to preview without saving. Use `--root /absolute/path/to/coordinator` to select a project explicitly. The two modes are mutually exclusive and cannot be combined with individual role or PO configuration flags; make custom changes in a separate invocation. Applying the same preset again keeps the same settings. -The presets require `gpt-6-sol/high` and `gpt-6-luna/xhigh` support on the user's host. Configuration saves the requested policy; dispatch still validates availability. No fallback is added, and an unavailable model or effort stops dispatch. Token-saving mode selects these models; actual token usage depends on the work. +The preset requires `gpt-6.1-sol/high` and `gpt-6-luna/xhigh` support on the user's host. Configuration saves the requested policy; dispatch still validates availability. No fallback is added, and an unavailable model or effort stops dispatch. Token-saving mode selects these models; actual token usage depends on the work. + +The model IDs match [OpenAI's current Codex model guidance](https://learn.chatgpt.com/docs/models), checked on 2026-10-05. GPT-6.1 Sol is the newer Sol selection; GPT-6 Luna remains the current Luna selection. SDLC pins exact IDs rather than silently changing a saved policy when another generation is released. Reasoning effort is retained across this update; compare actual delivery results before claiming time or token savings. ## Custom role settings diff --git a/docs/cli-reference.md b/docs/cli-reference.md index f6dcf97..9221045 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -4,7 +4,7 @@ For the first-run walkthrough, read [Getting started](getting-started.md). Retur ## Build and test -Version 1.0.0 is in development. Release-pinned 1.0.0 commands below apply after publication; use the local tarball procedure while testing this branch. +Version 1.0.0 is published. The 1.0.1 token-saving preset update is in development; use the local tarball procedure while testing that update. Requirements: Node.js `>=24.16.0 <25` and npm 11. @@ -67,7 +67,7 @@ node .sdlc/runtime.cjs configure-agents --save-my-token node .sdlc/runtime.cjs configure-agents --normal ``` -Both commands accept `--root `. Token-saving mode uses inherited PM, `gpt-6-sol/high` for BA, and `gpt-6-luna/xhigh` for backend, web/mobile frontend, and QC. Normal mode removes those five roles' overrides. Optional PO configuration is preserved. The choice persists for new runs in this project; existing runs keep their policies. Mode flags cannot be combined with one another or individual agent/PO settings, and are supported on `configure-agents`, not `init` or `start`. See [model modes](agent-models.md#project-model-modes) for chat invocation and compatibility. +Both commands accept `--root `. In runtime 1.0.1 or newer, token-saving mode uses inherited PM, `gpt-6.1-sol/high` for BA, and `gpt-6-luna/xhigh` for backend, web/mobile frontend, and QC. Normal mode removes those five roles' overrides. Optional PO configuration is preserved. The choice persists for new runs in this project; existing runs keep their policies. After upgrading an older project, reapply `--save-my-token` to update its saved preset. Mode flags cannot be combined with one another or individual agent/PO settings, and are supported on `configure-agents`, not `init` or `start`. See [model modes](agent-models.md#project-model-modes) for chat invocation and compatibility. ### Application setup @@ -149,9 +149,9 @@ Use the `generic` application preset or `none` database preset when a listed pre Install the generated tarball, preview the bounded changes, and then initialize. During local testing, pin the generated repository launcher to the tarball: ```sh -npm install --global ./codex-sdlc-1.0.0.tgz -codex-sdlc init --root /path/to/project --name example --applications web --web-root . --web-preset nextjs --runtime-spec file:/absolute/path/codex-sdlc-1.0.0.tgz --dry-run -codex-sdlc init --root /path/to/project --name example --applications web --web-root . --web-preset nextjs --runtime-spec file:/absolute/path/codex-sdlc-1.0.0.tgz +npm install --global ./codex-sdlc-1.0.1.tgz +codex-sdlc init --root /path/to/project --name example --applications web --web-root . --web-preset nextjs --runtime-spec file:/absolute/path/codex-sdlc-1.0.1.tgz --dry-run +codex-sdlc init --root /path/to/project --name example --applications web --web-root . --web-preset nextjs --runtime-spec file:/absolute/path/codex-sdlc-1.0.1.tgz cd /path/to/project node .sdlc/runtime.cjs restore ``` @@ -170,8 +170,8 @@ The installer preserves existing `AGENTS.md` and `.gitignore` content, refuses c Preview and apply an upgrade with the new runtime package pinned into the repository: ```sh -codex-sdlc upgrade --root /path/to/project --runtime-spec file:/absolute/path/codex-sdlc-1.0.0.tgz --dry-run -codex-sdlc upgrade --root /path/to/project --runtime-spec file:/absolute/path/codex-sdlc-1.0.0.tgz +codex-sdlc upgrade --root /path/to/project --runtime-spec file:/absolute/path/codex-sdlc-1.0.1.tgz --dry-run +codex-sdlc upgrade --root /path/to/project --runtime-spec file:/absolute/path/codex-sdlc-1.0.1.tgz cd /path/to/project node .sdlc/runtime.cjs restore node .sdlc/runtime.cjs doctor diff --git a/docs/getting-started.md b/docs/getting-started.md index bb55bb5..4040d97 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -87,7 +87,7 @@ Choose single-repository or multi-repository mode before starting delivery. Vers Ask Codex: `Configure frontend to use Astra, backend to use Luna, and PM and QC to use Sol.` The setup skill maps your choices to model IDs supported by your Codex host and stores them in the coordinator’s `.sdlc/project.yaml`. Unspecified roles inherit from Codex. -You can also ask: `Enable an advisory AI Product Owner review using Sol.` The review runs after QC; final acceptance remains your decision. See [Choose a model for each role](agent-models.md) for exact commands, explicit fallbacks, and resetting settings. Custom role settings require plugin/runtime 0.5.0 or newer. Project presets (`$sdlc --save-my-token` and `$sdlc --normal`) require 0.6.0. Existing runs keep their original model settings. +You can also ask: `Enable an advisory AI Product Owner review using Sol.` The review runs after QC; final acceptance remains your decision. See [Choose a model for each role](agent-models.md) for exact commands, explicit fallbacks, and resetting settings. Custom role settings require plugin/runtime 0.5.0 or newer. The GPT-6.1 Sol preset (`$sdlc --save-my-token`) requires plugin/runtime 1.0.1 or newer; `$sdlc --normal` requires 0.6.0. After upgrading, reapply the token-saving preset to update existing saved settings. Existing runs keep their original model settings. ## Upgrade an existing project diff --git a/docs/marketplace-submission.md b/docs/marketplace-submission.md index ce57a3c..1179999 100644 --- a/docs/marketplace-submission.md +++ b/docs/marketplace-submission.md @@ -69,10 +69,10 @@ Set up and coordinate resumable software delivery across one repository or multi ### 7. Save and reset project model modes - User prompt: `$sdlc --save-my-token` in an initialized disposable project. -- Expected behavior: Preview and save inherited PM, `gpt-6-sol/high` for BA, and `gpt-6-luna/xhigh` for backend, web/mobile frontend, and QC in `.sdlc/project.yaml`. Preserve PO settings. A mode-only request does not start a feature run; every subsequently started run snapshots the preset. +- Expected behavior: With plugin/runtime 1.0.1, preview and save inherited PM, `gpt-6.1-sol/high` for BA, and `gpt-6-luna/xhigh` for backend, web/mobile frontend, and QC in `.sdlc/project.yaml`. Preserve PO settings. A mode-only request does not start a feature run; every subsequently started run snapshots the preset. Upgraded projects reapply the preset; existing runs retain their original model policy. - User prompt: `$sdlc --normal` in the same project. - Expected behavior: Remove model, effort, and fallback overrides for the five delivery roles. Preserve existing run snapshots and optional PO settings. New runs inherit their delivery-role models. -- Fixture: A disposable initialized project using plugin/runtime 1.0.0. The host must advertise the requested models and efforts to exercise actual dispatch; saving and previewing configuration need no model dispatch. +- Fixture: A disposable initialized project using plugin/runtime 1.0.1. The host must advertise the requested models and efforts to exercise actual dispatch; saving and previewing configuration need no model dispatch. ### 8. Deliver a bounded feature with Compact @@ -128,6 +128,8 @@ Set up and coordinate resumable software delivery across one repository or multi ## Release notes +The pending 1.0.1 update changes the token-saving BA selection to GPT-6.1 Sol/high. Other delivery roles retain GPT-6 Luna/extra-high and PM inherits. Existing projects reapply the preset after updating both plugin and runtime; saved runs retain their original models. Host capability validation and explicit fallback policy are preserved. + Version 1.0.0 adds opt-in Compact delivery for bounded features, with one canonical BA specification, generated supporting views, and independent integrated QC. Full remains the default. New runtime helpers handle task preparation, activation, checks, handoffs, repair history, preflight, and timing. Configured application roots and Next.js routes are handled consistently, and multiple technical capabilities can share a business requirement. Existing project model presets remain available. PM review, current verification evidence, and final human acceptance are preserved. A scripted fixture measured about 22% lower framework execution time for Compact versus the new Full workflow; real-agent delivery time and token savings are not yet measured. ## Portal prerequisites @@ -147,12 +149,12 @@ Version 1.0.0 adds opt-in Compact delivery for bounded features, with one canoni Submit the skills-only plugin from the release source tree. The bundle root contains `plugin.json`, `skills/`, `.codex-plugin/plugin.json`, `README.md`, `docs/getting-started.md`, `docs/agent-models.md`, and the referenced brand assets. It requires no MCP server, authentication configuration, demo credentials, or network allowlist. -Build the upload ZIP and npm tarball from the reviewed 1.0.0 source. The prepared artifacts are under `build/public-submission/1.0.0/`; verify their hashes using that directory’s `SHA256SUMS` before upload. +When 1.0.1 is ready for publication, build the upload ZIP and npm tarball from its reviewed source under `build/public-submission/1.0.1/`; verify their hashes using that directory’s `SHA256SUMS` before upload. ## Release order -1. Tag the reviewed source revision as `v1.0.0` and publish the GitHub release using `docs/releases/1.0.0.md`. -2. Wait for `.github/workflows/publish.yml` to publish `codex-sdlc@1.0.0` to npm with provenance, then verify that the public registry serves 1.0.0. Do not submit the plugin update until npm serves 1.0.0. +1. Tag the reviewed source revision as `v1.0.1` and publish the GitHub release using `docs/releases/1.0.1.md`. +2. Wait for `.github/workflows/publish.yml` to publish `codex-sdlc@1.0.1` to npm with provenance, then verify that the public registry serves 1.0.1. Do not submit the plugin update until npm serves 1.0.1. 3. Open the existing codex-sdlc listing in the OpenAI plugin submission portal, create a version update, keep the type **Skills only**, and upload the prepared skills bundle and listing logo. 4. Copy the listing, prompts, tests, availability, and release notes from this document; complete publisher identity and policy attestations. 5. Submit for review. After approval, explicitly publish the approved version to the universal Plugins Directory. diff --git a/docs/releases/1.0.1.md b/docs/releases/1.0.1.md new file mode 100644 index 0000000..5eb41f8 --- /dev/null +++ b/docs/releases/1.0.1.md @@ -0,0 +1,21 @@ +# codex-sdlc 1.0.1 + +Status: in development; not published. + +## Updated token-saving preset + +`/sdlc --save-my-token` and `$sdlc --save-my-token` now configure BA to use `gpt-6.1-sol` with `high` reasoning. PM inherits its model, and backend, web/mobile frontend, and QC use `gpt-6-luna` with `xhigh` reasoning. Normal mode and optional AI Product Owner settings retain their existing behavior. + +These IDs follow [official Codex model guidance](https://learn.chatgpt.com/docs/models), checked on 2026-10-05. GPT-6 Luna remains the current Luna model; no newer Luna ID is assumed. Host availability is still validated before dispatch, without an implicit fallback. Model selection does not establish a measured token or time reduction. + +## Existing projects + +After publication, update both plugin and coordinator runtime to 1.0.1. Preview and apply the runtime upgrade, restore it, and run `doctor` and `validate-config` as described in the [upgrade guide](../getting-started.md#upgrade-an-existing-project). + +Then reapply `/sdlc --save-my-token` in the coordinator to update its saved preset for new runs. Upgrading alone preserves project model configuration. Existing run snapshots and custom role/fallback selections retain their saved IDs until explicitly changed. + +While this release is in development, use the [local tarball procedure](../cli-reference.md#try-the-local-package-in-an-unrelated-repository) to test it. + +## Validation + +All 183 tests across 20 files, TypeScript checks, and the build passed. Both edited skills passed validation. A fresh 1.0.1 tarball installation and restored repository launcher passed preview-without-writes, preset saving, idempotent reapplication, and normal reset checks. Migration coverage verifies that prior run snapshots retain GPT-6 Sol and that a host without GPT-6.1 Sol cannot silently substitute another model. These checks validate routing and persistence; real-agent quality, latency, and token usage have not been measured for this update. diff --git a/package-lock.json b/package-lock.json index fbbe565..150fe55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "codex-sdlc", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codex-sdlc", - "version": "1.0.0", + "version": "1.0.1", "license": "Apache-2.0", "dependencies": { "ajv": "8.20.0", diff --git a/package.json b/package.json index 67dd9d4..b17094d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codex-sdlc", - "version": "1.0.0", + "version": "1.0.1", "description": "Evidence-backed SDLC runtime for one or more repositories with Codex", "type": "module", "license": "Apache-2.0", diff --git a/plugin.json b/plugin.json index 07e7d55..46a4f21 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "codex-sdlc", - "version": "1.0.0", + "version": "1.0.1", "description": "Run evidence-backed software delivery across one or more repositories with Codex.", "author": { "name": "vimihi", diff --git a/skills/sdlc-setup/SKILL.md b/skills/sdlc-setup/SKILL.md index 35d9a73..1bab8f1 100644 --- a/skills/sdlc-setup/SKILL.md +++ b/skills/sdlc-setup/SKILL.md @@ -11,7 +11,7 @@ Resolve the repository the user selected before running a command. Read its `AGE For a new setup, explain briefly that the installed plugin supplies Codex skills while the npm CLI creates and operates `.sdlc`. Plugin skills stay in Codex's plugin cache; initialization does not create `.agents/skills` in the project. -Confirm Node.js satisfies the version declared by codex-sdlc. Run `codex-sdlc --version` when the executable is available and use it only when it reports 1.0.0. If it is unavailable or differs, run the release-pinned CLI through `npx --yes codex-sdlc@1.0.0`; do not require a global installation. Let the environment request approval if downloading the package requires network access. +Confirm Node.js satisfies the version declared by codex-sdlc. Run `codex-sdlc --version` when the executable is available and use it only when it reports 1.0.1. If it is unavailable or differs, run the release-pinned CLI through `npx --yes codex-sdlc@1.0.1`; do not require a global installation. Let the environment request approval if downloading the package requires network access. Infer the project name, application roots, technologies, and workspace shape from the selected repository. Ask only for missing information that changes repository topology or application ownership. State which checkout will own `.sdlc` before previewing a multi-repository installation. @@ -37,7 +37,7 @@ Report the selected shape, coordinator, mapped repositories, created files, runt ## Role models -For `/sdlc --save-my-token`, `/sdlc --normal`, or their `$sdlc` equivalents, follow the [sdlc entry point](../sdlc/SKILL.md). It applies a project preset through `configure-agents --save-my-token` or `configure-agents --normal`. These flags require runtime 0.6.0 or newer; upgrade older runtimes before applying a mode. Preserve optional PO settings and existing run snapshots. +For `/sdlc --save-my-token`, `/sdlc --normal`, or their `$sdlc` equivalents, follow the [sdlc entry point](../sdlc/SKILL.md). It applies a project preset through `configure-agents --save-my-token` or `configure-agents --normal`. The GPT-6.1 Sol token-saving preset requires runtime 1.0.1 or newer; normal mode requires 0.6.0 or newer. After upgrading, reapply `--save-my-token` to update an existing saved preset. Preserve optional PO settings and existing run snapshots. When the user asks to choose agent models, use `configure-agents` after initialization or pass the same `--agent-model`, `--agent-reasoning`, `--agent-fallback`, and `--po-review` settings during `init`. Canonical roles are `pm`, `ba`, `backend`, `frontend`, `qc`, and `po`; translate FE/BE/Product Owner to `frontend`/`backend`/`po`. The frontend setting covers web and mobile. Use exact model IDs exposed by the current host and preserve the user’s selected models. Do not choose a model for an unspecified role. diff --git a/skills/sdlc/SKILL.md b/skills/sdlc/SKILL.md index e956328..aaaa7e3 100644 --- a/skills/sdlc/SKILL.md +++ b/skills/sdlc/SKILL.md @@ -11,7 +11,7 @@ Treat `/sdlc --save-my-token` and `/sdlc --normal` as chat shorthand for this sk 1. Resolve the selected project's coordinator directory and read its `AGENTS.md` and `.sdlc/project.yaml`. In a multi-repository workspace, the coordinator owns this setting for all mapped applications. Never select a different project or write global Codex settings. If the coordinator is unknown, ask for its location. If the project is not initialized, explain that setup is required; use [sdlc-setup](../sdlc-setup/SKILL.md) when initialization is requested rather than inventing application roots. 2. Accept exactly one of `--save-my-token` and `--normal`. Both together, or either combined with custom role model, effort, fallback, reset, or PO settings, are conflicting requests: explain the conflict without changing configuration. Custom role changes can be made separately through [sdlc-setup](../sdlc-setup/SKILL.md). -3. From the coordinator, run the corresponding command below with `--dry-run --json` first. Inspect the returned settings. An explicit mode request authorizes saving that preset: unless the user asked only for a preview, run the same command without `--dry-run`. Do not ask for another confirmation for the requested mode. If the runtime rejects the new flag, report that its version lacks this feature and use the setup upgrade workflow with version 0.6.0 or newer. Do not rewrite project configuration manually or claim success after a failed command. +3. For `--save-my-token`, check `node .sdlc/runtime.cjs --version` first: the GPT-6.1 Sol preset requires runtime 1.0.1 or newer. If it is older, use the [setup upgrade workflow](../sdlc-setup/SKILL.md) before applying the preset; older runtimes can accept the flag while selecting the previous Sol model. `--normal` remains supported on runtime 0.6.0 or newer. From the coordinator, run the corresponding command below with `--dry-run --json` first. Inspect the returned settings. An explicit mode request authorizes saving that preset: unless the user asked only for a preview, run the same command without `--dry-run`. Do not ask for another confirmation for the requested mode. If the runtime rejects the flag, use the setup upgrade workflow. Do not rewrite project configuration manually or claim success after a failed command. ```sh node .sdlc/runtime.cjs configure-agents --save-my-token --dry-run --json @@ -30,7 +30,7 @@ Treat `/sdlc --save-my-token` and `/sdlc --normal` as chat shorthand for this sk | Role | `--save-my-token` | `--normal` | | --- | --- | --- | | PM | Inherited | Inherited | -| BA | `gpt-6-sol`, `high` | Inherited | +| BA | `gpt-6.1-sol`, `high` | Inherited | | Backend | `gpt-6-luna`, `xhigh` | Inherited | | Frontend (web and mobile) | `gpt-6-luna`, `xhigh` | Inherited | | QC | `gpt-6-luna`, `xhigh` | Inherited | diff --git a/src/agents.ts b/src/agents.ts index 847a394..b5dfca2 100644 --- a/src/agents.ts +++ b/src/agents.ts @@ -111,7 +111,7 @@ export function updateAgentPolicy(current: AgentPolicy | undefined, options: Omi if (preset) { for (const role of ["pm", "ba", "backend", "frontend", "qc"] as const) delete result.roles[role]; if (options.saveMyToken) { - result.roles.ba = { model: "gpt-6-sol", reasoning_effort: "high" }; + result.roles.ba = { model: "gpt-6.1-sol", reasoning_effort: "high" }; for (const role of ["backend", "frontend", "qc"] as const) { result.roles[role] = { model: "gpt-6-luna", reasoning_effort: "xhigh" }; } diff --git a/src/constants.ts b/src/constants.ts index 8e217b9..246bee3 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,4 +1,4 @@ export const FRAMEWORK_NAME = "codex-sdlc" as const; -export const FRAMEWORK_VERSION = "1.0.0" as const; +export const FRAMEWORK_VERSION = "1.0.1" as const; export const SCHEMA_VERSION = 1 as const; export const PROJECT_SCHEMA_VERSION = 2 as const; diff --git a/tests/agent-modes.test.ts b/tests/agent-modes.test.ts index 98641d7..c6e5022 100644 --- a/tests/agent-modes.test.ts +++ b/tests/agent-modes.test.ts @@ -13,7 +13,7 @@ import { loadRun, startRun } from "../src/runs.js"; const roots: string[] = []; const savedRoles: AgentPolicy["roles"] = { - ba: { model: "gpt-6-sol", reasoning_effort: "high" }, + ba: { model: "gpt-6.1-sol", reasoning_effort: "high" }, backend: { model: "gpt-6-luna", reasoning_effort: "xhigh" }, frontend: { model: "gpt-6-luna", reasoning_effort: "xhigh" }, qc: { model: "gpt-6-luna", reasoning_effort: "xhigh" }, @@ -23,7 +23,7 @@ const capabilities: AgentCapabilities = { model_selection: true, reasoning_selection: true, models: [ - { id: "gpt-6-sol", reasoning_efforts: ["high"] }, + { id: "gpt-6.1-sol", reasoning_efforts: ["high"] }, { id: "gpt-6-luna", reasoning_efforts: ["xhigh"] }, ], }; @@ -129,6 +129,31 @@ describe("project model presets", () => { expect((await loadProject(root)).agents).toEqual({ roles: {}, product_owner_review: "disabled" }); }); + test("reapplying the preset updates saved GPT-6 Sol without rewriting existing runs or using an implicit fallback", async () => { + const previousPolicy: AgentPolicy = { + roles: { ...savedRoles, ba: { model: "gpt-6-sol", reasoning_effort: "high" } }, + product_owner_review: "disabled", + }; + const root = await fixture(previousPolicy); + const previous = await run(root, "PREVIOUS-001"); + const path = resolve(root, ".sdlc/runs/PREVIOUS-001/manifest.yaml"); + const before = await readFile(path, "utf8"); + const oldHost: AgentCapabilities = { + ...capabilities, + models: [{ id: "gpt-6-sol", reasoning_efforts: ["high"] }, capabilities.models[1]!], + }; + + expect((await cli(root, "--save-my-token", "--dry-run")).payload.result.agents.roles.ba).toEqual(savedRoles.ba); + expect((await loadProject(root)).agents).toEqual(previousPolicy); + expect((await cli(root, "--save-my-token")).code).toBe(0); + const updated = await run(root, "UPDATED-001"); + expect(updated.agent_policy).toEqual({ roles: savedRoles, product_owner_review: "disabled" }); + expect(resolveAgentPlan(updated, "BA-001", capabilities).selected).toEqual(savedRoles.ba); + expect(() => resolveAgentPlan(updated, "BA-001", oldHost)).toThrow("No implicit fallback"); + expect(resolveAgentPlan(previous, "BA-001", oldHost).selected).toEqual(previousPolicy.roles.ba); + expect(await readFile(path, "utf8")).toBe(before); + }); + test("grammar and CLI reject conflicting presets and manual settings without writing", async () => { const root = await fixture(); const path = resolve(root, ".sdlc/project.yaml"); diff --git a/tests/package-content.test.ts b/tests/package-content.test.ts index a31d202..21c8f2c 100644 --- a/tests/package-content.test.ts +++ b/tests/package-content.test.ts @@ -31,7 +31,7 @@ describe("distribution content", () => { const manifest = JSON.parse(await readFile(resolve(root, "plugin.json"), "utf8")); expect(manifest.$schema).toBe("https://agent-plugins.org/schemas/1.0.0/plugin.schema.json"); expect(manifest.name).toBe("codex-sdlc"); - expect(manifest.version).toBe("1.0.0"); + expect(manifest.version).toBe("1.0.1"); expect(manifest.license).toBe("Apache-2.0"); expect(manifest.extensions["com.openai"].interface.capabilities).toEqual(["Read", "Write"]); expect(manifest.extensions["com.openai"].interface.logo).toBe("./assets/brand/codex-sdlc.svg"); @@ -40,7 +40,7 @@ describe("distribution content", () => { expect(manifest.extensions["com.openai"].interface.defaultPrompt.every((prompt: string) => prompt.length <= 128)).toBe(true); expect(manifest.extensions["com.openai"].interface.websiteURL).toBe("https://github.com/prime-vimihi/codex-sdlc/blob/main/docs/getting-started.md"); const codexManifest = JSON.parse(await readFile(resolve(root, ".codex-plugin/plugin.json"), "utf8")); - expect(codexManifest.version).toBe("1.0.0"); + expect(codexManifest.version).toBe("1.0.1"); expect(codexManifest.interface.defaultPrompt.length).toBeLessThanOrEqual(3); expect(codexManifest.interface.defaultPrompt.every((prompt: string) => prompt.length <= 128)).toBe(true); const packageDocument = JSON.parse(await readFile(resolve(root, "package.json"), "utf8")); From 38724fb136d1fa5760f16a6a08fc968842ba239e Mon Sep 17 00:00:00 2001 From: vimihi Date: Mon, 5 Oct 2026 16:27:39 +0700 Subject: [PATCH 2/2] chore: prepare 1.0.1 publication and patch URI dependency --- CHANGELOG.md | 3 ++- README.md | 12 ++++++------ docs/cli-reference.md | 4 ++-- docs/getting-started.md | 10 +++++----- docs/marketplace-submission.md | 6 +++--- docs/releases/1.0.1.md | 14 +++++++++++--- package-lock.json | 6 +++--- 7 files changed, 32 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3d128e..0e3b1ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,12 @@ All notable changes to codex-sdlc are documented here. -## 1.0.1 - Unreleased +## 1.0.1 - 2026-10-05 - Update `--save-my-token` to use `gpt-6.1-sol/high` for BA. PM inherits, and backend, web/mobile frontend, and QC continue to use `gpt-6-luna/xhigh`. - Require plugin/runtime 1.0.1 for the updated preset and document reapplying it after upgrade. Saved project settings, existing run snapshots, optional PO settings, and explicitly chosen fallbacks are preserved until the user changes them. - Add migration coverage for previewing and reapplying the preset, freezing earlier GPT-6 Sol runs, and rejecting a host without GPT-6.1 Sol instead of substituting another model. +- Refresh the dependency lockfile to patched `fast-uri` 3.1.8; a clean install reports no dependency vulnerabilities. ## 1.0.0 - 2026-09-25 diff --git a/README.md b/README.md index 5751c9b..3286399 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Eight Codex skills and a repository-local CLI keep tasks, evidence, blockers, an ## Get started -**1.0.1 development:** Token-saving mode now selects GPT-6.1 Sol for BA. The new preset requires plugin/runtime 1.0.1; until publication, use the [local package procedure](docs/cli-reference.md#try-the-local-package-in-an-unrelated-repository). +**New in 1.0.1:** Token-saving mode now selects GPT-6.1 Sol for BA. Update both plugin and project runtime, then reapply the preset for new runs. See the [release notes](docs/releases/1.0.1.md). **New in 1.0.0:** Runtime-assisted delivery reduces manual task bookkeeping, and eligible bounded features can use opt-in Compact mode. See the [release notes](docs/releases/1.0.0.md) for changes and upgrade guidance. @@ -95,7 +95,7 @@ To continue later, ask Codex to resume the existing run. Its manifest records th Run this against an existing web repository: ```sh -npx --yes codex-sdlc@1.0.0 init \ +npx --yes codex-sdlc@1.0.1 init \ --root /absolute/path/to/web --name example-web \ --applications web --web-root . --web-preset nextjs \ --dry-run @@ -110,7 +110,7 @@ node .sdlc/runtime.cjs doctor node .sdlc/runtime.cjs validate-config ``` -For a global CLI installation, use `npm install --global codex-sdlc@1.0.0`. +For a global CLI installation, use `npm install --global codex-sdlc@1.0.1`. @@ -228,7 +228,7 @@ codex-sdlc does not operate a hosted service or send repository content to a cod Preview a project upgrade before applying it: ```sh -npx --yes codex-sdlc@1.0.0 upgrade \ +npx --yes codex-sdlc@1.0.1 upgrade \ --root /absolute/path/to/coordinator --dry-run ``` @@ -242,10 +242,10 @@ Applied upgrades create backups. Rollback checks managed-file integrity before r | --- | --- | | [Getting started](docs/getting-started.md) | [CLI setup and lifecycle reference](docs/cli-reference.md) | | [Multi-repository workspaces](docs/multi-repository.md) | [Role models and dispatch records](docs/agent-models.md) | -| [What's new in 1.0.0](docs/releases/1.0.0.md) | [Release history](https://github.com/prime-vimihi/codex-sdlc/releases) | +| [What's new in 1.0.1](docs/releases/1.0.1.md) | [Release history](https://github.com/prime-vimihi/codex-sdlc/releases) | | [Support](SUPPORT.md) | [Contributing](CONTRIBUTING.md) | -Current verification includes automated runtime tests, plugin and skill validation, and independent built-CLI checks. Native Linux/Windows qualification and a matched real-agent performance benchmark remain pending. See the [1.0.0 validation notes](docs/releases/1.0.0.md#validation). +Current verification includes automated runtime tests, plugin and skill validation, and independent built-CLI checks. Native Linux/Windows qualification and a matched real-agent performance benchmark remain pending. See the [1.0.1 validation notes](docs/releases/1.0.1.md#validation). ## Build with us diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 9221045..1bef83c 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -4,7 +4,7 @@ For the first-run walkthrough, read [Getting started](getting-started.md). Retur ## Build and test -Version 1.0.0 is published. The 1.0.1 token-saving preset update is in development; use the local tarball procedure while testing that update. +Version 1.0.1 updates the token-saving preset to GPT-6.1 Sol for BA. Upgrade the runtime and reapply the preset to update saved project settings for new runs. Requirements: Node.js `>=24.16.0 <25` and npm 11. @@ -17,7 +17,7 @@ npm pack Install the published CLI with: ```sh -npm install --global codex-sdlc@1.0.0 +npm install --global codex-sdlc@1.0.1 ``` ## Project setup modes diff --git a/docs/getting-started.md b/docs/getting-started.md index 4040d97..39b4902 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -16,7 +16,7 @@ Version 1.0.0 includes opt-in Compact delivery and runtime-assisted task operati Open the repository that should own `.sdlc` and start a new Codex task: ```text -Initialize codex-sdlc for this existing repository. Explain the setup choices and show the dry run before applying changes. If the CLI is unavailable, use codex-sdlc@1.0.0 through npx. +Initialize codex-sdlc for this existing repository. Explain the setup choices and show the dry run before applying changes. If the CLI is unavailable, use codex-sdlc@1.0.1 through npx. ``` Tell Codex which applications already exist and where they live. Supported presets are Go for backend, Next.js for web, Flutter for mobile, PostgreSQL for the primary database, and Redis for cache. Codex will inspect the repository, show the proposed files, apply the same command without `--dry-run`, restore the pinned project runtime, and run diagnostics. @@ -38,7 +38,7 @@ For a new bounded feature using established patterns, ask `$sdlc --compact --repo =` and reruns `doctor`. +Only the coordinator receives `.sdlc`. The plugin skills remain in each user's Codex plugin cache. Another contributor binds their local checkout paths with `npx --yes codex-sdlc@1.0.1 configure --root --repo =` and reruns `doctor`. Choose single-repository or multi-repository mode before starting delivery. Version 1.0.0 does not automatically convert an initialized single-repository project to multi-repository mode. Preserve existing runs before changing topology. @@ -94,7 +94,7 @@ You can also ask: `Enable an advisory AI Product Owner review using Sol.` The re After installing the new plugin version, preview the project runtime upgrade: ```sh -npx --yes codex-sdlc@1.0.0 upgrade --root /absolute/path/to/coordinator --dry-run +npx --yes codex-sdlc@1.0.1 upgrade --root /absolute/path/to/coordinator --dry-run ``` Run the same command without `--dry-run`, then run `node .sdlc/runtime.cjs restore`, `doctor`, and `validate-config` from the coordinator. The plugin update supplies skills; the project upgrade supplies commands and schemas. diff --git a/docs/marketplace-submission.md b/docs/marketplace-submission.md index 1179999..5255207 100644 --- a/docs/marketplace-submission.md +++ b/docs/marketplace-submission.md @@ -79,7 +79,7 @@ Set up and coordinate resumable software delivery across one repository or multi - User prompt: `$sdlc --compact Add a display-name length hint beside the existing profile input, using the current validation rule and UI pattern.` - Expected behavior: The PM assesses bounded scope, established patterns, and the absence of migration, breaking API, authorization, sensitive-data, or unresolved cross-system changes. It starts a new Compact run, reviews the BA specification, delegates affected implementation, and requires independent QC with current evidence and both integration and QC gates. - Expected result: The run saves its Compact profile and immutable review binding; generated claims and acceptance views match the canonical specification. Final human acceptance stays pending. Existing runs and saved model presets are unchanged. -- Fixture: A disposable initialized project using plugin/runtime 1.0.0, an existing profile form and validation rule, runnable declared checks, and a host that can enforce the required evidence isolation. +- Fixture: A disposable initialized project using plugin/runtime 1.0.1, an existing profile form and validation rule, runnable declared checks, and a host that can enforce the required evidence isolation. ## Negative tests @@ -128,7 +128,7 @@ Set up and coordinate resumable software delivery across one repository or multi ## Release notes -The pending 1.0.1 update changes the token-saving BA selection to GPT-6.1 Sol/high. Other delivery roles retain GPT-6 Luna/extra-high and PM inherits. Existing projects reapply the preset after updating both plugin and runtime; saved runs retain their original models. Host capability validation and explicit fallback policy are preserved. +Version 1.0.1 updates `/sdlc --save-my-token` to use GPT-6.1 Sol with high reasoning for BA. PM inherits, while backend, web/mobile frontend, and QC use GPT-6 Luna with extra-high reasoning. Update both plugin and project runtime, then reapply the preset for future runs. Existing run snapshots and optional AI Product Owner settings are preserved. Unavailable models are reported without silent substitution. This release updates model routing; it does not claim measured token or time savings. Version 1.0.0 adds opt-in Compact delivery for bounded features, with one canonical BA specification, generated supporting views, and independent integrated QC. Full remains the default. New runtime helpers handle task preparation, activation, checks, handoffs, repair history, preflight, and timing. Configured application roots and Next.js routes are handled consistently, and multiple technical capabilities can share a business requirement. Existing project model presets remain available. PM review, current verification evidence, and final human acceptance are preserved. A scripted fixture measured about 22% lower framework execution time for Compact versus the new Full workflow; real-agent delivery time and token savings are not yet measured. @@ -149,7 +149,7 @@ Version 1.0.0 adds opt-in Compact delivery for bounded features, with one canoni Submit the skills-only plugin from the release source tree. The bundle root contains `plugin.json`, `skills/`, `.codex-plugin/plugin.json`, `README.md`, `docs/getting-started.md`, `docs/agent-models.md`, and the referenced brand assets. It requires no MCP server, authentication configuration, demo credentials, or network allowlist. -When 1.0.1 is ready for publication, build the upload ZIP and npm tarball from its reviewed source under `build/public-submission/1.0.1/`; verify their hashes using that directory’s `SHA256SUMS` before upload. +Build the upload ZIP and npm tarball from the reviewed 1.0.1 source under `build/public-submission/1.0.1/`; verify their hashes using that directory’s `SHA256SUMS` before upload. Copy only the Version 1.0.1 paragraph above into the version-update release-notes field; the 1.0.0 paragraph is background for the existing listing. ## Release order diff --git a/docs/releases/1.0.1.md b/docs/releases/1.0.1.md index 5eb41f8..01efff2 100644 --- a/docs/releases/1.0.1.md +++ b/docs/releases/1.0.1.md @@ -1,6 +1,6 @@ # codex-sdlc 1.0.1 -Status: in development; not published. +Release date: 2026-10-05. ## Updated token-saving preset @@ -10,12 +10,20 @@ These IDs follow [official Codex model guidance](https://learn.chatgpt.com/docs/ ## Existing projects -After publication, update both plugin and coordinator runtime to 1.0.1. Preview and apply the runtime upgrade, restore it, and run `doctor` and `validate-config` as described in the [upgrade guide](../getting-started.md#upgrade-an-existing-project). +Update both plugin and coordinator runtime to 1.0.1. The Plugins Directory version is submitted and published separately from GitHub and npm. Preview the project runtime upgrade: + +```sh +npx --yes codex-sdlc@1.0.1 upgrade --root /absolute/path/to/coordinator --dry-run +``` + +Run the same command without `--dry-run`, restore the runtime, and run `doctor` and `validate-config` as described in the [upgrade guide](../getting-started.md#upgrade-an-existing-project). Then reapply `/sdlc --save-my-token` in the coordinator to update its saved preset for new runs. Upgrading alone preserves project model configuration. Existing run snapshots and custom role/fallback selections retain their saved IDs until explicitly changed. -While this release is in development, use the [local tarball procedure](../cli-reference.md#try-the-local-package-in-an-unrelated-repository) to test it. +For local package testing, use the [tarball procedure](../cli-reference.md#try-the-local-package-in-an-unrelated-repository). ## Validation +The dependency lockfile now uses patched `fast-uri` 3.1.8. A clean installation reports no dependency vulnerabilities. + All 183 tests across 20 files, TypeScript checks, and the build passed. Both edited skills passed validation. A fresh 1.0.1 tarball installation and restored repository launcher passed preview-without-writes, preset saving, idempotent reapplication, and normal reset checks. Migration coverage verifies that prior run snapshots retain GPT-6 Sol and that a host without GPT-6.1 Sol cannot silently substitute another model. These checks validate routing and persistence; real-agent quality, latency, and token usage have not been measured for this update. diff --git a/package-lock.json b/package-lock.json index 150fe55..9856da3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -606,9 +606,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", - "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", "funding": [ { "type": "github",