Branch Discipline¶
Rules that apply across all ElevateNow repos. Non-negotiable.
Branch naming¶
feature/p2-14-reference-data-api # backlog item work
fix/wc-resolver-ohio-benefit-rate # bug fix
chore/update-dependencies # non-functional
agent/asset-library-sync # agent-generated
Always include the backlog item ID when working from a ticket.
The sign-off gate¶
No merge to main without Vinod sign-off. This applies to:
- All feature branches in all repos
- Bug fixes that touch runtime behavior
- Schema changes (especially
input_schemain Agentic Studio tools) - Any change to a Conductor recipe
What "sign-off" means: Vinod reviews the PR, leaves an approving review, and explicitly says it's clear to merge. A thumbs-up comment is not sign-off.
Tool schema changes — extra gate¶
If your change modifies a tool's input_schema, output_schema, or any registration metadata:
- Push the updated tool file to vin-tools and to
Tool_Chest/Tools/ - Delete the existing
tool_database.toolsrecord in Agentic Studio - Re-register the tool — this captures the new schema into the stored record
- Confirm with Vinod before deleting any DB record
- Restart the flask-server on EC2 after re-registration
Body-only changes (logic only, no schema change) do not require re-registration — just push and restart.
What never goes to main without a feature branch¶
- New tools or tool updates
- CurationStudio UI pages
- Conductor recipe changes
- Workbench frontend changes
- Wiki pages (this wiki)
If a ticket explicitly says "feature branch required" — it means it. The backlog tracker notes field carries these instructions per item. Read them before starting.
The stale schema signature¶
If you see the same validation error byte-for-byte on multiple consecutive workflow runs, the registered input_schema in tool_database.tools is stale — not the file. Do not push again or restart until you've verified the stored record matches the current file.
Diagnosis steps:
1. Confirm the fix is in the vin-tools file at the registered github_url
2. Confirm the fix is in Tool_Chest/Tools/<ClassName>.py
3. Pull the registered record and check the stored input_schema directly
4. If the old constraint is still there → delete record + re-register