Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
928dea5
docs: align onboarding narrative and API conventions
ovvesley Sep 12, 2026
64ed4a1
docs: track page-by-page editorial audit
ovvesley Sep 12, 2026
f81d64a
docs: qualify partial AWS S3 support
ovvesley Sep 12, 2026
0d22179
docs: distinguish declared GCS support from unavailable transfer
ovvesley Sep 12, 2026
5360908
docs: qualify Desktop-only workflow path
ovvesley Sep 12, 2026
dce294b
docs: simplify planning and execution evidence explanations
ovvesley Sep 12, 2026
01e6976
docs: record full tutorial review
ovvesley Sep 12, 2026
4d88810
docs: clarify environment and artifact guide entry points
ovvesley Sep 12, 2026
de415fd
docs: correct cloud target and topology procedures
ovvesley Sep 12, 2026
f9744fb
docs: align workflow narrative and execution states
ovvesley Sep 12, 2026
1e9c326
docs: standardize operation guides around user tasks
ovvesley Sep 12, 2026
85dd95b
docs: turn production plan into ongoing editorial contract
ovvesley Sep 12, 2026
680e1a6
docs: simplify concepts and Desktop tour
ovvesley Sep 12, 2026
c5b66b1
docs: distinguish verified Showcase runs from Desktop inspection
ovvesley Sep 12, 2026
f0e717b
docs: link generated core POST pages to verified payloads
ovvesley Sep 12, 2026
7eac295
docs: align GCP onboarding and finish authored page read
ovvesley Sep 12, 2026
c60f407
docs: qualify hidden Desktop topology creation path
ovvesley Sep 12, 2026
83debb5
docs: add verified Desktop first local workflow
ovvesley Sep 12, 2026
b41c20d
docs: add handler-checked API request notes
ovvesley Sep 12, 2026
91fa091
docs: guide readers from interface tour to first run
ovvesley Sep 12, 2026
624ba53
docs: clarify planning session request contract
ovvesley Sep 12, 2026
1072acd
docs: refresh editorial evidence ledger
ovvesley Sep 12, 2026
0143328
docs: align quality plan with verified first run
ovvesley Sep 12, 2026
24fa9be
docs: record mobile first-run navigation check
ovvesley Sep 12, 2026
e0853c2
docs: protect credential import examples
ovvesley Sep 12, 2026
cafe58d
docs: stream credential payloads without temporary files
ovvesley Sep 12, 2026
60966b6
docs: clarify storage promotion examples and contracts
ovvesley Sep 12, 2026
3fc34ae
docs: make cloud target and API token examples safe
ovvesley Sep 12, 2026
c068570
docs: remove incomplete workflow request from API overview
ovvesley Sep 12, 2026
e05a925
docs: qualify unlinked Desktop network routes
ovvesley Sep 12, 2026
bc52c5b
docs: standardize versioned Showcase setup
ovvesley Sep 12, 2026
8636cef
docs: clarify runtime support and planning narrative
ovvesley Sep 12, 2026
c9c3ba0
docs: clarify storage operation contracts
ovvesley Sep 12, 2026
c5ed784
docs: align artifact examples with API contracts
ovvesley Sep 12, 2026
259dc36
docs: correct console outcomes and operation contracts
ovvesley Sep 12, 2026
ec87672
docs: fix generated request shapes and simplify API pages
ovvesley Sep 12, 2026
6662a95
docs: restore qualified API response examples
ovvesley Sep 12, 2026
afc3fc2
docs: align entry path with verified local run
ovvesley Sep 12, 2026
dae9d1b
docs: separate GCP target project from credential owner
ovvesley Sep 12, 2026
62fdf36
docs: secure Kubernetes token example and remote setup path
ovvesley Sep 13, 2026
6f5c3d4
docs: clarify workflow examples and console history
ovvesley Sep 13, 2026
11e2299
docs: preserve instance identity in settings example
ovvesley Sep 13, 2026
4e7b92a
docs: make scope and topology examples navigable
ovvesley Sep 13, 2026
52a8e95
docs: make workflow specification example coherent
ovvesley Sep 13, 2026
e85b179
docs: correct environment revision guidance
ovvesley Sep 13, 2026
e76c102
docs: fix server tunnel command and simplify operations guidance
ovvesley Sep 13, 2026
2b8c17e
docs: complete HPC registration path
ovvesley Sep 13, 2026
4cc0440
docs: validate fenced shell examples in CI
ovvesley Sep 13, 2026
2564f04
docs: clarify instance and environment API contracts
ovvesley Sep 13, 2026
66195e7
docs: align environment and topology defaults with API persistence
ovvesley Sep 13, 2026
d6efd54
docs: document connection and workflow action contracts
ovvesley Sep 13, 2026
2c7fbd2
docs: make cloud capacity path follow GCP tutorial
ovvesley Sep 13, 2026
62cecd1
docs: clarify planning cancellation responses
ovvesley Sep 13, 2026
82d85fa
docs: carry chosen planning candidate through API example
ovvesley Sep 13, 2026
e52d1f8
docs: make provenance and audit API examples complete
ovvesley Sep 13, 2026
c98f93c
docs: derive artifact guide IDs from inventory
ovvesley Sep 13, 2026
2812070
docs: complete interactive console API sequence
ovvesley Sep 13, 2026
58f36e5
docs: make operation lookup examples self-contained
ovvesley Sep 13, 2026
d155f90
docs: clarify destructive API and resource contracts
ovvesley Sep 13, 2026
adc999e
docs: cover every mutating API route with checked guidance
ovvesley Sep 13, 2026
60638b6
docs: label inferred API samples as field shapes
ovvesley Sep 13, 2026
6e0896d
docs: simplify scheduler explanation and correct network units
ovvesley Sep 13, 2026
562e9f4
docs: simplify installation entry path
ovvesley Sep 13, 2026
7e21120
docs: simplify interface tour and align first-run navigation
ovvesley Sep 13, 2026
636dee9
docs: explain partial S3 support in user terms
ovvesley Sep 13, 2026
a810b39
docs: simplify HPC setup narrative
ovvesley Sep 13, 2026
2c4641f
docs: verify provenance SQL request examples
ovvesley Sep 13, 2026
2f27df0
docs: verify playbook validation request
ovvesley Sep 13, 2026
9e7289b
docs: verify machine configuration request sequence
ovvesley Sep 13, 2026
e57caa7
docs: show multipart build-context upload in API reference
ovvesley Sep 13, 2026
d63cb66
docs: verify Docker artifact registration example
ovvesley Sep 13, 2026
06fdbaf
docs: align storage promotion JSON contracts
ovvesley Sep 13, 2026
84d2446
docs: verify storage operation request bodies
ovvesley Sep 13, 2026
e1bc1c5
docs: show minimal console request bodies
ovvesley Sep 13, 2026
4918c8c
docs: verify local connection test request
ovvesley Sep 13, 2026
46d3c19
docs: verify instance preferences and preserve update state
ovvesley Sep 13, 2026
4c45c24
docs: verify workflow import and duplicate requests
ovvesley Sep 13, 2026
c539025
docs: verify inventory-only resource request
ovvesley Sep 13, 2026
34c46d1
test: format resource request fixture for repository checks
ovvesley Sep 13, 2026
0520240
docs: avoid fictitious replacement request bodies
ovvesley Sep 13, 2026
e80a6a4
docs: qualify artifact operation requests
ovvesley Sep 13, 2026
aed7499
docs: remove placeholder credential requests
ovvesley Sep 13, 2026
cffe7be
docs: correct queued cloud statuses and request notes
ovvesley Sep 13, 2026
9f64cc3
docs: verify generated endpoint success statuses
ovvesley Sep 13, 2026
4ed6ef3
docs: present WebSocket and response shapes accurately
ovvesley Sep 13, 2026
6e33d98
docs: correct daemon health API command
ovvesley Sep 13, 2026
0232008
docs: label console handshake as WebSocket upgrade
ovvesley Sep 13, 2026
daba7e7
docs: qualify dynamic preflight results
ovvesley Sep 13, 2026
46adba5
docs: clarify infrastructure examples and validation limits
ovvesley Sep 13, 2026
245c989
docs: streamline installation verification path
ovvesley Sep 13, 2026
7c3763d
docs: keep onboarding claims and concepts focused
ovvesley Sep 13, 2026
00b237c
docs: make planning guide task first
ovvesley Sep 13, 2026
06690c5
docs: separate provenance and audit tasks
ovvesley Sep 13, 2026
3edfd67
docs: preserve SSH connection fields during key rotation
ovvesley Sep 13, 2026
d0457cf
docs: separate record search and notifications
ovvesley Sep 13, 2026
d1df634
docs: align GCP catalog commands with tutorial environment
ovvesley Sep 13, 2026
6cc6204
docs: simplify console access narrative
ovvesley Sep 13, 2026
9b07ad6
docs: focus execution guide on planned workflows
ovvesley Sep 13, 2026
57a7968
docs: separate artifact build and location tasks
ovvesley Sep 13, 2026
3072dea
docs: focus SSH and preferences guides
ovvesley Sep 13, 2026
322a755
docs: separate cloud worker configuration from capacity
ovvesley Sep 13, 2026
ea14e24
docs: clarify onboarding support and focus installation
ovvesley Sep 13, 2026
b7da58b
docs: introduce workflow fields only when needed
ovvesley Sep 13, 2026
dc09bd8
docs: lead evidence guides with investigation steps
ovvesley Sep 13, 2026
91f0ed3
docs: correct cloud target provisioning prerequisites
ovvesley Sep 13, 2026
a8b3db9
docs: correct fixed-plan prediction semantics
ovvesley Sep 13, 2026
a970e13
docs: add concrete saved-plan import path
ovvesley Sep 13, 2026
fba0084
docs: verify and fix saved-plan import example
ovvesley Sep 13, 2026
db55dd8
docs: complete Docker artifact build walkthrough
ovvesley Sep 13, 2026
00d9b7b
docs: align planning narrative with prediction models
ovvesley Sep 13, 2026
38377b3
docs: explain SimGrid route selection accurately
ovvesley Sep 13, 2026
41d27a5
docs: distinguish artifact records from live verification
ovvesley Sep 13, 2026
080bb6b
docs: align contributor contract with generated API pages
ovvesley Sep 13, 2026
9ffd9ca
docs: clarify missing network routes by scheduler
ovvesley Sep 13, 2026
4c87c50
docs: simplify showcase limits and purpose
ovvesley Sep 13, 2026
332242e
docs: verify JSX commands and authenticate Showcase polling
ovvesley Sep 13, 2026
9a67b02
docs: complete storage download and archive flow
ovvesley Sep 13, 2026
067ea60
fix: persist archive download path and document local storage
ovvesley Sep 13, 2026
95f5e6d
docs: qualify HPC workspace and GCP catalog results
ovvesley Sep 13, 2026
5c037f2
docs: separate coverage maintenance from public route map
ovvesley Sep 13, 2026
99f515f
docs: authenticate root health checks
ovvesley Sep 13, 2026
a262bfd
docs: make API examples fail on HTTP errors
ovvesley Sep 13, 2026
47388cc
docs: group cloud endpoints with cloud guidance
ovvesley Sep 13, 2026
42c5812
docs: align entry wording and verify API overview routes
ovvesley Sep 13, 2026
d3aeafd
docs: describe actual cloud zone selection
ovvesley Sep 13, 2026
173f998
docs: distinguish S3 transfer and browser credentials
ovvesley Sep 13, 2026
310da89
docs: surface S3 browsing limit in storage guide
ovvesley Sep 13, 2026
474891a
docs: keep one editorial writing contract
ovvesley Sep 13, 2026
4cbbfd2
docs: align planning and evidence explanations
ovvesley Sep 13, 2026
a524b4f
docs: correct generated map response shapes
ovvesley Sep 13, 2026
e779a38
fix(docs): make mobile sidebar opaque
ovvesley Sep 13, 2026
6d6557e
docs: focus infrastructure tutorial narratives
ovvesley Sep 13, 2026
e5a335b
docs: separate cloud support from capacity procedure
ovvesley Sep 13, 2026
411f711
docs: point notification recovery to operation records
ovvesley Sep 13, 2026
9c77689
docs: qualify asynchronous cloud provisioning acceptance
ovvesley Sep 13, 2026
3dd5b9c
docs: clarify cloud operation response lifecycle
ovvesley Sep 13, 2026
fcf11bd
docs: keep SLURM login node out of default plans
ovvesley Sep 13, 2026
902469d
docs: make plan execution explicit in entry narrative
ovvesley Sep 13, 2026
333632b
docs: prevent filled arrow paths in architecture diagrams
ovvesley Sep 13, 2026
139c6c1
docs: explain cloud catalog and inventory read behavior
ovvesley Sep 13, 2026
9d0deff
docs: align artifact evidence wording across guides
ovvesley Sep 13, 2026
84ee22a
docs: match Audit narrative to emitted events
ovvesley Sep 13, 2026
52b02b1
docs: simplify dense reference and quality prose
ovvesley Sep 13, 2026
5da0d58
docs: clarify topology selection in network explanation
ovvesley Sep 13, 2026
12bcfd7
docs: show Docker artifact registration response fields
ovvesley Sep 13, 2026
9af6d84
docs: expose execution detail response families
ovvesley Sep 13, 2026
a93c958
docs: clarify planning instance and provenance response shapes
ovvesley Sep 13, 2026
c2bb30f
docs: clarify cloud provisioning log identity and timing
ovvesley Sep 13, 2026
e7cb2eb
docs: prevent ambiguous null and false primitive response shapes
ovvesley Sep 13, 2026
ac55c32
docs: correct plan creation response contract
ovvesley Sep 13, 2026
fd4e1b7
docs: scope troubleshooting evidence to recorded events
ovvesley Sep 13, 2026
9ee6764
docs: align first-run narrative with manual plan and visible result
ovvesley Sep 13, 2026
5a54192
docs: use server terminology in basic user paths
ovvesley Sep 13, 2026
9015c42
docs: align data evidence tasks with verified scope
ovvesley Sep 13, 2026
72cc0f0
docs: remove duplicated preferences procedure
ovvesley Sep 13, 2026
4e2787a
docs: align planning and execution user path
ovvesley Sep 13, 2026
413c4f6
docs: align planning and evidence explanations
ovvesley Sep 13, 2026
aec1e1a
docs: standardize descriptions across authored pages
ovvesley Sep 13, 2026
ab3a826
docs: simplify scope reference and local showcase openings
ovvesley Sep 13, 2026
4e5d331
docs: standardize server wording in showcase paths
ovvesley Sep 13, 2026
4eda697
docs: connect first-run and infrastructure reading paths
ovvesley Sep 13, 2026
eb46f6d
docs: qualify modeled showcase resources and Kind evidence
ovvesley Sep 13, 2026
2f15db3
docs: clarify architecture scope and runtime narrative
ovvesley Sep 13, 2026
bbeaa9d
docs: correct execution recovery and retry claims
ovvesley Sep 13, 2026
2d2a5b3
docs: qualify queue recovery and SLURM cancellation
ovvesley Sep 13, 2026
6be8fde
docs: align task status guidance with persisted states
ovvesley Sep 13, 2026
cbd82fd
docs: use specific titles and query guidance in API pages
ovvesley Sep 13, 2026
c47c321
docs: distinguish checked and inferred API responses
ovvesley Sep 13, 2026
49cbeb8
docs: replace synthetic provenance response rows
ovvesley Sep 13, 2026
98f9827
docs: remove ambiguous array items from API examples
ovvesley Sep 13, 2026
a5208f9
docs: distinguish environment recommendations from schema checks
ovvesley Sep 13, 2026
a0fdcaa
docs: correct nested environment ID requirements
ovvesley Sep 13, 2026
142a2ff
docs: remove ignored environment binding fields from authoring
ovvesley Sep 13, 2026
1a5cae9
docs: align environment response examples with persisted fields
ovvesley Sep 13, 2026
ff5b76d
docs: separate planning resource filters from runtime bindings
ovvesley Sep 13, 2026
d0baf70
docs: clarify that plan feasibility is not runtime readiness
ovvesley Sep 13, 2026
0888517
docs: keep first-user promise focused on run results
ovvesley Sep 13, 2026
3e2d882
docs: keep SLURM login node out of batch scheduling
ovvesley Sep 13, 2026
d1a245c
docs: qualify first-contact HPC SSH host trust
ovvesley Sep 13, 2026
769f6e0
docs: use stable routes for client-side navigation
ovvesley Sep 13, 2026
0b50e8e
docs: simplify execution and runtime internals
ovvesley Sep 13, 2026
8b53d8a
docs: state factory reset retention limits
ovvesley Sep 13, 2026
4b260b1
docs: separate update notices from operation notifications
ovvesley Sep 13, 2026
cc64420
docs: standardize Desktop and API path headings
ovvesley Sep 13, 2026
0a595be
docs: map remaining Desktop detail routes
ovvesley Sep 13, 2026
9c1da88
docs: make result evidence path more direct
ovvesley Sep 13, 2026
7b215b8
docs: identify Windows release asset as portable
ovvesley Sep 13, 2026
6409678
docs: close editorial iteration with verified scope
ovvesley Sep 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/docs-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,18 @@ on:
paths:
- "docs/**"
- "examples/**"
- "internal/api/**"
- "internal/domain/**"
- "internal/provider/**"
- ".github/workflows/docs-checks.yaml"
push:
branches: [main]
paths:
- "docs/**"
- "examples/**"
- "internal/api/**"
- "internal/domain/**"
- "internal/provider/**"
- ".github/workflows/docs-checks.yaml"

