merge 2a2f1add-8c19-4d2f-a974-e393bc323433

429c159gl0w

all commits

Message

merge 2a2f1add-8c19-4d2f-a974-e393bc323433

Diff

.forge/ci/steps/01_test.sh+5 −0
diff --git a/.forge/ci/steps/01_test.sh b/.forge/ci/steps/01_test.shnew file mode 100755index 0000000..ee824a5--- /dev/null+++ b/.forge/ci/steps/01_test.sh@@ -0,0 +1,5 @@1+#!/bin/sh2+# 01_test: workspace tests must pass (55 tests).3+set -e4+export CARGO_BUILD_JOBS=25+cargo test --workspace --locked
.forge/ci/steps/02_budget.sh+20 −0
diff --git a/.forge/ci/steps/02_budget.sh b/.forge/ci/steps/02_budget.shnew file mode 100755index 0000000..ad9afec--- /dev/null+++ b/.forge/ci/steps/02_budget.sh@@ -0,0 +1,20 @@1+#!/bin/sh2+# 02_budget: byte-count hard budgets (PLAN M2).3+# root help <=300B/12 lines; --skill <=900B/30 lines; each <cmd> -h <=250B/8 lines.4+set -e5+export CARGO_BUILD_JOBS=26+fail() { echo "budget fail: $1" >&2; exit 1; }7+check() {8+  name="$1"; bytes="$2"; lines="$3"; maxb="$4"; maxl="$5"9+  if [ "$bytes" -gt "$maxb" ]; then fail "$name ${bytes}B > ${maxb}B"; fi10+  if [ "$lines" -gt "$maxl" ]; then fail "$name ${lines} lines > ${maxl}"; fi11+}12+bytes=$(f0rge | wc -c); lines=$(f0rge | wc -l)13+check "root help" "$bytes" "$lines" 300 1214+bytes=$(f0rge --skill | wc -c); lines=$(f0rge --skill | wc -l)15+check "--skill" "$bytes" "$lines" 900 3016+for sub in issue pr task label milestone ci wiki release merge init skill; do17+  bytes=$(f0rge "$sub" -h | wc -c); lines=$(f0rge "$sub" -h | wc -l)18+  check "$sub -h" "$bytes" "$lines" 250 819+done20+echo "budgets ok"
.forge/ci/steps/03_release.sh+5 −0
diff --git a/.forge/ci/steps/03_release.sh b/.forge/ci/steps/03_release.shnew file mode 100755index 0000000..9ef77b5--- /dev/null+++ b/.forge/ci/steps/03_release.sh@@ -0,0 +1,5 @@1+#!/bin/sh2+# 03_release: release build must succeed.3+set -e4+export CARGO_BUILD_JOBS=25+cargo build --locked --release
.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/patch.diff+146 −0
diff --git a/.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/patch.diff b/.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/patch.diffnew file mode 100644index 0000000..717c11e--- /dev/null+++ b/.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/patch.diff@@ -0,0 +1,146 @@1+From 3c226f3e4b54161a923d57884252bf92c9cc3437 Mon Sep 17 00:00:00 20012+From: z <gl0w@world>3+Date: Tue, 8 Sep 2026 04:44:46 +01004+Subject: [PATCH] dogfood: bootstrap docs to wiki + local CI (#2)5+6+---7+ .forge/ci/steps/01_test.sh                |  5 +++++8+ .forge/ci/steps/02_budget.sh              | 20 ++++++++++++++++++++9+ .forge/ci/steps/03_release.sh             |  5 +++++10+ AGENTS.md => .forge/wiki/docs/AGENTS.md   |  6 +++---11+ OUTLINE.md => .forge/wiki/docs/OUTLINE.md |  012+ PLAN.md => .forge/wiki/docs/PLAN.md       |  4 ++--13+ {tests => .forge/wiki/docs}/audit.md      |  014+ {docs => .forge/wiki/docs}/build-log.md   |  015+ 8 files changed, 35 insertions(+), 5 deletions(-)16+ create mode 100755 .forge/ci/steps/01_test.sh17+ create mode 100755 .forge/ci/steps/02_budget.sh18+ create mode 100755 .forge/ci/steps/03_release.sh19+ rename AGENTS.md => .forge/wiki/docs/AGENTS.md (95%)20+ rename OUTLINE.md => .forge/wiki/docs/OUTLINE.md (100%)21+ rename PLAN.md => .forge/wiki/docs/PLAN.md (99%)22+ rename {tests => .forge/wiki/docs}/audit.md (100%)23+ rename {docs => .forge/wiki/docs}/build-log.md (100%)24+25+diff --git a/.forge/ci/steps/01_test.sh b/.forge/ci/steps/01_test.sh26+new file mode 10075527+index 0000000..ee824a528+--- /dev/null29++++ b/.forge/ci/steps/01_test.sh30+@@ -0,0 +1,5 @@31++#!/bin/sh32++# 01_test: workspace tests must pass (55 tests).33++set -e34++export CARGO_BUILD_JOBS=235++cargo test --workspace --locked36+diff --git a/.forge/ci/steps/02_budget.sh b/.forge/ci/steps/02_budget.sh37+new file mode 10075538+index 0000000..ad9afec39+--- /dev/null40++++ b/.forge/ci/steps/02_budget.sh41+@@ -0,0 +1,20 @@42++#!/bin/sh43++# 02_budget: byte-count hard budgets (PLAN M2).44++# root help <=300B/12 lines; --skill <=900B/30 lines; each <cmd> -h <=250B/8 lines.45++set -e46++export CARGO_BUILD_JOBS=247++fail() { echo "budget fail: $1" >&2; exit 1; }48++check() {49++  name="$1"; bytes="$2"; lines="$3"; maxb="$4"; maxl="$5"50++  if [ "$bytes" -gt "$maxb" ]; then fail "$name ${bytes}B > ${maxb}B"; fi51++  if [ "$lines" -gt "$maxl" ]; then fail "$name ${lines} lines > ${maxl}"; fi52++}53++bytes=$(f0rge | wc -c); lines=$(f0rge | wc -l)54++check "root help" "$bytes" "$lines" 300 1255++bytes=$(f0rge --skill | wc -c); lines=$(f0rge --skill | wc -l)56++check "--skill" "$bytes" "$lines" 900 3057++for sub in issue pr task label milestone ci wiki release merge init skill; do58++  bytes=$(f0rge "$sub" -h | wc -c); lines=$(f0rge "$sub" -h | wc -l)59++  check "$sub -h" "$bytes" "$lines" 250 860++done61++echo "budgets ok"62+diff --git a/.forge/ci/steps/03_release.sh b/.forge/ci/steps/03_release.sh63+new file mode 10075564+index 0000000..9ef77b565+--- /dev/null66++++ b/.forge/ci/steps/03_release.sh67+@@ -0,0 +1,5 @@68++#!/bin/sh69++# 03_release: release build must succeed.70++set -e71++export CARGO_BUILD_JOBS=272++cargo build --locked --release73+diff --git a/AGENTS.md b/.forge/wiki/docs/AGENTS.md74+similarity index 95%75+rename from AGENTS.md76+rename to .forge/wiki/docs/AGENTS.md77+index bcb7090..91e4de1 10064478+--- a/AGENTS.md79++++ b/.forge/wiki/docs/AGENTS.md80+@@ -15,7 +15,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).81+ 1. `AGENTS.md` — this file82+ 2. `OUTLINE.md` — the what/why; read once before any work83+ 3. `PLAN.md` — the how/when; find your chunk, obey its contract exactly84+-4. `spec/` — frozen schema (exists after M0); the only source of truth for formats85++4. `spec/` at repo root — frozen schema (exists after M0); the only source of truth for formats86+ 87+ ## Philosophies (non-negotiable)88+ 89+@@ -49,7 +49,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).90+   PR folder (`diff` + `.forge/prs/<uuid>/`), CI green before merge.91+ - Claim one chunk from PLAN.md; do exactly its scope (Inputs → Outputs →92+   Interfaces → Definition of done). Never expand scope mid-chunk.93+-- Log one line per chunk in `docs/build-log.md`: `chunk | sha | verdict`.94++- Log one line per chunk in `build-log.md` (co-located in `.forge/wiki/docs/`): `chunk | sha | verdict`.95+ - When a change smells like design, file an issue — don't improvise into96+   code. Design changes go to OUTLINE.md first, then PLAN.md, then code.97+ 98+@@ -70,7 +70,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).99+ - Errors: one line on stderr + exit code (0 ok / 1 runtime / 2 usage).100+   No panics on hostile input. No stack traces. No paths beyond the101+   offending file name.102+-- Output: `--json` compact, fixed field order documented in spec/; empty103++- Output: `--json` compact, fixed field order documented in repo-root `spec/`; empty104+   result is `[]` or `{}`, never prose. Human mode is a thin aligned view105+   of the same data. Hard budgets: PLAN.md §M2 table — `f0rge` ≤ 12 lines,106+   `-h` ≤ 8 lines, `--skill` ≤ 30 lines, errors 1 line.107+diff --git a/OUTLINE.md b/.forge/wiki/docs/OUTLINE.md108+similarity index 100%109+rename from OUTLINE.md110+rename to .forge/wiki/docs/OUTLINE.md111+diff --git a/PLAN.md b/.forge/wiki/docs/PLAN.md112+similarity index 99%113+rename from PLAN.md114+rename to .forge/wiki/docs/PLAN.md115+index 9fa0640..1876cf3 100644116+--- a/PLAN.md117++++ b/.forge/wiki/docs/PLAN.md118+@@ -71,7 +71,7 @@ Both crates `#![forbid(unsafe_code)]`.119+ ## 2. Milestones and their dependency graph120+ 121+ ```122+-M0  schema v1 frozen (spec/)                — blocks everything123++M0  schema v1 frozen (repo-root spec/)                — blocks everything124+ M1  core storage + derived indexes          — blocks all entity commands125+ M2  CLI skeleton + token budgets            — blocks polish; parallel w/ M3126+ M3  entity commands: issues, prs, labels, milestones, tasks127+@@ -343,7 +343,7 @@ hashes documented.128+ 129+ 1. A chunk lists **Inputs / Outputs / Interfaces / Definition of done**.130+    Claim one, build it, run its acceptance tests, record the result in131+-   `docs/build-log.md` (one line per chunk: chunk, sha, verdict).132++   `build-log.md` (co-located in `.forge/wiki/docs/`) (one line per chunk: chunk, sha, verdict).133+ 2. Monorepo, single trunk: work happens in worktrees; merges onto main134+    are the same ritual as the product itself — this repo eats its own135+    dogfood from M3 onward.136+diff --git a/tests/audit.md b/.forge/wiki/docs/audit.md137+similarity index 100%138+rename from tests/audit.md139+rename to .forge/wiki/docs/audit.md140+diff --git a/docs/build-log.md b/.forge/wiki/docs/build-log.md141+similarity index 100%142+rename from docs/build-log.md143+rename to .forge/wiki/docs/build-log.md144+-- 145+2.47.3146+
.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/pr.md+13 −0
diff --git a/.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/pr.md b/.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/pr.mdnew file mode 100644index 0000000..528ab3e--- /dev/null+++ b/.forge/prs/e769d904-3ced-4ad7-8619-f9a68ced736b/pr.md@@ -0,0 +1,13 @@1+---2+id: e769d904-3ced-4ad7-8619-f9a68ced736b3+title: 'dog-boot: bootstrap (#2)'4+state: open5+base: main6+head: dog-boot7+draft: false8+issues:9+- 9f88d4ad-3fd1-4021-851b-ef88e11fbaa910+ci: null11+created: 2026-09-08T03:44:52Z12+updated: null13+---
.forge/wiki/docs/AGENTS.md+3 −3
diff --git a/AGENTS.md b/.forge/wiki/docs/AGENTS.mdsimilarity index 95%rename from AGENTS.mdrename to .forge/wiki/docs/AGENTS.mdindex bcb7090..91e4de1 100644--- a/AGENTS.md+++ b/.forge/wiki/docs/AGENTS.md@@ -15,7 +15,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).1515 1. `AGENTS.md` — this file1616 2. `OUTLINE.md` — the what/why; read once before any work1717 3. `PLAN.md` — the how/when; find your chunk, obey its contract exactly18-4. `spec/` — frozen schema (exists after M0); the only source of truth for formats18+4. `spec/` at repo root — frozen schema (exists after M0); the only source of truth for formats1919 2020 ## Philosophies (non-negotiable)2121 @@ -49,7 +49,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).4949   PR folder (`diff` + `.forge/prs/<uuid>/`), CI green before merge.5050 - Claim one chunk from PLAN.md; do exactly its scope (Inputs → Outputs →5151   Interfaces → Definition of done). Never expand scope mid-chunk.52-- Log one line per chunk in `docs/build-log.md`: `chunk | sha | verdict`.52+- Log one line per chunk in `build-log.md` (co-located in `.forge/wiki/docs/`): `chunk | sha | verdict`.5353 - When a change smells like design, file an issue — don't improvise into5454   code. Design changes go to OUTLINE.md first, then PLAN.md, then code.5555 @@ -70,7 +70,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).7070 - Errors: one line on stderr + exit code (0 ok / 1 runtime / 2 usage).7171   No panics on hostile input. No stack traces. No paths beyond the7272   offending file name.73-- Output: `--json` compact, fixed field order documented in spec/; empty73+- Output: `--json` compact, fixed field order documented in repo-root `spec/`; empty7474   result is `[]` or `{}`, never prose. Human mode is a thin aligned view7575   of the same data. Hard budgets: PLAN.md §M2 table — `f0rge` ≤ 12 lines,7676   `-h` ≤ 8 lines, `--skill` ≤ 30 lines, errors 1 line.
OUTLINE.md+0 −0
diff --git a/OUTLINE.md b/.forge/wiki/docs/OUTLINE.mdsimilarity index 100%rename from OUTLINE.mdrename to .forge/wiki/docs/OUTLINE.md
.forge/wiki/docs/PLAN.md+2 −2
diff --git a/PLAN.md b/.forge/wiki/docs/PLAN.mdsimilarity index 99%rename from PLAN.mdrename to .forge/wiki/docs/PLAN.mdindex 9fa0640..1876cf3 100644--- a/PLAN.md+++ b/.forge/wiki/docs/PLAN.md@@ -71,7 +71,7 @@ Both crates `#![forbid(unsafe_code)]`.7171 ## 2. Milestones and their dependency graph7272 7373 ```74-M0  schema v1 frozen (spec/)                — blocks everything74+M0  schema v1 frozen (repo-root spec/)                — blocks everything7575 M1  core storage + derived indexes          — blocks all entity commands7676 M2  CLI skeleton + token budgets            — blocks polish; parallel w/ M37777 M3  entity commands: issues, prs, labels, milestones, tasks@@ -343,7 +343,7 @@ hashes documented.343343 344344 1. A chunk lists **Inputs / Outputs / Interfaces / Definition of done**.345345    Claim one, build it, run its acceptance tests, record the result in346-   `docs/build-log.md` (one line per chunk: chunk, sha, verdict).346+   `build-log.md` (co-located in `.forge/wiki/docs/`) (one line per chunk: chunk, sha, verdict).347347 2. Monorepo, single trunk: work happens in worktrees; merges onto main348348    are the same ritual as the product itself — this repo eats its own349349    dogfood from M3 onward.
tests/audit.md+0 −0
diff --git a/tests/audit.md b/.forge/wiki/docs/audit.mdsimilarity index 100%rename from tests/audit.mdrename to .forge/wiki/docs/audit.md
docs/build-log.md+0 −0
diff --git a/docs/build-log.md b/.forge/wiki/docs/build-log.mdsimilarity index 100%rename from docs/build-log.mdrename to .forge/wiki/docs/build-log.md