Release v3.5.0 — E2E Quality Gate + Mini-App Chấm Công Showcase + Anti-Rationalization Unified
Date: 2026-04-14
Marketing version: v3.5.0
CHANGELOG version: 1.5.0
Branch: feat/mini-app-cham-cong-docs → main (merged via --no-ff)
Merge commit: c9c31e3 (local, not pushed)
Tag: v3.5.0 (local, not pushed)
Agent count post-merge: 44 (33 with anti-rationalization + 11 sprint spine)
Reconciliation note: This release merges TWO parallel development tracks
that diverged fromcabccd6(2026-04-12). The initial intent was a simple
merge of the feat branch into main, but surveying revealed main had shipped
significant work (v3.2 + v3.3 Anti-Rationalization Framework, license
change, docs rewrite) that feat branch never absorbed. Both tracks are now
unified into v3.5.0.
Reconciliation audit
| Stat | Value |
|---|---|
| Feat branch commits (absorbed) | 15 (14 original + 1 release prep) |
| Main branch commits (absorbed) | 9 |
| Files in overlap (both sides modified) | 104 |
| Hand-resolved UU conflicts | 11 (4 root + 6 docs/ + 1 ba-master SKILL) |
| Auto-merged SKILL.md files | 25 |
| Modify-delete conflicts resolved (keep feat) | 65 (outputs/mini-app-cham-cong/*) |
| Smoke test verdict | PASS — 243/0/0/4/247 |
TL;DR
Two major capabilities land on top of the v3.4 Sprint Spine:
- Phase 08 CI quality gate — BA artifacts (skills, docs, fixtures) now validated on every PR via GitHub Actions, 5-layer lint orchestrator, JSON + Markdown reports
- Mini-App Chấm Công end-to-end showcase — 12 modules, 4 BRDs, 53 US files, EAMS v2.1, RTM, 111/111 Confluence pages — proves the kit dogfooded on a real enterprise attendance system
Zero breaking changes. Drop-in upgrade from v3.4.0.
Release highlights
1. CI-integrated E2E quality gate (Phase 08)
Orchestrator — .agent/scripts/ba_e2e_test.py (1,389 LOC, stdlib only)
- 5 lint layers:
- L1 — script smoke (syntax/import for all
ba_*.pyhelpers) - L2 — helper stdlib interface smoke (14 test cases covering
ba_as_built,ba_retro,ba_learn,ba_baseline,ba_second_opinion,ba_setup) - L3 — skill frontmatter + canonical sections (Input Validation, System Instructions, etc.)
- L4 — deep BRD↔US↔API↔test consistency (6 lint families: duplicate US IDs, BRD→US xref, API-spec US refs, test-case US refs, RTM US refs, orphaned test cases)
- L5 — fixture coverage (US ID extraction, lowercase tolerance)
- L1 — script smoke (syntax/import for all
--reportmarkdown output,--jsonstable schema v1.0.0 (ensure_ascii=Falsefor Vietnamese round-trip),--fixtureselector
Workflow — .github/workflows/e2e-skills.yml
- Triggers on PR + push to
main/feat/**touching.agent/,docs/,outputs/, or the workflow itself - Python 3.11,
actions/checkout@v4fetch-depth: 0(ba_retro needs git history) - Writes markdown to
GITHUB_STEP_SUMMARYfor inline PR review UX - Uploads
reports/artifact (14-day retention) - Sticky PR comment via
marocchino/sticky-pull-request-comment@v2 - Fails job only on
FAIL/CRASHverdict —WARNdoesn't block - 10-min timeout, zero external deps
README badge — GitHub Actions status badge linked to e2e-skills.yml, now tracking main branch.
2. Mini-App Chấm Công — comprehensive BA showcase
Location: outputs/mini-app-cham-cong/
Overview artifacts
- 4 BRDs — Nhân viên / Quản lý / HR-Admin / IT-System-Admin
- Demo Plan Sprint 8
- Modules overview
- Confluence manifest (111 pages)
12 modules (M01-M12) — each with README.md + api-spec.md + db-schema.md + test-cases.md + US files:
- M01 Chấm công — check-in/out, GPS, selfie, anti-spoofing
- M02 OT — overtime request/approval/settlement
- M03 Nghỉ phép — leave types, balance, approval chain
- M04 Công tác — business trip, expense
- M05 Phân ca — shift scheduling, rotation, swap
- M06 Chính sách — policy engine, rules
- M07 Mobile — offline sync, push, deep-link
- M08 (reserved)
- M09 (reserved)
- M10 (reserved)
- M11 Báo cáo — weekly, monthly, compliance, payroll lock
- M12 Quản trị hệ thống — chi nhánh, audit log, offboarding, chốt công tháng, onboarding, data retention
User stories — 53 total
- M01-M11: 47 US files rewritten R3 with concrete Gherkin scenarios sourced from Edge Cases tables
- M12: 6 US files (us-sys-01 → us-sys-06)
Supporting docs
eams-v2-comprehensive.md— EAMS v2.1 (§15.3 attendance anomalies, §17.5 leave accrual, §17.6 payroll lock)RTM.md— full requirements traceability matrixAUDIT-REPORT.md— R3 remediation audit trailINDEX.md— navigation entry
Confluence sync — 111/111 pages pushed, 0 rendering errors. Unblocked by language-mapping fix (json/gherkin) + mermaid-macro support in push scripts.
3. Skill hygiene
ba-wiki/SKILL.md— canonical## Input Validation+## System Instructionsadded. L3 frontmatter lint 6/8 → 8/8 (operation-based template was missing headers because it uses Ingest/Query/Lint instead of the cognitive-loop template)coverage_checker.py— accepts lowercaseus-*+test-cases.mdfilenames
Commit log (14 commits)
| SHA | Summary |
|---|---|
9c79110 |
feat(ci): Phase 08 — JSON reporter + GitHub Actions workflow + badges |
00032e8 |
fix(skills): ba-wiki add canonical Input Validation + System Instructions |
a8bb262 |
feat(scripts): ba_e2e_test L4 deep lints — BRD↔US↔API↔test consistency |
7c7be35 |
feat(scripts): ba_e2e_test L2 — script helper smoke tests (14 tests) |
4cd41e1 |
feat(scripts): ba_e2e_test.py orchestrator — L1 + L3 + L5 layers |
682e8bd |
fix(scripts): coverage_checker recognizes lowercase us-* and test-cases.md |
6784853 |
chore: rename release v3.2.0 → v3.4.0 (tag conflict reconciliation) |
2fb7392 |
docs: v3.2 release refresh — badges, sprint spine, cheat-sheet, changelog |
9d4821f |
feat: v3.2 sprint spine — 11 new agents + 6 helpers + setup wizard |
e1a0625 |
fix: YAML frontmatter quotes + BA-fit polish across 26 skills |
0420b82 |
docs: Confluence sync complete — 111/111 pages updated, 0 rendering errors |
2823845 |
fix: Confluence DC rendering blockers — json/gherkin lang mapping + mermaid-macro |
37cc552 |
docs: R3 Gherkin remediation — M01-M11 (47 US files) |
3eb75b8 |
docs: R3 remediation — M12 Gherkin rewrite (6 US), EAMS v2.1, API/BRD/RTM fixes |
Plus the release prep commit (added on merge): chore(release): v3.5.0 — CHANGELOG + badges
Upgrade path
From v3.4.0 — drop-in, no breaking changes. To activate the new CI quality gate on a fork:
git pull origin main- Ensure
.agent/scripts/ba_e2e_test.pyis present - Copy
.github/workflows/e2e-skills.ymlinto your repo (or fork will inherit on first PR) - First PR touching
.agent/,docs/, oroutputs/triggers the gate automatically
From <v3.4.0 — see CHANGELOG.md §1.4.0 for Sprint Spine migration (11 new agents, ba-setup wizard, BA-fit reframing).
Post-merge checklist (user action)
Current local state (as of 2026-04-14 03:15):
mainis atc9c31e3(merge commit) — 14 commits ahead of origin/mainv3.5.0tag exists locally, not pushedfeat/mini-app-cham-cong-docsbranch still exists (same commit as main now)
Review before pushing:
-
git log main --oneline -20— review the reconciled history -
git show v3.5.0 --stat— verify tag points to merge commit -
git diff origin/main main --stat | tail -5— sanity-check LOC delta -
python3 .agent/scripts/ba_e2e_test.py --fixture outputs/mini-app-cham-cong— re-run smoke test - Open README.md visually — check badge count says 44, logo cache-bust, sprint spine section intact
- Open CHANGELOG.md — verify §1.5.0 reconciliation note + historical main entries preserved
- Spot-check 2-3 SKILL.md files (e.g.
ba-elicitation,ba-writing,ba-validation) — verify anti-rationalization sections AND sprint-spine context both present
Push sequence (when ready):
git push origin main # trigger CI on main, badge should flip green
git push origin v3.5.0 # publish tag
gh release create v3.5.0 \
--title "v3.5.0 — E2E Quality Gate + Mini-App Chấm Công Showcase" \
--notes-file plans/reports/release-260414-0237-v3-5-0.mdOptional cleanup:
git push origin --delete feat/mini-app-cham-cong-docs— remote branch no longer neededgit branch -d feat/mini-app-cham-cong-docs— local branch cleanup
Reconciliation trace
Why the scope ballooned — the initial "merge feat into main" plan assumed main was stale. Surveying revealed main had independently shipped:
- v3.2.0 Anti-Rationalization Framework (commit
766afb9) — 5 flagship agents + using-ba-kit meta skill + 6 slash commands - v3.3.0 full rollout (commit
b2444c1) — 28 more agents with When to Use / Common Rationalizations / Red Flags / Verification sections (~140 items each) - License MIT → CC BY-NC 4.0 (commit
985d2d8) - Logo asset refresh (commit
e364cf5) - outputs/ removed from tracking (commit
b344068) - knowledge-search domain mapping fixes (commit
125af14)
Critical conflict zones:
- outputs/ modify-delete (65 files) — main had
git rm -r outputs/, feat kept modifyingoutputs/mini-app-cham-cong/*. Resolved by: keeping feat versions + updating.gitignorefromoutputs/tooutputs/*+!outputs/mini-app-cham-cong/**negation. - 26 SKILL.md files — git auto-merged 25 successfully (different sections edited). Only
ba-master/SKILL.mdrequired hand-merge due to both sides editing the Decision Matrix routing table. - Root docs (README, CHANGELOG, AGENTS) — heavy manual reconciliation. CHANGELOG union both histories (feat's
[1.x.y]semver + main'sv3.x.yplain). - CHANGELOG.md — kept feat's 1.5.0 + 1.4.0 at top with a "Reconciliation note" block, appended main's v3.3.0/v3.2.0/v3.1.1/v3.1.0 entries below a "Historical entries" separator for provenance.
E2E validation loop:
- First run after merge: 1 FAIL —
master_routingcheck saidusing-ba-kitwas unrouted - Root cause:
AGENT_REF = re.compile(r"@ba-[a-z][a-z0-9-]*")couldn't match@using-ba-kit - Fix: added
using-ba-kittoCONNECTOR_EXEMPTset inba_e2e_test.py:62 - Second run: PASS 243/0/0/4/247 (243 passed, 0 warned, 0 failed, 4 skipped, 247 total)
Known follow-up (not blocking release):
- The 11 sprint spine agents (
ba-as-built,ba-autoreview,ba-retro,ba-learn,ba-checkpoint,ba-challenger,ba-second-opinion,ba-baseline,ba-guard,ba-shotgun,ba-setup) do NOT yet have the anti-rationalization sections. They inherit the convention as a follow-up task. Filed as CHANGELOG note.
Unresolved questions
- Branch retention policy — should
feat/mini-app-cham-cong-docsbe deleted after merge, or kept as a showcase reference branch? (Default assumption: delete; the fixture lives inmainalready viaoutputs/mini-app-cham-cong/.) - Knowledge entry count — README still reads "831 Entries". Did mini-app-cham-cong dogfooding add new knowledge entries? If yes, badge needs bump.
- Agent count — README reads "43 Agents". No new agents in v3.5.0 (CI + docs only), so still 43 — confirm no drift.
- Confluence manifest cron — 111/111 pages synced as of commit
0420b82. Any drift since? Worth adding to v3.5.0 post-release smoke.