Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cursor/rules/ai-context-proxy.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ export PATH="$PWD/tools/ai-context-proxy/wrappers:$PWD/tools/ai-context-proxy/bi

## Backlog

- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.json` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, and `tools/backlog validate` for normal backlog work.
- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.sqlite` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, `tools/backlog validate`, and `tools/backlog stage` for normal backlog work.
- Before marking a task done, self-verify every acceptance item and record the result with `tools/backlog done <ID> --verification "..."`.
- If a task changes UI, changes gameplay mechanics, or adds player-facing mechanics, update both `MULTIPLAYER_GUIDE_RU.md` and `MULTIPLAYER_GUIDE_EN.md` before marking it done.

Expand Down
10 changes: 10 additions & 0 deletions .eclipse/configurations/Client.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bannermod"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.neoforged.devlaunch.Main"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/clientRunProgramArgs.txt"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/clientRunVmArgs.txt -Dfml.modFolders=bannermod%%/home/kaiserroman/bannermod/bin/main:bannermod%%/home/kaiserroman/bannermod/bin/gametest"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/home/kaiserroman/bannermod/run"></stringAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.STOP_IN_MAIN" value="false"></booleanAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"></booleanAttribute>
</launchConfiguration>
10 changes: 10 additions & 0 deletions .eclipse/configurations/Data.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bannermod"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.neoforged.devlaunch.Main"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/dataRunProgramArgs.txt"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/dataRunVmArgs.txt -Dfml.modFolders=bannermod%%/home/kaiserroman/bannermod/bin/main:bannermod%%/home/kaiserroman/bannermod/bin/gametest"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/home/kaiserroman/bannermod/run"></stringAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.STOP_IN_MAIN" value="false"></booleanAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"></booleanAttribute>
</launchConfiguration>
10 changes: 10 additions & 0 deletions .eclipse/configurations/GameTestServer.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bannermod"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.neoforged.devlaunch.Main"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/gameTestServerRunProgramArgs.txt"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/gameTestServerRunVmArgs.txt -Dfml.modFolders=bannermod%%/home/kaiserroman/bannermod/bin/main:bannermod%%/home/kaiserroman/bannermod/bin/gametest"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/home/kaiserroman/bannermod/run_gametest"></stringAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.STOP_IN_MAIN" value="false"></booleanAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"></booleanAttribute>
</launchConfiguration>
10 changes: 10 additions & 0 deletions .eclipse/configurations/Server.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" ?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bannermod"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.neoforged.devlaunch.Main"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/serverRunProgramArgs.txt"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value=" @/home/kaiserroman/bannermod/build/moddev/serverRunVmArgs.txt -Dfml.modFolders=bannermod%%/home/kaiserroman/bannermod/bin/main:bannermod%%/home/kaiserroman/bannermod/bin/gametest"></stringAttribute>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/home/kaiserroman/bannermod/run"></stringAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.STOP_IN_MAIN" value="false"></booleanAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"></booleanAttribute>
</launchConfiguration>
4 changes: 2 additions & 2 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ source tools/ai-context-proxy/env.sh

## Backlog

- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.json` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, and `tools/backlog validate` for normal backlog work.
- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.sqlite` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, `tools/backlog validate`, and `tools/backlog stage` for normal backlog work.
- Before marking a task done, self-verify every acceptance item and record the result with `tools/backlog done <ID> --verification "..."`.
- If a task changes UI, changes gameplay mechanics, or adds player-facing mechanics, update both `MULTIPLAYER_GUIDE_RU.md` and `MULTIPLAYER_GUIDE_EN.md` before marking it done.

Expand Down
18 changes: 18 additions & 0 deletions .opencode/agents/code-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description: Independent BannerMod code review for pending changes or PRs.
mode: subagent
permission:
edit: deny
todowrite: deny
temperature: 0.1
---

Review pending BannerMod changes as an independent reviewer.

Primary goal: find bugs, regressions, security/authority issues, missing tests, and behavior mismatches. Findings are more important than summaries.

Use the repository rules in `AGENTS.md`. Inspect the worktree with `tools/ai-context-proxy/bin/ctx status` and `tools/ai-context-proxy/bin/ctx diff` before reviewing code. Use `ctx file`, `ctx exact`, and `ctx search` for context rather than raw dumps.

