%% werkcrappit, planned with Werkbaum (https://werkbaum.javagil.de): what exists, what comes next. %% Status: [^] published and in use, [x] merged, not yet published, [~] in work, [ ] planned, [?] idea, [-] dropped. %% A green build of main publishes the plugins, so the PR that finishes a node already sets it to [^]. %% The block behind --- explains the nodes with an id. %% View: https://werkbaum.javagil.de/?sourceUrl=https://git.javagil.de/mi/werkcrappit/raw/branch/main/docs/werkcrappit.werkbaum [~] #werkcrappit: werkcrappit https://git.javagil.de/mi/werkcrappit " Mutation-CRAP per JVM method, from PIT's mutants and JaCoCo's complexity: a PIT plugin and a Gradle plugin. - [^] #mvp: Java MVP, the steps of the specification's section 8.3 - [^] #mvp.skeleton: Repository, Gradle wrapper, real walking skeleton, ADR 0001 (S) " PR#1, PR#2. - [^] #mvp.core: Metric core and status policy strict-v1 (M) " PR#3; the default is timeouts-killed-v1 since PR#9 (ADR 0006). - [^] #mvp.inventory: Original bytecode, method inventory and JaCoCo complexity (M) " PR#4. - [^] #mvp.aggregation: Complete aggregation of PIT results (M) " PR#5. - [^] #mvp.reports: JSON schema, JSON and Markdown reports, console summary (M) " PR#6. - [^] #mvp.gate: Gradle plugin with an opt-in gate, multi-project fixture (M) " PR#7. - [^] #mvp.kotlin: Kotlin basis support checked, limits documented (M) " PR#61, ADR 0009. - [^] #mvp.packaging: Packaging, documentation and actual test results - [^] Published to the Gitea Maven registry (S) " PR#8, PR#11; the functional tests consume the published plugins (MC-029). - [^] README with quickstart and how to choose a limit (S) " PR#12, PR#43, PR#44. - [^] #mvp.groovy: Groovy DSL and a packaging test from an isolated repository (S) " PR#63: GroovyDslFunctionalTest; the Kotlin DSL tests consume the published plugins since PR#7. - [^] #mvp.metricDoc: docs/metric.md: formula, status policies, N/A states, limits (S) " PR#62. - [^] #mvp.report: Final report: versions, commands run, acceptance tests passed, limits (XS) " PR#64: docs/final-report.md. - [^] #mvp.examples: Small expected example reports, section 8.4 (XS) " PR#65: docs/examples, kept current by ExampleReportsTest. - [^] #pilot: Pilot hsadmin-ng - [^] Guide and probe run (S) " PR#10. - [^] Gate on at a limit of 10 (S) " hsadmin-ng PR#317; the guide shows the state since PR#44. - [^] #self: werkcrappit measures itself - [^] Nightly mutation build on main, with the structure pages (S) " PR#30, PR#42, PR#56; the README links its latest code city since PR#68. - [^] Every class below a Mutation-CRAP of 10 (M) " PR#31, PR#32, PR#33. - [^] Ratchets for cohesion and coupling (S) " PR#39. - [~] #city: CodeCharta code city (RFC 0001, ADR 0007) - [^] Valid code city in a report directory of its own, districts, area by rloc (M) " PR#13 to PR#17. - [^] Link into the viewer, colour range of the gate, unscored classes grey (S) " PR#18 to PR#21, PR#23, PR#29, PR#35. - [^] Dependency edges (S) " PR#22. - [^] Commit and source links (S) " PR#24, PR#25. - [^] One scenario per view, the page leads with the views (S) " PR#40, PR#47. - [ ] #city.viewer: The CodeCharta viewer beside the city (M) " RFC 0003, TODO.bundledViewer; where it is bundled is still to be discussed. - [^] #city.style: The code city's index.html in the style of the structure pages (S) " PR#58, RFC 0003. - [^] #design: Cohesion and coupling (RFC 0002) - [^] Measured (M) " PR#36. - [^] Shown in the code city (S) " PR#37. - [^] Judged by the gate (S) " PR#38. - [^] #risk: Change risk per class from Mutation-CRAP, cohesion and coupling (M) " PR#41, ADR 0008. - [~] #structure: Structure view of cycles, complexity and cohesion (RFC 0003) - [^] #structure.diagram: Level diagram per package (M) " PR#48, PR#49, PR#50. - [^] #structure.matrix: Expandable dependency matrix (M) :#structure.diagram " PR#51. - [ ] #structure.werkator: Pilot Werkator: its nightly code city gets both pages (S) :#structure.matrix - [ ] #structure.hsadmin: Pilot hsadmin-ng: both pages published with the city (S) :#structure.werkator - [^] #structure.cycleEdges: Every edge of a package cycle, red across the hierarchy, amber along it (S) " PR#55, RFC 0003. - [^] #structure.wrap: More space between the lines of a wrapped level, every second shifted (XS) " PR#67, RFC 0003. - [^] #ops: Build, review and workflow - [^] Werkator CI, builds stop after 10 minutes (XS) " PR#1, PR#27. - [^] Progress of a PIT run in the log (S) " PR#26, PR#28. - [^] werkrevisor reviews every PR (S) " PR#45, PR#46. - [^] #ops.workflow: The shared agentic workflow and this plan (S) " PR#53, PR#54. - [^] #ops.workflowSync: The workflow copy matches werkregie (XS) " PR#69. - [^] #ops.version: The version and the changelog follow from the PR documents (S) " PR#70: a copy of werkregie PR#79; CHANGELOG.md ends with 0.26.14. - [^] The AI review skips generated sections of the docs (XS) " PR#71, after werkrevisor PR#122. --- #mvp.kotlin Kotlin is the specification's optional goal. Tested with Kotlin 2.4.21: ordinary methods, overloads, top-level functions, properties, default arguments, data classes, bridges, lambdas, inline and suspend functions. Inline and suspend functions have limits, listed in ADR 0009. #mvp.packaging Section 8.4 of the specification lists the artifacts; with the example reports of PR#65 every one is there. #city.viewer The code city still links the viewer at javagil.de, so the CI server must allow it by CORS. hsadmin-ng is to move from Werkator to Woodpecker, so the solution must not depend on Werkator. RFC 0003 lists the options.