Skip to content

docs(workflow): the roadmap-burndown Spacedock workflow and its earned rules - #240

Merged
gcko merged 2 commits into
mainfrom
docs/spacedock-roadmap-burndown-workflow
Aug 28, 2026
Merged

docs(workflow): the roadmap-burndown Spacedock workflow and its earned rules#240
gcko merged 2 commits into
mainfrom
docs/spacedock-roadmap-burndown-workflow

Conversation

@gcko

@gcko gcko commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Adds the Spacedock workflow this repository's roadmap burndown now runs on, plus the two .gitignore entries and the AGENTS.md docs-table row it owes.

No mirrored Linear issue: this is workflow machinery produced while running the burndown, not a board item.

What it is

A five-stage pipeline — selectiontriageimplementationreviewrecorded — over the Cargento: Visibility 2x2 Roadmap project, with captain gates at triage and review. It does not reinvent what already exists: the burndown skill owns picking and reconciling, recce-dev:linear-deep-dive owns issue analysis, superpowers:test-driven-development owns the build, and AGENTS.md, "Pre-PR Checks" owns the gate. What the workflow adds is a durable place for one issue's journey to sit between sessions, an adversarial pass over the issue text before anyone builds against it, and a review whose depth is chosen rather than assumed.

Why it reads the way it does

Nearly every rule in it was earned rather than designed, and each carries the measurement behind it. That is deliberate: a rule without its reason gets deleted the first time it is inconvenient, and a record specific enough to be contradicted is what lets a later measurement disagree with it.

A sample, all measured while running the thing:

  • Linear's serializer rewrites the whole body on any write, including a targeted patch — and the damage is progressive: a boundary moves on one write, the mark is dropped entirely on the next, and a repair provably cannot stabilise it. Markdown links do not prevent mention-created relations. Bodies must be sent unwrapped.
  • A stage-report addendum must not reuse the ## Stage Report: {stage} heading — the selector takes the latest match, so an addendum silently replaces the report rather than supplementing it.
  • reconciled has exactly one window, before merge guard archives the entity, because an archived entity is read-only.
  • A checklist item must be satisfiable by the worker it is given to, and must name the artifact rather than a category.
  • Cost the oracles separately from the runtime, and re-baseline the estimate at a correction round — a round's content is findings, which are unknown when the estimate is declared.
  • Verify PR content at the SHA. A stale gh pr diff once returned text present in no version of a file.

Layout

Entity state lives on the spacedock-state/roadmap-burndown orphan branch, checked out as a linked worktree and gitignored here, so stage transitions never churn a code branch or collide with a feature PR.

The vendored _mods/pr-merge.md is ignored too. The README explains why — a committed copy forks the plugin's own file, and its template placeholders fail this repository's documentation gate — along with how to restore it and a known local-only validator divergence that follows, which is filed as the next housekeeping task on the workflow.

Verification

The diff is .gitignore plus two Markdown files, so it touches no Python. CI's change detector will nonetheless classify it code=true, because .gitignore is not in its prose set, so the full gate is owed and was run locally:

  • ruff check . — all checks passed; ruff format --check . — 147 files already formatted
  • mypy — success, no issues in 108 source files
  • scripts/lint_embedded.py — frontend assets clean
  • scripts/bump_version.py --current0.18.0; no version field moved since the merge base
  • Dashboard suite — 1959 tests OK, 1 skip. Script suites — 192 tests OK
  • coverage report90.8% against fail_under = 73
  • scripts/validate_plugins.pyexit 0 against a clean export of the committed tree (git archive HEAD). Run against a working tree that has the ignored mod restored it reports two errors from that file; that is the documented divergence above, and CI checks out committed files only.

…d rules

Adds the workflow definition this repository's roadmap burndown now runs on: a
five-stage pipeline (selection, triage, implementation, review, recorded) with
two captain gates, over the Cargento: Visibility 2x2 Roadmap project.

Nearly every rule in it was earned rather than designed, and the file records
the measurement behind each one, because the reason is what lets a rule survive
a case it did not anticipate:

- Linear's serializer rewrites the whole body on any write, including a
  targeted patch, and the damage is progressive: a boundary moves on one write,
  the mark is dropped on the next, and a repair cannot stabilise it. Markdown
  links do not prevent mention-created relations. Bodies must be sent unwrapped.
- A stage-report addendum must not reuse the "## Stage Report: {stage}" heading;
  the selector takes the latest match and hides the original from the machine.
- "reconciled" has exactly one window, before "merge guard" archives the entity,
  because an archived entity is read-only.
- A dispatch checklist item must be satisfiable by the worker it is given to,
  and must name the artifact rather than a category.
- Cost the oracles separately from the runtime, and re-baseline the estimate at
  a correction round: a round's content is findings, which are by definition
  unknown when the estimate is declared.
- Verify PR content at the SHA. A stale "gh pr diff" once returned text present
  in no version of the file.
- Write records specific enough to be contradicted, and when a later
  measurement disagrees with a recorded figure, suspect a hidden variable before
  suspecting a miscount.

Entity state lives on the spacedock-state/roadmap-burndown orphan branch and is
gitignored here, so stage transitions never churn a code branch. The vendored
_mods/ copy is ignored too; the README explains why, how to restore it, and a
known local-only validator divergence that follows from it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Jared Scott <jared.scott@variable.team>
@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Coverage

