Skip to content

Commit d2d43b8

Browse files
authored
docs: add ignite positioning and schema guidance (#88)
* docs: add ignite positioning and schema guidance * chore(fas): record docs positioning task scope * chore(fas): close docs positioning task
1 parent fa64587 commit d2d43b8

9 files changed

Lines changed: 220 additions & 48 deletions

File tree

.fas/TASKS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,7 @@ No active tasks.
11111111

11121112
- Title: Docs accuracy + UX + positioning for v3 beta.6 (P0/P1/P2). P0 (CORRECTNESS — beta.6 behavior change): the shared-source ownership fix in 3.0.0-beta.6 changed cleanup semantics but the docs-site prose still teaches the OLD beta.5 default. New behavior: cleanup defaults to FALSE for shared (consumer-owned) sources — a live instance passed to igniteCore (started actor / store / observable / actor-web source) lives for the core's lifetime and is NOT released when the element refcount hits zero; isolated (ignite-created) sources keep per-element teardown. Adapters never stop/close a source they did not create (generalized ownsActor -> ownsSource; ActorWebAdapter no longer closes consumer-owned sources). Update to the new semantics and drop now-redundant 'cleanup: false' guidance (reframe 'cleanup: true' as the opt-in to refcount teardown for shared cores) in: docs/site/src/content/docs/concepts/the-ignite-model.mdx (~17,45,225,226); docs/site/src/content/docs/api/ignite-core.mdx (~32,40,45); docs/site/src/content/docs/guides/routing.mdx (~165); docs/site/src/content/docs/migration/v2.mdx (~19,89,90,96); docs/site/src/content/docs/getting-started/first-component.mdx (~87); docs/site/src/content/docs/guides/testing.mdx (~135). DO NOT edit archived docs/site/src/content/docs/2.x/** (frozen). P1 (UX): add a /guides/ index landing page — currently 404 (Starlight has no guides index; individual guides are live, e.g. /guides/routing/ = 200); add a landing page linking the seven guides. P2 (positioning + agent angle): (a) add a 'When to choose Ignite / Comparisons' page surfacing existing positioning from /overview/what-is-ignite-element/ (distribution layer vs framework; renderer-agnostic; no state-lib lock-in); (b) deepen getSchema() docs with example output and how agents/LLMs consume it for tool-calling/validation. CONSTRAINTS: respect docs guardrails — markdownlint, the Playwright AA-contrast check (docs/site/scripts/check-contrast.mjs), and the doc code-example typecheck (check-doc-examples.mjs; object-form effects, no manual igniteCore<...> args); verify with the docs build. Source of truth for new behavior: packages/ignite-element/src/IgniteElementFactory.ts (cleanup default), packages/ignite-adapters/src/adapters/{XStateAdapter,ActorWebAdapter}.ts (ownsSource), and TSDoc on igniteCore/createIgniteComponentFactory.ts + igniteCore/types.ts.
11131113
- Mode: 6-agent
1114-
- Status: queued
1114+
- Status: done
11151115
- Owner: implementer
11161116
- Brief: .fas/tasks/docs-accuracy-ux-positioning-for-v3-beta-6-p0-p1-p2-p.md
11171117
- Verification lane: fast

.fas/queue/tasks.json

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"taskClassification": "self-improvement",
3535
"selfImprovementCategory": "policy-surfacing",
3636
"signalFingerprint": null,
37-
"status": "deferred",
37+
"status": "queued",
3838
"owner": "runtime",
3939
"mode": "single-agent",
4040
"dependsOn": [
@@ -48,33 +48,6 @@
4848
"prDependencies": [],
4949
"createdAt": "2026-06-12T19:30:13.064Z",
5050
"updatedAt": "2026-07-07T14:56:41.000Z",
51-
"deferredReason": "dependency_reopened: task-1781724711926",
52-
"invalidationReason": null
53-
},
54-
{
55-
"id": "task-1781724711926",
56-
"task": "Docs accuracy + UX + positioning for v3 beta.6 (P0/P1/P2). P0 (CORRECTNESS — beta.6 behavior change): the shared-source ownership fix in 3.0.0-beta.6 changed cleanup semantics but the docs-site prose still teaches the OLD beta.5 default. New behavior: cleanup defaults to FALSE for shared (consumer-owned) sources — a live instance passed to igniteCore (started actor / store / observable / actor-web source) lives for the core's lifetime and is NOT released when the element refcount hits zero; isolated (ignite-created) sources keep per-element teardown. Adapters never stop/close a source they did not create (generalized ownsActor -> ownsSource; ActorWebAdapter no longer closes consumer-owned sources). Update to the new semantics and drop now-redundant 'cleanup: false' guidance (reframe 'cleanup: true' as the opt-in to refcount teardown for shared cores) in: docs/site/src/content/docs/concepts/the-ignite-model.mdx (~17,45,225,226); docs/site/src/content/docs/api/ignite-core.mdx (~32,40,45); docs/site/src/content/docs/guides/routing.mdx (~165); docs/site/src/content/docs/migration/v2.mdx (~19,89,90,96); docs/site/src/content/docs/getting-started/first-component.mdx (~87); docs/site/src/content/docs/guides/testing.mdx (~135). DO NOT edit archived docs/site/src/content/docs/2.x/** (frozen). P1 (UX): add a /guides/ index landing page — currently 404 (Starlight has no guides index; individual guides are live, e.g. /guides/routing/ = 200); add a landing page linking the seven guides. P2 (positioning + agent angle): (a) add a 'When to choose Ignite / Comparisons' page surfacing existing positioning from /overview/what-is-ignite-element/ (distribution layer vs framework; renderer-agnostic; no state-lib lock-in); (b) deepen getSchema() docs with example output and how agents/LLMs consume it for tool-calling/validation. CONSTRAINTS: respect docs guardrails — markdownlint, the Playwright AA-contrast check (docs/site/scripts/check-contrast.mjs), and the doc code-example typecheck (check-doc-examples.mjs; object-form effects, no manual igniteCore<...> args); verify with the docs build. Source of truth for new behavior: packages/ignite-element/src/IgniteElementFactory.ts (cleanup default), packages/ignite-adapters/src/adapters/{XStateAdapter,ActorWebAdapter}.ts (ownsSource), and TSDoc on igniteCore/createIgniteComponentFactory.ts + igniteCore/types.ts.",
57-
"priority": "high",
58-
"source": "manual",
59-
"details": "See .fas/tasks/docs-accuracy-ux-positioning-for-v3-beta-6-p0-p1-p2-p.md",
60-
"taskClassification": "self-improvement",
61-
"selfImprovementCategory": "runtime-reliability",
62-
"signalFingerprint": null,
63-
"status": "queued",
64-
"owner": "runtime",
65-
"mode": "6-agent",
66-
"dependsOn": [
67-
"task-1782187745669",
68-
"task-1783357471256",
69-
"task-1781818974159"
70-
],
71-
"blocks": [
72-
"task-1781292613064"
73-
],
74-
"branchBase": null,
75-
"prDependencies": [],
76-
"createdAt": "2026-06-17T19:31:51.926Z",
77-
"updatedAt": "2026-07-07T14:56:41.000Z",
7851
"deferredReason": null,
7952
"invalidationReason": null
8053
},
@@ -137,7 +110,7 @@
137110
"taskClassification": "self-improvement",
138111
"selfImprovementCategory": "developer-experience",
139112
"signalFingerprint": null,
140-
"status": "deferred",
113+
"status": "queued",
141114
"owner": "runtime",
142115
"mode": "single-agent",
143116
"dependsOn": [
@@ -150,7 +123,7 @@
150123
"prDependencies": [],
151124
"createdAt": "2026-06-18T17:54:22.589Z",
152125
"updatedAt": "2026-06-18T17:54:22.589Z",
153-
"deferredReason": "dependency_reopened: task-1781724711926",
126+
"deferredReason": null,
154127
"invalidationReason": null
155128
},
156129
{
@@ -2878,6 +2851,31 @@
28782851
"workflowId": "direct-1783440023347",
28792852
"branchName": "beta",
28802853
"prStatus": "draft-only"
2854+
},
2855+
{
2856+
"id": "task-1781724711926",
2857+
"task": "Docs accuracy + UX + positioning for v3 beta.6 (P0/P1/P2). P0 (CORRECTNESS — beta.6 behavior change): the shared-source ownership fix in 3.0.0-beta.6 changed cleanup semantics but the docs-site prose still teaches the OLD beta.5 default. New behavior: cleanup defaults to FALSE for shared (consumer-owned) sources — a live instance passed to igniteCore (started actor / store / observable / actor-web source) lives for the core's lifetime and is NOT released when the element refcount hits zero; isolated (ignite-created) sources keep per-element teardown. Adapters never stop/close a source they did not create (generalized ownsActor -> ownsSource; ActorWebAdapter no longer closes consumer-owned sources). Update to the new semantics and drop now-redundant 'cleanup: false' guidance (reframe 'cleanup: true' as the opt-in to refcount teardown for shared cores) in: docs/site/src/content/docs/concepts/the-ignite-model.mdx (~17,45,225,226); docs/site/src/content/docs/api/ignite-core.mdx (~32,40,45); docs/site/src/content/docs/guides/routing.mdx (~165); docs/site/src/content/docs/migration/v2.mdx (~19,89,90,96); docs/site/src/content/docs/getting-started/first-component.mdx (~87); docs/site/src/content/docs/guides/testing.mdx (~135). DO NOT edit archived docs/site/src/content/docs/2.x/** (frozen). P1 (UX): add a /guides/ index landing page — currently 404 (Starlight has no guides index; individual guides are live, e.g. /guides/routing/ = 200); add a landing page linking the seven guides. P2 (positioning + agent angle): (a) add a 'When to choose Ignite / Comparisons' page surfacing existing positioning from /overview/what-is-ignite-element/ (distribution layer vs framework; renderer-agnostic; no state-lib lock-in); (b) deepen getSchema() docs with example output and how agents/LLMs consume it for tool-calling/validation. CONSTRAINTS: respect docs guardrails — markdownlint, the Playwright AA-contrast check (docs/site/scripts/check-contrast.mjs), and the doc code-example typecheck (check-doc-examples.mjs; object-form effects, no manual igniteCore<...> args); verify with the docs build. Source of truth for new behavior: packages/ignite-element/src/IgniteElementFactory.ts (cleanup default), packages/ignite-adapters/src/adapters/{XStateAdapter,ActorWebAdapter}.ts (ownsSource), and TSDoc on igniteCore/createIgniteComponentFactory.ts + igniteCore/types.ts.",
2858+
"priority": "high",
2859+
"source": "manual",
2860+
"taskClassification": "self-improvement",
2861+
"selfImprovementCategory": "runtime-reliability",
2862+
"signalFingerprint": null,
2863+
"dependsOn": [
2864+
"task-1782187745669",
2865+
"task-1783357471256",
2866+
"task-1781818974159"
2867+
],
2868+
"blocks": [
2869+
"task-1781292613064"
2870+
],
2871+
"branchBase": null,
2872+
"prDependencies": [],
2873+
"prRef": null,
2874+
"completedAt": "2026-07-07T20:26:55.486Z",
2875+
"terminalOutcome": null,
2876+
"workflowId": "direct-1783453213217",
2877+
"branchName": "fas/docs-accuracy-ux-positioning",
2878+
"prStatus": "draft-only"
28812879
}
28822880
],
28832881
"pullRequests": [],

