Skip to content

Commit 5cc5691

Browse files
Sync Boatstack from Intelligence Flow f761e7e73e98 (#19)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 13344f7 commit 5cc5691

11 files changed

Lines changed: 215 additions & 134 deletions

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Contributing
44

5-
Boatstack is a generated content distribution. Propose changes to workflow semantics, templates, evidence rules, or generated presentation in [Intelligence Flow](https://github.com/operatorstack/intelligence-flow/tree/09388a6c92ece15283a8d0dc2b7edef3d2cc3aba/examples/12-product-engineering-loop).
5+
Boatstack is a generated content distribution. Propose changes to workflow semantics, templates, evidence rules, or generated presentation in [Intelligence Flow](https://github.com/operatorstack/intelligence-flow/tree/f761e7e73e982b0bf5562197519d0b5bc7b937f0/examples/12-product-engineering-loop).
66

77
The Boatstack repository receives product/runtime changes through a generated pull request. Review the PR's `UPSTREAM.json`, tests, adapter diff, and context-size change; do not hand-edit generated output on `main`. `.github/workflows` is the exception: it is Boatstack's executable control plane, excluded from scheduled projection and changed only through a separate manually reviewed Boatstack PR.
88

README.md

Lines changed: 53 additions & 72 deletions
Large diffs are not rendered by default.

UPSTREAM.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
},
1313
"files": {
1414
".gitignore": "a7079e923a776f14f1bb3a6aa0a11a133a8e1dfb35af020f327623357b7e3957",
15-
"CONTRIBUTING.md": "fbc9acf97597aaad553fc0a1b78af6ba70b92eb4174c61d46718595f765765bd",
16-
"README.md": "9e82e07dd95021ea9cb307e0e13a14747852be051d8a9b1261db15b24b919879",
15+
"CONTRIBUTING.md": "845be08f967dc10b776ffd24ab05cabbd8c4945dc331f9fca5c8047b94ce08ce",
16+
"README.md": "fe52800af55f9867f3a7dfeafd17e2ebc3cca6c19a8f787c7eaf6d27f25028fc",
1717
"assets/boatstack-journey.svg": "c1f7fe2741f5e9ca66bb3fe9b103e6364ba5acbca8b7a8054768ffd85cf325ea",
1818
"assets/boatstack-mark.svg": "c46e935f06fcfde3b37abfd579c1963b765b2337a0fa993f9538c9b652297e39",
19-
"assets/boatstack-model-choice.svg": "979952c2fc6220d41426f9072186fca000fb3f388a4e775cc09cc1e830ebdde4",
19+
"assets/boatstack-portability.svg": "38c61b51959ebf5378b1857cdaacfae843a5ffc35350685fc6d1d2b8b9e165a3",
2020
"boatstack/SKILL.md": "5c37ec90eb8c3eae60f435f5d62afd1dc826f8bca6916726588379bcb99f3f58",
2121
"boatstack/agents/openai.yaml": "68a30a60859556c5a26e16d184594ca243a6043d99c8cf7d66b5dd6d50a93cd1",
2222
"boatstack/assets/templates/adr.md": "c577a3c1c1319061f61deb053597e6e853657022185fe28b8f733327e2a78565",
@@ -33,7 +33,7 @@
3333
"boatstack/atomic_windows.go": "cefd775cbe7e7c3bd8a3f5673b11cdd784c6d3ebd6de7dcb8f39406b0bee511f",
3434
"boatstack/cmd/boatstack-helper/main.go": "32d73f6ac8e87cbe7ebd8ee74e63dfe6f0b8b35da1d3200e23dcf011be9c19ea",
3535
"boatstack/export.go": "c53c5ec83dcea392d2e360c6819202b5f7cf9b3ae64510087bd627c4aaee82e3",
36-
"boatstack/export_test.go": "f95be9c458645e9b150f25921a0452c9e10e6a94809567ee5ddbc8e833e4f040",
36+
"boatstack/export_test.go": "da9b04e3e03c10f4095ac339d303c1699df3a0b3d68158b09746769c04031f5b",
3737
"boatstack/go.mod": "57c377eccea51372d6664de4169e2ca45806b046f7e8a98a1e35a9eb454b4b8d",
3838
"boatstack/hooks.go": "aed9cee6d3e3fb42e5e98288eade420793a07a4b071e78a613fc888c74521406",
3939
"boatstack/hooks_test.go": "a5298b7f46709bce617913085fe3b597a4bb4f730a5b5b51f459be85adbefcbb",
@@ -64,22 +64,22 @@
6464
"docs/account-recovery-walkthrough.md": "acd3558a95f48004f18a0590670de496e1cc9f0cd1d187f924615497f57e1d6f",
6565
"docs/benchmark-corpus-audit.md": "f2d206fe8579a514f9da82b2c96c19b343ac004be67617e1bd34f0f8e0e5e6c6",
6666
"docs/benchmark-submission-audit.md": "9518abdd17690729c6423f87cab20418ed47b0915b5faa44b9ef975e9e9c3b79",
67-
"docs/evidence-engineered-coding.md": "7240e06a5f1ee2fc6cecf2777f6438a5b7ebdaae96fe8f7ef626886dcab6f666",
67+
"docs/evidence-engineered-coding.md": "4642e600fc527d1583dc13b21f8b132d6222b6fc0bc0f1c2cab8f283f3aab766",
6868
"docs/generated-files.md": "33ea0799eb01af6e035fb1322c6a58c39ecc5dcc95169ce0adbd7933a0bfbee1",
6969
"docs/getting-started.md": "9741947c4b072c0838d0ee3a578215d5fac1d72cf5e73075136d0a9c95db2bbb",
70-
"docs/public-claims.json": "a011f7fc31dc656428f3544b61e34ebef2806f376635151cb44571b31e5422f7",
71-
"docs/public-surface.md": "53d741f04b2928a6ee8c006d647a6d675a215e863412e5862cd67d48433bff76",
70+
"docs/public-claims.json": "b67aad3c4aa25bc31caad7d7a910e0632a79d1968dbb07841850f6e92c51610c",
71+
"docs/public-surface.md": "422696611bdd52fbac2baf6723a277fa8c451601a9f66774bde1529efdc2abab",
7272
"docs/research-and-design.md": "d65c66e323037bda5d45aacef5d48afa6bf93da55901378891d235aca3a5684f",
7373
"docs/safety.md": "7b9b5c515d36e683767ec8d3d9d6d119ac93650b2f629d351deadd4c600ed6a6",
7474
"docs/troubleshooting.md": "27e73986a30df5d011b33c3d4701ce30610359e32c496c50d1b783ef5adf5c69",
7575
"docs/validation-and-evidence.md": "a9fe9274f3dc22b152094a307feda5d8c3ab099755100aef77bda13024cc3166",
76-
"docs/why-these-steps.md": "e8f8918ad42b74314cf84974f6f4a7b4e79af4fc4571b6df7554e3c95f9e0da7",
76+
"docs/why-these-steps.md": "afacdcd78b546c50a0b2a268233f8f86548024298196dcfc7b573773fd5f23e7",
7777
"examples/diagram-json/README.md": "061b583180e43bbd26618bbd9d3d79af4b75d7c8f37c66475640745a97328fbc",
7878
"examples/diagram-json/approval.md": "bc421a825349923512d5cb0ce489310d3a4d7cbac35e661a693b4a32eec263d1",
7979
"examples/diagram-json/compiled/evidence.md": "1ba1c989ade070a8ef9a508fbd788d100d7292f2dbacbb2bce895468019f619d",
8080
"examples/diagram-json/compiled/tasks.json": "f040696f1f8bcedc4a8ed9816a61a49edbda970ec0cc3b28175ba37b73bbc896",
8181
"examples/diagram-json/compiled/test-matrix.json": "6c6895c509271e4337f3c91d9f62ee3a2b34e768e78513784cb012506a328ecf",
82-
"examples/diagram-json/plan.lock.json": "fe627c500ffccf639c113ec7eda6e1d20b39aaf643672ca7721e518b5d8f6ebe",
82+
"examples/diagram-json/plan.lock.json": "9dc2698c705f33f4806a0e2b8dca748d0b2eed18b062b10243bff087ae97672a",
8383
"examples/diagram-json/plan.md": "3ad35cc3cbe48306e7ee401bd9e9047d25e46c8a6fe9679aa1b3f5e96ceea292",
8484
"examples/diagram-json/questions.md": "1a0050041cac0a8d53e6ebfe04cbec4a298cdc8c50efeeb6fa15aeb663c5ec76",
8585
"examples/diagram-json/request.md": "0808fc41c36779c404f4a3a121167da6e76cac56df526e70f9ed6d3e0d4c02ed",
@@ -92,7 +92,7 @@
9292
"generator": "operatorstack/intelligence-flow:boatstack-distribution",
9393
"schema_version": 1,
9494
"source": {
95-
"commit": "09388a6c92ece15283a8d0dc2b7edef3d2cc3aba",
95+
"commit": "f761e7e73e982b0bf5562197519d0b5bc7b937f0",
9696
"path": "examples/12-product-engineering-loop",
9797
"repository": "operatorstack/intelligence-flow"
9898
}

assets/boatstack-model-choice.svg

Lines changed: 0 additions & 36 deletions
This file was deleted.

assets/boatstack-portability.svg

Lines changed: 63 additions & 0 deletions
Loading

boatstack/export_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,54 @@ func TestExportAndDriftCheck(t *testing.T) {
178178
}
179179
}
180180

181+
func TestPortableHostAdaptersShareWorkflowAndArtifactContract(t *testing.T) {
182+
config := testConfig()
183+
raw, err := MarshalJSON(config)
184+
if err != nil {
185+
t.Fatal(err)
186+
}
187+
bundle, err := BuildExportBundle(".boatstack-project.json", config, raw, "boatstack")
188+
if err != nil {
189+
t.Fatal(err)
190+
}
191+
192+
workflow := string(bundle.Files[".product-loop/workflow.md"])
193+
artifacts := string(bundle.Files[".product-loop/artifacts.md"])
194+
for _, expected := range []string{"auto-plan", "plan-gate", "build", "test-gate", "review-gate", "ship-gate", "retro"} {
195+
if !strings.Contains(workflow, expected) {
196+
t.Fatalf("canonical portable workflow is missing %q", expected)
197+
}
198+
if _, exists := bundle.Files[".cursor/commands/"+expected+".md"]; !exists {
199+
t.Fatalf("Cursor does not expose portable operation %q", expected)
200+
}
201+
}
202+
for _, expected := range []string{"source plan", "plan.md", "approval.md", "evidence", "gaps", "review", "pr.md"} {
203+
if !strings.Contains(strings.ToLower(artifacts), strings.ToLower(expected)) {
204+
t.Fatalf("repository artifact contract is missing %q", expected)
205+
}
206+
}
207+
208+
hostSurfaces := map[string]string{
209+
"cursor": string(bundle.Files[".cursor/rules/boatstack.mdc"]),
210+
"claude": string(bundle.Files[".claude/skills/boatstack/SKILL.md"]),
211+
"codex": string(bundle.Files[".agents/skills/boatstack/SKILL.md"]),
212+
}
213+
for host, surface := range hostSurfaces {
214+
for _, expected := range []string{".product-loop/project.json", ".product-loop/workflow.md"} {
215+
if !strings.Contains(surface, expected) {
216+
t.Fatalf("%s adapter does not reference shared repository contract %q", host, expected)
217+
}
218+
}
219+
}
220+
for _, host := range []string{"claude", "codex"} {
221+
for _, operation := range []string{"auto-plan", "plan-gate", "build", "test-gate", "review-gate", "ship-gate", "boatstack-update", "retro"} {
222+
if !strings.Contains(hostSurfaces[host], operation) {
223+
t.Fatalf("%s adapter does not expose portable operation %q", host, operation)
224+
}
225+
}
226+
}
227+
}
228+
181229
func TestExportRefusesUserOwnedCollision(t *testing.T) {
182230
repo := t.TempDir()
183231
path := filepath.Join(repo, ".cursor", "rules", "boatstack.mdc")

docs/evidence-engineered-coding.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,6 @@ Delivery and system improvement also remain separate. A failed task may suggest
140140

141141
## What is evidence-backed
142142

143-
The current moves were derived from the Intelligence Flow benchmark corpus and product-repository studies. The generated source commit is [`09388a6c92ece15283a8d0dc2b7edef3d2cc3aba`](https://github.com/operatorstack/intelligence-flow/tree/09388a6c92ece15283a8d0dc2b7edef3d2cc3aba/examples/12-product-engineering-loop).
143+
The current moves were derived from the Intelligence Flow benchmark corpus and product-repository studies. The generated source commit is [`f761e7e73e982b0bf5562197519d0b5bc7b937f0`](https://github.com/operatorstack/intelligence-flow/tree/f761e7e73e982b0bf5562197519d0b5bc7b937f0/examples/12-product-engineering-loop).
144144

145145
The evidence supports specific failure mechanisms and guardrails. It does not establish that Boatstack is optimal, that control-theory notation proves software quality, or that one workflow dominates every team. Those are evaluation questions, so the distribution preserves measurements, provenance, gaps, and negative results.

0 commit comments

Comments
 (0)