Skip to content

fix(bin): name local-only delivery base in Definition of done - #4530

Open
rajput-hemant wants to merge 1 commit into
kunchenguid:mainfrom
rajput-hemant:fm/fm-dod-base-branch-wording
Open

rajput-hemant wants to merge 1 commit into
kunchenguid:mainfrom
rajput-hemant:fm/fm-dod-base-branch-wording

Conversation

@rajput-hemant

Copy link
Copy Markdown

Summary

  • Thread optional --base <branch> through bin/fm-brief.sh into fm_dod_block / fm_ship_rule_one so a local-only brief names the same delivery target in Setup, Rule 1, and Definition of done.
  • Preserve today's default-branch wording when --base is omitted; bin/fm-promote.sh keeps working with no base argument.
  • Cover both cases in tests/fm-brief.test.sh. With the old DOD wording restored, a --base feat/vue-3 brief still said merges it into local main while the contract line recorded base=feat/vue-3.

Test plan

  • bash tests/fm-brief.test.sh
  • bin/fm-lint.sh bin/fm-dod-lib.sh bin/fm-brief.sh
  • Fail-proof: temporarily hardcode local-only DOD back to main, scaffold with --base feat/vue-3, confirm DOD still named main

Follow-up (out of scope)

  • Spawn should record and refuse a mismatched --base against the brief contract line (see open PR feat(bin): make a task's delivery target branch part of its contract #4436 for the wider delivery-target contract).
  • Local-only Setup could prefer the local refs/heads/<base> before fetching when the local base is ahead of origin.
  • direct-PR / no-mistakes DOD could add an explicit "PR targets <base>" note when --base is set.

Thread an optional --base through fm-brief into fm_dod_block so a
local-only brief no longer closes with main while Setup and Rule 1
name a long-lived landing branch.

Co-authored-by: Cursor <cursoragent@cursor.com>
@kunchenguid

Copy link
Copy Markdown
Owner

Speaking as Kun's firstmate:

First triage on HEAD 578b885d022ab5fd2a2ef1300d24329f7ff7c8a8. Diff reviewed: threads optional --base through bin/fm-brief.sh into fm_dod_block / fm_ship_rule_one / Setup so local-only briefs name the same delivery target in Rule 1 and Definition of done; omitted --base keeps today's main wording; validation is syntax-only via fm_delivery_base_validate. Overlaps open #4436 (wider delivery-target contract including spawn/teardown; that PR is CONFLICTING) — this is the narrower DOD-wording slice; help this PR, do not open a competing one.

VISION per-rule:

  1. One captain, one interface — aligns (honest delivery target in worker brief).
  2. Authority explicit — aligns (--base is explicit opt-in; no inferred base).
  3. Scripts own mechanics / agents own judgment — aligns (deterministic contract line + label owner).
  4. Restart is a non-event — not in play (scaffold text only).
  5. Delegation with a spine — aligns (delivery contract names the landing branch before work starts).
  6. Fleet outlives any vendor — not in play.
  7. Scope — aligns (brief/DOD command-layer contract).

contract-class: opt-in — new --base stays off unless the operator passes it; unconfigured scaffolds unchanged.

CI/NM: first-time fork runs approved this pass (34953405764 CI, 34953405881 Require no-mistakes) — waiting on green. attestation: MISSING (no no-mistakes attestation block / bound head_sha in body). mergeable: MERGEABLE/UNSTABLE. workflow-zero: yes. security: none.

Stamp waiting-author. Please bind a no-mistakes attestation to this HEAD. Merge-eligible only after attestation MATCH + green CI/NM. Not escalating while attestation is missing.

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.

2 participants