feat(parity): wave 5, competitor source reads at tags, sources and 50 demand rows - #661
Merged
Merged
Conversation
… cell unknown until read
…s recorded, three drive contradictions re-rated
… sources and roadmap note recorded
…s recorded, three drive contradictions re-rated
…nboard and Plane feature requests and changelogs, deduplicated with the tender rows
…ces recorded, nine Jira demand rows added
…d Kanboard from source
…roject, Plane and Kanboard from source
…the two-hop trace
Contributor
Quality Report — ConductionNL/planninq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| composer | ✅ | ✅ 107/107 | |||
| npm | ✅ | ✅ 646/646 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it. | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it on any branch from the Actions tab, or locally with npx playwright test. |
||||
| Hydra gates | ✅ |
Quality workflow — 2026-09-26 22:11 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wave 5 for planninq's parity matrix. The four open-source competitor columns were driven in round 4 two weeks ago. This PR adds a source read of every row at a release tag for each of them, a fresh public-docs read of Jira, a
sourcesobject on every competitor, and 50 demand rows mined from feature requests, changelogs, a roadmap and a TenderNed tender. Nothing was re-driven and no lab was booted. The diff isopenspec/parity/capabilities.jsononly; no page, test or code changed, so the product's suites are unaffected and were not run.Read against
developmentat 575c574, which equals ls-remote. The own-column reader read the tree at eb04087, which differs from 575c574 only by this branch's matrix commits.How each competitor was read
drivenwith the note "source read at v1.19.0, driven at 1.18.4 on NC 34". A cell resting on the Nextcloud server ispartialwith "provided by the Nextcloud server" in its evidence.drivenwith "source read at v17.8.0, driven at 16.6.10". Enterprise-token features arepartial, citing the gate. The system entry carries aroadmapNotetaken from openproject.org/roadmap, which lists quarters, not versions. The note is not used as ratings.driven. The round-4 code census had been read at 2f895b8, not at the tag, so every cite was re-derived in the tag tree. Stubs that always return disabled are not credited: the filter exclusion, an undefined bulk route, an unopened bulk-delete modal, milestones and the duplicate-issue hook.driven. Third-party plugins givepartialat most.partial, citing the app and its Data Center 11 build, neveryes. The 13 Sep reading usednofor the same cases.Every source-read cell keeps the round-4 drive evidence and adds "source read at : path:line" beside it. Every path:line was checked to exist in the tag tree by a pack checker before folding. A rating moved only where the code contradicts the drive.
Planninq's own column on the 148 existing rows is unchanged. On the new rows it reads 5 yes, 6 partial and 39 no from its code.
Every rating change on a cell that existed before (18)
The four Jira changes on pln-calendar-view, tsk-checklist, tim-timesheet and tim-approval follow the plugin rule. Jira itself did not change.
Sources per system
Demand rows added (50)
Origins: 10 tender, 25 featureRequest, 14 changelog, 1 roadmap. Each row carries
originandoriginUrl. The ten tender rows come from TenderNed 365739, gemeente Sittard-Geleen, Projectmanagementtool (363 requirements in the intelligence database); the requirement numbers are in each row's note.Deduplication decisions:
Ratings below are in the order pq / deck / op / plane / kb / jira.
prj-risk-register(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Keep a risk register per project that scores each risk on likelihood and impact and records its countermeasures. no / no / no / no / no / partialprj-project-logs(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Keep logs per project for actions, issues, lessons learned and meetings. no / no / partial / partial / no / partialprt-portfolio-finance(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): See budget, spend, commitments and forecast totalled across all projects of a portfolio. no / no / partial / no / no / partialint-finance-import(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Import actual spend and commitments from the finance system into each project by its project number. no / no / no / no / no / notim-non-project(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Log time on non-project activities, such as training, leave and sickness, next to project work in the same timesheet. no / no / partial / no / no / partialpln-phase-gate-document(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Close a project phase only once the document that concludes it has been uploaded. no / no / partial / no / no / partialint-import-msproject(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Import a Gantt plan made in Microsoft Project. no / no / no / no / no / partialint-archive-to-case(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Hand a project's documents and metadata over unchanged to the case management system for the record. no / no / no / no / no / noplt-destruction-list(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Generate a destruction list from a retention period, destroy the listed records and keep proof of the destruction. no / no / no / no / no / noprt-status-grotik(tender, https://www.tenderned.nl/aankondigingen/overzicht/365739): Report each project's status on money, organisation, time, information, quality and risk, and roll it up to the portfolio. no / no / partial / no / no / partialpln-calendar-writeback(featureRequest, Write access over CalDAV nextcloud/deck#2399): Change a task's dates or mark it done from a calendar or phone task app and have the change saved back. no / no / no / no / no / noprj-grouping(featureRequest, Board grouping nextcloud/deck#2006): Group projects into folders or categories in the navigation. no / no / yes / partial / no / yescol-comment-images(featureRequest, Paste image on clipboard directly to comments like GitHub nextcloud/deck#533): Paste or drop an image straight into a task description or a comment. no / no / yes / yes / partial / partialtsk-templates(featureRequest, Template Cards nextcloud/deck#1556): Create a new task from a template with a ready-made description, checklist and labels. no / partial / partial / no / partial / partialbrd-move-column(featureRequest, Move entire list to a different board nextcloud/deck#3579): Move or copy a whole column with its tasks to another project. no / no / no / no / no / partialtsk-all-day-due(featureRequest, All day due date nextcloud/deck#1157): Set a due date for a whole day without picking a time. no / no / yes / yes / partial / yesbrd-column-count(changelog, feat(board): show card count next to the list title nextcloud/deck#8038): See how many tasks sit in each column. yes / yes / partial / yes / yes / yesprj-team-owner(changelog, [stable35] feature: Allow a team (circle) to own a board nextcloud/deck#8320): Let a team own a project so it stays when a person leaves. no / partial / yes / partial / yes / partialcol-federated-share(changelog, feat(OCM): Implement ISignedCloudFederationProvider for deck nextcloud/deck#8261): Share a project with people on another organisation's server. no / yes / no / no / no / noint-ai-connector(changelog, https://www.openproject.org/docs/release-notes/17-8-0/): Let an AI assistant read and change tasks through a standard connector. partial / no / partial / no / no / partialcol-live-docs(changelog, https://www.openproject.org/docs/release-notes/17-0-0/): Write a shared document together in real time, seeing each other's cursors. partial / no / yes / partial / no / nocol-meeting-actions(changelog, https://www.openproject.org/docs/release-notes/17-6-0/): Run a meeting from an agenda and turn agenda items into tasks. no / no / yes / no / no / notsk-readable-key(changelog, https://www.openproject.org/docs/release-notes/17-5-0/): Give each task a readable key made of the project key and a number, such as ABC-123. no / no / yes / yes / no / yesbkl-sprint-goal(changelog, https://www.openproject.org/docs/release-notes/17-6-0/): Set a goal for each sprint and keep it visible while the sprint runs. no / no / yes / partial / no / yesprj-request-approval(changelog, https://www.openproject.org/docs/release-notes/17-1-0/): Request a new project through a guided form that someone reviews before it starts. no / no / partial / no / no / nobkl-planning-poker(featureRequest, https://community.openproject.org/wp/35154): Estimate tasks together as a team with planning poker. no / no / no / no / no / partialtsk-review-approval(featureRequest, https://community.openproject.org/wp/49426): Have a task reviewed and approved by chosen people before it can be closed. no / no / no / no / no / partialcol-edit-conflict(featureRequest, https://github.com/orgs/kanboard/discussions/5691): Be warned or stopped when a colleague is editing the same task at the same time. no / no / yes / no / no / noint-automation-edit(featureRequest, https://github.com/orgs/kanboard/discussions/5403): Change an existing automation rule without deleting and recreating it. yes / no / no / partial / no / yesprt-dashboard-order(featureRequest, https://github.com/orgs/kanboard/discussions/5394): Arrange the projects on your dashboard in your own order. no / no / partial / yes / partial / partialplt-rtl(changelog, https://github.com/kanboard/kanboard/blob/main/ChangeLog): Use the app in a right-to-left language such as Arabic. partial / partial / partial / no / yes / noplt-outbound-guard(changelog, https://github.com/kanboard/kanboard/blob/main/ChangeLog): Stop webhooks and link lookups from reaching addresses on the internal network. yes / partial / yes / yes / yes / partialtsk-diagrams(featureRequest, [feature]: Support Mermaid diagrams inside Markdown (GitHub-style) makeplane/plane#8147): Draw a diagram, such as a flowchart, inside a task description or a documentation page. no / no / no / no / no / partialplt-ai-assist(featureRequest, [feature]: Local-AI support makeplane/plane#5941): Get AI help writing or summarising task text, using a model the organisation runs itself. partial / no / no / partial / no / partialint-pages-api(featureRequest, [feature]: Add Page update api endpoints and MCP tools makeplane/plane#8598): Read and write documentation pages through the API. no / no / partial / no / no / noprj-wiki-tree(featureRequest, [feature]: Add Tree Structure Support to Pages Section for Better Organization makeplane/plane#5620): Organise documentation pages in folders or a tree of subpages. no / no / yes / no / no / noplt-2fa(featureRequest, [feature]: multi factor authentication makeplane/plane#1212): Protect sign-in with a second factor, such as an authenticator app. yes / partial / yes / no / partial / yesprj-shared-workflow(featureRequest, [feature]: Add a master of State, Label, Cycle, Estimates, to be used by multiple projects makeplane/plane#4706): Share one set of statuses, labels and estimates across many projects. partial / no / yes / no / partial / yesbrd-filter-exclude(featureRequest, [feature]: filter selection with negative operator makeplane/plane#8510): Filter tasks by excluding a value, such as everything not assigned to me. no / no / yes / partial / no / yesplt-command-palette(changelog, https://github.com/makeplane/plane/releases/tag/v1.2.0): Navigate the whole app and run actions from the keyboard with a command palette. no / partial / partial / yes / partial / partialbkl-intake-triage(changelog, https://github.com/makeplane/plane/releases/tag/v1.2.0): Collect incoming requests in a triage queue and accept or decline each before it reaches the backlog. no / no / no / yes / no / partialtsk-estimate-rollup(featureRequest, https://jira.atlassian.com/browse/JSWSERVER-9167): See the estimates of all subtasks added up on the parent task. no / no / yes / no / yes / partialcol-threaded-comments(featureRequest, https://jira.atlassian.com/browse/JRASERVER-3406): Reply to a specific comment so a discussion stays threaded. no / yes / partial / no / no / notsk-clone-tree(featureRequest, https://jira.atlassian.com/browse/JSWSERVER-7721): Copy a task together with its subtasks and the child tasks under it. no / no / yes / no / partial / partialcol-group-mention(featureRequest, https://jira.atlassian.com/browse/JRASERVER-28225): Mention a whole team or group in a comment so every member is notified. no / no / yes / no / no / notim-work-type(featureRequest, https://jira.atlassian.com/browse/JRASERVER-1780): Record what kind of work logged time was, such as a meeting or development. no / no / yes / no / no / notsk-merge(featureRequest, https://jira.atlassian.com/browse/JRASERVER-3592): Merge two duplicate tasks into one, keeping comments and history. no / no / no / no / no / notsk-duplicate-warning(featureRequest, https://jira.atlassian.com/browse/JRASERVER-1633): Be warned about similar existing tasks while creating a new one. no / no / no / no / no / noint-automation-guard(changelog, https://confluence.atlassian.com/jirasoftware/jira-software-11-3-x-release-notes-1689288832.html): Restrict who may build automations that use powerful actions. partial / no / no / no / partial / yesplt-security-insights(roadmap, https://www.atlassian.com/roadmap/data-center): See an admin overview of security risks in the installation with suggested fixes. yes / partial / partial / no / no / partialPlanninq leads the field on none of the new rows. The 39
noinclude ten rows where a schema field, a manifest note or a placeholder view nearly credited planninq: tsk-readable-key, tsk-all-day-due, prt-portfolio-finance, bkl-sprint-goal, bkl-planning-poker, bkl-intake-triage, tsk-review-approval, tsk-merge, pln-phase-gate-document and pln-calendar-writeback. Each names the declaration inbuilt.evidenceand staysnounder the rule that a declaration is a claim. Three platform-providedyescells carry their provider and owner: plt-2fa and plt-security-insights (nextcloud/server), and plt-outbound-guard (ConductionNL/openregister).Defects for the issues lane (code readings, each needs a live check)
built.defectson disk; the rest are in the reader's report to the coordinator.Verifier
Before (148 rows), report profile:
Before,
--strict:After (198 rows), report profile:
After,
--strict(exits 1 only on the unknown census, as before):system-without-sourceswent from 5 to 0. The unknown census went from 5 cells to 1 (planninq's own plt-accessibility, unchanged).Images pulled
None. No lab was booted, because the four open-source columns were driven two weeks ago and this wave adds source reads only.
Inherited, not fixed here
provider: openregisterwhilebuilt.ownersays ConductionNL/planninq. These predate this PR and belong to the next corrections pass.Where the method was harder
note, and readers were told not to treat it as competitor evidence. The fold takes only a reader'scite.sourceRead{tag, commit, readOn} next to the drive date, because the grade enum has no value for a source read.noon 13 Sep andpartialtoday.originUrland were fixed before folding.🤖 Generated with Claude Code