Skip to content

The plan

Milestones as executable outcome specifications, issues as execution contracts, and the dependency graph that decides what may be executed next. Every figure is derived from .ai/repo/project.

ready
23
blocked
126
active
1
verify
0
done
52
cancelled
0

Derived when this page was built, from the canonical model. No status is stored: each one is computed from what an issue recorded about itself and from the state of its dependencies. How that works.

next ready issue

I0806 — Make the session rules doctrines, with retention and archiving

Declare the session rules in share/standard/majordomus/ with validators that doctor and watch dispatch — a malformed active or closed record, a session left open past its policy, a reference to a record that does not exist, and retention over the declared cap — and implement policy-driven archiving that never deletes and never overwrites.

majordomus plan next

Milestones

A milestone is an executable specification of an outcome, not a folder for tickets. Its state follows from its issues and from its own acceptance evidence — never from a count of closed tickets reaching a total.

Execution waves

A wave is a layer of the dependency graph: an issue sits one layer past its deepest dependency. Sharing a wave is necessary for two issues to run at the same time and is not sufficient — overlapping declared scope serialises them, and that is reported below the graph on each milestone.

wave 0

wave 1

wave 2

wave 3

wave 4

wave 5

wave 6

wave 7

wave 8

wave 9

The graph

Generated from the same edges the command reads, by majordomus plan graph. No diagram on this site is drawn by hand.

Every issue, every dependencyfrom .ai/repo/project
flowchart LR
    I0001["I0001<br/>Audit what actually plans work in this repository"]:::done
    I0002["I0002<br/>Define the canonical milestone and issue schema"]:::done
    I0003["I0003<br/>Implement the model loader and the status derivation engine"]:::done
    I0004["I0004<br/>Implement DAG validation and execution waves"]:::done
    I0005["I0005<br/>Implement the plan command surface"]:::done
    I0006["I0006<br/>Generate the Mermaid DAG from the graph"]:::done
    I0007["I0007<br/>Enforce the canonical model as doctrine"]:::done
    I0008["I0008<br/>Project the model to GitHub milestones and issues"]:::done
    I0009["I0009<br/>Project the model into the website"]:::done
    I0010["I0010<br/>Behavioural tests for schema, status, graph and command"]:::done
    I0011["I0011<br/>Cross-surface consistency and mutation tests"]:::done
    I0012["I0012<br/>Make CI refuse an invalid model or a stale projection"]:::done
    I0013["I0013<br/>Document the semantics and the dogfooding rule"]:::done
    I0014["I0014<br/>Make the worker instructions require the model"]:::done
    I0015["I0015<br/>Open the first real milestone and execute one issue through it"]:::done
    I0101["I0101<br/>Reproduce the escaped blocker as an executable case"]:::done
    I0102["I0102<br/>Decide whether a question transfers or the gate widens"]:::done
    I0103["I0103<br/>Implement the decision and prove it holds"]:::done
    I0104["I0104<br/>Move the claim from planned to guaranteed"]:::done
    I0201["I0201<br/>Declare which profile axis may become which runtime limit"]:::ready
    I0202["I0202<br/>Resolve a task's effective limits and print them as data"]:::blocked
    I0203["I0203<br/>Make enforcement opt-in, and prove a repository that declines is unaffected"]:::blocked
    I0204["I0204<br/>Apply one derived limit for real and prove it changes what happens"]:::blocked
    I0205["I0205<br/>Declare the clamp as a doctrine so the mapping and the adapter cannot drift"]:::blocked
    I0206["I0206<br/>Publish the runtime-adapters claim with the test that proves it and the limits it does not cover"]:::blocked
    I0301["I0301<br/>Define the execution record, including what an absence looks like"]:::blocked
    I0302["I0302<br/>Record telemetry a provider reports, and refuse anything it did not"]:::blocked
    I0303["I0303<br/>Prove a silent provider produces an explicit absence, never a guess"]:::blocked
    I0304["I0304<br/>Read the measurements back through the history surface, under a bound"]:::blocked
    I0305["I0305<br/>Publish the telemetry claim and record what remains unmeasured"]:::blocked
    I0401["I0401<br/>Define an accepted outcome, and join it to its measurements without storing the join"]:::blocked
    I0402["I0402<br/>Report cost only where measurement and acceptance both exist"]:::blocked
    I0403["I0403<br/>Make a thin denominator say so rather than average it away"]:::blocked
    I0404["I0404<br/>Publish the cost-per-outcome claim with its unit defined beside it"]:::blocked
    I0501["I0501<br/>Group comparable work from what the records already carry"]:::blocked
    I0502["I0502<br/>Recommend a profile from measured cost, naming the measurements"]:::blocked
    I0503["I0503<br/>Return no recommendation where the data is too thin, and say why"]:::blocked
    I0504["I0504<br/>Prove the recommendation is advisory and publish it as such"]:::blocked
    I0601["I0601<br/>Let a policy name a shared source it does not copy"]:::blocked
    I0602["I0602<br/>Make a local override explicit and prove it survives an update of the shared source"]:::blocked
    I0603["I0603<br/>Report drift from the shared policy in one command"]:::blocked
    I0604["I0604<br/>Prove the offline guarantee survives sharing"]:::blocked
    I0605["I0605<br/>Publish the shared-policy claim and what sharing still cannot do"]:::blocked
    I0701["I0701<br/>Reproduce the misattribution as an executable case"]:::ready
    I0702["I0702<br/>Decide how a record is attributed, between named alternatives"]:::blocked
    I0703["I0703<br/>Implement the decision and prove it holds"]:::blocked
    I0704["I0704<br/>Publish what attribution guarantees, and what it still cannot"]:::blocked
    I0801["I0801<br/>Narrow the Clean Extraction Boundary and record what was adopted"]:::done
    I0802["I0802<br/>Specify the session record before writing one"]:::done
    I0803["I0803<br/>Open a session and report its status"]:::done
    I0804["I0804<br/>Close a session into an envelope derived from the ledger"]:::done
    I0805["I0805<br/>Read sessions back with a divergence label"]:::done
    I0806["I0806<br/>Make the session rules doctrines, with retention and archiving"]:::ready
    I0807["I0807<br/>Discover knowledge sources from git, not from the filesystem"]:::done
    I0808["I0808<br/>Extract nodes with identities that survive a rebuild"]:::done
    I0809["I0809<br/>Record only edges that a file states, each with where it was observed"]:::done
    I0810["I0810<br/>A content-hash manifest that makes a second sync cheap"]:::ready
    I0811["I0811<br/>Read-only knowledge lookup with an ordering that can be explained"]:::blocked
    I0812["I0812<br/>Validate the graph, and let doctor and watch ask the same validator"]:::blocked
    I0813["I0813<br/>A closed session becomes a node that points at its episode"]:::blocked
    I0814["I0814<br/>Give the worker a bounded slice of knowledge, not the knowledge base"]:::blocked
    I0815["I0815<br/>Say what is now true in the claims, the documentation and the worker instructions"]:::blocked
    I0816["I0816<br/>Prove the loop on a real issue, without a transcript"]:::blocked
    I0817["I0817<br/>Phase timing and work counters behind MJ_TIMING"]:::done
    I0818["I0818<br/>The command registry is read in one pass"]:::done
    I0819["I0819<br/>The project model is loaded with one flatten per file and no per-file lookups"]:::done
    I0820["I0820<br/>Catalogue, DAG, context and command-surface validators read their inputs once"]:::ready
    I0821["I0821<br/>Flattened YAML is cached under .ai/local/cache by content hash"]:::ready
    I0822["I0822<br/>Every canonical file is flattened at most once per command"]:::blocked
    I0823["I0823<br/>majordomus bench: targets derived from the command registry"]:::done
    I0824["I0824<br/>Bench persists local runs and keeps a latest projection"]:::done
    I0825["I0825<br/>An explicit committed baseline"]:::done
    I0826["I0826<br/>bench --check refuses a regression by policy"]:::done
    I0827["I0827<br/>The benchmark policy block"]:::done
    I0828["I0828<br/>doctor under a declared budget, and the hook inherits it"]:::blocked
    I0829["I0829<br/>Performance doctrine as project rules"]:::done
    I0830["I0830<br/>docs/PERFORMANCE.md, README, CONTRIBUTING and CLI reference"]:::done
    I0831["I0831<br/>Performance claims at their proven status"]:::blocked
    I0832["I0832<br/>generate-site-data instrumented and its hot spots removed"]:::ready
    I0833["I0833<br/>knowledge nodes and edges read each source once"]:::done
    I0834["I0834<br/>The test runner reports per-case time and the suite budget"]:::blocked
    I0835["I0835<br/>CI runs the structural performance checks"]:::blocked
    I0836["I0836<br/>A synthetic repository generator for scaling cases"]:::ready
    I0837["I0837<br/>Timing report as JSON"]:::ready
    I0838["I0838<br/>bench compare and the top regressions report"]:::ready
    I0839["I0839<br/>watch inherits every doctor fix and its own budget"]:::blocked
    I0840["I0840<br/>context and its subcommands under a second"]:::blocked
    I0841["I0841<br/>Cache equivalence proved by property-shaped cases"]:::blocked
    I0842["I0842<br/>Before and after evidence for every optimisation"]:::blocked
    I0843["I0843<br/>The performance workflow is discoverable and complete"]:::blocked
    I0901["I0901<br/>The deployment description is a kind of the layer, not a provider file"]:::ready
    I0902["I0902<br/>The deployment object becomes typed Rust that refuses nonsense"]:::blocked
    I0903["I0903<br/>Deployment reads are declared once and projected everywhere"]:::blocked
    I0904["I0904<br/>The listen address is one fact with two projections"]:::blocked
    I0905["I0905<br/>Liveness and readiness are registered capabilities, not router hacks"]:::blocked
    I0906["I0906<br/>Termination is graceful and proved against the real container"]:::blocked
    I0907["I0907<br/>The running process says what it is, from an allowlist"]:::blocked
    I0908["I0908<br/>A hosted process has no repository, and says so instead of failing"]:::blocked
    I0909["I0909<br/>The production image is a generated projection of the build specification"]:::blocked
    I0910["I0910<br/>The release profile is chosen by measurement, not by folklore"]:::blocked
    I0911["I0911<br/>A source change does not rebuild the world, and the context stays small"]:::blocked
    I0912["I0912<br/>The image serves the site the canonical pipeline produced"]:::blocked
    I0913["I0913<br/>The provider configuration is generated, and the cheap profile is declared"]:::blocked
    I0914["I0914<br/>One deployment core, one command, and a dry run that mutates nothing"]:::blocked
    I0915["I0915<br/>Deployment joins the diagnostics that already exist"]:::blocked
    I0916["I0916<br/>The smoke suite is derived from the route registry, never written twice"]:::blocked
    I0917["I0917<br/>A bad deployment can be undone deterministically"]:::blocked
    I0918["I0918<br/>The bootstrap credential is used once and belongs to nothing"]:::blocked
    I0919["I0919<br/>Nothing secret and nothing local leaves in the image"]:::blocked
    I0920["I0920<br/>The image's dependencies are known and its advisories are policy"]:::blocked
    I0921["I0921<br/>Size is measured first and budgeted second"]:::blocked
    I0922["I0922<br/>The memory hypothesis is tested, not asserted"]:::blocked
    I0923["I0923<br/>Cold start and endpoint cost are benchmark targets like everything else"]:::blocked
    I0924["I0924<br/>The decision is recorded where architecture decisions are recorded"]:::blocked
    I0925["I0925<br/>Every deployment rule is a check that runs"]:::blocked
    I0926["I0926<br/>The deployment documentation is generated and reachable"]:::blocked
    I0927["I0927<br/>The cockpit shows the deployment from the same data"]:::blocked
    I0928["I0928<br/>A pull request cannot merge a deployment that would not work"]:::blocked
    I0929["I0929<br/>Production deploys from CI with a token scoped to one application"]:::blocked
    I0930["I0930<br/>The real image runs under the real limits before anything is deployed"]:::blocked
    I0931["I0931<br/>The application exists, one machine runs it, and the URL answers"]:::blocked
    I0932["I0932<br/>The milestone is accepted on its evidence"]:::blocked
    I1001["I1001<br/>One typed graph composes the registries that already own their facts"]:::done
    I1002["I1002<br/>Relations are typed, inferred from stable identities, and never dangle"]:::done
    I1003["I1003<br/>Skills, rules, decisions, documents, use cases and benchmarks enter the graph as themselves"]:::done
    I1004["I1004<br/>Availability and visibility are metadata, not conditions in a template"]:::done
    I1005["I1005<br/>The graph is a generated artifact with a schema and no unsafe field"]:::done
    I1006["I1006<br/>The runtime reads the graph through the registry, like every other read"]:::ready
    I1007["I1007<br/>The site renders the same graph, generated once"]:::ready
    I1008["I1008<br/>The two projections are proved to be the same model"]:::blocked
    I1009["I1009<br/>Every menu in this repository comes from one derivation"]:::ready
    I1010["I1010<br/>The overview is what exists, counted rather than claimed"]:::ready
    I1011["I1011<br/>The coverage matrix reports evidence, and never a green cell without one"]:::ready
    I1012["I1012<br/>One detail view, assembled from what a node actually has"]:::ready
    I1013["I1013<br/>Search over the graph, generated, with nothing to run"]:::blocked
    I1014["I1014<br/>The relation view reads the graph and holds no data of its own"]:::blocked
    I1015["I1015<br/>A surface with no server behind it is not offered as if it had one"]:::active
    I1016["I1016<br/>The Cockpit works on a phone and before JavaScript runs"]:::blocked
    I1017["I1017<br/>Live state is an overlay that degrades to nothing"]:::blocked
    I1018["I1018<br/>The surface rules exist as checks, proved by making them fail"]:::blocked
    I1019["I1019<br/>One skill runs the whole loop, and is itself in the graph"]:::blocked
    I1020["I1020<br/>The graph's health is answered by the doctor that already answers everything else"]:::blocked
    I1021["I1021<br/>A browser proves the interface, at the widths people use"]:::blocked
    I1022["I1022<br/>Drift in any derived surface fails the build"]:::blocked
    I1023["I1023<br/>Nothing private reaches a published page"]:::ready
    I1024["I1024<br/>The interface has a weight, and it is measured"]:::blocked
    I1025["I1025<br/>The federated model and its two projections are an architecture decision"]:::done
    I1026["I1026<br/>The architecture explains itself, from inside itself"]:::blocked
    I1027["I1027<br/>A synthetic capability proves the architecture instead of describing it"]:::blocked
    I1028["I1028<br/>The inventories this replaces are removed, not left running beside it"]:::blocked
    I1029["I1029<br/>The gate refuses what would silently break the interface"]:::blocked
    I1030["I1030<br/>The milestone is accepted on its evidence"]:::blocked
    I1031["I1031<br/>A served surface says which checkout it is serving"]:::ready
    I1101["I1101<br/>What this tool leaves behind, established by inspection rather than by memory"]:::ready
    I1102["I1102<br/>The two namespaces are a typed contract, not a habit"]:::blocked
    I1103["I1103<br/>Whether a file is authored or derived is a field, not a naming convention"]:::blocked
    I1104["I1104<br/>Both namespaces carry their contracts, all the way down"]:::blocked
    I1105["I1105<br/>The repository is discovered once, into one model"]:::blocked
    I1106["I1106<br/>The registries are views of the model, not separate discoveries"]:::blocked
    I1107["I1107<br/>Discovery is deterministic, cached, and its cost is known"]:::blocked
    I1108["I1108<br/>The desired integration is a value, and the plan is a diff"]:::blocked
    I1109["I1109<br/>Everything placed outside the two namespaces is recorded, with what it was"]:::blocked
    I1110["I1110<br/>The second run changes nothing, and a test says so"]:::blocked
    I1111["I1111<br/>Uninstall gives back exactly what was taken"]:::blocked
    I1112["I1112<br/>What touches the root is two small blocks, and they never change again"]:::blocked
    I1113["I1113<br/>Entering a directory is local, bounded and silent about the network"]:::blocked
    I1114["I1114<br/>A provider is an adapter over the model, and adding one is an implementation"]:::blocked
    I1115["I1115<br/>Completion comes from the command model, not from a second list"]:::blocked
    I1116["I1116<br/>This repository's own footprint moves, through the reconciler"]:::blocked
    I1117["I1117<br/>The hand-maintained lists are removed, not left running beside the derivation"]:::blocked
    I1118["I1118<br/>Every invariant of this milestone is a rule with a check that runs"]:::blocked
    I1119["I1119<br/>The budgets are measured, and a regression fails rather than being noticed"]:::blocked
    I1120["I1120<br/>A refusal says what to do about it"]:::blocked
    I1121["I1121<br/>Every surface shows the integration from the one model"]:::blocked
    I1122["I1122<br/>A foreign repository, adopted, upgraded and given back"]:::blocked
    I1123["I1123<br/>The milestone is accepted on its evidence"]:::blocked
    I1201["I1201<br/>An identity provider is a declarative object, and Google and Facebook are two of them"]:::ready
    I1202["I1202<br/>One typed provider model reads the objects, and no code names a provider"]:::blocked
    I1203["I1203<br/>One flow serves every provider, and it refuses everything it did not start"]:::blocked
    I1204["I1204<br/>The session is signed, short, and revocable from the server"]:::blocked
    I1205["I1205<br/>Identity is resolved once, in the router, and every surface reads it from there"]:::blocked
    I1206["I1206<br/>What an anonymous reader may do is derived from the effect classification, not from a list"]:::blocked
    I1207["I1207<br/>No credential reaches any output, and hostile provider metadata renders safely"]:::blocked
    I1208["I1208<br/>Adding a provider is one file, removing one is one deletion, and both are executed rather than described"]:::blocked
    I1301["I1301<br/>A workspace is a declared object of the layer; only its content is local"]:::done
    I1302["I1302<br/>Identity, provenance and support level are typed fields, not prose"]:::ready
    I1303["I1303<br/>The store is bounded, measured and invisible to every published projection"]:::blocked
    I1304["I1304<br/>The browser transport is the one this repository already drives"]:::blocked
    I1305["I1305<br/>An observed contract has a fingerprint, a compatibility state and a fixture"]:::blocked
    I1306["I1306<br/>A sync resumes, repeats itself without harm, and says how fresh it is"]:::blocked
    I1307["I1307<br/>The ChatGPT shape is mapped from evidence and never becomes the canonical model"]:::blocked
    I1308["I1308<br/>The executable's share is one capability, shaped like continuity"]:::blocked
    I1309["I1309<br/>The boundaries this milestone asserts are gates, not sentences"]:::blocked
    I1310["I1310<br/>The subsystem is documented where a person looks, and the plan is closed against the repository"]:::blocked
    I1401["I1401<br/>The identity of a projected record is what the record carries, not what its title says"]:::done
    I1402["I1402<br/>A finding says which of six states it found, and the state that could hide a person's edit is no longer one of them"]:::done
    I1403["I1403<br/>Backfill the projection once, deliberately, and record what it created"]:::ready
    I1404["I1404<br/>The drift check is a gate, so a projection that stops being applied cannot stay silent"]:::done
    I1405["I1405<br/>A pull request names the issue it realises, and the edge is derived rather than remembered"]:::done
    I1406["I1406<br/>The plan's derivations are capabilities, so every surface reads the readiness the terminal reads"]:::done
    I1407["I1407<br/>One issue travels the whole path and back, as an executable case"]:::done
    I1408["I1408<br/>The documents stop claiming a projection nobody runs"]:::done
    I0001 --> I0002
    I0002 --> I0003
    I0003 --> I0004
    I0004 --> I0005
    I0004 --> I0006
    I0004 --> I0010
    I0005 --> I0007
    I0005 --> I0008
    I0005 --> I0009
    I0005 --> I0013
    I0005 --> I0014
    I0006 --> I0009
    I0008 --> I0011
    I0009 --> I0011
    I0010 --> I0011
    I0011 --> I0012
    I0012 --> I0015
    I0013 --> I0014
    I0014 --> I0015
    I0101 --> I0102
    I0102 --> I0103
    I0103 --> I0104
    I0201 --> I0202
    I0202 --> I0203
    I0203 --> I0204
    I0204 --> I0205
    I0205 --> I0206
    I0301 --> I0302
    I0302 --> I0303
    I0303 --> I0304
    I0304 --> I0305
    I0401 --> I0402
    I0402 --> I0403
    I0403 --> I0404
    I0501 --> I0502
    I0502 --> I0503
    I0503 --> I0504
    I0601 --> I0602
    I0602 --> I0603
    I0603 --> I0604
    I0604 --> I0605
    I0701 --> I0702
    I0702 --> I0703
    I0703 --> I0704
    I0801 --> I0807
    I0802 --> I0803
    I0803 --> I0804
    I0804 --> I0805
    I0805 --> I0806
    I0806 --> I0813
    I0807 --> I0808
    I0808 --> I0809
    I0809 --> I0810
    I0810 --> I0811
    I0811 --> I0812
    I0811 --> I0814
    I0812 --> I0813
    I0813 --> I0815
    I0814 --> I0815
    I0815 --> I0816
    I0817 --> I0818
    I0817 --> I0819
    I0817 --> I0821
    I0817 --> I0823
    I0817 --> I0832
    I0817 --> I0833
    I0817 --> I0837
    I0818 --> I0820
    I0818 --> I0822
    I0818 --> I0828
    I0818 --> I0842
    I0819 --> I0820
    I0819 --> I0822
    I0819 --> I0828
    I0819 --> I0832
    I0819 --> I0836
    I0819 --> I0842
    I0820 --> I0822
    I0820 --> I0828
    I0820 --> I0840
    I0820 --> I0842
    I0821 --> I0840
    I0821 --> I0841
    I0822 --> I0831
    I0822 --> I0835
    I0823 --> I0824
    I0823 --> I0827
    I0823 --> I0830
    I0824 --> I0825
    I0825 --> I0826
    I0826 --> I0830
    I0826 --> I0831
    I0826 --> I0835
    I0826 --> I0838
    I0827 --> I0828
    I0828 --> I0834
    I0828 --> I0839
    I0829 --> I0830
    I0830 --> I0843
    I0831 --> I0843
    I0832 --> I0842
    I0833 --> I0842
    I0835 --> I0843
    I0841 --> I0843
    I0842 --> I0843
    I0901 --> I0902
    I0901 --> I0924
    I0902 --> I0903
    I0902 --> I0904
    I0902 --> I0905
    I0902 --> I0907
    I0902 --> I0908
    I0902 --> I0909
    I0902 --> I0913
    I0902 --> I0918
    I0903 --> I0913
    I0903 --> I0914
    I0903 --> I0926
    I0903 --> I0927
    I0904 --> I0906
    I0904 --> I0909
    I0905 --> I0909
    I0905 --> I0916
    I0906 --> I0930
    I0909 --> I0910
    I0909 --> I0911
    I0909 --> I0912
    I0909 --> I0914
    I0909 --> I0919
    I0909 --> I0920
    I0909 --> I0930
    I0910 --> I0921
    I0911 --> I0921
    I0912 --> I0930
    I0913 --> I0914
    I0913 --> I0926
    I0913 --> I0931
    I0914 --> I0915
    I0914 --> I0916
    I0914 --> I0917
    I0914 --> I0931
    I0915 --> I0925
    I0916 --> I0931
    I0917 --> I0931
    I0918 --> I0929
    I0918 --> I0931
    I0919 --> I0928
    I0920 --> I0932
    I0921 --> I0928
    I0922 --> I0931
    I0923 --> I0932
    I0924 --> I0926
    I0925 --> I0932
    I0926 --> I0932
    I0927 --> I0932
    I0928 --> I0932
    I0929 --> I0932
    I0930 --> I0922
    I0930 --> I0923
    I0930 --> I0928
    I0930 --> I0931
    I0931 --> I0929
    I0931 --> I0932
    I1001 --> I1002
    I1001 --> I1003
    I1001 --> I1004
    I1001 --> I1025
    I1002 --> I1005
    I1002 --> I1011
    I1002 --> I1014
    I1002 --> I1020
    I1004 --> I1005
    I1004 --> I1009
    I1004 --> I1015
    I1005 --> I1006
    I1005 --> I1007
    I1005 --> I1009
    I1005 --> I1010
    I1005 --> I1012
    I1005 --> I1023
    I1006 --> I1008
    I1006 --> I1017
    I1007 --> I1008
    I1007 --> I1013
    I1007 --> I1014
    I1007 --> I1020
    I1007 --> I1022
    I1009 --> I1016
    I1009 --> I1028
    I1010 --> I1030
    I1011 --> I1018
    I1012 --> I1026
    I1013 --> I1030
    I1014 --> I1021
    I1014 --> I1024
    I1015 --> I1018
    I1015 --> I1021
    I1016 --> I1021
    I1017 --> I1030
    I1018 --> I1019
    I1018 --> I1027
    I1019 --> I1027
    I1020 --> I1030
    I1021 --> I1029
    I1022 --> I1029
    I1023 --> I1029
    I1024 --> I1030
    I1025 --> I1026
    I1026 --> I1030
    I1027 --> I1030
    I1028 --> I1030
    I1029 --> I1030
    I1101 --> I1102
    I1101 --> I1105
    I1102 --> I1103
    I1102 --> I1104
    I1104 --> I1123
    I1105 --> I1106
    I1106 --> I1107
    I1106 --> I1108
    I1106 --> I1117
    I1107 --> I1123
    I1108 --> I1109
    I1108 --> I1120
    I1109 --> I1110
    I1109 --> I1111
    I1109 --> I1112
    I1110 --> I1116
    I1110 --> I1118
    I1110 --> I1122
    I1111 --> I1122
    I1112 --> I1113
    I1112 --> I1114
    I1112 --> I1116
    I1112 --> I1121
    I1113 --> I1119
    I1114 --> I1115
    I1115 --> I1123
    I1116 --> I1118
    I1116 --> I1122
    I1117 --> I1123
    I1118 --> I1123
    I1119 --> I1123
    I1120 --> I1123
    I1121 --> I1122
    I1122 --> I1123
    I1201 --> I1202
    I1202 --> I1203
    I1202 --> I1208
    I1203 --> I1204
    I1204 --> I1205
    I1204 --> I1207
    I1205 --> I1206
    I1206 --> I1208
    I1301 --> I1302
    I1302 --> I1303
    I1302 --> I1304
    I1302 --> I1307
    I1303 --> I1306
    I1303 --> I1308
    I1303 --> I1309
    I1304 --> I1305
    I1305 --> I1306
    I1305 --> I1307
    I1308 --> I1309
    I1308 --> I1310
    I1309 --> I1310
    I1401 --> I1402
    I1401 --> I1403
    I1401 --> I1405
    I1402 --> I1403
    I1402 --> I1404
    I1404 --> I1403
    I1404 --> I1407
    I1404 --> I1408
    I1405 --> I1407
    I1406 --> I1407
    classDef done stroke:#16a34a,fill:#052e16,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,stroke-width:2px

The graph on its own page, with the edge list.

Findings

What validation says about the model as published. A failure would have stopped this build; anything below is a warning the model reports and does not block.

levelcodesubjectmessage
WARNscope_conflictI0201shares share with I0901; they may not run concurrently
WARNscope_conflictI0201shares share with I1201; they may not run concurrently
WARNscope_conflictI0821shares lib/common.sh with I0837; they may not run concurrently
WARNscope_conflictI0821shares docs/SCHEMAS.md with I1302; they may not run concurrently
WARNscope_conflictI0837shares docs/SCHEMAS.md with I1302; they may not run concurrently
WARNscope_conflictI0901shares share/kinds.yaml with I1201; they may not run concurrently

How to work through it

a worker with no conversation history
majordomus plan next
majordomus plan show <id>
majordomus plan start <id>
majordomus plan evidence <id> --covers <token> --type test --command "<cmd>" --result "<what it showed>"
majordomus plan done <id>

Read the planning model for what the terms mean, and dogfooding for why this repository holds itself to it. The release roadmap — what each version adds — is a separate page.