v1.89.0.0 feat: add shared-code extraction audit (#2925)

* feat: bind shared-code review advice to source and branch

* feat: add shared-code extraction audit and scoped review checks

* test: recognize complete source reads and explicit coverage legends

* chore: bump version and changelog (v1.88.0.0)

Co-Authored-By: OpenAI Codex <noreply@openai.com>

* test: capture native review questions and retain public evidence

Capture the actual first public native question with strict ownership and display matching. Preserve terminal failures and raw evidence, and retain SDK completion checks.

* test: recognize verified review evidence and complete fixtures

Recognize complete source and diagram evidence, concrete design and developer-experience decisions, and the complete planted scenario contracts. Preserve negative controls and grading thresholds.

* fix: preserve decision brief structure in native questions

Keep the required pros-and-cons heading and final Net field in native question text. Regenerate host outputs and document the release and evaluation repairs.

Co-Authored-By: OpenAI Codex <noreply@openai.com>

* docs: update project documentation for v1.88.0.0

Co-Authored-By: OpenAI Codex <noreply@openai.com>

* fix: correct eval retry accounting and ship workflow gates

* fix: capture native eval evidence and stabilize CI fixtures

* fix: keep shared-code eval skips read-only

Choose explicit no-change answers instead of mixed fix/preservation options.
Reuse the bounded revalidation prompt for path fixtures so required review
metadata is available without repeated discovery. Preserve source checks,
retry limits, and failed native terminal outcomes.

Add captured-question and callback regressions, plus evaluation selection
coverage for the affected fixtures.

---------

Co-authored-by: OpenAI Codex <noreply@openai.com>
This commit is contained in:
Garry Tan
2026-09-24 01:53:58 -04:00
committed by GitHub
co-authored by OpenAI Codex
parent b9706f3635
commit 06ed920a97
177 changed files with 13244 additions and 2477 deletions
+41
View File
@@ -0,0 +1,41 @@
/** Accepted interaction behavior surrounding the five seeded visual gaps. */
export const designCountExistingInteractionStates = [
'The existing router protects dirty edits on every in-app exit, including',
'persistent app navigation, using the same Cancel confirmation dialog.',
'Register the browser-native beforeunload warning only while the form is dirty;',
'remove it when clean. Confirmed in-app navigation uses the existing destination',
'heading focus behavior; Keep editing returns focus to the attempted exit.',
'During Save or Export, both request buttons use aria-disabled=true plus an',
'explicit click/keyboard activation guard, rather than the HTML disabled attribute.',
'They remain focusable and keep the existing disabled appearance. Reset and',
'Cancel use HTML disabled during the request. Do not move focus while pending',
'or after success. On a network error, focus the operation-specific Retry only',
'if focus is still on the request trigger; never steal focus the user moved.',
'The existing InlineStatus text stays unchanged while Save is pending:',
'Unsaved changes for a dirty form, otherwise its saved timestamp or initial',
'blank text. Pending feedback belongs to the request button; do not repeat',
'Saving… in the status live region. Success and failure use the outcomes above.',
'When clean and idle, Reset is disabled because it has nothing to discard,',
'and Cancel navigates back immediately without a confirmation. When dirty',
'and idle, Reset and Cancel use their existing discard confirmations. Their',
'44px geometry is unchanged; the disabled style is separate from pending feedback.',
'The existing ErrorSummary mounts in the status/error area below the action',
'group and above Profile. It links each invalid field; focus goes to the first',
'invalid field and the summary is not a second live region. Preserve that slot.',
'The existing error/Retry row is inline above 640px with an 8px gap. At 640px',
'and below, Retry wraps below the text as a full-width 44px ghost button,',
'outside the live region; long errors fit 320px without horizontal scroll.',
// The September 20 retry correctly surfaced these three missing contracts
// in addition to the five seeded visual gaps. They belong to the existing UI.
'The existing operation-specific network error copy is:',
'Save: “Couldn’t save your changes. Your edits are still here.”',
'Export: “Couldn’t prepare your export.” Load: “Couldn’t load your settings.”',
'Each uses the existing error icon and its sibling Retry with the operation-specific',
'accessible label already specified. Preserve edits and the existing retry behavior.',
'Save stays enabled and focusable while idle, whether clean or dirty.',
'A clean Save is a no-op: no request, validation, pending state, timestamp, status, or focus change.',
'Only a dirty Save sends the existing atomic request.',
'The existing Export filename is account-settings-YYYY-MM-DD.json, using the user’s local calendar date',
'at export activation and no account identifiers, including no account name or email. Repeated same-day exports keep the browser’s normal collision suffix',
'(for example, “ (1)”); the application does not overwrite an earlier download.',
];