context-rail 3.0.2__tar.gz → 3.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- context_rail-3.0.4/LICENSE +21 -0
- {context_rail-3.0.2/src/context_rail.egg-info → context_rail-3.0.4}/PKG-INFO +66 -31
- context_rail-3.0.2/PKG-INFO → context_rail-3.0.4/README.md +51 -43
- {context_rail-3.0.2 → context_rail-3.0.4}/pyproject.toml +16 -1
- context_rail-3.0.2/README.md → context_rail-3.0.4/src/context_rail.egg-info/PKG-INFO +78 -30
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail.egg-info/SOURCES.txt +1 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/setup.cfg +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/__main__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/cli.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/context/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/context/recipes.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/core/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/core/defaults.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/core/result.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/core/util.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/doctor/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/doctor/checks.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/doctor/gitconfig.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/doctor/stage2.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/confirmation.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/execution.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/gateway.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/adapters.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/checks.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/common.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/cto.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/budget.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/checkpoint.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/closeout.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/common.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/conflict.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/implementer.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/merge.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/records.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/review.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/review_order.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/dispatch/review_records.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/docs.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/doctor.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/init.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/maintenance.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/mcp.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/measure.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/migrate.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/onboarding.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/packs.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/reports.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/reshape.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/sync.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/ui.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/versions.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/handlers/views.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/mcp_schema.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/mcp_server.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/gateway/tools.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/budgets.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/gates.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/lifecycle.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/measurement.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/merge.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/packs.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/rights.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/structure.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/timestamps.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/kernel/triage.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/cache.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/cto.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/errors.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/fields.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/manifest.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/pack.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/policy.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/model/primitives.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/pack.yaml +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/profiles/cto.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/profiles/implementer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/profiles/reviewer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/skills/review-checklist/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/skills/test-first/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/actor.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/charter.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/check.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/goal.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/item.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/note.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/policy.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/record.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/scope.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/vision.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/wont.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/basic/templates/work-order.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/pack.yaml +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/profiles/cto.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/profiles/implementer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/profiles/reviewer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/skills/review-checklist/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/skills/test-first/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/actor.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/charter.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/check.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/goal.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/item.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/note.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/policy.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/record.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/scope.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/vision.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/wont.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/flow/templates/work-order.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/pack.yaml +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/profiles/cto.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/profiles/implementer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/profiles/reviewer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/skills/review-checklist/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/skills/test-first/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/actor.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/charter.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/check.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/goal.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/item.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/note.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/policy.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/record.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/scope.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/vision.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/wont.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/scrum/templates/work-order.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/pack.yaml +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/profiles/cto.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/profiles/implementer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/profiles/reviewer.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/skills/review-checklist/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/skills/test-first/SKILL.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/actor.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/charter.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/check.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/goal.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/item.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/note.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/policy.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/record.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/scope.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/vision.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/wont.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/packs/waterfall/templates/work-order.md +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/body_merge.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/control.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/dispatch.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/droid.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/git.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/git_sync.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/merge.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/runner/run.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/adapters.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/approval.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/doc.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/frontmatter_edit.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/git_index.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/gitattributes.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/index.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/legacy.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/location.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/lock.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/measure.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/migration.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/packs.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/query.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/sync.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/versions.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/store/write.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/ui/__init__.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/ui/api.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/ui/page.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail/ui/server.py +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail.egg-info/dependency_links.txt +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail.egg-info/entry_points.txt +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail.egg-info/requires.txt +0 -0
- {context_rail-3.0.2 → context_rail-3.0.4}/src/context_rail.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Son Hoanh
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: context-rail
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.4
|
|
4
4
|
Summary: An agentic project workspace: files are the truth, agents work through one write path
|
|
5
|
+
License-Expression: MIT
|
|
5
6
|
Project-URL: Repository, https://github.com/nguyenhoanhson797/Context-Rail
|
|
7
|
+
Keywords: agents,context,project-management,markdown,sqlite,workflow,mcp,cli
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development
|
|
6
18
|
Requires-Python: >=3.11
|
|
7
19
|
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
8
21
|
Requires-Dist: PyYAML>=6.0
|
|
9
22
|
Requires-Dist: mcp<3,>=2.3.0
|
|
10
23
|
Provides-Extra: test
|
|
11
24
|
Requires-Dist: pytest>=8; extra == "test"
|
|
12
25
|
Requires-Dist: pytest-timeout>=2.3; extra == "test"
|
|
26
|
+
Dynamic: license-file
|
|
13
27
|
|
|
14
28
|
# Context Rail v3
|
|
15
29
|
|
|
@@ -30,19 +44,28 @@ the package ships the CLI, the MCP server and a loopback UI over one tool table.
|
|
|
30
44
|
|
|
31
45
|
## Install
|
|
32
46
|
|
|
33
|
-
```
|
|
34
|
-
|
|
47
|
+
```bash
|
|
48
|
+
python -m pip install context-rail
|
|
35
49
|
```
|
|
36
50
|
|
|
37
|
-
On
|
|
38
|
-
|
|
39
|
-
`
|
|
51
|
+
On Windows use `py` instead of `python` (`py -m pip install context-rail`); that
|
|
52
|
+
is the only difference, every command below works the same in both shells.
|
|
53
|
+
This installs two equivalent entry points, `rail` and `ctx-rail`; every example
|
|
54
|
+
below also works as `python -m context_rail`.
|
|
55
|
+
|
|
56
|
+
`python -m pip` installs into the interpreter that will run the tool. Bare
|
|
57
|
+
`pip install context-rail` is the same command whenever `pip` on your `PATH`
|
|
58
|
+
belongs to that interpreter; on a machine with several Pythons, the module form
|
|
59
|
+
is the one that cannot pick the wrong one.
|
|
60
|
+
|
|
61
|
+
To keep the tool out of your project environments, `pipx install context-rail`
|
|
62
|
+
works too.
|
|
40
63
|
|
|
41
64
|
## Quick start
|
|
42
65
|
|
|
43
66
|
From the project you want to manage:
|
|
44
67
|
|
|
45
|
-
```
|
|
68
|
+
```bash
|
|
46
69
|
rail init --pack basic # writes ./context-rail/
|
|
47
70
|
rail add goal "Ship v3"
|
|
48
71
|
rail add task "Write the first task" --rel part_of=ship-v3
|
|
@@ -67,7 +90,7 @@ Notes that are easy to trip over:
|
|
|
67
90
|
`rail init --pack basic` writes only the skeleton (`rail.yaml`, `.gitignore`,
|
|
68
91
|
empty folders). For a picture, the profiles and the agent files:
|
|
69
92
|
|
|
70
|
-
```
|
|
93
|
+
```bash
|
|
71
94
|
rail init --interview # or --answers-file FILE --confirm "APPROVE charter"
|
|
72
95
|
rail approve charter --confirm "APPROVE charter" --confirmer "Ada"
|
|
73
96
|
rail adapters sync # AGENTS.md + .agents/skills/
|
|
@@ -84,7 +107,7 @@ rail sync --install # optional: git merge dr
|
|
|
84
107
|
|
|
85
108
|
Useful read commands:
|
|
86
109
|
|
|
87
|
-
```
|
|
110
|
+
```bash
|
|
88
111
|
rail status # counts, executable items, blockers, stuck items
|
|
89
112
|
rail digest # activity, waits, decisions, quality, usage
|
|
90
113
|
rail cto brief # the bounded brief a CTO session starts from
|
|
@@ -96,19 +119,23 @@ rail ci # doctor issues plus the approval and done gates
|
|
|
96
119
|
|
|
97
120
|
## Skills
|
|
98
121
|
|
|
99
|
-
Four operator skills under `skills/`
|
|
100
|
-
not have to read the engine to answer "what can this
|
|
101
|
-
the workflow?":
|
|
122
|
+
Four operator skills under `skills/` in the repository checkout teach an agent
|
|
123
|
+
the rail itself, so it does not have to read the engine to answer "what can this
|
|
124
|
+
do?" or "how do we change the workflow?":
|
|
102
125
|
|
|
103
126
|
- `context-rail-v3` — mental model, quick start, command map
|
|
104
127
|
- `context-rail-v3-workflows` — packs, statuses, transitions, BA/PO steps
|
|
105
128
|
- `context-rail-v3-loop` — dispatch → verify → review → merge, refusals
|
|
106
129
|
- `context-rail-v3-ops` — doctor, reindex, recovery, budgets, test lanes
|
|
107
130
|
|
|
108
|
-
Install them into your agent's skill directory:
|
|
131
|
+
Install them into your agent's skill directory from a checkout:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
cp -r skills/context-rail-v3* ~/.agents/skills/ # macOS, Linux
|
|
135
|
+
```
|
|
109
136
|
|
|
110
137
|
```powershell
|
|
111
|
-
Copy-Item -Recurse skills\context-rail-v3* "$HOME\.agents\skills\"
|
|
138
|
+
Copy-Item -Recurse skills\context-rail-v3* "$HOME\.agents\skills\" # Windows
|
|
112
139
|
```
|
|
113
140
|
|
|
114
141
|
See `skills/README.md` for the difference from the pack skills that are
|
|
@@ -120,13 +147,13 @@ Work that launches an agent, or changes the picture's meaning, is gated. The
|
|
|
120
147
|
brief reports the current state; nothing executes until a human approves the
|
|
121
148
|
charter:
|
|
122
149
|
|
|
123
|
-
```
|
|
150
|
+
```bash
|
|
124
151
|
rail approve charter --confirm "APPROVE charter" --confirmer "Ada"
|
|
125
152
|
```
|
|
126
153
|
|
|
127
154
|
Once the charter is approved, the loop uses isolated git worktrees:
|
|
128
155
|
|
|
129
|
-
```
|
|
156
|
+
```bash
|
|
130
157
|
rail dispatch <item> --expect <etag> --key <idempotency-key>
|
|
131
158
|
rail review <item> --run <run-id> --key <idempotency-key>
|
|
132
159
|
rail merge <item> --run <run-id> --expect <etag> --key <idempotency-key>
|
|
@@ -168,20 +195,20 @@ are all generated from one tool table (`src/context_rail/gateway/tools.py`).
|
|
|
168
195
|
|
|
169
196
|
From a checkout, install it in editable mode with the test dependencies:
|
|
170
197
|
|
|
171
|
-
```
|
|
172
|
-
|
|
198
|
+
```bash
|
|
199
|
+
python -m pip install -e .[test]
|
|
173
200
|
```
|
|
174
201
|
|
|
175
|
-
Then run one lane at a time:
|
|
202
|
+
Then run one lane at a time (on Windows use `py -m pytest`):
|
|
176
203
|
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
204
|
+
```bash
|
|
205
|
+
python -m pytest -q -m "not slow and not perf" # functional lane
|
|
206
|
+
python -m pytest -q -m "perf and not slow" -p no:xdist # speed budgets, serial
|
|
207
|
+
python -m pytest -q -m slow -p no:xdist # 10k-document stores
|
|
181
208
|
```
|
|
182
209
|
|
|
183
210
|
The speed budgets are fixed: a change that needs more time is a bug in the
|
|
184
|
-
change, never a reason to raise the budget.
|
|
211
|
+
change, never a reason to raise the budget. A bare `pytest -q` on its own also
|
|
185
212
|
collects the perf tests, so use the lanes above when the machine is busy.
|
|
186
213
|
|
|
187
214
|
## Layout
|
|
@@ -203,13 +230,16 @@ src/context_rail/
|
|
|
203
230
|
|
|
204
231
|
## Design
|
|
205
232
|
|
|
206
|
-
- Visual guide (diagrams and from-zero-to-daily walkthrough):
|
|
207
|
-
|
|
208
|
-
- Interactive engine graph (primitives, relations, one write path and the agent
|
|
209
|
-
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
233
|
+
- Visual guide (diagrams and a from-zero-to-daily walkthrough):
|
|
234
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/docs/context-rail-v3-guide.html>
|
|
235
|
+
- Interactive engine graph (primitives, relations, one write path and the agent
|
|
236
|
+
loop):
|
|
237
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/docs/context-rail-v3-engine-graph.html>
|
|
238
|
+
- Working rules and engine invariants:
|
|
239
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/AGENTS.md>
|
|
240
|
+
|
|
241
|
+
The design spec, the stage plans and the architecture records are working
|
|
242
|
+
material and stay out of the published repository.
|
|
213
243
|
|
|
214
244
|
Engine invariants worth knowing before changing code:
|
|
215
245
|
|
|
@@ -218,3 +248,8 @@ Engine invariants worth knowing before changing code:
|
|
|
218
248
|
- `context_rail.kernel` is pure: no file, git, process or index access.
|
|
219
249
|
- Unknown manifest schema, pack version, key or policy field is refused, never
|
|
220
250
|
guessed.
|
|
251
|
+
|
|
252
|
+
## License
|
|
253
|
+
|
|
254
|
+
MIT. See the `LICENSE` file, or
|
|
255
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/LICENSE>.
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: context-rail
|
|
3
|
-
Version: 3.0.2
|
|
4
|
-
Summary: An agentic project workspace: files are the truth, agents work through one write path
|
|
5
|
-
Project-URL: Repository, https://github.com/nguyenhoanhson797/Context-Rail
|
|
6
|
-
Requires-Python: >=3.11
|
|
7
|
-
Description-Content-Type: text/markdown
|
|
8
|
-
Requires-Dist: PyYAML>=6.0
|
|
9
|
-
Requires-Dist: mcp<3,>=2.3.0
|
|
10
|
-
Provides-Extra: test
|
|
11
|
-
Requires-Dist: pytest>=8; extra == "test"
|
|
12
|
-
Requires-Dist: pytest-timeout>=2.3; extra == "test"
|
|
13
|
-
|
|
14
1
|
# Context Rail v3
|
|
15
2
|
|
|
16
3
|
An agentic project workspace: the files are the truth, a rebuildable SQLite
|
|
@@ -30,19 +17,28 @@ the package ships the CLI, the MCP server and a loopback UI over one tool table.
|
|
|
30
17
|
|
|
31
18
|
## Install
|
|
32
19
|
|
|
33
|
-
```
|
|
34
|
-
|
|
20
|
+
```bash
|
|
21
|
+
python -m pip install context-rail
|
|
35
22
|
```
|
|
36
23
|
|
|
37
|
-
On
|
|
38
|
-
|
|
39
|
-
`
|
|
24
|
+
On Windows use `py` instead of `python` (`py -m pip install context-rail`); that
|
|
25
|
+
is the only difference, every command below works the same in both shells.
|
|
26
|
+
This installs two equivalent entry points, `rail` and `ctx-rail`; every example
|
|
27
|
+
below also works as `python -m context_rail`.
|
|
28
|
+
|
|
29
|
+
`python -m pip` installs into the interpreter that will run the tool. Bare
|
|
30
|
+
`pip install context-rail` is the same command whenever `pip` on your `PATH`
|
|
31
|
+
belongs to that interpreter; on a machine with several Pythons, the module form
|
|
32
|
+
is the one that cannot pick the wrong one.
|
|
33
|
+
|
|
34
|
+
To keep the tool out of your project environments, `pipx install context-rail`
|
|
35
|
+
works too.
|
|
40
36
|
|
|
41
37
|
## Quick start
|
|
42
38
|
|
|
43
39
|
From the project you want to manage:
|
|
44
40
|
|
|
45
|
-
```
|
|
41
|
+
```bash
|
|
46
42
|
rail init --pack basic # writes ./context-rail/
|
|
47
43
|
rail add goal "Ship v3"
|
|
48
44
|
rail add task "Write the first task" --rel part_of=ship-v3
|
|
@@ -67,7 +63,7 @@ Notes that are easy to trip over:
|
|
|
67
63
|
`rail init --pack basic` writes only the skeleton (`rail.yaml`, `.gitignore`,
|
|
68
64
|
empty folders). For a picture, the profiles and the agent files:
|
|
69
65
|
|
|
70
|
-
```
|
|
66
|
+
```bash
|
|
71
67
|
rail init --interview # or --answers-file FILE --confirm "APPROVE charter"
|
|
72
68
|
rail approve charter --confirm "APPROVE charter" --confirmer "Ada"
|
|
73
69
|
rail adapters sync # AGENTS.md + .agents/skills/
|
|
@@ -84,7 +80,7 @@ rail sync --install # optional: git merge dr
|
|
|
84
80
|
|
|
85
81
|
Useful read commands:
|
|
86
82
|
|
|
87
|
-
```
|
|
83
|
+
```bash
|
|
88
84
|
rail status # counts, executable items, blockers, stuck items
|
|
89
85
|
rail digest # activity, waits, decisions, quality, usage
|
|
90
86
|
rail cto brief # the bounded brief a CTO session starts from
|
|
@@ -96,19 +92,23 @@ rail ci # doctor issues plus the approval and done gates
|
|
|
96
92
|
|
|
97
93
|
## Skills
|
|
98
94
|
|
|
99
|
-
Four operator skills under `skills/`
|
|
100
|
-
not have to read the engine to answer "what can this
|
|
101
|
-
the workflow?":
|
|
95
|
+
Four operator skills under `skills/` in the repository checkout teach an agent
|
|
96
|
+
the rail itself, so it does not have to read the engine to answer "what can this
|
|
97
|
+
do?" or "how do we change the workflow?":
|
|
102
98
|
|
|
103
99
|
- `context-rail-v3` — mental model, quick start, command map
|
|
104
100
|
- `context-rail-v3-workflows` — packs, statuses, transitions, BA/PO steps
|
|
105
101
|
- `context-rail-v3-loop` — dispatch → verify → review → merge, refusals
|
|
106
102
|
- `context-rail-v3-ops` — doctor, reindex, recovery, budgets, test lanes
|
|
107
103
|
|
|
108
|
-
Install them into your agent's skill directory:
|
|
104
|
+
Install them into your agent's skill directory from a checkout:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
cp -r skills/context-rail-v3* ~/.agents/skills/ # macOS, Linux
|
|
108
|
+
```
|
|
109
109
|
|
|
110
110
|
```powershell
|
|
111
|
-
Copy-Item -Recurse skills\context-rail-v3* "$HOME\.agents\skills\"
|
|
111
|
+
Copy-Item -Recurse skills\context-rail-v3* "$HOME\.agents\skills\" # Windows
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
See `skills/README.md` for the difference from the pack skills that are
|
|
@@ -120,13 +120,13 @@ Work that launches an agent, or changes the picture's meaning, is gated. The
|
|
|
120
120
|
brief reports the current state; nothing executes until a human approves the
|
|
121
121
|
charter:
|
|
122
122
|
|
|
123
|
-
```
|
|
123
|
+
```bash
|
|
124
124
|
rail approve charter --confirm "APPROVE charter" --confirmer "Ada"
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Once the charter is approved, the loop uses isolated git worktrees:
|
|
128
128
|
|
|
129
|
-
```
|
|
129
|
+
```bash
|
|
130
130
|
rail dispatch <item> --expect <etag> --key <idempotency-key>
|
|
131
131
|
rail review <item> --run <run-id> --key <idempotency-key>
|
|
132
132
|
rail merge <item> --run <run-id> --expect <etag> --key <idempotency-key>
|
|
@@ -168,20 +168,20 @@ are all generated from one tool table (`src/context_rail/gateway/tools.py`).
|
|
|
168
168
|
|
|
169
169
|
From a checkout, install it in editable mode with the test dependencies:
|
|
170
170
|
|
|
171
|
-
```
|
|
172
|
-
|
|
171
|
+
```bash
|
|
172
|
+
python -m pip install -e .[test]
|
|
173
173
|
```
|
|
174
174
|
|
|
175
|
-
Then run one lane at a time:
|
|
175
|
+
Then run one lane at a time (on Windows use `py -m pytest`):
|
|
176
176
|
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
177
|
+
```bash
|
|
178
|
+
python -m pytest -q -m "not slow and not perf" # functional lane
|
|
179
|
+
python -m pytest -q -m "perf and not slow" -p no:xdist # speed budgets, serial
|
|
180
|
+
python -m pytest -q -m slow -p no:xdist # 10k-document stores
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
The speed budgets are fixed: a change that needs more time is a bug in the
|
|
184
|
-
change, never a reason to raise the budget.
|
|
184
|
+
change, never a reason to raise the budget. A bare `pytest -q` on its own also
|
|
185
185
|
collects the perf tests, so use the lanes above when the machine is busy.
|
|
186
186
|
|
|
187
187
|
## Layout
|
|
@@ -203,13 +203,16 @@ src/context_rail/
|
|
|
203
203
|
|
|
204
204
|
## Design
|
|
205
205
|
|
|
206
|
-
- Visual guide (diagrams and from-zero-to-daily walkthrough):
|
|
207
|
-
|
|
208
|
-
- Interactive engine graph (primitives, relations, one write path and the agent
|
|
209
|
-
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
206
|
+
- Visual guide (diagrams and a from-zero-to-daily walkthrough):
|
|
207
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/docs/context-rail-v3-guide.html>
|
|
208
|
+
- Interactive engine graph (primitives, relations, one write path and the agent
|
|
209
|
+
loop):
|
|
210
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/docs/context-rail-v3-engine-graph.html>
|
|
211
|
+
- Working rules and engine invariants:
|
|
212
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/AGENTS.md>
|
|
213
|
+
|
|
214
|
+
The design spec, the stage plans and the architecture records are working
|
|
215
|
+
material and stay out of the published repository.
|
|
213
216
|
|
|
214
217
|
Engine invariants worth knowing before changing code:
|
|
215
218
|
|
|
@@ -218,3 +221,8 @@ Engine invariants worth knowing before changing code:
|
|
|
218
221
|
- `context_rail.kernel` is pure: no file, git, process or index access.
|
|
219
222
|
- Unknown manifest schema, pack version, key or policy field is refused, never
|
|
220
223
|
guessed.
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
MIT. See the `LICENSE` file, or
|
|
228
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/LICENSE>.
|
|
@@ -4,11 +4,26 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "context-rail"
|
|
7
|
-
version = "3.0.
|
|
7
|
+
version = "3.0.4"
|
|
8
8
|
description = "An agentic project workspace: files are the truth, agents work through one write path"
|
|
9
9
|
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
10
12
|
requires-python = ">=3.11"
|
|
11
13
|
dependencies = ["PyYAML>=6.0", "mcp>=2.3.0,<3"]
|
|
14
|
+
keywords = ["agents", "context", "project-management", "markdown", "sqlite", "workflow", "mcp", "cli"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Environment :: Console",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Topic :: Software Development",
|
|
26
|
+
]
|
|
12
27
|
|
|
13
28
|
[project.optional-dependencies]
|
|
14
29
|
test = ["pytest>=8", "pytest-timeout>=2.3"]
|
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: context-rail
|
|
3
|
+
Version: 3.0.4
|
|
4
|
+
Summary: An agentic project workspace: files are the truth, agents work through one write path
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Repository, https://github.com/nguyenhoanhson797/Context-Rail
|
|
7
|
+
Keywords: agents,context,project-management,markdown,sqlite,workflow,mcp,cli
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: PyYAML>=6.0
|
|
22
|
+
Requires-Dist: mcp<3,>=2.3.0
|
|
23
|
+
Provides-Extra: test
|
|
24
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
25
|
+
Requires-Dist: pytest-timeout>=2.3; extra == "test"
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
1
28
|
# Context Rail v3
|
|
2
29
|
|
|
3
30
|
An agentic project workspace: the files are the truth, a rebuildable SQLite
|
|
@@ -17,19 +44,28 @@ the package ships the CLI, the MCP server and a loopback UI over one tool table.
|
|
|
17
44
|
|
|
18
45
|
## Install
|
|
19
46
|
|
|
20
|
-
```
|
|
21
|
-
|
|
47
|
+
```bash
|
|
48
|
+
python -m pip install context-rail
|
|
22
49
|
```
|
|
23
50
|
|
|
24
|
-
On
|
|
25
|
-
|
|
26
|
-
`
|
|
51
|
+
On Windows use `py` instead of `python` (`py -m pip install context-rail`); that
|
|
52
|
+
is the only difference, every command below works the same in both shells.
|
|
53
|
+
This installs two equivalent entry points, `rail` and `ctx-rail`; every example
|
|
54
|
+
below also works as `python -m context_rail`.
|
|
55
|
+
|
|
56
|
+
`python -m pip` installs into the interpreter that will run the tool. Bare
|
|
57
|
+
`pip install context-rail` is the same command whenever `pip` on your `PATH`
|
|
58
|
+
belongs to that interpreter; on a machine with several Pythons, the module form
|
|
59
|
+
is the one that cannot pick the wrong one.
|
|
60
|
+
|
|
61
|
+
To keep the tool out of your project environments, `pipx install context-rail`
|
|
62
|
+
works too.
|
|
27
63
|
|
|
28
64
|
## Quick start
|
|
29
65
|
|
|
30
66
|
From the project you want to manage:
|
|
31
67
|
|
|
32
|
-
```
|
|
68
|
+
```bash
|
|
33
69
|
rail init --pack basic # writes ./context-rail/
|
|
34
70
|
rail add goal "Ship v3"
|
|
35
71
|
rail add task "Write the first task" --rel part_of=ship-v3
|
|
@@ -54,7 +90,7 @@ Notes that are easy to trip over:
|
|
|
54
90
|
`rail init --pack basic` writes only the skeleton (`rail.yaml`, `.gitignore`,
|
|
55
91
|
empty folders). For a picture, the profiles and the agent files:
|
|
56
92
|
|
|
57
|
-
```
|
|
93
|
+
```bash
|
|
58
94
|
rail init --interview # or --answers-file FILE --confirm "APPROVE charter"
|
|
59
95
|
rail approve charter --confirm "APPROVE charter" --confirmer "Ada"
|
|
60
96
|
rail adapters sync # AGENTS.md + .agents/skills/
|
|
@@ -71,7 +107,7 @@ rail sync --install # optional: git merge dr
|
|
|
71
107
|
|
|
72
108
|
Useful read commands:
|
|
73
109
|
|
|
74
|
-
```
|
|
110
|
+
```bash
|
|
75
111
|
rail status # counts, executable items, blockers, stuck items
|
|
76
112
|
rail digest # activity, waits, decisions, quality, usage
|
|
77
113
|
rail cto brief # the bounded brief a CTO session starts from
|
|
@@ -83,19 +119,23 @@ rail ci # doctor issues plus the approval and done gates
|
|
|
83
119
|
|
|
84
120
|
## Skills
|
|
85
121
|
|
|
86
|
-
Four operator skills under `skills/`
|
|
87
|
-
not have to read the engine to answer "what can this
|
|
88
|
-
the workflow?":
|
|
122
|
+
Four operator skills under `skills/` in the repository checkout teach an agent
|
|
123
|
+
the rail itself, so it does not have to read the engine to answer "what can this
|
|
124
|
+
do?" or "how do we change the workflow?":
|
|
89
125
|
|
|
90
126
|
- `context-rail-v3` — mental model, quick start, command map
|
|
91
127
|
- `context-rail-v3-workflows` — packs, statuses, transitions, BA/PO steps
|
|
92
128
|
- `context-rail-v3-loop` — dispatch → verify → review → merge, refusals
|
|
93
129
|
- `context-rail-v3-ops` — doctor, reindex, recovery, budgets, test lanes
|
|
94
130
|
|
|
95
|
-
Install them into your agent's skill directory:
|
|
131
|
+
Install them into your agent's skill directory from a checkout:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
cp -r skills/context-rail-v3* ~/.agents/skills/ # macOS, Linux
|
|
135
|
+
```
|
|
96
136
|
|
|
97
137
|
```powershell
|
|
98
|
-
Copy-Item -Recurse skills\context-rail-v3* "$HOME\.agents\skills\"
|
|
138
|
+
Copy-Item -Recurse skills\context-rail-v3* "$HOME\.agents\skills\" # Windows
|
|
99
139
|
```
|
|
100
140
|
|
|
101
141
|
See `skills/README.md` for the difference from the pack skills that are
|
|
@@ -107,13 +147,13 @@ Work that launches an agent, or changes the picture's meaning, is gated. The
|
|
|
107
147
|
brief reports the current state; nothing executes until a human approves the
|
|
108
148
|
charter:
|
|
109
149
|
|
|
110
|
-
```
|
|
150
|
+
```bash
|
|
111
151
|
rail approve charter --confirm "APPROVE charter" --confirmer "Ada"
|
|
112
152
|
```
|
|
113
153
|
|
|
114
154
|
Once the charter is approved, the loop uses isolated git worktrees:
|
|
115
155
|
|
|
116
|
-
```
|
|
156
|
+
```bash
|
|
117
157
|
rail dispatch <item> --expect <etag> --key <idempotency-key>
|
|
118
158
|
rail review <item> --run <run-id> --key <idempotency-key>
|
|
119
159
|
rail merge <item> --run <run-id> --expect <etag> --key <idempotency-key>
|
|
@@ -155,20 +195,20 @@ are all generated from one tool table (`src/context_rail/gateway/tools.py`).
|
|
|
155
195
|
|
|
156
196
|
From a checkout, install it in editable mode with the test dependencies:
|
|
157
197
|
|
|
158
|
-
```
|
|
159
|
-
|
|
198
|
+
```bash
|
|
199
|
+
python -m pip install -e .[test]
|
|
160
200
|
```
|
|
161
201
|
|
|
162
|
-
Then run one lane at a time:
|
|
202
|
+
Then run one lane at a time (on Windows use `py -m pytest`):
|
|
163
203
|
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
204
|
+
```bash
|
|
205
|
+
python -m pytest -q -m "not slow and not perf" # functional lane
|
|
206
|
+
python -m pytest -q -m "perf and not slow" -p no:xdist # speed budgets, serial
|
|
207
|
+
python -m pytest -q -m slow -p no:xdist # 10k-document stores
|
|
168
208
|
```
|
|
169
209
|
|
|
170
210
|
The speed budgets are fixed: a change that needs more time is a bug in the
|
|
171
|
-
change, never a reason to raise the budget.
|
|
211
|
+
change, never a reason to raise the budget. A bare `pytest -q` on its own also
|
|
172
212
|
collects the perf tests, so use the lanes above when the machine is busy.
|
|
173
213
|
|
|
174
214
|
## Layout
|
|
@@ -190,13 +230,16 @@ src/context_rail/
|
|
|
190
230
|
|
|
191
231
|
## Design
|
|
192
232
|
|
|
193
|
-
- Visual guide (diagrams and from-zero-to-daily walkthrough):
|
|
194
|
-
|
|
195
|
-
- Interactive engine graph (primitives, relations, one write path and the agent
|
|
196
|
-
|
|
197
|
-
-
|
|
198
|
-
-
|
|
199
|
-
-
|
|
233
|
+
- Visual guide (diagrams and a from-zero-to-daily walkthrough):
|
|
234
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/docs/context-rail-v3-guide.html>
|
|
235
|
+
- Interactive engine graph (primitives, relations, one write path and the agent
|
|
236
|
+
loop):
|
|
237
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/docs/context-rail-v3-engine-graph.html>
|
|
238
|
+
- Working rules and engine invariants:
|
|
239
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/AGENTS.md>
|
|
240
|
+
|
|
241
|
+
The design spec, the stage plans and the architecture records are working
|
|
242
|
+
material and stay out of the published repository.
|
|
200
243
|
|
|
201
244
|
Engine invariants worth knowing before changing code:
|
|
202
245
|
|
|
@@ -205,3 +248,8 @@ Engine invariants worth knowing before changing code:
|
|
|
205
248
|
- `context_rail.kernel` is pure: no file, git, process or index access.
|
|
206
249
|
- Unknown manifest schema, pack version, key or policy field is refused, never
|
|
207
250
|
guessed.
|
|
251
|
+
|
|
252
|
+
## License
|
|
253
|
+
|
|
254
|
+
MIT. See the `LICENSE` file, or
|
|
255
|
+
<https://github.com/nguyenhoanhson797/Context-Rail/blob/master/LICENSE>.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|