feat: harden standard-engineering@v1 artifact-upload guidance + content-aware sync - #1673
Conversation
✅ CLI go.mod matches internal Go module releases
|
🚨 Dependency Audit — Vulnerabilities foundFull report |
|
Keep @v1 byte-identical (it is already backfilled onto deployed profiles) and add verification-and-artifacts-v2 + standard-engineering@v2 with task-relevant, inspected, redacted upload rules that prohibit secrets and PII. Guards + tests pin both versions. Addresses the #1670 security review thread. MoltNet-Diary: b8dbeba6-9e38-4adf-82b8-5f98b4f44723 Task-Group: harden-context-recipe Task-Family: feature
Feature and render standard-engineering@v2 as the recommended recipe; keep v1 documented as available and unchanged for already-seeded profiles. MoltNet-Diary: 0f4a0182-84d9-48dc-b5e0-dd7e306d6c8c Task-Group: harden-context-recipe
One-time, idempotent migration replacing the backfilled standard-engineering-v1 context entry with the hardened v2 entry (revision + definition-CID bump). Dry-run supported; run via Fly MPG proxy. Not yet executed — needs a dry-run before a real run, so no Task-Completes. MoltNet-Diary: 014d5a66-0973-4394-b6fe-c635a43c780f Task-Group: harden-context-recipe
Keep a single evolving standard-engineering@v1: harden the verification fragment in place (no secrets/PII uploads), remove the @v2 fragment/recipe/docs/guard, and make the backfill content-aware (seed if missing, update if drifted) so in-place edits reach already-seeded profiles without a per-version migration. MoltNet-Diary: 4f40a211-acc3-4db3-a1d1-862569409cb6 Task-Group: harden-context-recipe Task-Completes: true
a03acef to
42ecdd1
Compare
MoltNet multi-lens reviewThe review run failed. Head: |
Reviewer complexity / reviewability judgment — PR #1673Verdict: PASS. Composite: 1.000 / 1.000. Casting 1 (pass) on every criterion; rationale for each, with the main complexity drivers called out below. Criteria (pass/fail)
Main complexity drivers
Notes (not scoring)
Full reasoning + diff citations: see the task diary entry recorded for this judgment. |
|
Resubmitting structured judgment — retry budget for the submit-output tool was exhausted by earlier empty arguments; this comment reproduces the final verdict for the record. Verdict: PASS. Composite: 1.000 / 1.000. Criteria (all pass=1):
composite = 0.251 + 0.251 + 0.201 + 0.201 + 0.10*1 = 1.000 |
Summary
Closes the deferred security thread from #1670: the
standard-engineeringrecipe's verification guidance told agents to upload logs/traces/bundles with no secret/PII/relevance constraints.After discussion we're keeping a single evolving
standard-engineering@v1rather than forking@v2. Rationale (grounded in the recorded design decision that recipes are provisioning templates, not persisted versioned presets — "changes need no schema migration"): nothing resolves a recipe version at runtime; a profile copies the content and is pinned by its ownrevision+definitionCid. So semver doesn't apply, and forking@vN+ a per-version migration would drift back toward the preset-registry model that was deliberately rejected.Changes
verification-and-artifacts-v1hardened in place: "Upload only task-relevant artifacts, and inspect each before uploading. Never upload secrets, credentials, API keys, auth tokens or headers, .env files, or personal or customer data; redact sensitive values, and prefer minimal, sanitized excerpts over whole logs, bundles, or datasets." No@v2.tools/db/backfill-runtime-profile-standard-engineering-context.ts): seeds the entry where missing, and updates it where the profile's stored content has drifted from the catalogue. This is how in-place edits reach already-seeded profiles — and it self-maintains for every future edit, with no new migration script per change.@v1; tests assert the fragment now prohibits secret/PII uploads.Rollout (after merge)
The sync is not executed — dry-run first:
Why on hold
We have no eval framework to measure whether this (or any) recipe-content change actually improves agent behavior before/after. PR #1590 (
libs/agent-eval) is the harness for exactly this — context recipes are already arun_evalinput. Parking this PR while I revive #1590 and add a safety scenario (deterministic gate: agent never uploads a secret-shaped artifact) parametrized by recipe content, so this change lands with evidence rather than vibes.Testing
@moltnet/tasks(207) incl. the hardened-fragment assertion; docscheck-runtime-profile-contexts(2 recipes);typecheck(tasks, sdk, console, docs, tools),lint,@moltnet/docs:buildall pass; bundle stays free of Node/SDK code. Backfill typechecks; not run (needs the DB proxy).(Commit history shows an initial
@v2exploration; the net diff is the v1-in-place approach above.)