Commit Graph
12 Commits
Author SHA1 Message Date
mrcharles 16cbeb4ed8 feat(hooks): add ticket-gate Crush hook — enforce ticket-first work
Mechanically enforces ticket-governed work: blocks modifying operations
until an active ticket is set (echo '#NNN' > .crush/active-ticket).
Exempts read-only tools and management commands.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-11 11:57:19 -05:00
mrcharles 1b899d32d3 docs(agents): never close tickets without user permission
Add NON-NEGOTIABLE rule: agents may suggest closing a ticket when the
result is clearly scoped and delivered, but must never close without
explicit user permission. Applies to ALL tickets, no exceptions.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-11 11:29:31 -05:00
mrcharles 29f33c4b03 fix(policy): ban harness question tools — questions-v(N).md only
Harness "ask user"/question tools (structured prompts, modal forms) are
not portable across harnesses, don't version history, and bypass the
git-tracked record. Make the existing questions-v(N).md rule explicit
and non-negotiable in both BASELINE-PROMPT.md §10 and AGENTS.md.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-10 16:03:57 -05:00
mrcharles d5a0e4d8f6 refactor(rules): point redmine-cli invocation at centralized creds store
Merge redmine-cli into tooling-cli/redmine and drop the
redmine-cli/.env source path from the rules. The canonical
invocation now uses ~/.creds/redmine.env (system-independent)
with the registry image. Marks Q2 (bin/ wrapper gap) fully
resolved for both redmine and discourse.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-10 09:53:41 -05:00
mrcharles cf1b444a45 refactor(rules): point discourse-cli invocation at centralized creds store
Merge discourse-cli into tooling-cli/discourse and drop the
discourse-cli/.env source path from the rules. The canonical
invocation now uses ~/.creds/discourse.env (system-independent)
with the registry image. Marks Q2 (bin/ wrapper gap) resolved.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-10 09:49:21 -05:00
mrcharles 9836e94e48 docs(rules): mandate Unix utilities for editing, codify host hygiene
Add three policy updates to AGENTS.md and BASELINE-PROMPT.md:

1. Prefer awk/sed/grep/cut/tr for file editing over built-in harness
   edit tools, which can be unreliable with whitespace and indentation.
2. Host hygiene is inviolable: only git, docker, and Unix utilities on
   the host. One-off tools get docker-pulled; broadly useful tools get
   a Redmine ticket for the human to install via package manager.
3. Never install language runtimes or non-base tools on the host.

💘 Generated with Crush

Assisted-by: Crush
2026-08-10 09:23:41 -05:00
mrcharles 5aa6368ed4 docs(rules): add cross-referencing and sync mandates
Three new rules added to AGENTS.md and BASELINE-PROMPT.md:

1. Code/docs/tests must be kept in sync at all times — update all three
   in the same commit when making changes.
2. Redmine and Discourse must cross-reference each other — every ticket
   links to its Discourse doc and vice versa.
