Per the move of HARVEST_SUMMARY.md to the track directory, the Notes
section of current_baseline.md that referenced 'HARVEST_SUMMARY.md' by
file name only is updated to the new full path:
conductor/tracks/directive_hotswap_harness_20260627/HARVEST_SUMMARY.md
So the next reader can find the file by following the link directly
rather than searching for it.
The HARVEST_SUMMARY.md is a meta-artifact for the directive_hotswap_
harness_20260627 track. It belongs in the track directory alongside
the spec/plan/state, not in the directives tree (which should hold
only the directive libraries themselves: v1.md + meta.md per
directive + presets/).
Moved via git mv (preserves history). Updated the lone in-tree
cross-reference in current_baseline.md Notes section to point to the
new path.
Other historical reports (TRACK_COMPLETION_*, phase3_verification_*)
still reference HARVEST_SUMMARY.md by name only without a relative
path; they continue to render correctly as descriptive references
to the file that existed at the time of the report.
Lifted:
- test_instantiation_not_mock_away: tests must exercise actual instantiation,
not mock away the constructor (caught the MiniMax 401 regression)
- preserve_prior_versions_of_review_docs: when iterating on a review,
preserve prior versions as separate files (v2/v2.1/v2.2/v2.3)
- neutral_language_for_doc_drift: doc-drift fixes use 'predates/stale/
outdated', not 'fictional' (value judgment, not technical description)
- preserve_before_compact_archive: at 80%+ context, write a comprehensive
session-synthesis archive before compaction
- user_corrections_log_in_state_toml: per-track state.toml has a
user_corrections_log section for any reviewed-by-user track
- surface_dirty_state_in_test_runner: when subprocess is dead/degraded,
print a clear [BATCH-WARN] rather than silent timeout
Lifted:
- profile_first_optimize_second: profile and measure the actual bottleneck
before any architectural change (RAG init, not AI SDKs, was the bottleneck)
- surface_gaps_at_discovery_not_checkpoint: surface scope gaps and
architectural deviations the moment they are discovered, not at a
checkpoint (the 'all good!' footnote pattern is bad UX)
Lifted from docs/reports/2026-03-02/MCP_BUGFIX_20260306.md:
- pathlib_read_write_no_newline_kwarg: pathlib read_text/write_text must omit the
newline kwarg (unsupported pre-3.10; corrupts line endings on Windows)
Adds a new MCP tool that exposes scripts/aggregate_directives.py as an
LLM-callable endpoint. The tool reads a presets markdown file, resolves
each directive's v1.md, and returns the concatenated clean directive
bodies. metadata (meta.md) is never read.
Tool contract:
name: aggregate_directives
params: preset_path (string, default current_baseline.md), max_chars (int, default 0)
result: text content (clean bodies) or 'ERROR: ...' string on failure
Dispatch runs the impl in asyncio.to_thread so the 66+ v1.md reads do not
block the MCP stdio loop. Errors from aggregate_directives are caught and
formatted as 'ERROR: aggregate_directives(<path>) failed: <type>: <msg>' so
the LLM can read the failure mode inline. Tool count: 45 (MCP_TOOL_SPECS)
+ 2 (run_powershell, aggregate_directives) = 47.
Added scripts/ to sys.path so 'from aggregate_directives import ...' works
inside the MCP server process; idempotent with existing project_root and src
path inserts.
Wraps the body-building core in a public aggregate_directives() function that
returns the rendered string and raises FileNotFoundError/ValueError on errors.
The existing aggregate() CLI wrapper catches those and preserves the prior
stdout/file output behavior. parse_preset now accepts an optional root param so
directive paths inside the preset resolve against a caller-supplied
project_root instead of always REPO_ROOT. No behavior change for the CLI; the
new function is the API surface used by the upcoming MCP server tool.