Do not edit files. Do not refactor. Do not propose style-only churn unless it hides a real defect.

Report findings first, ordered by severity, with file and line references. If no findings are found, say that explicitly and list residual risks or tests not run.
15 changes: 15 additions & 0 deletions .opencode/agents/code-simplifier.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
description: Post-slice cleanup pass for changed BannerMod code.
mode: subagent
temperature: 0.1
---

Review the current implementation slice for unnecessary complexity and make only the smallest safe cleanup edits.

Use this after a non-trivial implementation and before commit. Start with `tools/ai-context-proxy/bin/ctx status` and `tools/ai-context-proxy/bin/ctx diff` so the cleanup is limited to the active change set.

Allowed cleanup: remove redundancy introduced by the slice, tighten names when they are misleading, reduce needless helpers, and delete dead imports created by the slice.

Not allowed: broad refactors, new abstractions, behavior changes, formatting churn, or edits to unrelated files. Preserve the user's worktree changes.

After editing, summarize exactly what changed and what verification is still needed.
15 changes: 15 additions & 0 deletions .opencode/agents/jd-tls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
description: Java/JDTLS-assisted inspection for compiled APIs, jars, and diagnostics.
mode: subagent
permission:
edit: deny
temperature: 0.1
---

Use the configured `jdtls` LSP and compact repository tools to inspect Java symbols, diagnostics, and compiled dependencies.

Prefer source and LSP diagnostics first. When source is unavailable or misleading, inspect bytecode or jar contents with bounded commands through `tools/ai-context-proxy/bin/ctx log -- ...` and keep output compact.

Good targets: NeoForge/Minecraft APIs, optional mod jars, vendored jars, binary-only dependencies, and classpath or symbol-resolution failures.