permissions:
Expand All @@ -28,6 +34,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
Expand All @@ -41,6 +49,8 @@ jobs:
run: npm run build --prefix docs
- name: Verify repository-owned documentation links
run: npm run check:links --prefix docs
- name: Check documentation shell examples
run: npm run check:shell --prefix docs
- name: Upload GitHub Pages artifact
if: github.ref == 'refs/heads/main'
uses: actions/upload-pages-artifact@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gh-akf-new-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ jobs:
AkôFlow Desktop requires Docker Desktop on macOS and Windows, or Docker Engine with the Compose v2 plugin on Linux. Download the matching asset below:

- **macOS:** open the universal `.dmg`, drag AkôFlow Desktop to Applications, and launch it.
- **Windows:** run the x64 installer `.exe`, or use the portable `.exe` without installation.
- **Windows:** run the x64 portable `.exe` asset without an installation wizard.
- **Linux:** run the x64 `.AppImage` after `chmod +x`, or install the `.deb` with `sudo apt install ./Akoflow-Desktop-*.deb`.

The matching source is the Git tag `${{ github.ref_name }}`. The runtime Docker archives in this release are loaded locally by Desktop; AkôFlow does not publish daemon or BuildKit packages to a container registry.
48 changes: 14 additions & 34 deletions docs/docs/concepts.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,30 @@
---
id: concepts
title: System architecture
sidebar_label: System architecture
description: How AkôFlow keeps infrastructure, workflow intent, planning decisions, and execution evidence separate.
title: Core concepts
sidebar_label: Core concepts
description: Understand workflows, environments, plans, runs, artifacts, and provenance in AkôFlow.
---

