Skip to content

fix(ooda): add reversible standing seed goals - #4941

Merged
rysweet merged 3 commits into
mainfrom
feat/issue-4927-nodeoptions-max-old-space-size32768-saved-preferen
Sep 2, 2026
Merged

fix(ooda): add reversible standing seed goals#4941
rysweet merged 3 commits into
mainfrom
feat/issue-4927-nodeoptions-max-old-space-size32768-saved-preferen

Conversation

@rysweet

@rysweet rysweet commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

Allow identity files to declare goals that continue across normal no-progress checks, and safely change that declaration later.

  • add standing to seed-goal configuration without changing existing files
  • use the existing [standing] description marker and ActiveGoal::is_perpetual() behavior
  • read seed goals once per OODA cycle and reuse the result
  • add the marker for matching standing = true seeds
  • remove only a leading marker for matching source:seed goals that explicitly set standing = false
  • do not remove the marker when the setting is omitted, the seed is deleted, or the goal was created by a user
  • leave standing words in ordinary description text unchanged
  • prove a goal changed to explicit non-standing returns to normal no-progress handling

Safety details

The configuration keeps three distinct cases: true, explicit false, and omitted. Only explicit false permits removal. This prevents deleting a configuration line from silently changing a protected goal.

Resolves #4927.

Validation

  • identity configuration and file-loading tests
  • goal creation and update tests
  • no-progress behavior tests
  • cargo test --test docs_integrity
  • repository pre-commit and pre-push checks
  • strict maintainer review: CLEAN

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

)

The live standing goal `articulate-repo-hygiene-backlog` was re-parked
every OODA cycle and fed the UNCLEAR-CRITERIA issue storm (#4927/#4930/
#4934, root-caused in #4935) purely because it was never tagged perpetual:
the no-progress breaker's `!is_perpetual()` exemption never fired for it.

Close the gap at the seed-declaration + reconcile surface, reusing the
single existing `ActiveGoal::is_perpetual()` predicate (no second notion
of "perpetual"):

- Add declarative `standing: bool` (default false) to `SeedGoal` with a
  `.standing()` builder, and to `TomlSeedGoal` via `#[serde(default)]`
  while KEEPING `deny_unknown_fields` (a typo'd flag still fails loud).
- Carry `standing` through the identity file_loader conversion.
- `seed_board_from_seed_goals` marks a `standing` seed perpetual at
  cold-start; ordinary seeds are pushed unchanged (no reclassification).
- Add idempotent load-time `reconcile_standing_markers` that stamps the
  standing marker onto already-persisted goals matching a `standing`
  seed's normalized title slug (EXACT match only, never fuzzy prose),
  self-healing the live warm-board goal. Wire it into the OODA cold-start
  path in cycle.rs.
- Refactor `mark_standing` onto a shared in-place `mark_standing_in_place`.

Additive and non-breaking: ordinary goal convergence is unchanged, proven
by tests. Docs: new howto + reference, linked in mkdocs nav.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ryansweet and others added 2 commits September 2, 2026 10:16
Resolve seed goals once per cycle and remove standing markers only for exact matching source seeds that explicitly declare standing=false.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rysweet rysweet changed the title fix(ooda): declarative standing seed goals + warm-board self-heal (#4927) fix(ooda): add reversible standing seed goals Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

📊 Coverage Summary

Generated by cargo llvm-cov --workspace --summary-only (nightly, excluding test files)

Module Lines Covered Coverage
Total 215188 181962 84.6%

Coverage data from CI run. Test files matching tests?/ are excluded from line counts.

@rysweet
rysweet merged commit ed3ad33 into main Sep 2, 2026
18 checks passed
@rysweet
rysweet deleted the feat/issue-4927-nodeoptions-max-old-space-size32768-saved-preferen branch September 2, 2026 13:50
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.

OODA no-progress breaker: goal stuck after guided retry (UNCLEAR-CRITERIA)

2 participants