Name                                                                  Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------------------------------
cargento/skills/cargento/agy_hook.py                                     79     14     28      7  78.5%
cargento/skills/cargento/cargento_runtime/__init__.py                     0      0      0      0 100.0%
cargento/skills/cargento/cargento_runtime/aggregate.py                  213      1     64      0  99.6%
cargento/skills/cargento/cargento_runtime/asks.py                       110      0     28      0 100.0%
cargento/skills/cargento/cargento_runtime/claude_data.py                305     33    142     16  89.0%
cargento/skills/cargento/cargento_runtime/cli.py                        127     14     26      3  87.6%
cargento/skills/cargento/cargento_runtime/collectors/__init__.py          0      0      0      0 100.0%
cargento/skills/cargento/cargento_runtime/collectors/antigravity.py     410     41    166     25  87.2%
cargento/skills/cargento/cargento_runtime/collectors/claude.py          261     19     94     12  90.7%
cargento/skills/cargento/cargento_runtime/collectors/codex.py           101      7     38      7  89.9%
cargento/skills/cargento/cargento_runtime/collectors/copilot.py         148      6     50      2  96.0%
cargento/skills/cargento/cargento_runtime/collectors/cursor.py          277     20    106     17  89.8%
cargento/skills/cargento/cargento_runtime/collectors/droid.py            32      3      6      1  89.5%
cargento/skills/cargento/cargento_runtime/collectors/gemini.py           53      7     16      4  84.1%
cargento/skills/cargento/cargento_runtime/collectors/goose.py            89     11     28      4  87.2%
cargento/skills/cargento/cargento_runtime/collectors/opencode.py         78      6     26      2  92.3%
cargento/skills/cargento/cargento_runtime/collectors/pi.py              326     34    152     20  88.7%
cargento/skills/cargento/cargento_runtime/config.py                     189      1     20      1  99.0%
cargento/skills/cargento/cargento_runtime/diagnostics.py                 84      4     26      4  92.7%
cargento/skills/cargento/cargento_runtime/dismissals.py                 113      2     28      2  97.2%
cargento/skills/cargento/cargento_runtime/events.py                     169      0     64      0 100.0%
cargento/skills/cargento/cargento_runtime/git_status.py                  28      2      8      2  88.9%
cargento/skills/cargento/cargento_runtime/http_api.py                   525     34    176     10  93.7%
cargento/skills/cargento/cargento_runtime/io.py                         126      2     28      0  98.7%
cargento/skills/cargento/cargento_runtime/lifecycle.py                  325     15    106      6  95.1%
cargento/skills/cargento/cargento_runtime/notifications.py              174     14     60      4  91.5%
cargento/skills/cargento/cargento_runtime/observation.py                271      9     74      1  97.1%
cargento/skills/cargento/cargento_runtime/observer.py                   249     34    110     13  84.7%
cargento/skills/cargento/cargento_runtime/probe.py                       44      0     18      1  98.4%
cargento/skills/cargento/cargento_runtime/quota.py                      333      2    112      1  99.3%
cargento/skills/cargento/cargento_runtime/records.py                    256      5    114      9  96.2%
cargento/skills/cargento/cargento_runtime/sessions.py                   101      0     44      0 100.0%
cargento/skills/cargento/cargento_runtime/snapshot.py                    36      0      4      0 100.0%
cargento/skills/cargento/cargento_runtime/spacedock.py                  456     48    238     26  89.0%
cargento/skills/cargento/cargento_runtime/state.py                       65      0      2      0 100.0%
cargento/skills/cargento/cargento_runtime/stream.py                      57      0      8      0 100.0%
cargento/skills/cargento/cargento_runtime/transcripts.py                509     29    266     26  92.9%
cargento/skills/cargento/cargento_runtime/turns.py                      197     14    104     12  90.7%
cargento/skills/cargento/cargento_runtime/web/__init__.py                 0      0      0      0 100.0%
cargento/skills/cargento/cargento_runtime/web/page.py                    54      0     14      0 100.0%
cargento/skills/cargento/event_hook.py                                   86      4     28      3  93.9%
cargento/skills/cargento/mcp_server.py                                  377     22    112     14  92.2%
cargento/skills/cargento/notify_hook.py                                  49     15      6      1  67.3%
cargento/skills/cargento/server.py                                        3      0      2      1  80.0%
cargento/skills/cargento/statusline_hook.py                             131     13     46      8  87.0%
scripts/bench_collect.py                                                211     10     54      6  94.0%
scripts/bench_event_latency.py                                           67     67     14      0   0.0%
scripts/bump_version.py                                                  60     12     24      5  77.4%
scripts/capture_hook.py                                                 287     30     86     11  88.5%
scripts/derive_prompt_shapes.py                                         210     16     88     14  89.3%
scripts/lint_embedded.py                                                 92      3     28      2  95.8%
scripts/validate_plugins.py                                             663    186    386     58  69.3%
-------------------------------------------------------------------------------------------------------
TOTAL                                                                  9206    809   3468    361  89.7%

Threshold: fail_under in pyproject.toml · label coverage-exception to bypass (visible in PR timeline).

@gcko
gcko merged commit c983dd1 into main Aug 28, 2026
12 checks passed
@gcko
gcko deleted the docs/spacedock-roadmap-burndown-workflow branch August 28, 2026 12:56
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