.fas/tasks/docs-accuracy-ux-positioning-for-v3-beta-6-p0-p1-p2-p.md

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44
Created with `fas create-task` on 2026-06-17.
55

66
## Problem
7-
Docs accuracy + UX + positioning for v3 beta.6 (P0/P1/P2). P0 (CORRECTNESS — beta.6 behavior change): the shared-source ownership fix in 3.0.0-beta.6 changed cleanup semantics but the docs-site prose still teaches the OLD beta.5 default. New behavior: cleanup defaults to FALSE for shared (consumer-owned) sources — a live instance passed to igniteCore (started actor / store / observable / actor-web source) lives for the core's lifetime and is NOT released when the element refcount hits zero; isolated (ignite-created) sources keep per-element teardown. Adapters never stop/close a source they did not create (generalized ownsActor -> ownsSource; ActorWebAdapter no longer closes consumer-owned sources). Update to the new semantics and drop now-redundant 'cleanup: false' guidance (reframe 'cleanup: true' as the opt-in to refcount teardown for shared cores) in: docs/site/src/content/docs/concepts/the-ignite-model.mdx (~17,45,225,226); docs/site/src/content/docs/api/ignite-core.mdx (~32,40,45); docs/site/src/content/docs/guides/routing.mdx (~165); docs/site/src/content/docs/migration/v2.mdx (~19,89,90,96); docs/site/src/content/docs/getting-started/first-component.mdx (~87); docs/site/src/content/docs/guides/testing.mdx (~135). DO NOT edit archived docs/site/src/content/docs/2.x/** (frozen). P1 (UX): add a /guides/ index landing page — currently 404 (Starlight has no guides index; individual guides are live, e.g. /guides/routing/ = 200); add a landing page linking the seven guides. P2 (positioning + agent angle): (a) add a 'When to choose Ignite / Comparisons' page surfacing existing positioning from /overview/what-is-ignite-element/ (distribution layer vs framework; renderer-agnostic; no state-lib lock-in); (b) deepen getSchema() docs with example output and how agents/LLMs consume it for tool-calling/validation. CONSTRAINTS: respect docs guardrails — markdownlint, the Playwright AA-contrast check (docs/site/scripts/check-contrast.mjs), and the doc code-example typecheck (check-doc-examples.mjs; object-form effects, no manual igniteCore<...> args); verify with the docs build. Source of truth for new behavior: packages/ignite-element/src/IgniteElementFactory.ts (cleanup default), packages/ignite-adapters/src/adapters/{XStateAdapter,ActorWebAdapter}.ts (ownsSource), and TSDoc on igniteCore/createIgniteComponentFactory.ts + igniteCore/types.ts.
7+
Current HEAD already contains the beta.6 shared-source cleanup documentation and the /guides/ index. Complete the remaining docs-only P2 scope: add a dedicated overview page for “When to choose Ignite / Comparisons”, wire it into the sidebar and overview entry point, and deepen the agent-facing getSchema() documentation with concrete schema output plus tool-calling, validation, and canExecute guidance. Do not edit archived docs under docs/site/src/content/docs/2.x/**, runtime source, adapter source, test files, or docs scripts unless verification proves they are broken.
8+
89

910
## Acceptance criteria
10-
- The new functionality works as described.
11-
- Existing behavior is not broken.
12-
- TDD: a failing test that captures the new or changed behavior is written before the implementation and lands in the same change.
13-
- TDD: every production code change in the change set is covered by an added or updated test.
14-
- DDD: respect domain boundaries — keep the functional core deterministic and side-effect-free (no reads, writes, network, or clock), confine coordination to the imperative shell, and have adapters return facts instead of throwing.
11+
- The new When to choose Ignite / Comparisons page exists under overview and is discoverable from the Overview sidebar.
12+
- The What is Ignite Element overview links readers to the new decision/comparison page.
13+
- The Headless runtime getSchema section includes concrete schema output and explains agent/LLM usage for tool selection, payload shaping, validation, canExecute checks, execute results, and observers.
14+
- Command metadata and Build for agents docs provide supporting links/context without duplicating the canonical getSchema contract.
15+
- Archived docs, runtime/source/adapter files, test files, and docs scripts remain untouched unless verification proves a defect.
16+
- Docs guardrails pass: markdownlint, docs code-example check, docs build, contrast check, and fas validate-task.
1517
- The work is tracked in `.fas/TASKS.md`.
1618
- The task has a clear implementation and verification plan before execution starts.
17-
- The task is queued in `.fas/queue/tasks.json` for the runtime.
1819

1920
## Proposed solution
2021
- Use the supplied problem context, acceptance criteria, and affected-file hints to draft the concrete implementation approach during planning.
@@ -23,18 +24,36 @@ Docs accuracy + UX + positioning for v3 beta.6 (P0/P1/P2). P0 (CORRECTNESS — b
2324
- None recorded at task creation. Add rejected approaches during planning if scope tradeoffs appear.
2425

2526
## Affected files
26-
- Scope unknown.
27+
- docs/site/src/content/docs/overview/when-to-choose-ignite.mdx
28+
- docs/site/src/content/docs/overview/what-is-ignite-element.mdx
29+
- docs/site/astro.config.mjs
30+
- docs/site/src/content/docs/api/headless-runtime.mdx
31+
- docs/site/src/content/docs/api/command-metadata.mdx
32+
- docs/site/src/content/docs/guides/agent-runtime-v3.mdx
2733

2834
## Scope Amendments
29-
- None.
35+
- Type: narrow-current-head-docs-scope
36+
- Added at: 2026-07-07
37+
- Trigger: Architect and staff handoffs found stale generated commit plan after PR87 merged.
38+
- Reason: The original task included P0 cleanup docs and P1 guides index work already present in current HEAD; remaining work is P2 docs positioning and agent-facing getSchema guidance.
39+
- Added paths: docs/site/src/content/docs/overview/when-to-choose-ignite.mdx, docs/site/src/content/docs/overview/what-is-ignite-element.mdx, docs/site/astro.config.mjs, docs/site/src/content/docs/api/headless-runtime.mdx, docs/site/src/content/docs/api/command-metadata.mdx, docs/site/src/content/docs/guides/agent-runtime-v3.mdx
40+
- Evidence source: fas_architect and fas_staff_engineer handoffs
41+
- Evidence: fas_architect and fas_staff_engineer handoffs | .fas/state/commit-plan.json | Generated plan targeted packages/ignite-element/src/tests/IgniteCore.test.ts and docs/site/scripts/check-contrast.mjs, while actual remaining scope is docs content/sidebar files.
42+
- Accuracy signal: Current docs contain beta.6 cleanup semantics and docs/site/src/content/docs/guides/index.mdx exists.
43+
- Follow-up needed: Regenerate active task scope and commit plan before spawning fas_senior_engineer.
3044

3145
## Implementation plan
32-
- Convert the supplied context into a scoped implementation plan before editing.
33-
- Refresh affected-file scope before implementation if the generated hints are incomplete.
46+
- Add a dedicated overview/when-to-choose-ignite.mdx comparisons page focused on decision criteria and positioning.
47+
- Add sidebar discoverability and a concise link from the existing overview page.
48+
- Deepen the canonical getSchema() docs and supporting agent-runtime/command-metadata pages without duplicating runtime contracts.
3449

3550
## Verification plan
36-
- Run `fas validate-task` for the inner-loop verification gate.
37-
- Run `.fas/scripts/verify.sh --full` at the final release-quality gate when tracked files change.
51+
- fas validate-task
52+
- pnpm lint:md
53+
- pnpm --filter docs-site run check:docs
54+
- pnpm --filter docs-site run check:contrast
55+
- pnpm docs:build
56+
- .fas/scripts/verify.sh --full at branch closeout
3857

3958
## Risks
4059
- Validate generated scope, acceptance criteria, and verification evidence before closeout to avoid workflow drift.

docs/site/astro.config.mjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ export default defineConfig({
6161
label: "What is Ignite Element?",
6262
slug: "overview/what-is-ignite-element",
6363
},
64+
{
65+
label: "When to choose Ignite",
66+
slug: "overview/when-to-choose-ignite",
67+
},
6468
],
6569
},
6670
{

docs/site/src/content/docs/api/command-metadata.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ The predicate function is not serialized into `getSchema()`. Instead the schema
9595
marks the command with `gated: true`, and consumers call
9696
`runtime.canExecute('submit')` for the current answer.
9797

98+
That split keeps `getSchema()` JSON-serializable for agents and tool providers while leaving the current availability check in the live runtime. See the richer [`getSchema()` walkthrough](/ignite-element/api/headless-runtime/#getschema) for the full read -> gate -> execute flow.
99+
98100
## In `getSchema()`
99101

100102
Once commands carry metadata, `getSchema()` returns executable commands and their metadata in one map. Commands without metadata appear as empty objects:

0 commit comments

Comments
 (0)