Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ce1a3ae
Plan deterministic trace graders
Copilot Aug 22, 2026
de6658f
Add initial deterministic trace graders
Copilot Aug 22, 2026
4b4de8a
docs(adr): add draft ADR-54678 for deterministic trace grading framework
github-actions[bot] Aug 22, 2026
9eb6028
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
0d6a86e
Harden trace grader runtime isolation and manifest transport
Copilot Aug 22, 2026
53938a6
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
1a1b44d
Merge remote-tracking branch 'origin/main' into copilot/implement-det…
Copilot Aug 22, 2026
ed01ef4
Refresh branch and fix trace graders JS type casts
Copilot Aug 22, 2026
ef94444
Merge remote-tracking branch 'origin/main' into copilot/implement-det…
Copilot Aug 22, 2026
dce434c
Integrate experiment context into graders and evals
Copilot Aug 22, 2026
7a02562
Allow experiments metrics to reference grader results
Copilot Aug 22, 2026
b0ad3c7
Mark trace graders as experimental
Copilot Aug 22, 2026
673bba9
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
1781737
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
2906c4a
fix trace grader sandbox embedding and script-size contract
Copilot Aug 22, 2026
803ce40
test: add graders integration workflow coverage
Copilot Aug 22, 2026
ba7aae8
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
9baed09
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
f377fa2
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
00ca65f
Harden trace grader log parsing and summary output
Copilot Aug 22, 2026
9fff955
Harden trace grader fallback parsing and summary safety
Copilot Aug 22, 2026
096aa3e
chore: start triage for unresolved review feedback
Copilot Aug 22, 2026
455639f
fix grader sandbox clone fallback and parser edge cases
Copilot Aug 22, 2026
1d3542e
fix: rename grader clone helper to explicit clone-or-undefined
Copilot Aug 22, 2026
4e303c5
Merge branch 'main' into copilot/implement-deterministic-trace-graders
github-actions[bot] Aug 22, 2026
6c61d48
refactor: rename trace graders wording to graders
Copilot Aug 22, 2026
1b3d870
Merge remote-tracking branch 'origin/main' into copilot/implement-det…
Copilot Aug 22, 2026
5131cd9
refactor: rename grader implementation id
Copilot Aug 22, 2026
782f56d
docs: add graders specification
Copilot Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/weekly-network-domains-audit.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 37 additions & 1 deletion actions/setup/js/redact_secrets.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -343,4 +343,40 @@ async function main() {
}
}

module.exports = { main, redactSecrets, redactBuiltInPatterns, redactStepSummaryContent, extractMCPGatewayTokens, BUILT_IN_PATTERNS, MCP_GATEWAY_CONFIG_PATHS };
/**
* Targeted redaction pass for files in a specific directory. Used by the
* post-graders redaction step to scan grader output files that were written
* after the initial full-workspace redaction pass.
*
* @param {string} dir - Absolute directory path to scan
*/
async function redactFilesInDir(dir) {
try {
const secretNames = (process.env.GH_AW_SECRET_NAMES || "").split(",").filter(n => n.trim());
/** @type {string[]} */
const secretValues = [];
for (const secretName of secretNames) {
const value = process.env[`SECRET_${secretName.trim()}`];
if (typeof value === "string" && value.trim() !== "") {
secretValues.push(value.trim());
}
}
secretValues.push(...extractMCPGatewayTokens(MCP_GATEWAY_CONFIG_PATHS));

const targetExtensions = [".json"];
const files = findFiles(dir, targetExtensions);
if (files.length === 0) return;

let totalRedactions = 0;
for (const file of files) {
totalRedactions += processFile(file, secretValues);
}
if (totalRedactions > 0) {
core.info(`Grader output redaction: ${totalRedactions} redaction(s) in ${dir}`);
}
} catch (error) {
core.warning(`Grader output redaction failed: ${getErrorMessage(error)}`);
}
}

module.exports = { main, redactFilesInDir, redactSecrets, redactBuiltInPatterns, redactStepSummaryContent, extractMCPGatewayTokens, BUILT_IN_PATTERNS, MCP_GATEWAY_CONFIG_PATHS };
Loading
Loading