import useBaseUrl from '@docusaurus/useBaseUrl';

AkôFlow is a control plane for scientific workflows. It keeps the description of the available infrastructure separate from the workflow definition, the scheduling decision, and the evidence produced by an execution. That separation lets the same immutable workflow version be compared on different infrastructure scopes without rewriting the workflow.
AkôFlow keeps the workflow you define, the resources available to it, the plan you choose, and the result you observe as separate records. That lets you try a different plan without rewriting the workflow.

This is an explanation of the records and their boundaries. For the exact YAML fields, use the [workflow specification](./internal/workflow-spec) and the [environment reference](./reference/environment-yaml). For an end-to-end task, start with [the first simulated workflow](./guides/workflows/first-run).
## From workflow to result

<img src={useBaseUrl('/img/architecture/akoflow-control-plane.svg')} alt="AkôFlow control-plane architecture: Desktop and API clients call the daemon; its workflow, planning, and execution services preserve scientific evidence in SQLite and dispatch work through SimGrid, Kubernetes, SSH/Slurm, cloud, and local adapters." />
<img src={useBaseUrl('/img/architecture/record-chain.svg')} alt="A workflow and an environment lead to candidate plans; executing a selected plan produces a run, artifacts, and provenance." />

*The diagram groups responsibilities rather than deployment units. AkôFlow is one daemon with application services and adapters; the cards do not imply separately deployable microservices.*
A **workflow** is a set of activities with dependencies. For example, `prepare → analyze → summarize` means that analysis waits for preparation and the summary waits for analysis. The workflow describes the work and required data; it does not choose a machine.

