Initial TrueGrowth source import

This commit is contained in:
2026-07-07 09:36:36 +08:00
commit 3b6781d695
2283 changed files with 691996 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
## ADDED Requirements
### Requirement: Resolve GPT Image Compatibility To A Concrete Internal Mode
The system SHALL resolve GPT Image compatibility from the selected provider profile into a concrete internal mode before adapter selection.
#### Scenario: Automatic resolution chooses official GPT mode
- **GIVEN** a provider profile uses an `api.openai.com` base URL
- **AND** the selected image model is a GPT Image model
- **AND** the stored image API compatibility is `auto`
- **WHEN** provider routing resolves image compatibility
- **THEN** it SHALL resolve to `openai-gpt-image`
#### Scenario: Automatic resolution chooses Tuzi GPT mode
- **GIVEN** a provider profile uses an `api.tu-zi.com` base URL
- **AND** the selected image model is a GPT Image model
- **AND** the stored image API compatibility is `auto`
- **WHEN** provider routing resolves image compatibility
- **THEN** it SHALL resolve to `tuzi-gpt-image`
#### Scenario: Automatic resolution chooses generic fallback
- **GIVEN** a provider profile is neither official OpenAI nor Tuzi
- **AND** the selected image model is a GPT Image model
- **AND** the stored image API compatibility is `auto`
- **WHEN** provider routing resolves image compatibility
- **THEN** it SHALL resolve to `openai-compatible-basic`
#### Scenario: Manual compatibility override wins over auto inference
- **GIVEN** a provider profile stores a non-`auto` image API compatibility value
- **WHEN** provider routing resolves image compatibility
- **THEN** it SHALL use the stored value directly
- **AND** SHALL NOT replace it with an inferred mode
### Requirement: Preserve Legacy Compatibility Values
The system SHALL accept previously stored GPT image compatibility values while converging on the refined internal mode names.
#### Scenario: Legacy Tuzi value is normalized
- **GIVEN** a provider profile stores the legacy compatibility value `tuzi-compatible`
- **WHEN** the profile is normalized or loaded into a routing snapshot
- **THEN** the system SHALL treat it as `tuzi-gpt-image`
- **AND** SHALL keep the profile eligible for the dedicated Tuzi GPT path
### Requirement: Map Internal Modes To Distinct Request Schemas
The system SHALL use request schemas as the formal dispatch boundary between official GPT, Tuzi GPT, and generic fallback routing.
#### Scenario: Official GPT generation emits official schema
- **GIVEN** a GPT Image invocation resolves to `openai-gpt-image`
- **WHEN** the request uses generation semantics
- **THEN** the inferred binding SHALL use request schema `openai.image.gpt-generation-json`
#### Scenario: Official GPT edit emits official edit schema
- **GIVEN** a GPT Image invocation resolves to `openai-gpt-image`
- **WHEN** the request uses edit semantics
- **THEN** the inferred binding SHALL use request schema `openai.image.gpt-edit-form`
- **AND** SHALL submit to `/images/edits`
#### Scenario: Tuzi GPT generation emits dedicated Tuzi schema
- **GIVEN** a GPT Image invocation resolves to `tuzi-gpt-image`
- **WHEN** the request uses generation semantics
- **THEN** the inferred binding SHALL use a dedicated Tuzi GPT generation request schema
- **AND** SHALL NOT collapse into `openai.image.basic-json`
#### Scenario: Generic fallback remains on the basic schema
- **GIVEN** a GPT Image invocation resolves to `openai-compatible-basic`
- **WHEN** the provider binding is inferred
- **THEN** the binding SHALL use request schema `openai.image.basic-json`
### Requirement: Keep Compatibility Metadata And Dispatch In Sync
The system SHALL keep resolved compatibility metadata aligned with the schema used for dispatch.
#### Scenario: Tuzi GPT no longer exists only in metadata
- **GIVEN** a GPT Image invocation resolves to `tuzi-gpt-image`
- **WHEN** routing emits metadata for diagnostics
- **THEN** the emitted `requestSchema` and adapter selection SHALL reflect the Tuzi GPT contract
- **AND** SHALL NOT route through the generic default adapter while only labeling the request as Tuzi-compatible