Skip to content

chore: sync cli-3.12.1 to main (cherry-pick from stranded #131)#133

Merged
montfort merged 1 commit into
mainfrom
chore/sync-cli-3.12.1-to-main
May 11, 2026
Merged

chore: sync cli-3.12.1 to main (cherry-pick from stranded #131)#133
montfort merged 1 commit into
mainfrom
chore/sync-cli-3.12.1-to-main

Conversation

@montfort
Copy link
Copy Markdown
Contributor

Replaces closed #132 (had merge conflicts because GitHub squash-merged #129, breaking SHA continuity with the stacked feature branch).

Why this PR

#131 (closes #130) merged to its stacked base (`feat/tde-activation-trigger`) instead of `main` — known artifact of stacked-PR pattern when the parent PR squash-merges first. The 14-file diff is stranded on the feature branch.

This PR cherry-picks the exact commit (#131's merge commit `e128b28`) onto a fresh branch off main. Cherry-pick was clean — no conflicts because the cherry-picked commit only touches files outside the #129 conflict zone (validator code, regression test, Cargo.toml/Cargo.lock, CLI versioning tables) and §3 prose in DOCUMENTATION-POLICY.md (which #129's squash didn't touch — #129 only changed the doc footer + §6 row).

Verification

```
$ grep '^version' cli/Cargo.toml
version = "3.12.1"

$ cd cli && cargo test --test validate_test test_validate_tde_document_valid
running 1 test
test test_validate_tde_document_valid ... ok
test result: ok. 1 passed; 0 failed; 0 ignored
```

Post-merge

`fw-4.13.0` and `cli-3.12.1` tags can be pushed from `main` HEAD immediately. The release workflows (`release-framework.yml`, `release-cli.yml`) will compile assets:

  • `straymark-fw-4.13.0.zip` (dist/ packaged)
  • 4× `straymark-cli-v3.12.1-{linux,darwin-x86_64,darwin-aarch64,windows}.{tar.gz,zip}`

🤖 Generated with Claude Code

 #130) (#131)

Latent bug exposed by #129's TDE activation trigger: `straymark new
--doc-type tde` shipped documents with the canonical `status: identified`
(per TEMPLATE-TDE.md and DOCUMENTATION-POLICY.md §6), but `straymark
validate` rejected them with META-003. The validator's hardcoded
VALID_STATUSES was missing the only non-`draft`/non-`accepted` default
in the type matrix.

Fixed (CLI):
- validation.rs:45 — VALID_STATUSES now includes `identified` alongside
  draft/review/accepted/superseded/deprecated. Flat enum still applies
  to all 12+ doc types; per-type validation sets deferred to v1 against
  the same second-adopter gate as the follow-ups CLI.
- cli/tests/validate_test.rs — new regression test
  `test_validate_tde_document_valid()` exercises `status: identified`.
  TDD red→green verified: test fails on unpatched validator, passes
  after the fix.

Changed (Framework, no separate version bump — ships with fw-4.13.0):
- DOCUMENTATION-POLICY.md §3 "Document Statuses" (EN + ES + zh-CN):
  lifecycle diagram extended to show `identified` as a TDE-only entry
  state. Reconciles §3 prose with the §6 per-type defaults table that
  already declared TDE → `identified`.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@montfort montfort merged commit bcaa491 into main May 11, 2026
1 check passed
@montfort montfort deleted the chore/sync-cli-3.12.1-to-main branch May 11, 2026 19:46
montfort added a commit that referenced this pull request May 12, 2026
Records the rule "never commit directly to main" (mirroring
dist/STRAYMARK.md §5 for adopters), branch/commit conventions, the
project's squash-merge default, and the stacked-PR incident from
#129/#131/#133 (2026-05-11) — including prevention strategies and a
cherry-pick recovery recipe.

Also documents when --admin merge is acceptable (procedural sync PRs
where content was already reviewed elsewhere) and the tag-time
version-match check that release-{cli,framework}.yml enforce.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

bug(cli): straymark validate rejects TDE documents out of the box — META-003 does not know about canonical status: identified

1 participant