@bvdm/delano 0.1.0

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 (109) hide show
  1. package/HANDBOOK.md +1511 -0
  2. package/README.md +122 -0
  3. package/assets/install-manifest.json +102 -0
  4. package/assets/payload/.agents/README.md +12 -0
  5. package/assets/payload/.agents/adapters/claude/README.md +5 -0
  6. package/assets/payload/.agents/adapters/codex/README.md +5 -0
  7. package/assets/payload/.agents/adapters/opencode/README.md +5 -0
  8. package/assets/payload/.agents/adapters/pi/README.md +5 -0
  9. package/assets/payload/.agents/common/README.md +3 -0
  10. package/assets/payload/.agents/hooks/README.md +11 -0
  11. package/assets/payload/.agents/hooks/bash-worktree-fix.sh +7 -0
  12. package/assets/payload/.agents/hooks/post-tool-logger.js +18 -0
  13. package/assets/payload/.agents/hooks/session-tracker.js +17 -0
  14. package/assets/payload/.agents/hooks/user-prompt-logger.js +18 -0
  15. package/assets/payload/.agents/logs/.gitkeep +0 -0
  16. package/assets/payload/.agents/logs/schema.md +42 -0
  17. package/assets/payload/.agents/rules/README.md +12 -0
  18. package/assets/payload/.agents/rules/agent-coordination.md +5 -0
  19. package/assets/payload/.agents/rules/datetime.md +5 -0
  20. package/assets/payload/.agents/rules/frontmatter-operations.md +6 -0
  21. package/assets/payload/.agents/rules/github-operations.md +5 -0
  22. package/assets/payload/.agents/rules/path-standards.md +5 -0
  23. package/assets/payload/.agents/rules/test-execution.md +5 -0
  24. package/assets/payload/.agents/rules/worktree-operations.md +5 -0
  25. package/assets/payload/.agents/scripts/README.md +31 -0
  26. package/assets/payload/.agents/scripts/check-path-standards.sh +26 -0
  27. package/assets/payload/.agents/scripts/fix-path-standards.sh +14 -0
  28. package/assets/payload/.agents/scripts/git-sparse-download.sh +162 -0
  29. package/assets/payload/.agents/scripts/log-event.js +33 -0
  30. package/assets/payload/.agents/scripts/log-event.sh +5 -0
  31. package/assets/payload/.agents/scripts/pm/blocked.sh +36 -0
  32. package/assets/payload/.agents/scripts/pm/epic-list.sh +34 -0
  33. package/assets/payload/.agents/scripts/pm/in-progress.sh +36 -0
  34. package/assets/payload/.agents/scripts/pm/init.sh +139 -0
  35. package/assets/payload/.agents/scripts/pm/next.sh +110 -0
  36. package/assets/payload/.agents/scripts/pm/prd-list.sh +34 -0
  37. package/assets/payload/.agents/scripts/pm/search.sh +13 -0
  38. package/assets/payload/.agents/scripts/pm/standup.sh +19 -0
  39. package/assets/payload/.agents/scripts/pm/status.sh +61 -0
  40. package/assets/payload/.agents/scripts/pm/validate.sh +309 -0
  41. package/assets/payload/.agents/scripts/query-log.sh +57 -0
  42. package/assets/payload/.agents/scripts/test-and-log.sh +28 -0
  43. package/assets/payload/.agents/skills/.gitkeep +0 -0
  44. package/assets/payload/.agents/skills/README.md +23 -0
  45. package/assets/payload/.agents/skills/breakdown-skill/SKILL.md +40 -0
  46. package/assets/payload/.agents/skills/breakdown-skill/references/runbook.md +16 -0
  47. package/assets/payload/.agents/skills/breakdown-skill/templates/ambiguity-report.md +11 -0
  48. package/assets/payload/.agents/skills/breakdown-skill/templates/task-batch-summary.md +11 -0
  49. package/assets/payload/.agents/skills/closeout-skill/SKILL.md +42 -0
  50. package/assets/payload/.agents/skills/closeout-skill/references/runbook.md +16 -0
  51. package/assets/payload/.agents/skills/closeout-skill/templates/closure-checklist.md +7 -0
  52. package/assets/payload/.agents/skills/closeout-skill/templates/outcome-review.md +11 -0
  53. package/assets/payload/.agents/skills/discovery-skill/SKILL.md +44 -0
  54. package/assets/payload/.agents/skills/discovery-skill/references/runbook.md +14 -0
  55. package/assets/payload/.agents/skills/discovery-skill/templates/clarification-questions.md +18 -0
  56. package/assets/payload/.agents/skills/discovery-skill/templates/discovery-summary.md +14 -0
  57. package/assets/payload/.agents/skills/execution-skill/SKILL.md +42 -0
  58. package/assets/payload/.agents/skills/execution-skill/references/runbook.md +16 -0
  59. package/assets/payload/.agents/skills/execution-skill/templates/blocker-update.md +13 -0
  60. package/assets/payload/.agents/skills/execution-skill/templates/stream-update.md +9 -0
  61. package/assets/payload/.agents/skills/learning-skill/SKILL.md +41 -0
  62. package/assets/payload/.agents/skills/learning-skill/references/runbook.md +13 -0
  63. package/assets/payload/.agents/skills/learning-skill/templates/improvement-backlog.md +10 -0
  64. package/assets/payload/.agents/skills/learning-skill/templates/retrospective.md +11 -0
  65. package/assets/payload/.agents/skills/planning-skill/SKILL.md +40 -0
  66. package/assets/payload/.agents/skills/planning-skill/references/runbook.md +15 -0
  67. package/assets/payload/.agents/skills/planning-skill/templates/architecture-decision.md +15 -0
  68. package/assets/payload/.agents/skills/planning-skill/templates/workstream-definition.md +13 -0
  69. package/assets/payload/.agents/skills/quality-skill/SKILL.md +40 -0
  70. package/assets/payload/.agents/skills/quality-skill/references/runbook.md +14 -0
  71. package/assets/payload/.agents/skills/quality-skill/templates/gate-decision.md +10 -0
  72. package/assets/payload/.agents/skills/quality-skill/templates/quality-evidence.md +16 -0
  73. package/assets/payload/.agents/skills/sync-skill/SKILL.md +41 -0
  74. package/assets/payload/.agents/skills/sync-skill/references/runbook.md +17 -0
  75. package/assets/payload/.agents/skills/sync-skill/templates/conflict-resolution-actions.md +10 -0
  76. package/assets/payload/.agents/skills/sync-skill/templates/drift-report.md +14 -0
  77. package/assets/payload/.delano/README.md +7 -0
  78. package/assets/payload/.gitattributes +14 -0
  79. package/assets/payload/.project/context/README.md +15 -0
  80. package/assets/payload/.project/context/gui-testing.md +20 -0
  81. package/assets/payload/.project/context/product-context.md +17 -0
  82. package/assets/payload/.project/context/progress.md +23 -0
  83. package/assets/payload/.project/context/project-brief.md +13 -0
  84. package/assets/payload/.project/context/project-overview.md +14 -0
  85. package/assets/payload/.project/context/project-structure.md +24 -0
  86. package/assets/payload/.project/context/project-style-guide.md +17 -0
  87. package/assets/payload/.project/context/system-patterns.md +22 -0
  88. package/assets/payload/.project/context/tech-context.md +19 -0
  89. package/assets/payload/.project/projects/.gitkeep +0 -0
  90. package/assets/payload/.project/registry/linear-map.json +6 -0
  91. package/assets/payload/.project/registry/migration-map.json +5 -0
  92. package/assets/payload/.project/templates/completion-summary.md +16 -0
  93. package/assets/payload/.project/templates/plan.md +30 -0
  94. package/assets/payload/.project/templates/progress-update.md +20 -0
  95. package/assets/payload/.project/templates/spec.md +42 -0
  96. package/assets/payload/.project/templates/task.md +33 -0
  97. package/assets/payload/.project/templates/workstream.md +19 -0
  98. package/assets/payload/HANDBOOK.md +1511 -0
  99. package/assets/payload/install-delano.sh +311 -0
  100. package/bin/delano.js +13 -0
  101. package/install-delano.sh +311 -0
  102. package/package.json +26 -0
  103. package/src/cli/commands/install.js +57 -0
  104. package/src/cli/commands/wrapper.js +26 -0
  105. package/src/cli/index.js +97 -0
  106. package/src/cli/lib/errors.js +11 -0
  107. package/src/cli/lib/install.js +261 -0
  108. package/src/cli/lib/pm.js +29 -0
  109. package/src/cli/lib/runtime.js +122 -0
