@jeger-ai/opengantry 2.2.2 → 2.2.4

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.
Files changed (130) hide show
  1. package/README.md +97 -78
  2. package/dist/cli/commands/arch.js +4 -4
  3. package/dist/cli/commands/check-imports.js +1 -1
  4. package/dist/cli/commands/onboarding.js +5 -5
  5. package/dist/cli/commands/perimeter.js +2 -2
  6. package/dist/cli/commands/runtime.js +1 -1
  7. package/dist/cli/commands/scan.js +2 -2
  8. package/dist/cli/commands/teacher.js +1 -1
  9. package/dist/cli/commands/verify.js +3 -3
  10. package/dist/cli/lib/architecture-credential.js +1 -1
  11. package/dist/cli/lib/architecture-pointer.js +1 -1
  12. package/dist/cli/lib/ast-discovery.js +1 -1
  13. package/dist/cli/lib/audience-output.js +7 -7
  14. package/dist/cli/lib/cli-io.js +1 -1
  15. package/dist/cli/lib/config-namespace.d.ts +18 -0
  16. package/dist/cli/lib/config-namespace.d.ts.map +1 -0
  17. package/dist/cli/lib/config-namespace.js +39 -0
  18. package/dist/cli/lib/config-namespace.js.map +1 -0
  19. package/dist/cli/lib/constants.d.ts +6 -5
  20. package/dist/cli/lib/constants.d.ts.map +1 -1
  21. package/dist/cli/lib/constants.js +6 -5
  22. package/dist/cli/lib/constants.js.map +1 -1
  23. package/dist/cli/lib/context-feed-store.d.ts +1 -1
  24. package/dist/cli/lib/context-feed-store.js +1 -1
  25. package/dist/cli/lib/dirty-missions.js +1 -1
  26. package/dist/cli/lib/doctor-core.d.ts.map +1 -1
  27. package/dist/cli/lib/doctor-core.js +8 -7
  28. package/dist/cli/lib/doctor-core.js.map +1 -1
  29. package/dist/cli/lib/doctor-integration.js +1 -1
  30. package/dist/cli/lib/doctor-substrate.js +4 -4
  31. package/dist/cli/lib/errors.d.ts.map +1 -1
  32. package/dist/cli/lib/errors.js +2 -1
  33. package/dist/cli/lib/errors.js.map +1 -1
  34. package/dist/cli/lib/file-merge-gxt.js +2 -2
  35. package/dist/cli/lib/fix-hints.js +9 -9
  36. package/dist/cli/lib/git-metrics.js +1 -1
  37. package/dist/cli/lib/git-proof.d.ts +1 -1
  38. package/dist/cli/lib/git-proof.d.ts.map +1 -1
  39. package/dist/cli/lib/git-proof.js +3 -2
  40. package/dist/cli/lib/git-proof.js.map +1 -1
  41. package/dist/cli/lib/init-interactive.js +2 -2
  42. package/dist/cli/lib/init-plan.js +6 -6
  43. package/dist/cli/lib/init-tutorial.js +10 -10
  44. package/dist/cli/lib/kpi-engine.js +3 -3
  45. package/dist/cli/lib/kpi-scan.js +3 -3
  46. package/dist/cli/lib/legislate.d.ts.map +1 -1
  47. package/dist/cli/lib/legislate.js +11 -5
  48. package/dist/cli/lib/legislate.js.map +1 -1
  49. package/dist/cli/lib/manifest.js +2 -2
  50. package/dist/cli/lib/manifest.js.map +1 -1
  51. package/dist/cli/lib/mcp-governance.d.ts.map +1 -1
  52. package/dist/cli/lib/mcp-governance.js +4 -3
  53. package/dist/cli/lib/mcp-governance.js.map +1 -1
  54. package/dist/cli/lib/mcp-tools-register.js +4 -4
  55. package/dist/cli/lib/missions/formatter.js +1 -1
  56. package/dist/cli/lib/missions/parser.d.ts.map +1 -1
  57. package/dist/cli/lib/missions/parser.js +7 -5
  58. package/dist/cli/lib/missions/parser.js.map +1 -1
  59. package/dist/cli/lib/missions/validator.js +1 -1
  60. package/dist/cli/lib/msn-allocate.js +2 -2
  61. package/dist/cli/lib/onboarding-flow.js +5 -5
  62. package/dist/cli/lib/perimeter.js +1 -1
  63. package/dist/cli/lib/register-proposals.js +1 -1
  64. package/dist/cli/lib/runtime-env.d.ts.map +1 -1
  65. package/dist/cli/lib/runtime-env.js +7 -4
  66. package/dist/cli/lib/runtime-env.js.map +1 -1
  67. package/dist/cli/lib/skill-key.d.ts +12 -0
  68. package/dist/cli/lib/skill-key.d.ts.map +1 -0
  69. package/dist/cli/lib/skill-key.js +28 -0
  70. package/dist/cli/lib/skill-key.js.map +1 -0
  71. package/dist/cli/lib/staged-tmvc-guard.js +1 -1
  72. package/dist/cli/lib/start-orchestration.js +5 -5
  73. package/dist/cli/lib/status-report.js +3 -3
  74. package/dist/cli/lib/substrate-version.js +2 -2
  75. package/dist/cli/lib/surgeons/typescript-workspace.d.ts +1 -1
  76. package/dist/cli/lib/surgeons/typescript-workspace.js +3 -3
  77. package/dist/cli/lib/teacher-identity.d.ts +1 -2
  78. package/dist/cli/lib/teacher-identity.d.ts.map +1 -1
  79. package/dist/cli/lib/teacher-identity.js +11 -15
  80. package/dist/cli/lib/teacher-identity.js.map +1 -1
  81. package/dist/cli/lib/tmvc-path.d.ts.map +1 -1
  82. package/dist/cli/lib/tmvc-path.js +5 -2
  83. package/dist/cli/lib/tmvc-path.js.map +1 -1
  84. package/dist/cli/lib/types.d.ts +1 -1
  85. package/dist/cli/lib/upgrade-apply.js +5 -5
  86. package/dist/cli/lib/upgrade-plan.d.ts +1 -1
  87. package/dist/cli/lib/upgrade-plan.js +4 -4
  88. package/dist/cli/lib/verify-failure-normalize.js +1 -1
  89. package/dist/cli/lib/verify-hints.js +9 -9
  90. package/dist/cli/lib/verify-run.d.ts.map +1 -1
  91. package/dist/cli/lib/verify-run.js +3 -2
  92. package/dist/cli/lib/verify-run.js.map +1 -1
  93. package/dist/cli/lib/version.gen.d.ts +1 -1
  94. package/dist/cli/lib/version.gen.js +1 -1
  95. package/dist/cli/program-core.js +2 -2
  96. package/package.json +9 -4
  97. package/templates/.cursor/hooks/gxt-before-shell.sh +2 -2
  98. package/templates/.cursor/hooks/gxt-session-start.sh +5 -5
  99. package/templates/.cursor/mcp.json +1 -1
  100. package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +4 -4
  101. package/templates/.gitagent/config.json +15 -0
  102. package/templates/.gitagent/foreman/MANIFEST.json +2 -2
  103. package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
  104. package/templates/.gitagent/foreman/TEACHER.allowlist.example +1 -1
  105. package/templates/.gitagent/missions/README.md +3 -3
  106. package/templates/.gitagent/teacher/ARCHITECTURE-ACCESS.md +8 -8
  107. package/templates/.gitagent/teacher/KPI-REPORT.schema.yaml +1 -1
  108. package/templates/.gitagent/teacher/MISSION-ARCHITECT.md +5 -5
  109. package/templates/.gitagent/teacher/MISSION.schema.yaml +2 -2
  110. package/templates/.gitagent/teacher/RULES.md +2 -2
  111. package/templates/.githooks/pre-commit +4 -4
  112. package/templates/.githooks/pre-push +6 -6
  113. package/templates/.github/workflows/gxt-validate.yml +14 -13
  114. package/templates/AGENTS.md +1 -1
  115. package/templates/integrations/asset-catalog.json +2 -1
  116. package/templates/integrations/compatibility.json +1 -1
  117. package/templates/integrations/recipes/_footer.md +6 -6
  118. package/templates/integrations/recipes/_preamble.md +9 -9
  119. package/templates/integrations/recipes/aider.md +1 -1
  120. package/templates/integrations/recipes/antigravity.md +1 -1
  121. package/templates/integrations/recipes/claude-code.md +1 -1
  122. package/templates/integrations/recipes/codex-cli.md +2 -2
  123. package/templates/integrations/recipes/cursor.md +3 -3
  124. package/templates/scripts/dev-validate.sh +1 -1
  125. package/templates/scripts/gxt-manifest-lib.mjs +418 -3
  126. package/templates/scripts/gxt-resolve-mission.sh +2 -2
  127. package/templates/scripts/gxt-runtime-env.sh +4 -4
  128. package/templates/scripts/validate-gxt.sh +5 -1
  129. package/templates/scripts/verify-pr-missions.sh +12 -6
  130. package/templates/skills/{gapman.md → gantry.md} +2 -2
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@jeger-ai/opengantry",
3
- "version": "2.2.2",
4
- "description": "OpenGantry GXT substrate + gapman CLI",
3
+ "version": "2.2.4",
4
+ "description": "Open Source Gantry — vendor-neutral GXT substrate and Gantry CLI for local git-native agent governance",
5
5
  "type": "module",