Do not edit files. Return concise findings with exact class, method, or jar references and explain how the result affects the current task.
4 changes: 2 additions & 2 deletions .opencode/plugins/project-guardrails.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ export const BannerModProjectGuardrails = async () => {
if (!command) return
if (SAFE_PREFIXES.some((prefix) => command.startsWith(prefix))) return

if (command.includes("BANNERMOD_BACKLOG.json")) {
if (command.includes("BANNERMOD_BACKLOG.json") || command.includes("BANNERMOD_BACKLOG.sqlite")) {
throw new Error(
"Blocked direct backlog JSON access. Use tools/backlog batch/show/add/validate instead."
"Blocked direct backlog access. Use tools/backlog batch/show/add/validate/stage instead."
)
}

Expand Down
4 changes: 2 additions & 2 deletions .windsurf/rules/ai-context-proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ source tools/ai-context-proxy/env.sh

## Backlog

- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.json` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, and `tools/backlog validate` for normal backlog work.
- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.sqlite` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, `tools/backlog validate`, and `tools/backlog stage` for normal backlog work.
- Before marking a task done, self-verify every acceptance item and record the result with `tools/backlog done <ID> --verification "..."`.
- If a task changes UI, changes gameplay mechanics, or adds player-facing mechanics, update both `MULTIPLAYER_GUIDE_RU.md` and `MULTIPLAYER_GUIDE_EN.md` before marking it done.

Expand Down
7 changes: 4 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,9 @@ After coding, provide:
- For multi-line commit messages: write the message to `/tmp/commit_msg.txt` via the file-writing tool, then `git commit -F /tmp/commit_msg.txt`. The `ctx` pre-bash hook blocks heredoc patterns (`<<'EOF'`).

10. Backlog hygiene
- `docs/BANNERMOD_BACKLOG.json` is the single canonical backlog. `docs/BANNERMOD_BACKLOG.md` is only a pointer and must not contain task data.
- Use `tools/backlog` for normal backlog work instead of reading or dumping the JSON directly: `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog list --status open`, `tools/backlog validate`.
- `docs/BANNERMOD_BACKLOG.sqlite` is the single canonical backlog. `docs/BANNERMOD_BACKLOG.md` is only a pointer and must not contain task data.
- Use `tools/backlog` for normal backlog work instead of reading or dumping the SQLite DB directly: `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog list --status open`, `tools/backlog validate`.
- Use `tools/backlog stage` to stage canonical backlog DB changes; do not run raw `git add docs/BANNERMOD_BACKLOG.sqlite`.
- When adding a task, use `tools/backlog add <ID> <title> --why ... --scope ... --acceptance ...`. Every task must include `id`, `title`, `why`, concrete scope deliverables, and verifiable acceptance checks.
- **DONE = every acceptance item is observably satisfied right now.** Closing a task is a binary check against the existing acceptance list, not a judgement call. If any acceptance item describes gameplay-observable behaviour you cannot demonstrate from current code, the task stays open even when supporting infrastructure landed.
- Before marking a task done, verify your own implementation against every acceptance item. Record the exact verification result with `tools/backlog done <ID> --verification "..."`; if verification cannot be run, record what blocked it instead of pretending it passed.
Expand All @@ -85,7 +86,7 @@ After coding, provide:
11. Contribution flow
- Read `docs/STATUS.md` before picking up brownfield work.
- Use `docs/CONTRIBUTING.md` as the contribution flow for code, tests, docs, and commits.
- Use `tools/backlog` to inspect and update the canonical active backlog (`docs/BANNERMOD_BACKLOG.json`).
- Use `tools/backlog` to inspect and update the canonical active backlog (`docs/BANNERMOD_BACKLOG.sqlite`).
- Put module documentation under `docs/`; keep root player guides split as `MULTIPLAYER_GUIDE_RU.md` and `MULTIPLAYER_GUIDE_EN.md`.
- The local context multitool is documented in `tools/ai-context-proxy/README.md` and summarized in `docs/TOOLS.md`.
- If the user invokes `/backlog-execute [N]`, treat it as an execution command, not a planning request: default `N=5`, run `tools/backlog ready N`, pick that batch as the active queue, and begin execution under the backlog dependency, worktree, feature-branch, and finish-or-split rules.
Expand Down
4 changes: 2 additions & 2 deletions GEMINI.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ source tools/ai-context-proxy/env.sh

## Backlog

- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.json` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, and `tools/backlog validate` for normal backlog work.
- Use `tools/backlog` instead of reading `docs/BANNERMOD_BACKLOG.sqlite` directly.
- Use `tools/backlog batch --limit 5`, `tools/backlog show <ID>`, `tools/backlog add ... --dry-run`, `tools/backlog validate`, and `tools/backlog stage` for normal backlog work.
- Before marking a task done, self-verify every acceptance item and record the result with `tools/backlog done <ID> --verification "..."`.
- If a task changes UI, changes gameplay mechanics, or adds player-facing mechanics, update both `MULTIPLAYER_GUIDE_RU.md` and `MULTIPLAYER_GUIDE_EN.md` before marking it done.

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The active mod lives in the root `src/**` tree under the `bannermod` runtime. Th
- Documentation index: `docs/README.md`
- Current developer status: `docs/STATUS.md`
- Contribution flow: `docs/CONTRIBUTING.md`
- Canonical unfinished-work queue: `docs/BANNERMOD_BACKLOG.json` via `tools/backlog`
- Canonical unfinished-work queue: `docs/BANNERMOD_BACKLOG.sqlite` via `tools/backlog`

## Current Gameplay Shape

Expand All @@ -25,7 +25,7 @@ BannerMod is playable in pieces and still under active stabilization. The curren
- government-form editing for monarchy/republic authority differences;
- recruit formation stance control, shield-wall behavior, reach weapons, flanking, cohesion, brace, and counter rules.

Important unfinished areas remain in `docs/BANNERMOD_BACKLOG.json`; use `tools/backlog batch --limit 5` instead of reading the full file directly.
Important unfinished areas remain in `docs/BANNERMOD_BACKLOG.sqlite`; use `tools/backlog batch --limit 5` instead of reading the database directly.

## Build

Expand All @@ -41,7 +41,7 @@ Use `./gradlew verifyGameTestStage` when changing gameplay wiring, ownership, AI
- Active source: `src/**`
- Active mod id: `bannermod`
- Active planning: `.planning/`
- Active backlog: `docs/BANNERMOD_BACKLOG.json` via `tools/backlog`
- Active backlog: `docs/BANNERMOD_BACKLOG.sqlite` via `tools/backlog`
- Archive/reference source trees: `recruits/`, `workers/`

Do not revive old duplicate faction, diplomacy, worker, or siege systems as parallel gameplay. If code and old planning notes disagree, trust the live code and update the backlog or docs instead of adding compatibility layers without a concrete need.
Loading
Loading