## The record chain
An **environment** describes where work could run: a local host, a modeled simulation platform, a Kubernetes cluster, or an HPC system. Its **resources** are the available machines or capacity. An **execution scope** limits which environment versions and network links a planning experiment can use.

<img src={useBaseUrl('/img/architecture/record-chain.svg')} alt="Environment definitions become published versions and scopes; immutable workflow versions join planning sessions; selected plans lead to execution runs and observed task, transfer, artifact, provenance and audit records." />
A **plan** assigns activities to resources and predicts timing, transfers, and possibly cost. AkôFlow can produce several candidates, or you can supply a manual plan. Selecting one does not start a run; it records the choice you want to execute.

The arrows express references, not a single mutable object. A planning session preserves a snapshot of the workflow, scope, inventory, topology, profiles, constraints, and selected algorithms. A later discovery refresh can create new inventory for future sessions, but it does not change that earlier comparison.
A **run** records what happened after the plan was submitted. It tracks activity status and stores timing, transfers, and output evidence when those observations are available. Compare them with the plan's predictions to see where they differ.

## Infrastructure is a versioned boundary
**Executable artifacts** are the versioned programs or images used by activities. **Scientific data** includes inputs and outputs associated with the work. **Provenance** links the workflow, plan, run, activities, and data so you can trace how a result was produced. Audit separately records connection checks, resource discovery, and console actions.