6
6
  "bin": {
7
+ "gantry": "dist/cli/index.js",
7
8
  "gapman": "dist/cli/index.js"
8
9
  },
9
10
  "files": [
@@ -25,7 +26,8 @@
25
26
  "prepublishOnly": "npm run build && npm test",
26
27
  "pack:check": "./scripts/npm-pack-check.sh",
27
28
  "test": "npm run build && node --test dist/cli/tests/*.test.js",
28
- "examples:benchmark": "node examples/benchmark-agent/run-benchmark.mjs"
29
+ "examples:benchmark": "node examples/benchmark-agent/run-benchmark.mjs",
30
+ "gantry": "node dist/cli/index.js"
29
31
  },
30
32
  "publishConfig": {
31
33
  "access": "public",
@@ -33,7 +35,10 @@
33
35
  },
34
36
  "keywords": [
35
37
  "gxt",
36
- "gapman",
38
+ "gantry",
39
+ "gantry-cli",
40
+ "open-source-gantry",
41
+ "git-hooks",
37
42
  "ai-agents",
38
43
  "governance",
39
44
  "devtools"
@@ -52,9 +52,9 @@ if printf '%s' "$command" | grep -qE '\.gitagent/foreman/|\.gitagent/teacher/RUL
52
52
  fi
53
53
 
54
54
  # Fallback guard when agents bypass MCP and run legislate via raw shell.
55
- if printf '%s' "$command" | grep -qE '(^|[[:space:]/])gapman[[:space:]]+legislate\b'; then
55
+ if printf '%s' "$command" | grep -qE '(^|[[:space:]/])gantry[[:space:]]+legislate\b'; then
56
56
  ask \
57
- "Shell command runs gapman legislate directly. Confirm you intend to write mission law outside the MCP draft/execute gate." \
57
+ "Shell command runs gantry legislate directly. Confirm you intend to write mission law outside the MCP draft/execute gate." \
58
58
  "Prefer MCP: gxt_draft_legislation (preview) → human chat approval → gxt_execute_legislation. Shell legislate is a fallback path only."
59
59
  exit 0
60
60
  fi
@@ -14,15 +14,15 @@ if MISSION="$(scripts/gxt-resolve-mission.sh 2>/dev/null)"; then
14
14
  else
15
15
  node -e '
16
16
  process.stdout.write(JSON.stringify({
17
- additional_context: "No active mission pinned. Ask me to run the Mission Architect protocol (MCP: gxt_draft_legislation) or gapman legislate.",
17
+ additional_context: "No active mission pinned. Ask me to run the Mission Architect protocol (MCP: gxt_draft_legislation) or gantry legislate.",
18
18
  }));
19
19
  '
20
20
  exit 0
21
21
  fi
22
22
 
23
23
  RUNTIME_JSON=""
24
- if command -v gapman >/dev/null 2>&1; then
25
- RUNTIME_JSON="$(gapman runtime env --mission "$MISSION" --json 2>/dev/null || true)"
24
+ if command -v gantry >/dev/null 2>&1; then
25
+ RUNTIME_JSON="$(gantry runtime env --mission "$MISSION" --json 2>/dev/null || true)"
26
26
  elif [ -f "dist/cli/index.js" ]; then
27
27
  RUNTIME_JSON="$(node dist/cli/index.js runtime env --mission "$MISSION" --json 2>/dev/null || true)"
28
28
  fi
@@ -30,7 +30,7 @@ fi
30
30
  if [ -z "$RUNTIME_JSON" ]; then
31
31
  node -e '
32
32
  process.stdout.write(JSON.stringify({
33
- additional_context: "GXT: gapman not built — run npm ci && npm run build, then scripts/gxt-pin-mission.sh <mission>",
33
+ additional_context: "GXT: gantry not built — run npm ci && npm run build, then scripts/gxt-pin-mission.sh <mission>",
34
34
  }));
35
35
  '
36
36
  exit 0
@@ -58,7 +58,7 @@ process.stdout.write(JSON.stringify({
58
58
  `- Forbidden: ${forbidden.join(", ") || "(none)"}`,
59
59
  `- Trace sink: ${payload.GXT_WORKER_LOG || "WORKER_LOG.md"}`,
60
60
  "",
61
- "Worker loop: edit within TMVC → append PASS quotes to WORKER_LOG.md → gapman verify --mission … → npm run validate",
61
+ "Worker loop: edit within TMVC → append PASS quotes to WORKER_LOG.md → gantry verify --mission … → npm run validate",
62
62
  "MCP tools: gxt_draft_legislation, gxt_execute_legislation, gxt_check_signature, gxt_pin_mission, gxt_runtime_env, gxt_verify (see .cursor/mcp.json).",
63
63
  "IDE Agent edits are advisory TMVC; shell substrate writes are hook-guarded. Full loop: docs/DEVELOPMENT.md",
64
64
  ].join("\n"),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "opengantry-gxt": {
4
- "command": "gapman",
4
+ "command": "gantry",
5
5
  "args": ["mcp", "serve"]
6
6
  }
7
7
  }
@@ -11,7 +11,7 @@ Whenever the user starts a prompt with `/gantry`:
11
11
 
12
12
  1. Immediately switch to Mission Architect behavior.
13
13
  2. Run the protocol in `.gitagent/teacher/MISSION-ARCHITECT.md`.
14
- 3. Hand off via MCP tools (`gxt_draft_legislation` → chat approval → `gxt_execute_legislation`) or CLI `gapman legislate` fallback.
14
+ 3. Hand off via MCP tools (`gxt_draft_legislation` → chat approval → `gxt_execute_legislation`) or CLI `gantry legislate` fallback.
15
15
 
16
16
  Do not use `/plan` — Cursor reserves it for native Plan Mode.
17
17
 
@@ -28,13 +28,13 @@ Treat these as the **law + routing contract** for agent work. For orientation an
28
28
 
29
29
  - **Do NOT** trigger for questions, explanations, or code discovery.
30
30
  - **MCP handoff:** two-step draft/execute with semantic chat approval before any mission file write.
31
- - **CLI fallback:** one copy-paste `gapman legislate …` command only (no raw YAML blocks).
31
+ - **CLI fallback:** one copy-paste `gantry legislate …` command only (no raw YAML blocks).
32
32
 
33
33
  ## Cursor wiring
34
34
 
35
35
  - **Rules:** this file (`alwaysApply: true`) + root `AGENTS.md`.
36
- - **MCP:** `.cursor/mcp.json` — `gxt_*` tools via `gapman mcp serve`.
37
- - **Hooks:** `.cursor/hooks.json` (installed by `gapman init`) — `sessionStart` mission scope + shell guard for GXT law/manifest paths (fallback for non-MCP shell paths).
36
+ - **MCP:** `.cursor/mcp.json` — `gxt_*` tools via `gantry mcp serve`.
37
+ - **Hooks:** `.cursor/hooks.json` (installed by `gantry init`) — `sessionStart` mission scope + shell guard for GXT law/manifest paths (fallback for non-MCP shell paths).
38
38
  - **Pin mission:** `scripts/gxt-pin-mission.sh .gitagent/missions/<file>.yaml` before Agent work.
39
39
  - **Terminal bootstrap:** `source scripts/gxt-runtime-env.sh` (uses pinned mission or explicit path).
40
40
  - **Code architecture:** `.gitagent/ARCHITECTURE.pointer.json` — if `kind=unset` or stub, read `.gitagent/teacher/ARCHITECTURE-DISCOVERY.md` and ask user before coding.
@@ -0,0 +1,15 @@
1
+ {
2
+ "trusted_automation": {
3
+ "rules": [
4
+ {
5
+ "id": "workflow-dependency-bumps",
6
+ "allowed_actors": [
7
+ "dependabot[bot]@users.noreply.github.com"
8
+ ],
9
+ "allowed_paths": [".github/workflows/**"],
10
+ "allowed_structural_changes": ["workflow_version_pin"],
11
+ "max_net_loc": 5
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -13,8 +13,8 @@
13
13
  "tmvc_roots": ["src/lib/", "src/utils/"],
14
14
  "forbidden_zones": [".gitagent/", "src/auth/", "src/core/", "src/db/schema/"]
15
15
  },
16
- "gapman": {
17
- "desc": "gapman CLI delivery, lib layers, and unit tests (OpenGantry specimen).",
16
+ "gantry": {
17
+ "desc": "gantry CLI delivery, lib layers, and unit tests (OpenGantry specimen).",
18
18
  "trust_threshold": "Tier-2",
19
19
  "tmvc_roots": ["src/cli/"],
20
20
  "forbidden_zones": [".gitagent/foreman/", ".gitagent/teacher/RULES.md"]
@@ -2,5 +2,5 @@
2
2
  "schema_version": "0.1.0",
3
3
  "opengantry_version": "1.1.0",
4
4
  "installed_at": "2026-01-01T00:00:00.000Z",
5
- "installed_by": "gapman init"
5
+ "installed_by": "gantry init"
6
6
  }
@@ -1,4 +1,4 @@
1
1
  # One Git author email per line (case-insensitive). Committed team allowlist.
2
2
  # Personal override (gitignored): .gitagent/foreman/TEACHER.allowlist.local
3
- # Or: git config gapman.teacherEmails "you@example.com"
3
+ # Or: git config gantry.teacherEmails "you@example.com"
4
4
  teacher@example.com
@@ -1,15 +1,15 @@
1
1
  # Missions
2
2
 
3
- Store mission files here (`.md` or `.yaml`) for `gapman verify`.
3
+ Store mission files here (`.md` or `.yaml`) for `gantry verify`.
4
4
 
5
5
  Quick start:
6
6
 
7
7
  1. Configure `.gitagent/foreman/MANIFEST.json` skill keys and roots.
8
- 2. Set `GAPMAN_TEACHER_EMAILS`.
8
+ 2. Set `GANTRY_TEACHER_EMAILS`.
9
9
  3. Legislate with explicit id:
10
10
 
11
11
  ```bash
12
- gapman legislate "<intent>" --msn MSN-0001 --skill-key <manifest-key> [--gate-command "<cmd>"]
12
+ gantry legislate "<intent>" --msn MSN-0001 --skill-key <manifest-key> [--gate-command "<cmd>"]
13
13
  ```
14
14
 
15
15
  Duplicate `msn_id` values fail closed by default; use `--allow-duplicate` only for intentional migration flows. New stubs emit `status: PENDING` trace rows until worker execution.
@@ -22,7 +22,7 @@ Check in order:
22
22
 
23
23
  1. **MCP / IDE integrations** — list configured MCP servers and tools; match `access.detect` and `access.tool`.
24
24
  2. **Environment** — env vars suggested by `access.detect` or `auth_hint` (never print values).
25
- 3. **Stored credentials** — run `gapman arch cred status` (or `--slot <credential_slot>`). Status shows slot + kind only, never secrets.
25
+ 3. **Stored credentials** — run `gantry arch cred status` (or `--slot <credential_slot>`). Status shows slot + kind only, never secrets.
26
26
  4. **User docs** — project README / human INTEGRATIONS doc for team setup (not duplicated here).
27
27
 
28
28
  If a path already works, record in `WORKER_LOG.md` which method you used (not the secret) and fetch architecture docs.
@@ -33,28 +33,28 @@ Ask **one focused question at a time**:
33
33
 
34
34
  - Which system hosts architecture docs? (confirm or override `access.tool`)
35
35
  - How does your team authenticate? (PAT, API key, OAuth device flow, MCP already configured, …)
36
- - Whether you may store a credential locally via `gapman arch cred set` (git-ignored, mode 600)
36
+ - Whether you may store a credential locally via `gantry arch cred set` (git-ignored, mode 600)
37
37
 
38
38
  **Never** ask the user to paste tokens into chat, commits, or `WORKER_LOG.md`.
39
39
 
40
40
  ## 4. Store credentials securely
41
41
 
42
- Use **`gapman arch cred set`** — secrets on **stdin only**, never argv:
42
+ Use **`gantry arch cred set`** — secrets on **stdin only**, never argv:
43
43
 
44
44
  ```bash
45
45
  # Bearer / PAT
46
- printf '%s' 'YOUR_TOKEN' | gapman arch cred set --slot architecture/confluence --kind bearer
46
+ printf '%s' 'YOUR_TOKEN' | gantry arch cred set --slot architecture/confluence --kind bearer
47
47
 
48
48
  # API key
49
- printf '%s' 'YOUR_KEY' | gapman arch cred set --slot architecture/notion --kind api_key
49
+ printf '%s' 'YOUR_KEY' | gantry arch cred set --slot architecture/notion --kind api_key
50
50
 
51
51
  # Basic auth (JSON on stdin)
52
- printf '%s' '{"username":"you@corp.com","password":"…"}' | gapman arch cred set --slot architecture/wiki --kind basic
52
+ printf '%s' '{"username":"you@corp.com","password":"…"}' | gantry arch cred set --slot architecture/wiki --kind basic
53
53
  ```
54
54
 
55
- Files live under **`.gitagent/history/credentials/`** (git-ignored). Verify with `gapman arch cred status`.
55
+ Files live under **`.gitagent/history/credentials/`** (git-ignored). Verify with `gantry arch cred status`.
56
56
 
57
- To remove: `gapman arch cred unset --slot <name>`.
57
+ To remove: `gantry arch cred unset --slot <name>`.
58
58
 
59
59
  ## 5. Context request (GXT)
60
60
 
@@ -1,5 +1,5 @@
1
1
  # KPI-REPORT.schema — JSON Schema for committed LLM/scan evidence reports
2
- # Consumed by gapman verify kpi phase (Ajv). Version label for docs only.
2
+ # Consumed by gantry verify kpi phase (Ajv). Version label for docs only.
3
3
  $schema: https://json-schema.org/draft/2020-12/schema
4
4
  $id: https://opengantry.local/schemas/kpi-report.v2_0.json
5
5
  title: OpenGantryKpiReport
@@ -26,7 +26,7 @@ Before proposing legislation, read (do not lecture the user):
26
26
  - `.gitagent/ARCHITECTURE.pointer.json` — code layout (if `kind=unset`, follow ARCHITECTURE-DISCOVERY.md and ask)
27
27
  - Optional: `.gitagent/out-of-scope/` ADRs when scope is ambiguous
28
28
 
29
- **Do not** run `gapman triage` in chat. Reason from manifest + architecture directly.
29
+ **Do not** run `gantry triage` in chat. Reason from manifest + architecture directly.
30
30
 
31
31
  ## Fast-path vs full interview
32
32
 
@@ -70,7 +70,7 @@ This two-step draft/execute gate prevents silent legislation even when Cursor ru
70
70
  One bash command the user copies into their terminal:
71
71
 
72
72
  ```bash
73
- gapman legislate "<intent summary>" --msn MSN-NNNN --skill-key <key> \
73
+ gantry legislate "<intent summary>" --msn MSN-NNNN --skill-key <key> \
74
74
  --gate-command "<deterministic gate shell command>" \
75
75
  --gate-success-substring "<optional substring>"
76
76
  ```
@@ -82,12 +82,12 @@ gapman legislate "<intent summary>" --msn MSN-NNNN --skill-key <key> \
82
82
 
83
83
  ## Teacher loop (human)
84
84
 
85
- 1. Approve draft (MCP) or paste and run `gapman legislate` (CLI).
85
+ 1. Approve draft (MCP) or paste and run `gantry legislate` (CLI).
86
86
  2. Optionally review/edit the generated YAML.
87
- 3. `git commit -m "[MSN-NNNN] legislate …"` including the mission file (Teacher email in `GAPMAN_TEACHER_EMAILS`).
87
+ 3. `git commit -m "[MSN-NNNN] legislate …"` including the mission file (Teacher email in `GANTRY_TEACHER_EMAILS`).
88
88
  4. Pin mission (`gxt_pin_mission` MCP tool or `scripts/gxt-pin-mission.sh`).
89
89
  5. Worker phase begins.
90
90
 
91
91
  ## Worker phase (after pin)
92
92
 
93
- Edit within TMVC → append PASS quotes to `WORKER_LOG.md` → `gapman verify --mission …` (or `gxt_verify`) → pin stays until mission complete.
93
+ Edit within TMVC → append PASS quotes to `WORKER_LOG.md` → `gantry verify --mission …` (or `gxt_verify`) → pin stays until mission complete.
@@ -1,5 +1,5 @@
1
1
  # MISSION.schema — JSON Schema (YAML encoding) for structured missions
2
- # Consumed by gapman (Ajv). Version label for docs only.
2
+ # Consumed by gantry (Ajv). Version label for docs only.
3
3
  $schema: https://json-schema.org/draft/2020-12/schema
4
4
  $id: https://opengantry.local/schemas/mission.v1_1.json
5
5
  title: OpenGantryMission
@@ -31,7 +31,7 @@ properties:
31
31
  type: boolean
32
32
  default: false
33
33
  description: >-
34
- When true, gapman verify captures gate stdout/stderr under
34
+ When true, gantry verify captures gate stdout/stderr under
35
35
  .gitagent/virtual/<flight-id>/ (gitignored) and purges on success.
36
36
  upgrade_payload:
37
37
  type: object
@@ -27,10 +27,10 @@ Normative keywords **MUST**, **MUST NOT**, and **SHOULD** follow RFC 2119.
27
27
  ## 5. Mission commit indexing
28
28
 
29
29
  - Mission-related commits MUST begin with `[MSN-XXXX]` in the subject line.
30
- - Keep mission files for `gapman verify` under `.gitagent/missions/`.
30
+ - Keep mission files for `gantry verify` under `.gitagent/missions/`.
31
31
 
32
32
  ## 6. Break-glass (v0.8.0)
33
33
 
34
34
  - Set `GXT_BYPASS_SECRET` to match `.gitagent/foreman/BYPASS.sha256` (SHA-256 hex of the team secret).
35
- - Use `gapman verify --break-glass --reason "..."` only in emergencies; push `refs/notes/gxt-bypass` with the branch.
35
+ - Use `gantry verify --break-glass --reason "..."` only in emergencies; push `refs/notes/gxt-bypass` with the branch.
36
36
  - Forbidden-zone runtime policy is never bypassed.
@@ -6,10 +6,10 @@ cd "$(git rev-parse --show-toplevel)"
6
6
 
7
7
  if [[ -f dist/cli/index.js ]]; then
8
8
  GAPMAN=(node dist/cli/index.js)
9
- elif command -v gapman >/dev/null 2>&1; then
10
- GAPMAN=(gapman)
9
+ elif command -v gantry >/dev/null 2>&1; then
10
+ GAPMAN=(gantry)
11
11
  else
12
- echo "pre-commit: gapman not found — run: npm run build" >&2
12
+ echo "pre-commit: gantry not found — run: npm run build" >&2
13
13
  exit 1
14
14
  fi
15
15
 
@@ -21,6 +21,6 @@ else
21
21
  exit 0
22
22
  fi
23
23
 
24
- echo "pre-commit: gapman tmvc guard --mission ${mission} (advisory default)" >&2
24
+ echo "pre-commit: gantry tmvc guard --mission ${mission} (advisory default)" >&2
25
25
  "${GAPMAN[@]}" tmvc guard --mission "$mission"
26
26
  exit 0
@@ -6,10 +6,10 @@ cd "$(git rev-parse --show-toplevel)"
6
6
 
7
7
  if [[ -f dist/cli/index.js ]]; then
8
8
  GAPMAN=(node dist/cli/index.js)
9
- elif command -v gapman >/dev/null 2>&1; then
10
- GAPMAN=(gapman)
9
+ elif command -v gantry >/dev/null 2>&1; then
10
+ GAPMAN=(gantry)
11
11
  else
12
- echo "pre-push: gapman not found — run: npm run build" >&2
12
+ echo "pre-push: gantry not found — run: npm run build" >&2
13
13
  exit 1
14
14
  fi
15
15
 
@@ -34,17 +34,17 @@ mapfile -t missions < <(
34
34
  for mission in "${missions[@]}"; do
35
35
  [[ -n "$mission" ]] || continue
36
36
  [[ -f "$mission" ]] || continue
37
- echo "pre-push: gapman verify --mission ${mission} (--pre-push)" >&2
37
+ echo "pre-push: gantry verify --mission ${mission} (--pre-push)" >&2
38
38
  "${GAPMAN[@]}" verify --mission "$mission" --pre-push || exit 1
39
39
  done
40
40
 
41
41
  if git diff --name-only "${base}..HEAD" | grep -qE '^\.gitagent/foreman/MANIFEST\.json$|^\.gitagent/teacher/RULES\.md$|\.gxt-skill\.yaml$'; then
42
- echo "pre-push: gapman perimeter (advisory)" >&2
42
+ echo "pre-push: gantry perimeter (advisory)" >&2
43
43
  "${GAPMAN[@]}" perimeter --base-ref "$base" || true
44
44
  fi
45
45
 
46
46
  if git diff --name-only "${base}..HEAD" | grep -qE '^\.gitagent/foreman/MANIFEST\.json$|^skills/'; then
47
- echo "pre-push: gapman check (manifest / skills changed)" >&2
47
+ echo "pre-push: gantry check (manifest / skills changed)" >&2
48
48
  "${GAPMAN[@]}" check || exit 1
49
49
  fi
50
50
 
@@ -3,7 +3,8 @@
3
3
  # PR governance (pull_request only): mission PRs must target the repo default branch
4
4
  # (override: repository variable GXT_INTEGRATION_BRANCH when integration branch differs).
5
5
  # MSN policy (pull_request only): commits touching MSN-enforced paths must have
6
- # subject [MSN-NNNN] (four digits) or a valid gxt-bypass git note.
6
+ # subject [MSN-NNNN] (four digits), a valid gxt-bypass git note, or satisfy
7
+ # repository-declared trusted_automation policy (.gitagent/config.json).
7
8
  # Mission purity: scripts/verify-pr-missions.sh — one [MSN-NNNN] per PR commit range.
8
9
  # Paths = fixed substrate (.gitagent/, WORKER_LOG.md, .githooks/, gxt-validate.yml)
9
10
  # + all MANIFEST skills[].tmvc_roots (Node via scripts/gxt-manifest-lib.mjs).
@@ -36,7 +37,7 @@ jobs:
36
37
  manifest:
37
38
  runs-on: ubuntu-latest
38
39
  steps:
39
- - uses: actions/checkout@v6
40
+ - uses: actions/checkout@v7
40
41
  with:
41
42
  fetch-depth: 0
42
43
 
@@ -48,22 +49,22 @@ jobs:
48
49
  - name: Install Node deps
49
50
  run: npm ci
50
51
 
51
- - name: Build gapman
52
+ - name: Build gantry
52
53
  run: npm run build
53
54
 
54
- - name: gapman check (MANIFEST + Rule 4.4 skills sync)
55
+ - name: gantry check (MANIFEST + Rule 4.4 skills sync)
55
56
  run: node dist/cli/index.js check
56
57
 
57
58
  - name: Validate Foreman MANIFEST.json (Node parity)
58
59
  run: ./scripts/validate-gxt.sh manifest
59
60
 
60
- - name: gapman unit tests
61
+ - name: gantry unit tests
61
62
  run: node --test dist/cli/tests/*.test.js
62
63
 
63
- - name: gapman doctor (readiness)
64
+ - name: gantry doctor (readiness)
64
65
  run: node dist/cli/index.js doctor
65
66
 
66
- - name: gapman perimeter (CI signature enforcement)
67
+ - name: gantry perimeter (CI signature enforcement)
67
68
  if: github.event_name == 'pull_request'
68
69
  env:
69
70
  BASE_SHA: ${{ github.event.pull_request.base.sha }}
@@ -74,7 +75,7 @@ jobs:
74
75
  needs: pr_governance
75
76
  runs-on: ubuntu-latest
76
77
  steps:
77
- - uses: actions/checkout@v6
78
+ - uses: actions/checkout@v7
78
79
  with:
79
80
  fetch-depth: 0
80
81
  ref: ${{ github.event.pull_request.head.sha }}
@@ -87,7 +88,7 @@ jobs:
87
88
  - name: Install Node deps
88
89
  run: npm ci
89
90
 
90
- - name: Build gapman
91
+ - name: Build gantry
91
92
  run: npm run build
92
93
 
93
94
  - name: Changed-code quality gates (complexity + import layers)
@@ -99,7 +100,7 @@ jobs:
99
100
  npm_pack:
100
101
  runs-on: ubuntu-latest
101
102
  steps:
102
- - uses: actions/checkout@v6
103
+ - uses: actions/checkout@v7
103
104
 
104
105
  - uses: actions/setup-node@v6
105
106
  with:
@@ -117,7 +118,7 @@ jobs:
117
118
  needs: pr_governance
118
119
  runs-on: ubuntu-latest
119
120
  steps:
120
- - uses: actions/checkout@v6
121
+ - uses: actions/checkout@v7
121
122
  with:
122
123
  fetch-depth: 0
123
124
  ref: ${{ github.event.pull_request.head.sha }}
@@ -136,7 +137,7 @@ jobs:
136
137
  needs: pr_governance
137
138
  runs-on: ubuntu-latest
138
139
  steps:
139
- - uses: actions/checkout@v6
140
+ - uses: actions/checkout@v7
140
141
  with:
141
142
  fetch-depth: 0
142
143
  ref: ${{ github.event.pull_request.head.sha }}
@@ -149,7 +150,7 @@ jobs:
149
150
  - name: Install Node deps
150
151
  run: npm ci
151
152
 
152
- - name: Build gapman
153
+ - name: Build gantry
153
154
  run: npm run build
154
155
 
155
156
  - name: Full verify on PR-changed missions
@@ -21,7 +21,7 @@ When the user **explicitly** asks to write, edit, refactor, or implement code an
21
21
  - **Do NOT** trigger for questions, explanations, or code discovery — answer normally.
22
22
  - **Fast-path** trivial single-file work; **full interview** for heavy/risky scope.
23
23
  - **Cursor MCP handoff (preferred):** `gxt_draft_legislation` → human chat approval → `gxt_execute_legislation` → Teacher commit → `gxt_check_signature` → `gxt_pin_mission`.
24
- - **CLI fallback:** one copy-paste `gapman legislate …` command — never raw YAML blocks.
24
+ - **CLI fallback:** one copy-paste `gantry legislate …` command — never raw YAML blocks.
25
25
 
26
26
  ## External IDE skills (edge quarantine)
27
27
 
@@ -10,6 +10,7 @@
10
10
  { "targetPath": ".cursor/hooks/gxt-session-start.sh", "mode": "managed_strict", "executable": true, "tags": ["cursor"] },
11
11
  { "targetPath": ".cursor/mcp.json", "mode": "managed_strict", "tags": ["cursor"] },
12
12
  { "targetPath": ".cursor/rules/opengantry-gxt-substrate.mdc", "mode": "managed_strict", "tags": ["cursor"] },
13
+ { "targetPath": ".gitagent/config.json", "mode": "scaffold_only", "tags": ["core"] },
13
14
  { "targetPath": ".gitagent/foreman/BYPASS.sha256", "mode": "scaffold_only", "tags": ["core"] },
14
15
  { "targetPath": ".gitagent/foreman/MANIFEST.json", "mode": "scaffold_only", "tags": ["core"] },
15
16
  { "targetPath": ".gitagent/foreman/SUBSTRATE.version.json", "mode": "scaffold_only", "tags": ["core"] },
@@ -39,7 +40,7 @@
39
40
  { "targetPath": "scripts/gxt-shell-agent.sh", "mode": "managed_strict", "executable": true, "tags": ["runtime", "claude-code", "codex-cli", "opencode"] },
40
41
  { "targetPath": "scripts/validate-gxt.sh", "mode": "managed_strict", "executable": true, "tags": ["core"] },
41
42
  { "targetPath": "scripts/verify-pr-missions.sh", "mode": "managed_strict", "executable": true, "tags": ["ci"] },
42
- { "targetPath": "skills/gapman.md", "mode": "scaffold_only", "tags": ["skill-specimen"] },
43
+ { "targetPath": "skills/gantry.md", "mode": "scaffold_only", "tags": ["skill-specimen"] },
43
44
  { "targetPath": "skills/logic.md", "mode": "scaffold_only", "tags": ["skill-minimal", "skill-specimen"] },
44
45
  { "targetPath": "skills/substrate.md", "mode": "scaffold_only", "tags": ["skill-specimen"] },
45
46
  { "targetPath": "skills/ui.md", "mode": "scaffold_only", "tags": ["skill-minimal", "skill-specimen"] }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "1",
3
- "opengantry_version": "2.2.2",
3
+ "opengantry_version": "2.2.4",
4
4
  "asset_catalog": "integrations/asset-catalog.json",
5
5
  "integrations": {
6
6
  "cursor": {
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Closed-loop checklist
4
4
 
5
- 1. `gapman init` + `export GAPMAN_TEACHER_EMAILS="$(git config user.email)"` + `gapman doctor`
6
- 2. `gapman legislate "<intent>" --msn MSN-NNNN --skill-key <key>` → Teacher `[MSN-NNNN]` commit
5
+ 1. `gantry init` + `export GANTRY_TEACHER_EMAILS="$(git config user.email)"` + `gantry doctor`
6
+ 2. `gantry legislate "<intent>" --msn MSN-NNNN --skill-key <key>` → Teacher `[MSN-NNNN]` commit
7
7
  3. Bootstrap: `source scripts/gxt-runtime-env.sh .gitagent/missions/<file>.yaml`
8
8
  4. Worker executes; append PASS quotes to `WORKER_LOG.md`
9
- 5. `gapman verify --mission .gitagent/missions/<file>.yaml`
9
+ 5. `gantry verify --mission .gitagent/missions/<file>.yaml`
10
10
  6. `git push` (pre-push uses `--pre-push` handoff semantics)
11
11
 
12
12
  ## External IDE skills
@@ -17,8 +17,8 @@ Optional third-party skill packs belong on the **local IDE edge** (gitignored),
17
17
 
18
18
  | Symptom | Fix |
19
19
  |---------|-----|
20
- | `NO_MSN_COMMITS` on push | Teacher `[MSN-NNNN]` commit modifying the mission file; set `GAPMAN_TEACHER_EMAILS` |
20
+ | `NO_MSN_COMMITS` on push | Teacher `[MSN-NNNN]` commit modifying the mission file; set `GANTRY_TEACHER_EMAILS` |
21
21
  | Pre-push OK, full verify fails trace | Fill `WORKER_LOG.md`; align `trace_rows`; re-run full verify |
22
- | `TEACHER_IDENTITY_UNCONFIGURED` | `export GAPMAN_TEACHER_EMAILS="$(git config user.email)"` |
22
+ | `TEACHER_IDENTITY_UNCONFIGURED` | `export GANTRY_TEACHER_EMAILS="$(git config user.email)"` |
23
23
 
24
- Integration compat verified by OpenGantry release — run `gapman doctor` for detected wiring and stale paths.
24
+ Integration compat verified by OpenGantry release — run `gantry doctor` for detected wiring and stale paths.
@@ -1,25 +1,25 @@
1
1
  # Agent Integrations (GXT wrapper)
2
2
 
3
- OpenGantry is **tool-agnostic**. Any agent that can run shell commands can participate in the GXT loop.
3
+ OpenGantry is **tool-agnostic** and **vendor-neutral** — any agent that can run shell commands can participate in the GXT loop. Governance is **local-first**: missions, gates, and **Gantry Git hook** enforcement run in your repository, not through a hosted agent dashboard.
4
4
 
5
5
  ## Universal rule
6
6
 
7
- 1. Teacher legislates a mission under `.gitagent/missions/` (IDE chat: [`.gitagent/teacher/MISSION-ARCHITECT.md`](.gitagent/teacher/MISSION-ARCHITECT.md) — one copy-paste `gapman legislate` command).
7
+ 1. Teacher legislates a mission under `.gitagent/missions/` (IDE chat: [`.gitagent/teacher/MISSION-ARCHITECT.md`](.gitagent/teacher/MISSION-ARCHITECT.md) — one copy-paste `gantry legislate` command).
8
8
  2. Bootstrap mission-scoped runtime env before worker execution.
9
9
  3. Append trace evidence to `WORKER_LOG.md`.
10
- 4. Finish with `gapman verify --mission <path>` (full verify before merge / claiming done).
10
+ 4. Finish with `gantry verify --mission <path>` (full verify before merge / claiming done).
11
11
 
12
12
  ```bash
13
- gapman runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- <your-agent-command>
13
+ gantry runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- <your-agent-command>
14
14
  source scripts/gxt-runtime-env.sh .gitagent/missions/MSN-0001.<slug>.yaml
15
- gapman runtime env --mission .gitagent/missions/MSN-0001.<slug>.yaml --json
15
+ gantry runtime env --mission .gitagent/missions/MSN-0001.<slug>.yaml --json
16
16
  ```
17
17
 
18
18
  ## Enforcement boundary
19
19
 
20
20
  | Tier | Mechanism | What it actually traps |
21
21
  |------|-----------|------------------------|
22
- | **Process-boundary** | `gapman runtime exec` | TMVC roots + forbidden zones for subprocess workers |
22
+ | **Process-boundary** | `gantry runtime exec` | TMVC roots + forbidden zones for subprocess workers |
23
23
  | **Deterministic hook** | Tool hooks (Cursor `beforeShellExecution` on law/manifest paths) | Shell writes to `.gitagent/foreman/`, `.gitagent/teacher/RULES.md` |
24
24
  | **Advisory** | Rules / `AGENTS.md` / tool memory | IDE Agent Write/Edit — LLM compliance, not kernel enforcement |
25
25
 
@@ -37,9 +37,9 @@ IDE agent file edits are not TMVC-trapped unless the tool runs inside `runtime e
37
37
 
38
38
  | Variable | Purpose |
39
39
  |----------|---------|
40
- | `GAPMAN_TEACHER_EMAILS` | Comma-separated Git author emails allowed to legislate |
41
- | `GAPMAN_MISSION` | Optional mission path for `gxt-runtime-env.sh` |
42
- | `GXT_*` | Emitted by `gapman runtime env` |
40
+ | `GANTRY_TEACHER_EMAILS` | Comma-separated Git author emails allowed to legislate |
41
+ | `GANTRY_MISSION` | Optional mission path for `gxt-runtime-env.sh` |
42
+ | `GXT_*` | Emitted by `gantry runtime env` |
43
43
 
44
44
  ---
45
45
 
@@ -4,7 +4,7 @@
4
4
  - **Session bootstrap:**
5
5
 
6
6
  ```bash
7
- gapman runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- aider --message "<task>"
7
+ gantry runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- aider --message "<task>"
8
8
  ```
9
9
 
10
10
  - **Enforcement:** Process-boundary when wrapped — strongest TMVC trap among IDE-adjacent tools.
@@ -1,7 +1,7 @@
1
1
  ### Google Antigravity
2
2
 
3
3
  - **Context injection:** Root `AGENTS.md`; `.agent/rules/gxt.md` with `always_on` pointing at canonical files.
4
- - **Session bootstrap:** `source scripts/gxt-runtime-env.sh <mission>` or `gapman runtime exec … -- <command>`.
4
+ - **Session bootstrap:** `source scripts/gxt-runtime-env.sh <mission>` or `gantry runtime exec … -- <command>`.
5
5
  - **Enforcement:** Advisory for Editor/Manager views; process-boundary for wrapped CLI runs.
6
6
  - **Gotcha:** Rules load order includes `GEMINI.md` → `AGENTS.md` → `.agent/rules/` — keep GXT pointers in `AGENTS.md`.
7
7
 
@@ -7,7 +7,7 @@
7
7
  scripts/gxt-pin-mission.sh .gitagent/missions/MSN-0001.<slug>.yaml
8
8
  scripts/gxt-shell-agent.sh claude .gitagent/missions/MSN-0001.<slug>.yaml
9
9
  # or with explicit task:
10
- gapman runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- claude "<task>"
10
+ gantry runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- claude "<task>"
11
11
  ```
12
12
 
13
13
  - **Enforcement:** Advisory in interactive session; process-boundary when wrapped with `runtime exec` or `gxt-shell-agent.sh`.
@@ -2,14 +2,14 @@
2
2
 
3
3
  > **Not** the deprecated OpenAI Codex API (2021–2023). This covers [OpenAI Codex CLI](https://github.com/openai/codex) (2025+ terminal/IDE agent).
4
4
 
5
- - **Context injection:** Root `AGENTS.md` (native after `gapman init`); optional `.codex/config.toml` for project defaults.
5
+ - **Context injection:** Root `AGENTS.md` (native after `gantry init`); optional `.codex/config.toml` for project defaults.
6
6
  - **Session bootstrap (shell wrapper — no project hooks):**
7
7
 
8
8
  ```bash
9
9
  scripts/gxt-pin-mission.sh .gitagent/missions/MSN-0001.<slug>.yaml
10
10
  scripts/gxt-shell-agent.sh codex .gitagent/missions/MSN-0001.<slug>.yaml
11
11
  # or headless:
12
- gapman runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- codex exec "<task>"
12
+ gantry runtime exec --mission .gitagent/missions/MSN-0001.<slug>.yaml -- codex exec "<task>"
13
13
  ```
14
14
 
15
15
  - **Enforcement:** Advisory in interactive TUI/IDE extension; process-boundary when wrapped with `runtime exec` or `gxt-shell-agent.sh`.