Skip to content

Commit 5eabf6d

Browse files
committed
chore: release tfd v2.1.1
1 parent 091f32f commit 5eabf6d

8 files changed

Lines changed: 21 additions & 19 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ All notable public changes to Team First Development are documented here.
44

55
## Unreleased
66

7+
## 2.1.1 - 2026-07-25
8+
79
- Add live `create_thread` model-allowlist evidence to TEAM scanning: pass observed exact IDs with repeated `--create-thread-model` flags, omit that input rather than reuse cached identifiers when metadata is unavailable, and prefer `create_thread_eligible_models` before the legacy `eligible_models` `spawn_agent` fallback.
810

911
## 2.1.0 - 2026-07-25

README-CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ git clone https://github.com/msitarzewski/agency-agents.git ~/.agency-agents
5959

6060
```bash
6161
python3 -m pip install --user --break-system-packages PyYAML==6.0.2
62-
codex plugin marketplace add Howe829/team-first-development --ref v2.1.0
62+
codex plugin marketplace add Howe829/team-first-development --ref v2.1.1
6363
codex plugin add tfd@team-first-development
6464
```
6565

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ For a released version, install the pinned runtime dependency, add the repositor
5959

6060
```bash
6161
python3 -m pip install --user --break-system-packages PyYAML==6.0.2
62-
codex plugin marketplace add Howe829/team-first-development --ref v2.1.0
62+
codex plugin marketplace add Howe829/team-first-development --ref v2.1.1
6363
codex plugin add tfd@team-first-development
6464
```
6565

plugins/tfd/.codex-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tfd",
3-
"version": "2.1.0",
3+
"version": "2.1.1",
44
"description": "Team-first development from minimum-sufficient roster through evidence-based delivery.",
55
"author": {
66
"name": "Howe829",

scripts/release_preflight.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from typing import Any
1212

1313

14-
DEFAULT_VERSION = "2.1.0"
14+
DEFAULT_VERSION = "2.1.1"
1515
DEFAULT_RELEASE_DATE = "2026-07-25"
1616
MARKETPLACE_PATH = Path(".agents/plugins/marketplace.json")
1717
MANIFEST_PATH = Path("plugins/tfd/.codex-plugin/plugin.json")

scripts/test_plugin_contract.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def test_readmes_install_and_invoke_the_tfd_plugin(self) -> None:
9292
release_install = (
9393
"python3 -m pip install --user --break-system-packages PyYAML==6.0.2\n"
9494
"codex plugin marketplace add Howe829/team-first-development "
95-
"--ref v2.1.0\n"
95+
"--ref v2.1.1\n"
9696
"codex plugin add tfd@team-first-development"
9797
)
9898
development_install = (
@@ -239,7 +239,7 @@ def test_manifest_declares_the_tfd_plugin_contract(self) -> None:
239239
)
240240

241241
self.assertEqual(manifest["name"], "tfd")
242-
self.assertEqual(manifest["version"], "2.1.0")
242+
self.assertEqual(manifest["version"], "2.1.1")
243243
self.assertEqual(manifest["license"], "MIT")
244244
self.assertEqual(
245245
manifest["repository"],

scripts/test_release_contract.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
MARKETPLACE_PATH = ROOT / ".agents" / "plugins" / "marketplace.json"
2121
CHANGELOG_PATH = ROOT / "CHANGELOG.md"
2222
README_PATHS = (ROOT / "README.md", ROOT / "README-CN.md")
23-
EXPECTED_VERSION = "2.1.0"
23+
EXPECTED_VERSION = "2.1.1"
2424
EXPECTED_RELEASE_DATE = "2026-07-25"
2525
SKILL_NAMES = {"using-tfd", "team", "deliver", "workspace"}
2626
PREFLIGHT_PATH = ROOT / "scripts" / "release_preflight.py"
@@ -114,17 +114,17 @@ def test_manifest_version_is_the_exact_release_candidate(self) -> None:
114114

115115
self.assertEqual(manifest["version"], EXPECTED_VERSION)
116116

117-
def test_changelog_has_a_dated_2_1_0_release_section(self) -> None:
117+
def test_changelog_has_a_dated_current_release_section(self) -> None:
118118
changelog = CHANGELOG_PATH.read_text(encoding="utf-8")
119119
release_heading = re.search(
120-
r"^## 2\.1\.0 - (\d{4}-\d{2}-\d{2})$",
120+
rf"^## {re.escape(EXPECTED_VERSION)} - (\d{{4}}-\d{{2}}-\d{{2}})$",
121121
changelog,
122122
flags=re.MULTILINE,
123123
)
124124

125125
self.assertIsNotNone(
126126
release_heading,
127-
"2.1.0 must have its own ISO-dated release heading",
127+
f"{EXPECTED_VERSION} must have its own ISO-dated release heading",
128128
)
129129
assert release_heading is not None
130130
release_section = changelog[release_heading.end() :].split(
@@ -133,38 +133,38 @@ def test_changelog_has_a_dated_2_1_0_release_section(self) -> None:
133133
self.assertRegex(
134134
release_section,
135135
r"(?m)^- \S",
136-
"the released changes must live under 2.1.0",
136+
f"the released changes must live under {EXPECTED_VERSION}",
137137
)
138138

139-
def test_unreleased_section_does_not_claim_2_1_0_is_released(self) -> None:
139+
def test_unreleased_section_does_not_claim_current_version_is_released(self) -> None:
140140
changelog = CHANGELOG_PATH.read_text(encoding="utf-8")
141141
unreleased = markdown_section(changelog, "Unreleased")
142142

143-
self.assertNotIn("2.1.0", unreleased)
143+
self.assertNotIn(EXPECTED_VERSION, unreleased)
144144
self.assertNotRegex(unreleased, r"(?i)\b(?:released|published)\b")
145145

146-
def test_changelog_records_the_offline_preflight_and_cachebuster(self) -> None:
146+
def test_2_1_0_changelog_records_the_offline_preflight_and_cachebuster(self) -> None:
147147
changelog = CHANGELOG_PATH.read_text(encoding="utf-8")
148148
release_section = markdown_section(
149149
changelog,
150-
f"{EXPECTED_VERSION} - {EXPECTED_RELEASE_DATE}",
150+
"2.1.0 - 2026-07-25",
151151
).casefold()
152152

153153
self.assertIn("offline release preflight", release_section)
154154
self.assertIn("cachebuster", release_section)
155155

156-
def test_bilingual_release_install_commands_pin_v2_1_0(self) -> None:
156+
def test_bilingual_release_install_commands_pin_current_version(self) -> None:
157157
release_command = (
158158
"codex plugin marketplace add "
159-
"Howe829/team-first-development --ref v2.1.0"
159+
f"Howe829/team-first-development --ref v{EXPECTED_VERSION}"
160160
)
161161

162162
for path in README_PATHS:
163163
with self.subTest(path=path.name):
164164
content = path.read_text(encoding="utf-8")
165165
self.assertTrue(
166166
release_command in content,
167-
f"{path.name} must pin the release install command to v2.1.0",
167+
f"{path.name} must pin the release install command to v{EXPECTED_VERSION}",
168168
)
169169
self.assertNotRegex(
170170
content,

scripts/test_release_preflight.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
ROOT = Path(__file__).resolve().parents[1]
1111
PREFLIGHT = ROOT / "scripts" / "release_preflight.py"
12-
VERSION = "2.1.0"
12+
VERSION = "2.1.1"
1313
RELEASE_DATE = "2026-07-25"
1414

1515

0 commit comments

Comments
 (0)