An **environment** names an infrastructure boundary: a local host, Kubernetes cluster, SSH/SLURM system, modeled SimGrid platform, or cloud configuration. Its published version can contain runtimes, resources and their hierarchy, runtime bindings, storage, connection observations, and capability observations.
## Where to go next

A **resource** is capacity that may be assigned by a plan. A **runtime** says how an activity is launched and observed. A binding states which runtime may use which resource. The [runtime adapters explanation](./runtimes) describes that boundary in more detail.
Start with [the first local workflow in Desktop](/docs/guides/workflows/first-local-run). Then use [Workflow definitions](/docs/guides/workflows/definitions), [Planning](/docs/guides/workflows/planning), and [Execution](/docs/guides/workflows/executions) for the individual tasks. The [SimGrid API tutorial](/docs/guides/workflows/first-run) is a separate simulation example.

An **execution scope** chooses the published environment versions that an algorithm may consider. Its network topology supplies directed links between resources. This means a plan answers a constrained question—"place this workflow on this frozen universe"—rather than a claim about every resource the daemon may ever discover.

## A workflow describes intent, not placement

A workflow definition owns identity and namespace. Its immutable version has activities plus control and data dependencies. Activities carry executable and resource requirements and may carry a simulation profile. They do not name a target resource; that is a planning decision.

