Skip to content

Commit 5111edd

Browse files
authored
fix(website): migrate features and blog to docs instances (#340)
- move Features and Blog onto docs plugin instances while preserving /features and /blog routes - relocate localized content so language switching renders translated pages - add Features to the main nav and keep active sidebar sections visually selected - add blog and features index pages plus the missing zh-CN blog translation
1 parent 673eee8 commit 5111edd

90 files changed

Lines changed: 661 additions & 595 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

website/blog/index.mdx

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
---
2+
id: index
3+
slug: /
4+
title: "All posts"
5+
description: "The StrayMark chronicle — how the framework emerged, decision by decision."
6+
hide_table_of_contents: true
7+
---
8+
9+
# All posts
10+
11+
The StrayMark chronicle — how the framework emerged, decision by decision.
12+
13+
## 2026
14+
15+
### [What the open format left to the producer](./2026-06-17-what-the-open-format-left-to-the-producer.md)
16+
17+
2026-06-17
18+
19+
Google published the Open Knowledge Format — markdown, YAML frontmatter, a graph of links, an agent that maintains them. StrayMark reached the same primitives independently. The convergence is real; so is the divergence — OKF builds cognition for the AI, StrayMark builds it for the AI and the human engineer together.
20+
21+
### [Where the debt actually was](./2026-06-16-where-the-debt-actually-was.md)
22+
23+
2026-06-16
24+
25+
The operator's real daily question isn't "show me the documents," it's "where are we?" Loom grew a second surface — the architecture as a building you can walk, in 2D and in 3D — and its technical-debt overlay was empty. Not because there was no debt. Because it didn't know where to put it.
26+
27+
### [What the graph couldn't draw yet](./2026-06-14-what-the-graph-couldnt-draw-yet.md)
28+
29+
2026-06-14
30+
31+
Loom's first release rendered the document graph live in the browser in under a second. It also drew 330 edges to nowhere. The visible feature was the easy part — making the references actually resolve was the work, and it taught us when a dangling edge is a bug and when it's a signal.
32+
33+
### [What the second reader demanded](./2026-06-12-what-the-second-reader-demanded.md)
34+
35+
2026-06-12
36+
37+
Before Loom could draw anything, StrayMark's document model had to stop being the CLI's private property. The refactor that shipped zero user-facing change was the precondition for everything visual that followed — and a small lesson the framework had been preaching to adopters all along.
38+
39+
### [What the bash script said was in sync](./2026-06-04-what-the-bash-script-said-was-in-sync.md)
40+
41+
2026-06-04
42+
43+
Follow-ups became StrayMark's second first-class entity — and within a day, two external migrations stress-tested the design. The reference adopter's deprecated bash script had been reporting "in sync" while 29 entries sat invisible to it.
44+
45+
### [What the feature flag compiled away](./2026-05-31-what-the-feature-flag-compiled-away.md)
46+
47+
2026-05-31
48+
49+
A second adopter, in a different language, validated the "surface declaration without wiring" anti-pattern — and the CLI helper we deferred on purpose finally shipped
50+
51+
### [What the binary couldn't hide](./2026-05-23-what-the-binary-couldnt-hide.md)
52+
53+
2026-05-23
54+
55+
Ten latent gaps surfaced in a single polish Charter, and the anti-pattern that earned a name
56+
57+
### [Pattern 1 and Pattern 2 — chain evolution](./2026-05-16-pattern-1-and-pattern-2-chain-evolution.md)
58+
59+
2026-05-16
60+
61+
When discipline stops being habit and becomes name
62+
63+
### [The day the agent saw something nobody asked it to see](./2026-05-16-emergent-observation-design.md)
64+
65+
2026-05-16
66+
67+
Naming a design property that was already silently doing its job
68+
69+
### [Opening the framework](./2026-05-15-opening-the-framework.md)
70+
71+
2026-05-15
72+
73+
Seventy-two hours of gestures that only make sense together
74+
75+
### [AGENTS.md as a universal standard](./2026-05-15-agents-md-as-a-universal-standard.md)
76+
77+
2026-05-15
78+
79+
Four months between the intuition and the open standard
80+
81+
### [Manual discipline before the pattern](./2026-05-14-manual-discipline-before-the-pattern.md)
82+
83+
2026-05-14
84+
85+
Twelve learnings in an Issue, three gates in a PR, and a Charter that closed cleanly before the name existed
86+
87+
### [The audit-prompt was the outlier](./2026-05-13-the-audit-prompt-was-the-outlier.md)
88+
89+
2026-05-13
90+
91+
The only file in the framework that lived in another language
92+
93+
### [TDE and transversal debt](./2026-05-12-tde-and-transversal-debt.md)
94+
95+
2026-05-12
96+
97+
The type existed. The trigger didn't. And the stacked-PR lesson that came along for the ride.
98+
99+
### [Validate and the schemas as a formal layer](./2026-05-11-validate-and-schemas-as-a-formal-layer.md)
100+
101+
2026-05-11
102+
103+
Phase 2: when the framework starts to verify what it had been promising
104+
105+
### [The rebrand to StrayMark](./2026-05-09-the-rebrand-to-straymark.md)
106+
107+
2026-05-09
108+
109+
The fourth rename — this time with a public ADR and a disciplined arc
110+
111+
### [Charters invisible to the agents](./2026-05-09-charters-invisible-to-agents.md)
112+
113+
2026-05-09
114+
115+
Issue #113 — the gap between having an artifact and the agent seeing it
116+
117+
### [Charters as a first-class entity, and the external audit cycle](./2026-05-06-charters-and-the-external-audit-cycle.md)
118+
119+
2026-05-06
120+
121+
From manual ritual in Sentinel to canonized CLI command
122+
123+
### [Six Plans for one thesis (and the rename to Charter)](./2026-04-30-six-plans-and-the-rename-to-charter.md)
124+
125+
2026-04-30
126+
127+
The first systematic experiment, and the day Plan became Charter
128+
129+
### [Exploring the framework](./2026-04-27-exploring-the-framework.md)
130+
131+
2026-04-27
132+
133+
The TUI that produced visibility without meaning to
134+
135+
### [Four names in four months](./2026-04-05-four-names-in-four-months.md)
136+
137+
2026-04-05
138+
139+
Looking for the concept by trying out names

website/blogSidebars.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
2+
3+
const sidebars: SidebarsConfig = {
4+
blogSidebar: [
5+
{
6+
type: 'category',
7+
label: 'Blog',
8+
link: {type: 'doc', id: 'index'},
9+
items: [
10+
{
11+
type: 'category',
12+
label: '2026',
13+
collapsible: false,
14+
collapsed: false,
15+
items: [
16+
'2026-06-17-what-the-open-format-left-to-the-producer',
17+
'2026-06-16-where-the-debt-actually-was',
18+
'2026-06-14-what-the-graph-couldnt-draw-yet',
19+
'2026-06-12-what-the-second-reader-demanded',
20+
'2026-06-04-what-the-bash-script-said-was-in-sync',
21+
'2026-05-31-what-the-feature-flag-compiled-away',
22+
'2026-05-23-what-the-binary-couldnt-hide',
23+
'2026-05-16-pattern-1-and-pattern-2-chain-evolution',
24+
'2026-05-16-emergent-observation-design',
25+
'2026-05-15-opening-the-framework',
26+
'2026-05-15-agents-md-as-a-universal-standard',
27+
'2026-05-14-manual-discipline-before-the-pattern',
28+
'2026-05-13-the-audit-prompt-was-the-outlier',
29+
'2026-05-12-tde-and-transversal-debt',
30+
'2026-05-11-validate-and-schemas-as-a-formal-layer',
31+
'2026-05-09-the-rebrand-to-straymark',
32+
'2026-05-09-charters-invisible-to-agents',
33+
'2026-05-06-charters-and-the-external-audit-cycle',
34+
'2026-04-30-six-plans-and-the-rename-to-charter',
35+
'2026-04-27-exploring-the-framework',
36+
'2026-04-05-four-names-in-four-months',
37+
],
38+
},
39+
],
40+
},
41+
],
42+
};
43+
44+
export default sidebars;

website/docusaurus.config.ts

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -201,31 +201,7 @@ const config: Config = {
201201
// sitemap plugin can emit <lastmod> per doc URL.
202202
showLastUpdateTime: true,
203203
},
204-
blog: {
205-
path: 'blog',
206-
routeBasePath: 'blog',
207-
blogTitle: 'Blog',
208-
blogDescription: 'The StrayMark chronicle — how the framework emerged, decision by decision.',
209-
blogSidebarCount: 'ALL',
210-
blogSidebarTitle: 'All posts',
211-
showReadingTime: true,
212-
// Populates metadata.lastUpdatedAt from git for every post so the
213-
// sitemap plugin can emit <lastmod> per post URL. Same lever the
214-
// docs plugin uses above.
215-
showLastUpdateTime: true,
216-
feedOptions: {
217-
type: ['rss', 'atom'],
218-
title: 'StrayMark Blog',
219-
description: 'The StrayMark chronicle.',
220-
copyright: `Copyright © ${new Date().getFullYear()} Strange Days Tech.`,
221-
},
222-
editUrl: ({locale, blogDirPath, blogPath}) => {
223-
if (locale && locale !== 'en') {
224-
return `${GITHUB_EDIT_BASE}/website/i18n/${locale}/docusaurus-plugin-content-blog/${blogPath}`;
225-
}
226-
return `${GITHUB_EDIT_BASE}/website/${blogDirPath}/${blogPath}`;
227-
},
228-
},
204+
blog: false,
229205
theme: {
230206
customCss: './src/css/custom.css',
231207
},
@@ -313,7 +289,29 @@ const config: Config = {
313289
],
314290
],
315291

