Keep learned-only song swarms running

This commit is contained in:
Meta Vens 2026-06-01 02:29:33 +01:00
commit 783a629b2b
2 changed files with 57 additions and 15 deletions

View file

@ -270,3 +270,4 @@
{"timestamp":"2026-06-01T01:05:00+01:00","topic":"per-target-local-music-intelligence","claim":"Each song challenge now emits a provider-labeled `intelligence.md` built from local audio analysis and source-path vocabulary, and musician prompts must read it alongside Qdrant music-production knowledge. The report translates tempo, register, brightness, noisiness, density, spectral motion, and cautious genre hints into AquaSynth production decisions. Keep prompt surfaces free of PowerShell markdown backtick escapes: escaped `r`/`t`/`n` tokens became hidden control characters in agent instructions, corrupting metric and file names.","evidence":"tools/IpaTrialWorker/Program.cs; tools/run-song-snippet-trial-swarm.ps1; artifacts/parity/song-snippet-swarms/20260531T234041397/pass-001/agent-01/target-01/intelligence.md; artifacts/parity/song-snippet-swarms/20260531T234041397/pass-001/agent-01/hypothesis-agent.prompt.md"}
{"timestamp":"2026-06-01T01:58:00+01:00","topic":"song-swarm-render-failure-visibility","claim":"Song-swarm render failure must be visible to agents and operators. `song-score` now writes `audio/render-failure.txt` and includes failure summaries in `evaluator-report.md`. The parser accepts documented `env=ad attack=... decay=...` syntax, because the manual taught that form and agents copied it. Codex musician jobs now set repo-local `DOTNET_CLI_HOME`/`NUGET_PACKAGES` with first-time-use disabled so internal renderer `dotnet run` calls do not write to denied sandbox home directories.","evidence":"src/AquaSynth.Core/PatchScript.cs; tests/AquaSynth.Dsl.Tests/PatchScriptTests.cs; tools/IpaTrialWorker/Program.cs; tools/run-song-snippet-trial-swarm.ps1; artifacts/parity/song-render-failure-smoke/20260601T0145-agent01-a01/smoke-agent01-target01-attempt01/song-candidates/agent_01__swarm__a01/audio/render-failure.txt; artifacts/parity/song-render-failure-smoke/20260601T0152-agent01-a01-after-ad/smoke-agent01-target01-attempt01/summary.csv"}
{"timestamp":"2026-06-01T02:08:00+01:00","topic":"song-swarm-render-environment-and-syrinx-scaffold","claim":"Renderer builds must not depend on user-profile NuGet or dotnet config. `FaustCompiler.RenderAsync` now runs its temporary C# render project with temp-local HOME, APPDATA, LOCALAPPDATA, DOTNET_CLI_HOME, and NUGET_PACKAGES. The music manual and swarm prompt now treat acoustic/syrinx as complete-graph syntax: agents should start from known-valid syrinx patches or log a gap, not submit isolated `source_port`/`acoustic_network` fragments that cannot render.","evidence":"src/AquaSynth.Faust/FaustCompiler.cs; docs/music-production-knowledge/aqua-dsp-usage-manual.md; tools/run-song-snippet-trial-swarm.ps1; artifacts/parity/song-snippet-swarms/20260601T005553312/pass-001/agent-01/iterations/attempt-01/target-01/agent-01-target-01-attempt-01/song-candidates/agent_01__swarm__scene_a/audio/render-failure.txt"}
{"timestamp":"2026-06-01T02:33:00+01:00","topic":"learned-only-music-knowledge-show-standard","claim":"A cumulative music-production knowledge loop should not fail when `music-distill --learned-only true` omits the seed `music-production-quality-standard-v1` document. The pass-end standard snapshot is display-only: it may show the canonical seed record when present, but if learned-only output only contains current curator/manual/failure/abstraction documents it must write an index-backed pass snapshot and continue the swarm.","evidence":"tools/run-song-snippet-trial-swarm.ps1; artifacts/parity/song-snippet-swarms/20260601T010706781/launcher stderr showed `No music knowledge document found for music-production-quality-standard-v1` after pass-001 despite successful learned-only distillation"}

View file

@ -247,6 +247,58 @@ function Write-PassPlaylist {
Set-Content -LiteralPath $reportPath -Value $report
}
function Write-MusicStandardSnapshot {
param(
[string]$StorePath,
[string]$PassDirectory,
[string]$WorkerProject,
[string]$LogPath
)
$outputPath = Join-Path $PassDirectory "music-production-quality-standard.md"
try {
Invoke-LoggedProcess `
-FilePath "dotnet" `
-ArgumentList @(
"run",
"--project",
$WorkerProject,
"--",
"music-show",
"--store",
$StorePath,
"--knowledge-id",
"music-production-quality-standard-v1",
"--output",
$outputPath
) `
-LogPath $LogPath
}
catch {
Add-Content -LiteralPath $LogPath -Value "[$([DateTimeOffset]::UtcNow.ToString("O"))] quality-standard document not present in current learned-only store; wrote pass knowledge snapshot instead."
$reportPath = Join-Path $PassDirectory "music-production-knowledge-report.md"
$indexPath = Join-Path $PassDirectory "music-vector-index-after.md"
$lines = New-Object System.Collections.Generic.List[string]
$lines.Add("# Music Production Quality Standard Snapshot")
$lines.Add("")
$lines.Add("The canonical seed standard was not re-emitted by this learned-only pass. That is expected: pass distillation appends current lessons instead of reseeding manuals and static doctrine.")
$lines.Add("")
$lines.Add(('- store: `{0}`' -f $StorePath))
$lines.Add(('- distillation report: `{0}`' -f $reportPath))
$lines.Add(('- vector index: `{0}`' -f $indexPath))
$lines.Add("")
if (Test-Path -LiteralPath $reportPath) {
$lines.Add("## Current Pass Knowledge Documents")
$lines.Add("")
foreach ($line in (Get-Content -LiteralPath $reportPath | Where-Object { $_ -like '- `*' })) {
$lines.Add($line)
}
}
Set-Content -LiteralPath $outputPath -Value $lines
}
}
$repoRoot = Resolve-RepoRoot
$codex = Get-Command $CodexCommand -ErrorAction Stop
$loopId = New-Timestamp
@ -786,21 +838,10 @@ Return a short final note naming knowledge-curation.md.
-LogPath (Join-Path $logRoot "$passId-music-index.log")
$latestMusicKnowledgeStore = $musicKnowledgeStore
Invoke-LoggedProcess `
-FilePath "dotnet" `
-ArgumentList @(
"run",
"--project",
$workerProject,
"--",
"music-show",
"--store",
$musicKnowledgeStore,
"--knowledge-id",
"music-production-quality-standard-v1",
"--output",
(Join-Path $passDir "music-production-quality-standard.md")
) `
Write-MusicStandardSnapshot `
-StorePath $musicKnowledgeStore `
-PassDirectory $passDir `
-WorkerProject $workerProject `
-LogPath (Join-Path $logRoot "$passId-music-show-standard.log")
}