Control dependencies establish ordering. Data dependencies identify the producer, consumer, logical data, and byte volume used for movement modeling. In the current portable importer, a data dependency contributes to scheduling only when its producer/consumer pair also has the matching control dependency. This protects the DAG semantics from a data declaration that has no ordering edge.

## A plan is a prediction and a decision

A planning session may produce several **candidates**. They are alternatives, not runnable plans in their own right. Selecting a candidate promotes its placement to a canonical **schedule plan** with assignments and predicted ready, start, finish, runtime, transfer, and cost values. Manual and imported plans use the same plan aggregate after validation.

Planning does not start work. The [planning explanation](./explanations/planning) explains why candidates, objectives, and a selected plan are different records.

## Execution creates observations

An **execution run** binds one selected plan to real, simulation, or interactive mode. The supervisor persists task attempts, runtime handles, transfer routes, logs, artifact manifests, and timing. Those records are observations of a run; they do not retroactively alter the plan prediction.

An executable artifact is immutable runnable input. An artifact manifest is an observed output from an activity. They are deliberately different: an input can be materialized before a task starts, while an output can become a scientific data object only after the activity has been observed.

Read [execution and control-plane behavior](./engine) for orchestration, [network modeling](./explanations/network-modeling) for movement assumptions, and [evidence and provenance](./explanations/evidence-and-provenance) for the records used to compare a plan with a completed run.
For exact file fields, use the [workflow specification](/docs/internal/workflow-spec) and [environment reference](/docs/reference/environment-yaml). For implementation details, see [Architecture internals](/docs/modules).
96 changes: 41 additions & 55 deletions docs/docs/contributing/documentation-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,26 @@ sidebar_label: Production plan
description: Source-of-truth, media, and review rules for AkôFlow documentation.
---