3. Commits must reference Redmine tickets ([#NNN]); PRs must link to
   both Redmine and Discourse.

💘 Generated with Crush

Assisted-by: Crush
2026-08-10 09:18:31 -05:00
mrcharles 0d76ca4ca5 refactor: restore Makefile, document two usage modes
The framework supports both technical operations (SSH/screen/CLI/harness)
and knowledge work (Hermes/OWUI/Conduit via MCP/API). The Makefile is
restored as a convenience layer over the scripts — use make or call
scripts directly, whichever fits the interface you're working through.

README rewritten with a Mode 1 / Mode 2 comparison table. AGENTS.md key
commands now show both make and direct script invocation. ADOPTING.md
updated to use make shorthand.

The scripts remain the real entry points; make is shorthand. Mode 2
agents invoke the same scripts via container exec or MCP tool calls.

💘 Generated with Crush

Assisted-by: Crush via Crush <crush@charm.land>
2026-08-07 12:17:40 -05:00
mrcharles f5292183f4 refactor: remove Makefile, restructure as knowledge-first framework
The primary value is the knowledge layer (markdown files that any agent
reads — Crush, OpenWebUI, Hermes, Conduit on iPhone). CLI tooling
(scripts, git hooks) is optional, for projects that use git/docker.

Changes:
- Remove Makefile entirely. All commands are now direct script invocations
  (bash scripts/check-rules.sh, bash scripts/setup-hooks.sh, etc.)
- Add scripts/test.sh stub (replaces make test)
- check-rules.sh: test-suite check now calls scripts/test.sh, not make test
- Rewrite README as three-layer architecture: knowledge → git hooks → docker
- Update all docs (AGENTS.md, BASELINE-PROMPT.md, ADOPTING.md, PATTERNS.md,
  STATUS.md) to remove every make reference

The framework now works for:
- CLI/harness users (git hooks + scripts + AGENTS.md)
- Non-CLI users (BASELINE-PROMPT.md loaded into any agent's system prompt)

💘 Generated with Crush

Assisted-by: Crush via Crush <crush@charm.land>
2026-08-07 12:14:30 -05:00
mrcharles 3d83b07f30 fix: purge stale Crush references from all docs
Remove references to crush.json, hooks/, and Crush-specific enforcement
from README, AGENTS.md, BASELINE-PROMPT.md, and PATTERNS.md. Generalize
the commit footer to be harness-agnostic (<harness/tool> placeholder).
Update PATTERNS.md decisions and scorecard to reflect the reversal:
Crush hooks were studied but deliberately not shipped.

The only remaining Crush mention explicitly states it is avoided for
portability. The .crush/memory/ dir is kept as an optional Crush feature.

💘 Generated with Crush

Assisted-by: Crush via Crush <crush@charm.land>
2026-08-07 12:11:10 -05:00
mrcharles 9dc85ba41e refactor: go harness-agnostic — drop Crush hooks, enforce Discourse SoR
Apply answers to questions-v1.md (Q1–Q5):

- Q4: Remove crush.json and hooks/ entirely. All enforcement is now portable
  via git hooks (pre-commit/pre-push) + check-rules.sh + AGENTS.md prose.
  Works under Crush, OpenWebUI, Hermes, or any agent framework.
- Q5: Remove docs/JOURNAL.md. Redmine is the system of record for work;
  Discourse for docs. JOURNAL.md was a stopgap.
- Q3: Add mandatory Discourse pointer-header check to check-rules.sh. Any
  non-exempt tracked .md without a Discourse URL FAILs. All projects, no
  exceptions.
- Q2: Reference real CLI container invocation paths
  (KNEL-AIMiddleware/{redmine,discourse}-cli/) in AGENTS.md instead of the
  missing bin/ shortcuts.
- Q1: Note tea + docker login are preconfigured on TSYS workstations.

Also: make test default is now no-op pass so the template self-validates;
make validate now passes clean on the repo itself (17 PASS / 0 FAIL).

💘 Generated with Crush

Assisted-by: Crush via Crush <crush@charm.land>
2026-08-07 12:04:04 -05:00
mrcharles 374288a105 feat: bootstrap meta — cross-project best-practices template
Extract patterns from 18 projects across two machines (12 local infra +
6 remote personal/business via ssh survey). Ship a reusable Gitea template
with AGENTS.md, 5 Crush PreToolUse hooks, git pre-commit/pre-push, a
generalized rules engine, shared bash library, Makefile, lifecycle scripts,
and gardening loop. Includes the canonical BASELINE-PROMPT.md (13 sections)
and PATTERNS.md (standardization scorecard).

The repo self-applies: it passes its own shellcheck (zero info-level),
make fast, and all check-rules.sh checks.

💘 Generated with Crush

Assisted-by: Crush via Crush <crush@charm.land>
2026-08-07 11:17:53 -05:00