Skip to content

[DIC-28] crux-garden --write: persist gardening report to docs/status/generated/gardening_reports/#8518

Draft
an0mium wants to merge 2 commits into
mainfrom
vision-incubator/dic-28-crux-garden-write
Draft

[DIC-28] crux-garden --write: persist gardening report to docs/status/generated/gardening_reports/#8518
an0mium wants to merge 2 commits into
mainfrom
vision-incubator/dic-28-crux-garden-write

Conversation

@an0mium

@an0mium an0mium commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Slice

Adds --write and --output-dir flags to the aragora crux-garden CLI so the GardeningReport is persisted as a timestamped JSON file under docs/status/generated/gardening_reports/ (or a caller-supplied directory), satisfying the acceptance criterion in issue #6222 that was unmet by the stdout-only implementation. Mirrors the DIC-26 --write slice pattern (DIC-26 PR #8288 explicitly deferred DIC-28 persistence as a separate slice in its "Out of scope" section).

Gating

Tests

New in tests/cli/test_dic28_crux_garden.py (4 new; 14 pre-existing = 18 passed total):

Test What it verifies
test_write_flag_creates_report_file --write produces exactly one gardening_report_*.json in the output dir
test_write_flag_report_json_is_valid written file is valid JSON with generated_at, resolved_results, outstanding_results, schema_version
test_write_flag_creates_output_dir_if_absent --write creates the full directory tree when absent (3-level nested path)
test_write_flag_off_leaves_no_file without --write, no report file is created; output dir untouched

Also adds a yaml stub at the top of the test file (same pattern as DIC-21/23/25) so tests run cleanly in the hermetic uv-tool pytest venv where pyyaml is absent.

Validation

  • pytest tests/cli/test_dic28_crux_garden.py --noconftest18 passed in 0.16 s
  • ruff check aragora/cli/commands/dic28_crux_garden.py tests/cli/test_dic28_crux_garden.pyclean
  • mypy aragora/cli/commands/dic28_crux_garden.py --ignore-missing-importsSuccess: no issues found
  • Net diff: 119 LOC across 3 files (21 command, 16 parser, 82 test)

Out of scope

  • Writing to the default docs/status/generated/gardening_reports/ path on CI (operator trigger decision, not a code gate)
  • DIC-17 follow-up bridge wiring from the --write output path (tracked separately)
  • Automated scheduling of periodic gardening runs (DIC-28 scheduling concern, separate slice)
  • DIC-25 fragility-delta integration into gardening results (the GardeningConfig.fragility_shift_threshold hook exists; wiring it to a live DIC-25 catalog requires the Foreman gate to open)

Gate status

Per docs/status/NEXT_STEPS_CANONICAL.md, DIC-13..22 (and by extension DIC-23..28) are in the Delay track. The proof-first Foreman gate has not opened. This PR is planning truth and flag-gated operator tooling only; no boss-ready label applied. Kept as draft.


Generated by Claude Code

claude added 2 commits June 19, 2026 16:15
…/generated/gardening_reports/

Adds --write and --output-dir flags to the `aragora crux-garden` CLI so
the GardeningReport is persisted as a timestamped JSON file, satisfying
the acceptance criterion in issue #6222 that was unmet by the stdout-only
implementation. Mirrors the DIC-26 --write slice pattern (DIC-26 PR #8288
explicitly deferred DIC-28 persistence as a separate slice).

Flag-gated: ARAGORA_CRUX_GARDENING_ENABLED (unchanged); --write must be
passed explicitly. Live queue effect: none.

Advances issue #6222 (DIC-28 Proactive Crux Gardening).
Fixes lint-run CI failure on PR #8518 — ruff format --check flagged
the test file as needing canonical reformatting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017c3yxV3z2oDgfrV2mXhxae
@scarmani

Copy link
Copy Markdown
Collaborator

Queue-drain close: closing this stale ownerless vision-incubator draft to reduce backlog pressure.

Live checks before closing:

This does not delete the branch or discard the commits; the branch is preserved for deliberate revival if the crux-garden write mode should continue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants