Roadmap
This is what The Horizontal Front intends to do next, and which parts of it are wanted from other people.
It is deliberately short on dates, because the project has none it could keep. It is a small, deliberately paced effort, and a roadmap that implied a schedule would be inventing one. What it does say is how far the project has committed to each thing on it: decided and being worked on, genuinely intended with nobody on it, or filed and not yet evaluated. The next section defines those three, and says which entries state one.
The issues linked below are the authority. This page is a way in, not a second specification: where something is already written down properly, this links to it rather than restating it.
A tranche is a body of work with a single reason behind it: one GitHub issue holding that reasoning, with the individual pieces as its child issues, which may hold children of their own. It is the unit this page commits to, so start with the tranche rather than its children: the tranche is the part that says why.
Finished work is not here. A tranche leaves this page when all of it is done, and an individual issue leaves when it closes; both are recorded on delivered. This page is what is ahead.
How to read this
| Term | Meaning |
|---|---|
| Committed | Decided, and either in progress or next. |
| Wanted, not scheduled | Genuinely intended, nobody currently working on it. |
| Raised, not decided | Filed and published, but not evaluated. The project has formed no intention about it, and listing it here is not agreement to do it. Moving an issue out of this row is the decision being made. |
A tranche states its commitment once and the work listed under it shares that, because committing to a tranche is committing to what it holds. An issue separate from the tranches states its own, having no tranche to inherit from.
Every open issue appears somewhere on this page: in its own tranche, under one, or separate from the tranches. If it is not here, that is a fault in the page rather than work being kept quiet.
Publish the first production release (1.0.0)
Committed. Finish the content that already exists. One campaign, one episode, brought to production quality. Adding more content is not part of it.
Help wanted: Production audio and human artwork refinement are both wanted, and both are currently the hardest things for the project to staff.
- #37 Bring Management and the protagonist to production authorship
- #38 Complete and accept the production audio
- #39 Playtest The Alarm with representative players
- #73 Commit to a versioning scheme and make release status checkable
- #40 Prepare and publish the 1.0.0 production release
Open the game to outside authors
Wanted, not scheduled. Let somebody who did not build the game write a campaign for it: compose it in the browser, preview it playing, and package it into a contribution that can be reviewed and merged.
Help wanted: This tranche exists so that campaigns can come from outside. It is the main route in for anyone who wants to write for the game.
- #54 Own presentation artwork at campaign level and stock a shared starter kit
- #55 Render content the build did not ship
- #14 Create the Propaganda Department authoring tool
- #56 Package a contribution
- #57 Write the contributor's editorial standard
Expand the episode grammar beyond one worked example
Wanted, not scheduled. Widen the authoring vocabulary until a second and third episode can be written as data, writing, artwork and audio alone — proving the claim that a new episode needs no new programming.
Help wanted: Engine and grammar design, which the maintainer intends to keep. Episodes written against the grammar are a different matter entirely.
- #42 Keep campaign progress on the player's device
- #43 Validate the geometry of a resistance composition
- #11 Add semantic poses and constrained composition offsets
- #8 Expand the episode narrative grammar
- #9 Add phased confrontation grammar
- #10 Expand the reusable rhythm vocabulary
- #13 Add a second reusable layout and production-oriented skin
Separate from the tranches
An issue belongs here when it is genuinely a one-off: real work with no body of work behind it for a tranche to explain. Inventing a tranche to hold a single issue would produce a grouping that says nothing, and the instruction above is to start with the tranche because the tranche says why. This is a declared exception rather than a queue: if the list grows long, that is evidence of work accumulating which no tranche accounts for, and the answer is a tranche rather than a longer list.
- #50 Widen the verified support matrix — Wanted, not scheduled.
- #87 Make the browser smoke tests faster and stop them flaking on CI — Wanted, not scheduled.
Where help is most wanted
Three things are harder for this project to staff than anything else, and all three are open to anyone.
Production audio. Every sound is synthesised from authored numbers, with no samples anywhere, which keeps the provenance position clean. The mix is a first pass tuned by a maintainer working without a sound designer, and it needs someone who actually knows what they are doing. See #38.
Human artwork. The current character art is AI-generated under maintainer
direction, integrated without a human repainting pass. That is published as a
known limitation rather than concealed, and it is the specific reason the live
release is numbered 0.2.x rather than 1.0.0. See
#37.
Playtesting. One person who knows where every note falls cannot tell whether the joke lands. See #39.
What the maintainer intends to keep
Engine architecture, the episode grammar and the content-ownership rules are maintainer decisions for now. They are the constraints everything else is built on, and they are being kept deliberately small and inspectable while the project is young. Proposals are welcome as issues; the contributing guide explains how to raise one.
The protected commitments in the project charter are not on the roadmap at all, because they are not up for revision. How decisions get made is in governance.
Writing a campaign
Not yet, honestly. Campaign authoring is what #53 exists to make possible, and until it lands there is no supported route for an outside author: the tooling, the shared artwork a stranger may use, and the editorial standard a submission would be judged against are all part of that tranche.
If you want to write for the game, say so on that issue. Knowing somebody is waiting is the best argument for scheduling it.
Keeping this honest
This page is generated from a record in the repository, and a check compares its issue numbers and titles against GitHub. If an issue here is renamed or reparented and this page is not updated, that check fails. The check also runs the other way: it lists every open issue and fails if one of them is named nowhere here, so work cannot start — or sit open for weeks — without appearing on the plan that claims to be the way in.
One part of this is editorial rather than checked: a tranche goes on the plan before its work starts. Commitment is what this page publishes, so deciding to commit and publishing that decision are the same act. An individual issue only needs listing, with no ordering requirement, and the check leaves a pull-request cycle of slack for that.
The check enforces retirement in the same way. It fails when a tranche on this page is entirely finished, or when an individual issue here has closed, and when anything on delivered is still open. The two pages are generated from one record, so retiring work is a move rather than a deletion.
This page still deliberately does not restate whether each issue is open or closed — the linked issue answers that better than a copy of it could. What it does say is that everything on it is unfinished.