316-
plugins: ['plugin-image-zoom'],
292+
plugins: [
293+
[
294+
'@docusaurus/plugin-content-docs',
295+
{
296+
id: 'features',
297+
path: 'features',
298+
routeBasePath: 'features',
299+
sidebarPath: './featuresSidebars.ts',
300+
showLastUpdateTime: true,
301+
},
302+
],
303+
[
304+
'@docusaurus/plugin-content-docs',
305+
{
306+
id: 'blog',
307+
path: 'blog',
308+
routeBasePath: 'blog',
309+
sidebarPath: './blogSidebars.ts',
310+
showLastUpdateTime: true,
311+
},
312+
],
313+
'plugin-image-zoom',
314+
],
317315

318316
themeConfig: {
319317
imageZoom: {
@@ -346,6 +344,7 @@ const config: Config = {
346344
height: 32,
347345
},
348346
items: [
347+
{to: '/features', label: 'Features', position: 'left'},
349348
{
350349
type: 'docSidebar',
351350
sidebarId: 'docsSidebar',

website/src/pages/features/agent-governance.mdx renamed to website/features/agent-governance.mdx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
title: Declarative agent governance
33
description: Versioned rules in STRAYMARK.md and AGENT-RULES bind agent behavior at the workflow level — not at runtime, not after the fact.
44
---
5-
import FeaturesLayout from '@site/src/components/FeaturesLayout';
6-
7-
<FeaturesLayout>
8-
95
# Declarative agent governance
106

117
Runtime guardrails come too late. By the time the agent has typed a destructive command, the prompt is over and you're triaging the cleanup. StrayMark moves agent governance upstream: the rules are declared in versioned files the agent reads *before* it begins, and updates to those rules are visible in `git log`.
@@ -28,5 +24,3 @@ When the framework version bumps, the contract bumps. `straymark update-framewor
2824

2925
- [Workflows](/docs/adopters/WORKFLOWS)
3026
- [STRAYMARK.md on GitHub](https://github.com/StrangeDaysTech/straymark/blob/main/dist/STRAYMARK.md)
31-
32-
</FeaturesLayout>
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ title: A CLI that does the work
33
description: One Rust binary, eleven commands. Deterministic, scriptable, no daemons.
44
image: https://straymark.dev/img/og/cli.png
55
---
6-
import FeaturesLayout from '@site/src/components/FeaturesLayout';
7-
import gallery from './explore-gallery.module.css';
8-
9-
<FeaturesLayout>
6+
import gallery from '@site/features/explore-gallery.module.css';
107

118
# A CLI that does the work
129

@@ -77,5 +74,3 @@ straymark analyze --since HEAD~10
7774
## Learn more
7875

7976
- [CLI Reference](/docs/adopters/CLI-REFERENCE)
80-
81-
</FeaturesLayout>

website/src/pages/features/cognitive-discipline.mdx renamed to website/features/cognitive-discipline.mdx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
title: Structured cognitive discipline
33
description: Three small artifact types that turn vague "AI-assisted work" into traceable units of thought — Charters, AILOGs, AIDECs.
44
---
5-
import FeaturesLayout from '@site/src/components/FeaturesLayout';
6-
7-
<FeaturesLayout>
8-
95
# Structured cognitive discipline
106

117
Most AI-assisted work loses its reasoning the moment the diff lands. StrayMark fixes that with three small artifact types — **Charters**, **AILOGs**, **AIDECs** — that sit next to your code and document the intent, the action, and the trade-off behind each change.
@@ -28,5 +24,3 @@ All three are plain Markdown with YAML frontmatter. They live in `.straymark/` a
2824

2925
- [What is a Charter](/docs/contributors/WHAT-IS-A-CHARTER)
3026
- [Adoption Guide](/docs/adopters/ADOPTION-GUIDE)
31-
32-
</FeaturesLayout>

website/src/pages/features/emergent-observation.mdx renamed to website/features/emergent-observation.mdx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
title: Emergent observation by design
33
description: When documents reference each other formally, agents start spotting drift without being asked. The property has a name — Emergent Observation. It's Principle #8.
44
---
5-
import FeaturesLayout from '@site/src/components/FeaturesLayout';
6-
7-
<FeaturesLayout>
8-
95
# Emergent observation by design
106

117
On 2026-05-16, an agent flagged a stale spec before being asked to. Nobody had prompted it; it noticed the divergence on its own. The reconstruction of that morning surfaced a design property StrayMark had been building toward without naming: **Emergent Observation**. It became Principle #8.
@@ -30,5 +26,3 @@ Remove any one of those three and the property collapses. That's why the design
3026

3127
- [Blog: The day the agent saw something nobody asked it to see](/blog/emergent-observation-design)
3228
- [Design Principles](/docs/contributors/DESIGN-PRINCIPLES)
33-
34-
</FeaturesLayout>

website/src/pages/features/evidence-byproduct.mdx renamed to website/features/evidence-byproduct.mdx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
title: Evidence as a byproduct
33
description: Regulatory compliance evidence emerges from the same artifacts the team already produces. No parallel paper trail.
44
---
5-
import FeaturesLayout from '@site/src/components/FeaturesLayout';
6-
7-
<FeaturesLayout>
8-
95
# Evidence as a byproduct
106

117
Compliance shouldn't be a separate pile of documents your team maintains after the fact. StrayMark maps your existing artifacts — Charters, AILOGs, AIDECs, ETH, DPIA, MCARDs — directly to EU AI Act, ISO 42001, NIST AI RMF, GDPR, and China-region (TC260, PIPL, GB45438, CAC, CSL) controls. The artifacts *are* the evidence.
@@ -40,5 +36,3 @@ The `regional_scope` field in `.straymark/config.yml` determines which scans run
4036

4137
- [CLI Reference: `compliance`](/docs/adopters/CLI-REFERENCE)
4238
- [Adoption Guide](/docs/adopters/ADOPTION-GUIDE)
43-
44-
</FeaturesLayout>
File renamed without changes.

website/features/index.mdx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
title: "What's in the box"
3+
description: "Every StrayMark capability on one page: charters, governance, multi-model audit, TDE drift detection, the CLI, agent skills, and emergent observation."
4+
slug: /
5+
---
6+
import FeatureGrid from '@site/src/components/FeatureGrid';
7+
8+
# What's in the box
9+
10+
Nine capabilities that compose StrayMark — from cognitive discipline and repo-native governance to multi-model audit and emergent observation. Pick the one that maps to the problem you're solving; each links to a focused page.
11+
12+
<FeatureGrid />

0 commit comments

Comments
 (0)