package/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # Delano
2
+
3
+ Delano is an agent-agnostic, runtime-guided, skill-driven delivery system.
4
+
5
+ ## WHY
6
+
7
+ AI-assisted delivery is fast, but it easily becomes inconsistent.
8
+
9
+ Delano exists to keep teams fast **and** reliable by giving one shared way to move from business outcomes to specs, tasks, code, and evidence.
10
+
11
+ It is designed to reduce:
12
+ - execution drift between planning and implementation
13
+ - tool-specific lock-in
14
+ - undocumented decisions and low-trust delivery flow
15
+
16
+ ## WHAT
17
+
18
+ Delano is a spec-first runtime for software delivery, backed by explicit file contracts and deterministic scripts.
19
+
20
+ Core pieces:
21
+ - `HANDBOOK.md` — canonical operating model and governance
22
+ - `.project/` — delivery truth (projects, tasks, context, updates, decisions)
23
+ - `.agents/` — shared runtime (scripts, rules, hooks, skills, adapters)
24
+ - `.claude/` — compatibility mirror for Claude-style paths (symlink where supported, directory mirror otherwise)
25
+ - `.delano/` — optional UI layer
26
+
27
+ Probe-aware delivery is part of the operating model: draft the spec, make the probe decision explicit, and only approve once uncertainty is retired or consciously accepted.
28
+
29
+ Supported adapters:
30
+ - Claude Code
31
+ - Codex CLI
32
+ - OpenCode
33
+ - Pi coding agent
34
+
35
+ ## HOW
36
+
37
+ ### Quick start (inside a Delano repo)
38
+
39
+ ```bash
40
+ # 1) Validate the runtime and required assets
41
+ bash .agents/scripts/pm/validate.sh
42
+
43
+ # 2) Create a new delivery project scaffold
44
+ bash .agents/scripts/pm/init.sh <slug> "<Project Name>" <owner> <lead>
45
+
46
+ # 3) See portfolio/project status
47
+ bash .agents/scripts/pm/status.sh
48
+
49
+ # 4) Get next executable tasks
50
+ bash .agents/scripts/pm/next.sh
51
+ ```
52
+
53
+ ### CLI v1 (current package work)
54
+
55
+ Delano now has a thin npm CLI layer with:
56
+ - package name `@bvdm/delano`
57
+ - binary name `delano`
58
+ - embedded install assets instead of a GitHub-fetch wrapper
59
+ - wrapper commands for `install`, `init`, `validate`, `status`, and `next`
60
+
61
+ Local development examples from this repository:
62
+
63
+ ```bash
64
+ # Build the packaged asset payload
65
+ npm run build:assets
66
+
67
+ # Inspect the CLI surface
68
+ node bin/delano.js --help
69
+
70
+ # Install the approved base payload into another repo or scratch target
71
+ node bin/delano.js install --target /path/to/repo --yes
72
+ ```
73
+
74
+ ### Daily operating loop
75
+
76
+ 1. Keep project intent and execution synced in `.project/projects/<slug>/`.
77
+ 2. Execute work through workstreams and atomic tasks (`tasks/T-xxx.md`).
78
+ 3. Record progress/blockers in `updates/*.md`.
79
+ 4. Re-run validation before merge/handoff:
80
+ ```bash
81
+ bash .agents/scripts/pm/validate.sh
82
+ ```
83
+
84
+ ### Install Delano into another repository
85
+
86
+ Preferred v1 path:
87
+
88
+ ```bash
89
+ delano install --target /path/to/repo --yes
90
+ ```
91
+
92
+ Current source-repo development path:
93
+
94
+ ```bash
95
+ node bin/delano.js install --target /path/to/repo --yes
96
+ ```
97
+
98
+ Base install behavior:
99
+ - installs only the approved allowlist payload
100
+ - aborts on existing-path conflicts unless `--force` is used
101
+ - does not install `AGENTS.md`, `CLAUDE.md`, `CODEX.md`, `OPENCODE.md`, or `PI.md` by default
102
+
103
+ Legacy bridge path:
104
+
105
+ ```bash
106
+ ./install-delano.sh
107
+ ```
108
+
109
+ The shell installer remains available for migration, but it is broader than the npm base install path and should be treated as the compatibility bridge rather than the preferred v1 behavior.
110
+
111
+ Legacy non-interactive example:
112
+
113
+ ```bash
114
+ ./install-delano.sh --target /path/to/repo --agents claude,codex --yes
115
+ ```
116
+
117
+ ### Read next
118
+
119
+ - `docs/user-guide.md` for the user-facing overview
120
+ - `HANDBOOK.md` for full operating semantics
121
+ - `.agents/scripts/README.md` for runtime script inventory
122
+ - `AGENTS.md` and adapter entrypoints (`CLAUDE.md`, `CODEX.md`, etc.) for agent-specific bootstraps
@@ -0,0 +1,102 @@
1
+ {
2
+ "version": 1,
3
+ "paths": [
4
+ ".agents/adapters/claude/README.md",
5
+ ".agents/adapters/codex/README.md",
6
+ ".agents/adapters/opencode/README.md",
7
+ ".agents/adapters/pi/README.md",
8
+ ".agents/common/README.md",
9
+ ".agents/hooks/bash-worktree-fix.sh",
10
+ ".agents/hooks/post-tool-logger.js",
11
+ ".agents/hooks/README.md",
12
+ ".agents/hooks/session-tracker.js",
13
+ ".agents/hooks/user-prompt-logger.js",
14
+ ".agents/logs/.gitkeep",
15
+ ".agents/logs/schema.md",
16
+ ".agents/README.md",
17
+ ".agents/rules/agent-coordination.md",
18
+ ".agents/rules/datetime.md",
19
+ ".agents/rules/frontmatter-operations.md",
20
+ ".agents/rules/github-operations.md",
21
+ ".agents/rules/path-standards.md",
22
+ ".agents/rules/README.md",
23
+ ".agents/rules/test-execution.md",
24
+ ".agents/rules/worktree-operations.md",
25
+ ".agents/scripts/check-path-standards.sh",
26
+ ".agents/scripts/fix-path-standards.sh",
27
+ ".agents/scripts/git-sparse-download.sh",
28
+ ".agents/scripts/log-event.js",
29
+ ".agents/scripts/log-event.sh",
30
+ ".agents/scripts/pm/blocked.sh",
31
+ ".agents/scripts/pm/epic-list.sh",
32
+ ".agents/scripts/pm/in-progress.sh",
33
+ ".agents/scripts/pm/init.sh",
34
+ ".agents/scripts/pm/next.sh",
35
+ ".agents/scripts/pm/prd-list.sh",
36
+ ".agents/scripts/pm/search.sh",
37
+ ".agents/scripts/pm/standup.sh",
38
+ ".agents/scripts/pm/status.sh",
39
+ ".agents/scripts/pm/validate.sh",
40
+ ".agents/scripts/query-log.sh",
41
+ ".agents/scripts/README.md",
42
+ ".agents/scripts/test-and-log.sh",
43
+ ".agents/skills/.gitkeep",
44
+ ".agents/skills/breakdown-skill/references/runbook.md",
45
+ ".agents/skills/breakdown-skill/SKILL.md",
46
+ ".agents/skills/breakdown-skill/templates/ambiguity-report.md",
47
+ ".agents/skills/breakdown-skill/templates/task-batch-summary.md",
48
+ ".agents/skills/closeout-skill/references/runbook.md",
49
+ ".agents/skills/closeout-skill/SKILL.md",
50
+ ".agents/skills/closeout-skill/templates/closure-checklist.md",
51
+ ".agents/skills/closeout-skill/templates/outcome-review.md",
52
+ ".agents/skills/discovery-skill/references/runbook.md",
53
+ ".agents/skills/discovery-skill/SKILL.md",
54
+ ".agents/skills/discovery-skill/templates/clarification-questions.md",
55
+ ".agents/skills/discovery-skill/templates/discovery-summary.md",
56
+ ".agents/skills/execution-skill/references/runbook.md",
57
+ ".agents/skills/execution-skill/SKILL.md",
58
+ ".agents/skills/execution-skill/templates/blocker-update.md",
59
+ ".agents/skills/execution-skill/templates/stream-update.md",
60
+ ".agents/skills/learning-skill/references/runbook.md",
61
+ ".agents/skills/learning-skill/SKILL.md",
62
+ ".agents/skills/learning-skill/templates/improvement-backlog.md",
63
+ ".agents/skills/learning-skill/templates/retrospective.md",
64
+ ".agents/skills/planning-skill/references/runbook.md",
65
+ ".agents/skills/planning-skill/SKILL.md",
66
+ ".agents/skills/planning-skill/templates/architecture-decision.md",
67
+ ".agents/skills/planning-skill/templates/workstream-definition.md",
68
+ ".agents/skills/quality-skill/references/runbook.md",
69
+ ".agents/skills/quality-skill/SKILL.md",
70
+ ".agents/skills/quality-skill/templates/gate-decision.md",
71
+ ".agents/skills/quality-skill/templates/quality-evidence.md",
72
+ ".agents/skills/README.md",
73
+ ".agents/skills/sync-skill/references/runbook.md",
74
+ ".agents/skills/sync-skill/SKILL.md",
75
+ ".agents/skills/sync-skill/templates/conflict-resolution-actions.md",
76
+ ".agents/skills/sync-skill/templates/drift-report.md",
77
+ ".delano/README.md",
78
+ ".gitattributes",
79
+ ".gitignore",
80
+ ".project/context/gui-testing.md",
81
+ ".project/context/product-context.md",
82
+ ".project/context/progress.md",
83
+ ".project/context/project-brief.md",
84
+ ".project/context/project-overview.md",
85
+ ".project/context/project-structure.md",
86
+ ".project/context/project-style-guide.md",
87
+ ".project/context/README.md",
88
+ ".project/context/system-patterns.md",
89
+ ".project/context/tech-context.md",
90
+ ".project/projects/.gitkeep",
91
+ ".project/registry/linear-map.json",
92
+ ".project/registry/migration-map.json",
93
+ ".project/templates/completion-summary.md",
94
+ ".project/templates/plan.md",
95
+ ".project/templates/progress-update.md",
96
+ ".project/templates/spec.md",
97
+ ".project/templates/task.md",
98
+ ".project/templates/workstream.md",
99
+ "HANDBOOK.md",
100
+ "install-delano.sh"
101
+ ]
102
+ }
@@ -0,0 +1,12 @@
1
+ # .agents
2
+
3
+ Canonical shared runtime for Delano.
4
+
5
+ - `scripts/`, `rules/`, `hooks/`, `skills/`, `logs/` -> shared Delano runtime assets
6
+ - `adapters/claude/` -> Claude adapter notes
7
+ - `adapters/codex/` -> Codex adapter notes
8
+ - `adapters/opencode/` -> OpenCode adapter notes
9
+ - `adapters/pi/` -> Pi adapter notes
10
+ - `common/` -> shared adapter docs/policies
11
+
12
+ The compatibility path `.claude/` may mirror this runtime for agents that still expect Claude-style paths.
@@ -0,0 +1,5 @@
1
+ # Claude adapter
2
+
3
+ - Start from `AGENTS.md`
4
+ - Shared runtime is in `.agents/` (available at `.claude/` via symlink)
5
+ - Keep Claude-specific behavior in `CLAUDE.md` and this adapter folder
@@ -0,0 +1,5 @@
1
+ # Codex adapter
2
+
3
+ - Start from `AGENTS.md`
4
+ - Use `.project/` as source of truth
5
+ - Reuse runtime scripts via `.agents/scripts/*` (or `.claude/scripts/*` compatibility symlink)
@@ -0,0 +1,5 @@
1
+ # OpenCode adapter
2
+
3
+ - Start from `AGENTS.md`
4
+ - Use `.project/` as source of truth
5
+ - Reuse runtime scripts via `.agents/scripts/*` (or `.claude/scripts/*` compatibility symlink)
@@ -0,0 +1,5 @@
1
+ # Pi adapter
2
+
3
+ - Start from `AGENTS.md`
4
+ - Use `.project/` as source of truth
5
+ - Reuse runtime scripts via `.agents/scripts/*` (or `.claude/scripts/*` compatibility symlink)
@@ -0,0 +1,3 @@
1
+ # Common adapter guidance
2
+
3
+ All adapters must operate against `.project/` contracts and follow `HANDBOOK.md` gates.
@@ -0,0 +1,11 @@
1
+ # Delano Hook Layer
2
+
3
+ This directory contains optional runtime hooks for session and mutation tracking.
4
+
5
+ Default hooks:
6
+ - `session-tracker.js`
7
+ - `post-tool-logger.js`
8
+ - `user-prompt-logger.js`
9
+ - `bash-worktree-fix.sh`
10
+
11
+ All hooks append JSONL records in `.agents/logs/`.
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Ensure shell starts in repository root when invoked from nested worktree paths.
5
+ root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
6
+ cd "$root"
7
+ echo "worktree context set: $root"
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ const payload = process.argv[2] ? JSON.parse(process.argv[2]) : { type: 'tool_mutation' };
6
+ const root = process.cwd();
7
+ const dir = path.join(root, '.agents', 'logs');
8
+ const file = path.join(dir, 'changes.jsonl');
9
+ fs.mkdirSync(dir, { recursive: true });
10
+
11
+ const row = {
12
+ timestamp: new Date().toISOString(),
13
+ type: payload.type || 'tool_mutation',
14
+ actor: payload.actor || 'runtime',
15
+ meta: payload.meta || {}
16
+ };
17
+
18
+ fs.appendFileSync(file, JSON.stringify(row) + '\n', 'utf8');
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ const [action = 'start', sessionId = 'unknown'] = process.argv.slice(2);
6
+ const root = process.cwd();
7
+ const dir = path.join(root, '.agents', 'logs');
8
+ const file = path.join(dir, 'sessions.jsonl');
9
+ fs.mkdirSync(dir, { recursive: true });
10
+
11
+ const row = {
12
+ timestamp: new Date().toISOString(),
13
+ action,
14
+ sessionId
15
+ };
16
+
17
+ fs.appendFileSync(file, JSON.stringify(row) + '\n', 'utf8');
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ const prompt = process.argv.slice(2).join(' ');
6
+ if (!prompt) process.exit(0);
7
+
8
+ const root = process.cwd();
9
+ const dir = path.join(root, '.agents', 'logs');
10
+ const file = path.join(dir, 'prompts.jsonl');
11
+ fs.mkdirSync(dir, { recursive: true });
12
+
13
+ const row = {
14
+ timestamp: new Date().toISOString(),
15
+ prompt
16
+ };
17
+
18
+ fs.appendFileSync(file, JSON.stringify(row) + '\n', 'utf8');
File without changes
@@ -0,0 +1,42 @@
1
+ # Log Schema
2
+
3
+ ## `changes.jsonl`
4
+
5
+ ```json
6
+ {
7
+ "timestamp": "ISO8601 UTC",
8
+ "type": "event_type",
9
+ "actor": "system|agent|user",
10
+ "meta": {}
11
+ }
12
+ ```
13
+
14
+ ## `sessions.jsonl`
15
+
16
+ ```json
17
+ {
18
+ "timestamp": "ISO8601 UTC",
19
+ "action": "start|end",
20
+ "sessionId": "string"
21
+ }
22
+ ```
23
+
24
+ ## `prompts.jsonl`
25
+
26
+ ```json
27
+ {
28
+ "timestamp": "ISO8601 UTC",
29
+ "prompt": "string"
30
+ }
31
+ ```
32
+
33
+ ## `test-runs.jsonl`
34
+
35
+ ```json
36
+ {
37
+ "timestamp": "ISO8601 UTC",
38
+ "command": "string",
39
+ "exit_code": 0,
40
+ "log_file": ".agents/logs/tests/<id>.log"
41
+ }
42
+ ```
@@ -0,0 +1,12 @@
1
+ # Delano Rule Pack
2
+
3
+ Rules encode the guardrails described in `HANDBOOK.md`.
4
+
5
+ Core rule scopes:
6
+
7
+ - datetime + frontmatter integrity
8
+ - GitHub safety checks
9
+ - path privacy
10
+ - branch/worktree safety
11
+ - test execution hygiene
12
+ - agent coordination protocol
@@ -0,0 +1,5 @@
1
+ # Agent Coordination Rule
2
+
3
+ - Use multi-stream orchestration only after explicit threshold check.
4
+ - Declare stream scope and conflict zones before execution.
5
+ - Synchronize at dependency boundaries and escalate overlap early.
@@ -0,0 +1,5 @@
1
+ # Datetime Rule
2
+
3
+ - Use UTC ISO8601 (`YYYY-MM-DDTHH:MM:SSZ`) for `created`, `updated`, and update timestamps.
4
+ - `created` is immutable after file creation.
5
+ - `updated` must reflect real mutation time.
@@ -0,0 +1,6 @@
1
+ # Frontmatter Rule
2
+
3
+ - Contract keys in handbook templates are mandatory.
4
+ - Do not remove required keys.
5
+ - Status values must stay inside the canonical status set.
6
+ - Frontmatter must remain the first block in contract files.
@@ -0,0 +1,5 @@
1
+ # GitHub Safety Rule
2
+
3
+ - Verify target remote before issue or PR mutations.
4
+ - Avoid destructive operations without explicit confirmation.
5
+ - Merge only after required quality gates and review semantics are satisfied.
@@ -0,0 +1,5 @@
1
+ # Path Privacy Rule
2
+
3
+ - Do not store absolute user-specific paths in shared project artifacts.
4
+ - Prefer repository-relative paths in docs and logs.
5
+ - Run `.agents/scripts/check-path-standards.sh` before publishing major updates.
@@ -0,0 +1,5 @@
1
+ # Test Hygiene Rule
2
+
3
+ - Run quality gates based on risk profile.
4
+ - Persist execution evidence in task evidence logs and `.agents/logs`.
5
+ - Do not bypass required quality checks silently.
@@ -0,0 +1,5 @@
1
+ # Branch and Worktree Rule
2
+
3
+ - Keep one stream owner per shared file at a time.
4
+ - Sequence shared contract edits instead of concurrent mutation.
5
+ - Escalate contested file ownership immediately.
@@ -0,0 +1,31 @@
1
+ # Delano Runtime Scripts
2
+
3
+ This folder contains the script runtime described in `HANDBOOK.md`.
4
+
5
+ Canonical path: `.agents/scripts/...`
6
+
7
+ Compatibility path: `.claude/scripts/...` when the mirror is present.
8
+
9
+ ## PM scripts (`.agents/scripts/pm/`)
10
+
11
+ Critical path:
12
+ - `init.sh`
13
+ - `validate.sh`
14
+ - `status.sh`
15
+ - `next.sh`
16
+ - `blocked.sh`
17
+
18
+ Operational:
19
+ - `standup.sh`
20
+ - `in-progress.sh`
21
+ - `prd-list.sh`
22
+ - `epic-list.sh`
23
+ - `search.sh`
24
+
25
+ ## Audit and utility
26
+ - `log-event.sh` / `log-event.js`
27
+ - `query-log.sh`
28
+ - `test-and-log.sh`
29
+ - `check-path-standards.sh`
30
+ - `fix-path-standards.sh`
31
+ - `git-sparse-download.sh`
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
5
+ cd "$root"
6
+
7
+ matches_file="$(mktemp)"
8
+ trap 'rm -f "$matches_file"' EXIT
9
+
10
+ compat_paths=()
11
+ if [[ -e .claude || -L .claude ]]; then
12
+ compat_paths+=(.claude)
13
+ fi
14
+
15
+ if find .project .agents "${compat_paths[@]}" \
16
+ -type f \
17
+ \( -name '*.md' -o -name '*.json' -o -name '*.yaml' -o -name '*.yml' \) \
18
+ -not -path '.agents/logs/*' \
19
+ -not -path '.claude/logs/*' \
20
+ -print0 | xargs -0 grep -nE '(/home/[^[:space:]]+|/Users/[^[:space:]]+|[A-Za-z]:\\[^[:space:]]+)' > "$matches_file" 2>/dev/null; then
21
+ echo "Absolute path violations found:"
22
+ cat "$matches_file"
23
+ exit 1
24
+ fi
25
+
26
+ echo "Path standards check passed."
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ if [[ $# -lt 1 ]]; then
5
+ echo "Usage: $0 <file...>"
6
+ echo "Replaces absolute user paths with <ABS_PATH> in the provided files."
7
+ exit 1
8
+ fi
9
+
10
+ for file in "$@"; do
11
+ [[ -f "$file" ]] || { echo "Skip missing file: $file"; continue; }
12
+ perl -0777 -i -pe 's#/home/[^\s)]+#<ABS_PATH>#g; s#/Users/[^\s)]+#<ABS_PATH>#g; s#[A-Za-z]:\\[^\s)]+#<ABS_PATH>#g' "$file"
13
+ echo "Normalized paths in: $file"
14
+ done