v1.91.7.0 feat: add functional QA and pre-publication docs checks (#2983)

* feat: add surface-aware exploratory QA and ship documentation gates

* test: preserve delegated QA setup authority after main integration

* fix(qa): clarify exploration order and preserve report artifacts

* test(qa): follow the shared setup reference directly

* refactor(ship): make verification and recovery routes explicit

* test(ship): align evidence and review guards with explicit routes

* fix(workflows): clarify ship recovery and functional QA evidence

* fix(workflows): clarify approval recovery and full QA coverage

* refactor(workflows): order review transactions and clarify ship state

* fix(ship): clarify final verification and fail closed at publication

* fix(evals): attribute native atomic documentation writes

* fix(ship): clarify recovery and documentation lifecycle guidance

* fix(test): preserve observed native placeholder styling in CI

* fix(codex): report watchdog timeouts without a process-exit race

* Checkpoint functional QA implementation and workflow validation repairs

* Fix documentation and shared-review fixture contracts

* docs: clarify judge reuse and evaluation supervision

* test: align review evidence and selected case contracts

* test: verify append-only documentation checkpoints and recovery

* fix: qualify QA workflows and CI validation repairs

* fix: launch shared-libs fixture scripts on Windows

* fix: qualify QA deadlines, fixture isolation, and shard cleanup

* fix: preserve qualified QA and cancellation repairs

* fix: enforce functional fixture authority and share strict event decoding

* fix: retain free-test evidence and explain recovery

* fix: reject malformed native evidence after decoder consolidation

* test: use reliable capture for telemetry privacy filters

* test: refresh measured quick coverage and document validation costs

* Fix native fixture receipts and preserve VM validation evidence

* Align negative judge controls with upstream clarity policy

* Fix report-only QA preparation and public evidence handling

* Clarify QA-only preparation and current-report preservation

* Stream Ship quality judgments with an explicit 64k response contract

* Validate compact judge reasoning locally with supported wire schema

* Align functional QA fixture instructions with evidence acceptance

* Bind native browser diagnostics to execution evidence and align review verdicts

* Preserve native diagnostic line boundaries

* Serialize functional QA evidence from native captures

* Keep large QA evidence fixture payload out of Windows argv
This commit is contained in:
Garry Tan authored and GitHub committed 2026-09-29 06:07:35 -07:00
1 parent 65bfb0ce49
commit dcaea52800
333 files changed
+41755 -7357

No files matched your search

+14 -3
View File
@@ -15,7 +15,8 @@ if(scenario==='wrong-start')status.procStart+='0';
if(scenario==='wrong-domain')status.pidDomain+='-different';
if(scenario==='startup-waiting')status.waitingFor='permission prompt';
fs.writeFileSync(statusFile,JSON.stringify(status));
fs.writeFileSync(path.join(dir,'launch.json'),JSON.stringify({argv:process.argv.slice(2),planModeHint:process.env.GSTACK_PLAN_MODE??null,planModeForce:process.env.GSTACK_PLAN_MODE_FORCE??null,term:process.env.TERM??null,forceColor:process.env.FORCE_COLOR??null}));
fs.writeFileSync(path.join(dir,'launch.json'),JSON.stringify({argv:process.argv.slice(2),planModeHint:process.env.GSTACK_PLAN_MODE??null,planModeForce:process.env.GSTACK_PLAN_MODE_FORCE??null,term:process.env.TERM??null,forceColor:process.env.FORCE_COLOR??null,
terminalEnv:Object.fromEntries(['CI','TERM','COLORTERM','FORCE_COLOR','NO_COLOR'].map(key=>[key,process.env[key]??null]))}));
const event=(kind,value)=>fs.appendFileSync(events,JSON.stringify({kind,value,at:Date.now()})+'\n');
const row=(type,content,stop)=>JSON.stringify({type,sessionId:sid,cwd,message:{role:type,content,stop_reason:stop}})+'\n';
const text=s=>[{type:'text',text:s}];
@@ -30,7 +31,11 @@ let input='',seed='',submitted=false;
process.stdin.setRawMode(true);process.stdin.resume();
const hint='Try "refactor <filepath>"';
if(scenario==='startup-prior-conversation')append('user',text('An earlier request'));
if(scenario==='startup-terminal-placeholder-cursor')frame(process.env.TERM==='dumb'||!process.env.TERM?hint:'\x1b[7mT\x1b[27m\x1b[2m'+hint.slice(1)+'\x1b[22m');
if(scenario==='startup-terminal-placeholder-cursor'){
const styled=process.env.TERM&&process.env.TERM!=='dumb'&&process.env.FORCE_COLOR!=='0'
&&(process.env.FORCE_COLOR==='1'||!process.env.CI&&!process.env.NO_COLOR);
frame(styled?'\x1b[7mT\x1b[27m\x1b[2m'+hint.slice(1)+'\x1b[22m':hint);
}
else if(scenario==='startup-ci-placeholder')frame(process.env.CI==='true'&&process.env.FORCE_COLOR!=='1'?hint:'\x1b[2m'+hint+'\x1b[22m');
else if(scenario==='startup-ci-typed-hint')frame(hint);
else if(scenario==='startup-placeholder-cursor')frame('\x1b[7mT\x1b[27m\x1b[2m'+hint.slice(1)+'\x1b[22m');
@@ -50,7 +55,13 @@ process.stdin.on('data',chunk=>{
if(input==='\r'&&!submitted){
submitted=true;input='';event('enter',seed);frame('');
if(scenario==='no-ack')return;
append('user',text(scenario==='fused'?seed+'\n/plan-eng-review':seed));
if(scenario.startsWith('native-paste')){
const body=scenario==='native-paste-changed'?seed.replace('Keep','Alter'):scenario==='native-paste-fused'?seed+'\n/plan-eng-review':seed;
let native='\n\n<pasted_content id="1aab">\n'+body+'</pasted_content id="'+(scenario==='native-paste-mismatched'?'1aac':'1aab')+'">\n';
if(scenario==='native-paste-duplicate')native+=native;
if(scenario==='native-paste-appended')native+='/plan-eng-review';
append('user',scenario==='native-paste-block'?text(native):scenario==='native-paste-multiple-blocks'?[...text(native),...text('extra request')]:native);
}else append('user',text(scenario==='fused'?seed+'\n/plan-eng-review':seed));
if(scenario==='duplicate')append('user',text(seed));
if(scenario==='session-switch'){status.sessionId='bbbbbbbb-1111-2222-3333-aaaaaaaaaaaa';fs.writeFileSync(statusFile,JSON.stringify(status));return;}
if(scenario==='foreign-cwd'){fs.writeFileSync(file,row('user',text(seed)).replace(cwd,cwd+'-other'));return;}