mirror of
https://github.com/garrytan/gstack.git
synced 2026-10-02 17:40:02 +02:00
Merge origin/main (v1.91.7.0) into test-audit-reduction
Keep both intents: v1.91.7.0's functional QA, docsync and exploratory paid cases and their free owners stay; this branch's deletions stay deleted. main's new paid keys follow the derived-closure touchfile rule (free *.test.ts paths dropped, static helper/fixture closure added), its new helper-only tests join the ratchet baseline, and its free selection examples that named free test files now assert the derived selection. Periodic CI keeps seven slices without the retired Autoplan slice; the gate census keeps seven single-worker slices with --skip-judges. Wall and census literals are recomputed from the merged planner, durations are re-recorded on Ubicloud, and VERSION stays 1.91.8.0 above 1.91.7.0.
This commit is contained in:
commit
b421bba2c9
325 files changed
+42569
-8257
No files matched your search
@@ -40,7 +40,7 @@ test('every host expands its real bootstrap after the mandatory entry gate', ()
|
||||
});
|
||||
|
||||
test('entry binds a current target and delays bootstrap until scope resolves', () => {
|
||||
expect(scope).toContain('Before tools or preamble, resolve from provided messages, listed tools and explicit host metadata only');
|
||||
expect(scope).toContain('Before discovery tools or preamble, check provided messages, listed tools and explicit host metadata for a target');
|
||||
expect(scope).toContain('Do not probe for session state');
|
||||
expect(scope).toContain('When no exception above applied:');
|
||||
expect(scope).toContain('First tool call = AskUserQuestion (tool_use). Send this exact menu and wait');
|
||||
@@ -116,11 +116,11 @@ test('the full evaluated bundle routes startup into ordered preparation before s
|
||||
expect(startup).toContain('Defer Operational Self-Improvement, Telemetry and Plan Status Footer to finish');
|
||||
expect(startup).toContain('format/transport rules apply throughout');
|
||||
expect(startup).toContain('full section Read → **Review preparation** → **Scope Challenge**');
|
||||
const preparation = section.slice(section.indexOf('## Review preparation'), section.indexOf('## Review record'));
|
||||
const stages = ['1. Select the report file and permissions under **Review record and write policy**',
|
||||
'2. Run **Prior Learnings**', '3. Run **Retrospective learning**',
|
||||
'4. Read **Confidence Calibration**', '**Decision procedure**',
|
||||
'**Scope Challenge A → B → C**', 'Sections 1–4 in order'];
|
||||
const preparation = section.slice(section.indexOf('## Review preparation'));
|
||||
expect(preparation).toContain('Follow the blocks below in order after startup');
|
||||
const stages = ['## Review record and write policy', '## Prior Learnings',
|
||||
'## Retrospective learning', '## Confidence Calibration', '## Decision procedure',
|
||||
'## Scope Challenge', '## Review Sections'];
|
||||
const positions = stages.map(stage=>preparation.indexOf(stage));
|
||||
expect(positions.every(position=>position>=0)).toBe(true);
|
||||
expect(positions).toEqual([...positions].sort((a,b)=>a-b));
|
||||
@@ -150,7 +150,7 @@ test('both complexity paths join findings without bypassing answers or persisten
|
||||
expect(positions.every(position => position >= 0)).toBe(true);
|
||||
expect(positions).toEqual([...positions].sort((a, b) => a - b));
|
||||
expect(challenge).toContain('Complete these checks before the complexity decision in B');
|
||||
expect(challenge).toContain("Below both thresholds, skip B's questions and go directly to **C. Resolve findings**");
|
||||
expect(challenge.replace(/\s+/g, ' ')).toContain("With fewer than 8 files AND fewer than 2 new classes/services, skip B's questions and go directly to **C. Resolve findings**");
|
||||
expect(challenge).toContain('At 8+ files or 2+ new classes/services, STOP before Section 1');
|
||||
expect(challenge).toContain('After verification, apply only accepted scope changes');
|
||||
expect(challenge).toContain('Run C whether B was completed or skipped');
|
||||
@@ -160,12 +160,13 @@ test('both complexity paths join findings without bypassing answers or persisten
|
||||
expect(challenge).toContain('A failed save or Read blocks advancement');
|
||||
expect(challenge).toContain('Findings and scope answers approve no remedies');
|
||||
expect(challenge).toContain('Continue to Section 1 only when no answer is pending');
|
||||
expect(section).toContain('One question for one choice per AskUserQuestion call');
|
||||
expect(section).toContain('Compare every native field with `currentDecision` and the whole grid with step 3');
|
||||
expect(section.replace(/\s+/g, ' ')).toContain('Send one question object for one choice; other IDs wait');
|
||||
expect(section.replace(/\s+/g, ' ')).toContain('Compare every native field with `currentDecision` and the whole saved grid with the prepared comparison');
|
||||
expect(section).toContain('Repair any difference and repeat the complete Read before asking');
|
||||
expect(section).toContain('Read the selected saved label, full description and grid column together');
|
||||
expect(section).toContain('Check the save result, then Read the entire resolution block, including State');
|
||||
expect(section).toContain('Entrypoint: **Paused question** for pending answers; **Blocked outcome** for missing work or failed recovery');
|
||||
expect(section).toContain('**STOP until the actual answer arrives.**');
|
||||
expect(section.replace(/\s+/g, ' ')).toContain('unreadable or unverifiable records use **Recovery routing**');
|
||||
expect(template).toContain('**Paused question:** Wait for its actual answer without completion telemetry or ExitPlanMode');
|
||||
expect(template).toContain('**Blocked outcome:** Stop the review and report `BLOCKED`');
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user