This plan keeps the documentation aligned with the shipping daemon and Desktop application. It is also the contract for parallel documentation work.
This page defines the editorial and verification rules for the documentation. Apply them whenever a page, example, screenshot, API route, or supported capability changes.

## Editorial contract

The documentation should show how AkôFlow simplifies scientific workflow execution, not display the complexity of its implementation.

1. Explain the task and expected result first. Give each page one main job and reveal details only when the reader needs them.
2. Use workflow, environment, plan, run, artifacts, and provenance in user paths. Put supervisors, handlers, adapters, and persistence in developer architecture pages unless a task requires them.
3. Make support claims only when code and appropriate evidence support them. Label partial features and distinguish code review, local fixtures, and real-environment validation.
4. Prefer a concrete example over a list of capabilities. Remove repeated caveats and text that does not help a reader act or decide.
5. Check whether each page quickly answers what it is for, when to use it, how to use it, and what to expect.

For each editorial pass, classify passages as **KEEP**, **SIMPLIFY**, **MOVE**, **DELETE**, or **VERIFY**. Resolve P0 (false claims and broken instructions), then P1 (confusing paths and misplaced concepts), then P2 (length and repetition), then P3 (presentation). Repeat audit → edit → build → link check → claim check → first-time-reader review until a full pass finds no P0 or P1 issues. A successful build alone is not the finish line.

The completion gate is a new user running a first workflow without undocumented knowledge, support claims matching implementation and validation, implementation details outside the basic path, and no P0/P1 findings in the final audit.

## Documentation principles

1. Teach complete user tasks instead of listing screens in isolation.
2. Present **AkôFlow Desktop** and **API** as equivalent paths whenever both exist.
2. Present **AkôFlow Desktop** and **API** paths only where each procedure is documented and verified; state extra prerequisites instead of calling them equivalent by default.
3. Derive behavior from code, tests, and checked-in examples; never infer an endpoint or field from a label alone.
4. Use screenshots to explain spatial relationships and short videos to explain motion or multi-step transitions.
5. Keep a text equivalent for every visual procedure.
Expand All @@ -20,55 +34,23 @@ This plan keeps the documentation aligned with the shipping daemon and Desktop a

| Subject | Primary source |
|---|---|
| Desktop navigation | `akoflow-admin/src/App.jsx` and `src/components/AppShell.jsx` |
| Desktop operations | Page, form, and provider components in `akoflow-admin/src` |
| HTTP methods and paths | `akoflow/internal/api/httpserver/httpserver.go` |
| Desktop navigation | `akoflow-desktop/src/App.jsx` and `akoflow-desktop/src/components/AppShell.jsx` in the Desktop repository |
| Desktop operations | Page, form, and provider components in `akoflow-desktop/src` |
| HTTP methods and paths | `internal/api/httpserver/httpserver.go` in this repository |
| Request and response contracts | HTTP handlers, application services, and `internal/domain` |
| Runnable scenarios | `akoflow/examples` and integration tests |
| Packaged installation | Root README, `releases/`, Electron bootstrap, and release workflows |
| Runnable scenarios | `examples/` and integration tests in this repository |
| Packaged installation | Root README, `releases/`, the Desktop repository's `electron/` bootstrap, and release workflows |

Generated site output and old copied Markdown files are not sources of truth.

## Production waves

### Wave 1 — foundation

- Establish the information architecture and sidebar.
- Add reusable screenshot, video, and Desktop/API components.
- Build a feature coverage matrix.
- Define stable demo data and redact all secrets from captures.

### Wave 2 — task guides

- Infrastructure and execution scopes.
- Workflow definition, planning, and execution.
- Artifacts, storage, provenance, and audit.
- Installation, instance management, and troubleshooting.
## Review a change

