Skip to content

Document Boatstack’s control model and architecture. - #230

Merged
bigboateng merged 1 commit into
mainfrom
codex/docs-system-concepts
Aug 17, 2026
Merged

Document Boatstack’s control model and architecture.#230
bigboateng merged 1 commit into
mainfrom
codex/docs-system-concepts

Conversation

@bigboateng

Copy link
Copy Markdown
Contributor

Problem

Boatstack's public documentation mixed stable concepts, current implementation details, exact reference facts, generated evidence, and superseded V1 design material. TypeDoc also lacked a durable global landing page, project guides, and checks for both SDK packages.

New structure

  • Adds a five-plane documentation map, canonical glossary, and seven concept guides.
  • Adds current architecture guides for the kernel, compiler/artifacts, runtime/persistence, host projections, software delivery, and conformance evidence.
  • Keeps the README concise while retaining runtime-ownership and compilation/projection architecture diagrams.
  • Expands Product Delivery guidance for repository-selected lifecycle membership, planning, foreground work, identity, delegation, evidence, recovery, and publication.
  • Removes the retired V1 inventory, replacement specification, and closure report.
  • Adds TypeDoc landing/project documents, categories, checked TypeScript examples, and strict JSON/HTML documentation contracts.
  • Documents all four projection registries and exact owned paths: Claude, Codex, Cursor, and Gemini.

Important non-change

This is documentation-only behaviorally. It does not change runtime code, schemas, transitions, authority, compiler semantics, emitted Control Program IR, generated architecture artifacts, or public TypeScript signatures.

Verification

  • npm ci
  • npm run test:flow-sdk
  • npm run docs:check
  • python3 -m unittest discover -s .github/tests -p 'test_*.py' -v
  • python3 .github/scripts/run_go_tests.py
  • cd boatstack && go test ./...
  • cd boatstack && go test -race ./...
  • cd boatstack && go vet ./...
  • cd boatstack && go build ./...
  • release-note validation and committed-tree preflight against origin/main
  • git diff --check
  • two exact-tree documentation review cycles

Documentation ownership

Plane Authority Owner
Concepts Stable terms and invariants docs/concepts/, docs/glossary.md
Current architecture Present implementation mapping docs/architecture/ authored guides
Domain guides Product Delivery behavior and authoring docs/product-delivery/
Reference Exact commands, schemas, paths, and configuration Stable docs/*.md reference paths
Generated evidence Registry-derived catalogs, Mermaid, and Locus inputs Existing renderers and byte-comparison tests
TypeScript API Public declarations, package overviews, and project documents Package comments plus docs/typescript/
History Non-authoritative retained context only docs/history/; retired V1 documents are not retained

@cursor

cursor Bot commented Aug 17, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codex automated review

Verdict: patch is incorrect
Confidence: 0.99

The patch publishes an unreachable checked example and makes two incorrect claims about executable program identity and compiler boundaries. Model-level verification is not recommended before merge; these failures are directly established from the production reducer, canonicalizer, and SDK implementation.

Comment on lines +21 to +23
targets: [
marked("active-plan", fact("plan", ["active"])),
],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Make the checked Flow example target a reachable plan state

Invariant: a published checked Flow must be able to reach its entry target through its declared lifecycle. With all plan.activate prerequisites satisfied and plan=approved, the only declared transition sets the plan to locked; active is not even a valid PlanState. The target therefore remains false and no declared transition can make further progress. This patch introduces the invalid target, while its example checker only lowers raw IR and checks the target ID, so CI still passes. Users copying the canonical example get a blocking Flow. A regression test should compile the example through the production resolver, apply plan.activate from an approved snapshot, and assert the entry becomes marked.

Confidence: 0.99

Comment on lines +17 to +19
Changing the entry name does not change Boatstack's semantics. Changing a
target, lifecycle step, priority, authority requirement, or producer changes
executable program semantics and therefore the program identity.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Do not describe entry renames as semantically neutral

Invariant: documentation must identify every change that alters executable program identity. Renaming run to another entry ID changes the canonical document because entry IDs are retained when descriptions and diagnostics are stripped; consequently the program fingerprint and generated projection identity change, invalidating prior prescriptions and artifacts. The new text says the opposite, despite the adjacent concepts guide calling entry names semantic identifiers. The smallest regression oracle is to compile two otherwise identical programs with different entry IDs and assert distinct fingerprints and projection paths, then document that result.

Confidence: 0.99

Comment on lines +3 to +5
`@operatorstack/boatstack` declares complete Control Program IR. The main
composition boundary is `defineFlow`; it validates and canonicalizes authoring
data into raw IR but does not execute a Flow.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P3] Keep raw IR lowering distinct from validation and canonicalization

Invariant: the authoring guide must not present unvalidated raw IR as a checked canonical program. defineFlow merely copies arrays, fills defaults, and adds schema fields; for example, invalid IDs or duplicate entries are returned without error and are rejected only by the Go compiler later. This patch newly claims that defineFlow validates and canonicalizes, which can cause callers to treat its output as executable. A regression test should pass an invalid definition through defineFlow, demonstrate that only production compilation rejects it, and bind the documentation wording to that boundary.

Confidence: 0.98

@bigboateng
bigboateng merged commit e39b6f9 into main Aug 17, 2026
18 checks passed
@bigboateng
bigboateng deleted the codex/docs-system-concepts branch August 17, 2026 21:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant