Skip to content

I1991 — A comment-only edit of the policy regenerates no bootstrap

Derive the policy fingerprint stamped into generated bootstraps from the parsed policy rather than its bytes, so that editing a comment does not rewrite AGENTS.md, CLAUDE.md and GEMINI.md.

DONE wave 0 · p3 · implementation profile · parallel safe

Part of adopter-upgrades — An adopting repository survives a Majordomus upgrade, and what the tool vendors into it is adopter-neutral.

Objective

Derive the policy fingerprint stamped into generated bootstraps from the parsed policy rather than its bytes, so that editing a comment does not rewrite AGENTS.md, CLAUDE.md and GEMINI.md.

Why

OSCILLA db62a1f: a comment-only edit of policy.yaml moved the policy hash (ca779e02f878 to 9535da72e6a6) and rewrote all three bootstraps.

Current state

The stamp hashes the file's bytes (lib/update.sh, apps/majordomus-cli/src/providers.rs).

Desired state

Both renderers hash the same canonical form; a comment edit is a no-op for update.

Scope

  • lib/update.sh
  • apps/majordomus-cli/src/providers.rs
  • apps/majordomus-cli/src/policy.rs
  • apps/majordomus-cli/tests/providers_projection.rs
  • lib/common.sh
  • test/cases

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • Adding a comment to policy.yaml leaves `majordomus update --dry-run` reporting every target unchanged (update has no --check flag)

Validation

  • bin/majordomus plan validate
  • MJ_TEST_JOBS=4 bash test/run.sh <the case this issue adds>

Evidence required

  • comment_edit_noop_case

Evidence

coverstypecommandresultat commit
comment_edit_noop_casetestMJ_TEST_JOBS=2 bash test/run.sh 3018_a_comment_in_the_policy_moves_no_bootstrap && cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test providers_projectiontests: 1 passed; test result: ok. 4 passed: the shell's and Rust's normal forms agree (run 2026-10-14 13:30Z on master 4ec504616c plus this change)4ec5046

Timeline

started
2026-10-14T13:31:22Z
verified
—
completed
2026-10-14T13:31:41Z

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I1991.yaml. Read it back with majordomus plan show I1991.

Searches the titles and descriptions of every page this site publishes.