Independent guide groups may be authored in parallel after their source inventory is complete. Each group owns separate files.

### Wave 3 — reference

- Replace the legacy workflow specification with the current versioned model.
- Document API conventions and endpoint groups.
- Document runtime capabilities, lifecycle states, and compatibility rules.

### Wave 4 — media

- Load a deterministic demonstration instance.
- Capture a fixed desktop viewport in the light theme.
- Add numbered callouts and restrained directional arrows.
- Record one operation per video.
- Prefer WebM for the site; create an optimized GIF only when a fallback is useful.

### Wave 5 — verification

- Verify every field against the Go contract.
- Verify every route against the HTTP mux.
- Run or validate checked-in examples.
- Build and type-check Docusaurus.
- Review screenshots for secrets, hostnames, tokens, usernames, and unstable identifiers.
- Search for removed terminology and stale fixed-port instructions.
1. Check page purpose, audience, order of concepts, and whether the example solves a concrete task.
2. Compare affected claims and payloads with current handlers, Desktop behavior, tests, and checked-in examples.
3. Distinguish local fixtures from real-provider validation, and update support limits when evidence changes.
4. Check screenshots for secrets, hostnames, tokens, usernames, and unstable identifiers.
5. Run the documentation type-check, build, and link check; then read the rendered path at desktop and mobile widths.
6. Record unresolved P0/P1 findings and repeat the pass after corrections.

## Link verification

Expand All @@ -77,15 +59,17 @@ Run the repository-owned link check after a documentation build:
```bash
npm run build --prefix docs
npm run check:links --prefix docs
npm run check:shell --prefix docs
```

The check rejects a missing internal documentation route, a missing file below
`docs/static/`, and a Showcase download that no longer has its checked-in
counterpart under `examples/`. It intentionally does not make network requests
or judge third-party URLs: availability of external services belongs to the
reader's environment, while these three classes are artifacts maintained in
this repository. GitHub Actions runs the same type-check, build, and link check
for documentation or example changes.
The link check rejects missing documentation routes, files under `docs/static/`,
and Showcase downloads without a checked-in counterpart under `examples/`.
It checks repository-owned links, not third-party availability.

The shell check parses fenced Bash/sh examples and Showcase JSX command blocks
without running them. It requires `curl` examples to fail on HTTP errors, but
cannot validate named files or API behavior. GitHub Actions runs the type-check,
build, link check, and shell check for documentation or example changes.

## Media naming

Expand Down Expand Up @@ -115,7 +99,7 @@ Use the black, white, and neutral-gray visual system established by [`akoflow-co

## Definition of done for a guide

- The task has prerequisites, Desktop steps, API steps, expected result, and next steps.
- The task has prerequisites, a verified procedure for its stated interface, an expected result, and next steps. Add a second interface only when its path has been checked.
- Screenshot placeholders or final captures cover only moments where the visual adds information.
- API examples include authentication and use the current `/akoflow-api` prefix.
- Identifiers in examples are visibly placeholders or come from a documented demo dataset.
Expand All @@ -126,7 +110,9 @@ Use the black, white, and neutral-gray visual system established by [`akoflow-co

Run `npm run generate:api` to rebuild the endpoint catalog from `internal/api/httpserver/httpserver.go`. The Docusaurus `prestart` and `prebuild` hooks run this automatically. Generated pages are intentionally ignored by Git; changes to method, path, or handler appear on the next documentation build without copying the router by hand.

Each generated endpoint page includes its HTTP method, registered path, path parameters, authentication example, request-body indication, owning handler, and a copyable cURL command. Domain guides remain responsible for semantic explanations and complete payload examples.
Each generated endpoint page shows the registered method and path, parameters, owning handler, and request-body indication. HTTP routes include a cURL command or template; the console stream shows a WebSocket connection instead. A template still needs valid IDs and, for a body, a prepared request file.

The generator shows a request body only when it has a checked example. Otherwise, use the handler-checked notes and linked guide to prepare one. Response JSON shapes are illustrative and may omit fields or show placeholder values. Check a route against its handler and a real response before treating a field-level example as verified.

## Reproducible media capture

Expand Down
Loading
Loading