Repository navigation
feat!: sunset the dynamic feature - #763
Merged
Merged
Conversation
Move src/cli/commands/legacy-sweep.ts to src/targets/claude-code/legacy-sweep.ts. The module only imports from core and targets, so it belongs in the targets layer. No module in src/targets or src/core imports a src/cli/commands module. Only import paths change: the two commands that call the sweeps, five test files, and the sibling imports inside the moved module. No behavior change. Refs #756
Init now removes the four dynamic command files and the three post-wave-report references by exact name, and drops the devflow-dynamic plugin from the registry and from users' manifests. The two retired-count floors rise to 19 and 5. Refs #756
The build no longer compiles the four dynamic commands, and the shared partial headers, the token-audit workflow list and the build comments name only the commands that remain.
Remove the acceptance-criteria contract partial that only the retired plan and build commands used, the PRIOR_PHASE_SUMMARY input of the Code agent, and the sentence about running inside a dynamic Workflow sub-agent. The Test agent's TEST_PLAN input no longer names the retired plan command.
The Git agent no longer lists a wave report operation or takes a wave block input. ensure-pr-ready pastes only the test-plan block under compliance, and pastes no caller block with compliance off. Step 4b now runs for every absent PR link. The tracker reference for the operation is no longer built, so the reference set is 44 files with compliance on. Refs #756
The tracker configuration file no longer has a Wave Filter section, and the tracker agent no longer reads or writes one. The tracker reader contract now says a section that is not in its list is ignored, never DEGRADED. The shared wave report input and read-step defines are gone. Task: feat/756-sunset-dynamic (phase 6)
- pr-evidence.cjs no longer parses or exports a wave block. - verify-evidence.cjs check accepts only tp, block and exceptions; any other kind, including wave and --links-only, exits 1 with usage on stderr and empty stdout. - /code-review and /bug-analysis list only design/*.md plans. - docs-framework lists only the paths the remaining commands write. - The status-line sampler no longer reads the removed wave samples.
Tests for the retired-name sweep inside the compliance, curation and tdd switch converges. They fail until the converge runs the sweep. - A retired command file is removed through the backup session and named once when a switch converges, with compliance on or off. A file of the user whose name only looks retired stays. - With compliance off, a retired command that stays (a refused removal, a folder the caller refused, or a commands folder that is a link) makes posting "left" and names it. Nothing is removed through the link. - With compliance on, a kept retired command does not stop the install record. - A sweep that throws gives posting "unknown" with compliance off, and the converge is not converged. - The sweep result lists the retired command files that stay, by exact path, and lists no shipped name and no rule.
The compliance, curation and tdd switches now run the same exact-name sweep of the retired command and rule files that init runs, through the backup session. A switch at the same version as the last init no longer leaves an old command file in place. With compliance off, a retired command file that stays (a refused removal, a skipped folder, or a state that cannot be read) makes the posting answer "left" and names the file, so `devflow compliance --disable` exits non-zero. A sweep that fails gives "unknown" and an unconverged result. With compliance on, a kept retired command does not block the install record. Nothing is removed through a link. The sweep result lists the retired command files that stay. Init passes the folders its install refused into the converge and no longer sweeps a second time, so the posting answer comes after the one sweep.
The four dynamic commands, the dynamic plugin and the wave grammar are gone, so the host, partial and roster tests now state the end state: 10 command hosts, 9 command partials, no workflow commands. - Delete tests/dynamic/*. Five files test only removed code. The artifact naming, issue-capture and byte-identity checks of the plan vocabulary move to tests/commands/plan-issue-vocabulary.test.ts. The Test agent TP-line input checks and the real-script `check tp` runs move to tests/evidence/test-plan-input.test.ts. - Drop the allow-list rows, exemptions and roster rows of the removed hosts (agent-name-guards, docs-root, claude-dir, literal-agent-paths scan dirs, skill-references marker names, mds-manifest). - Remove the per-ticket design glob checks, the workflow-script stamp checks and the wave file spellings from the docs-framework and design-plan tests. - Replace the installed-command stamp checks that used a dynamic command with the release command. - Update the exact roster counts the manifest derives (settings hosts 10, curation-off settings hosts 7, tracker adopters 3, compliance-off omitted references 14). Count floors of the removed code stay as they are and stay red until the ratchet step: dist-host-count, partial-count, dist-files-count, the packed reference manifest size, and the inline minimums in build-mds, partials-root, curation-variants-arms, docs-root, claude-dir and no-config-read.
The post-wave-report operation, the wave caller block and the compliance-off caller block are gone from the Git agent and its references. Bring the posting tests to that end state. - caller-blocks: one caller block (check block), a collector for the single gate form, and absent-literal checks for the wave input and gate in every provider reference. - pr-link-handoff: /implement is the one link forwarder and the review hosts plus /implement are the callers; no host passes a wave block key. - git-agent: the operation roster is 19, the posting set 7, the posting set without the PR-host tree 4; the compliance-off reference has no caller block and no marker. - posting-absence, base-ref-guard: the exemptions and budget rows of the removed hosts are deleted, not repointed; the strict-name copy check stays. - mds-variants, reference-overlay, partial-wiring, compliance-prompts, capability-hoist, init-posting-notice: roster and count pins follow the smaller sets (7 posting operations, 13 operation files, 14 omitted references, 6 evidence-policy adopters). Floors and the install-snapshot golden are not touched; the failures that only they explain stay red for the ratchet and golden steps.
The tracker schema has 10 sections and the tracker operations no longer include the wave report. The tracker tests now match that end state. - The schema oracle lists 10 sections and the count is 10. - The wave report rows leave the marker namespace tables, the hop table and the informational mention rows. The fixed-point hop probe seeds a pointer to a kept operation instead. - The shared-step probe edits a kept step. - The wave PR branch reason, the wave block grammar reason and the wave run's missing tracking issue reason move to the retired reasons, which must stay absent. The retired floor rises from 9 to 12. - The unemitted-reason probe uses a reason that the manage-debt references emit. - The dead structured validator kind leaves the hostile-value parser. Every other validator kind and every payload row stays. - The roster test of the Tracker agent is deleted with the roster. Floors that count removed code stay red and are left for the ratchet step: the namespace tables (3 -> 2, Jira and Linear), the generated reference manifest (47 -> 44) and the live reason table (25 -> 24).
Delete the wave block suite: its subject (the wave grammar, `check wave` and the orphan, unlinked and unmerged codes) is gone. Move the probes of the kept `check` entry that only that suite held to the verify-evidence tests: a file that is not UTF-8 is unusable for every kind, a missing or empty file argument is a usage error, and `check block` exits 0, 5, 2 and 1 through the real process with an empty stdout. `check wave` and `check wave --links-only` are usage rows. Repair the disposition table (the rows of the removed commands go, the publication rule has three hosts), the plan contract parity (one define, two adopters), the ensure-pr-ready paste-gate reading (the `check block` form) and the publication importer list, and the export list of the evidence script.
Bring the decisions, guard and seam tests to the end state after the dynamic commands left the build (feat/756-sunset-dynamic). - Delete tests, probes and exemptions whose subject was a removed command or the workflow recipe form. - Pin the command roster at ten hosts and the seam corpus at ten compiled command files. - Move each kept probe from a removed host to a kept host: the Validate and Evaluate decisions probes, the provider-scope probes, the Running commands block anchors and the schema spawn collector. - Keep every security, compliance-injection, model-pin, read-economy and fail-closed assertion. No floor, ceiling or golden changes. Seven floor assertions stay red on purpose: each counts code the removal took out, and only a floor change would fix it.
A tracker conventions file written before the Wave Filter section was retired stays on the user's disk. Add a test that reads the built reader contract against such a file: the contract lists no `## Wave Filter`, it says an unlisted section is ignored and never DEGRADED, and every other heading of the file is a listed section. Three known-bad probes show the collector reports a contract that lists the retired section, a contract without the ignore sentence, and a listed section that was dropped. Refs #756
The test ratchets now count the code that remains after the dynamic commands left the product. Floors lowered, each recorded in its description with the old value, the date (2026-11-05) and the reason that no coverage is lost: - command host count 14 to 10, partial count 17 to 16, compiled command file count 14 to 10 - reference manifests and installed reference count 47 to 44 - capability-hoist block floor 42 to 39 - posting operations 8 to 7, caller-fence operations 12 to 11, external-thread containment operations 3 to 2 (the posting and containment floors are recorded as accepted by the user) - inline floors in the build, packaging, install, docs-root, claude-dir, no-config-read, code-operation, code-variants, code-review gating, feature-knowledge, pr-link-handoff, command-agent-input, command-size, tracker marker and tracker reason tests, each with a dated comment at the floor line The running-commands site count is retired, with its test and its list of prompt sites. Ceilings: the 11 command-size rows for the removed commands are deleted. The command, agent body, skill and byte-budget ceilings that fell with the removal are re-derived downward only; no ceiling rises. Part of #756.
…oval The sources of six sampled lines are removed, so the fixture loses those six lines. Deletions only, nothing added. This spends the eleventh authorisation, logged in the test header. The byte and newline baselines are re-set in the same commit, and the sampler's closed reference list drops the removed post-wave-report reference.
The git-agent golden drops the post-wave-report operation row and the same name in the posted-body rule. The equality baselines that pin its size move in the same commit.
…oval The install snapshots drop the devflow-dynamic plugin entry and the post-wave-report tracker references.
The README, the docs and the knowledge bases state the end state: 20 plugins, no dynamic commands, no wave reports. Delete the dynamic engine and wave knowledge bases, move the Running commands doctrine to the prompt-install knowledge base, and fold the surviving build pins into the goldens knowledge base. Rename the shared-partials knowledge base and add the upgrade note to the changelog. Refs #756
The guide now names 20 plugins (12 core + 8 optional) and drops the removed roster partial. The CLAUDE.md size ceiling falls from 13123 to the measured 13071.
Two source comments now state the current number of tracker operations (ten).
No devflow command spawns Review, Code, Fix, Refactor or Harden with a pinned return now, so their report cap lines lose those clauses and Harden loses its return pin. Design's description drops the ticket set. The report-cap and status pins follow the new text, and the byte ceilings of the five bodies and the catalog descriptions fall to the measured sizes. Review, Design and Synthesize keep StructuredOutput so a user's own Workflow script can still spawn them with a schema.
compliance_gate in the same partial is the only caller. The compiled commands are byte-identical.
…off build The compliance-off build has no caller block, but step 4a still said to append the caller blocks and that a failed scrub posts neither block. Step 4a is now two whole-line arms. The compliance-on line is unchanged, and the compliance-off line keeps the Comment-sink scrub and every other rule. A guard asserts the compliance-off reference keeps the scrub sentence and lacks both phrases, and the scrub-line pin compares the compliance-off line with the compliance-on line less those two phrases.
…d uninstall keep - init removes stale retired dynamic command files on a full install and on a partial one, and the user-data test now keeps ticket sets, per-ticket plans, nested wave reports and wave evidence files byte for byte through init and a selective uninstall - the legacy sweep test checks that a shipped name is never listed as a retired command left - the no-retire-notice tests of init and uninstall check the whole info list - the stale post-wave-report reference cases run with compliance off and on - compliance --disable over a linked commands folder exits 1, names the retired file and removes nothing through the link
…rding - CHANGELOG: state the four command files, the linked commands folder case, the exit 1 of `verify-evidence.cjs check wave`, and the exact files and folders devflow keeps and no longer reads - package.json: end the description at curated decisions and drop the graph-engineering keyword - docs/commands.md: the Validate wait note names only the `-p` mode as not probed Task: resolve-batch-a1
…that cited deleted files The platform-assumptions paragraph on the Running commands block now agrees with its singular subject. The tracker knowledge base no longer cites the deleted roster file and states why the registry guards pass for a hook-spawned agent. The curation knowledge base points the declared-only decisions rule at decisions_load. The test-harness knowledge base quotes the floor records with the maintainer wording.
…ay which hosts lost docs mentions The agentType comments state that the harvest guards the option form of a spawn. The charter test name says only that resolve declares the Fix agent. The Evaluate row comment no longer names a roster table. The docs-root floor reason names the two hosts that each lost a mention. The 2026-11-05 floor records say the maintainer accepted the lowering.
…ic-removal upgrade note
Owner
Author
Code review: cycle 1 (gate level lean)Verdict at cde82aa: CHANGES_REQUESTED. Both blocking items are text in user-facing files. No focus found a blocking defect in the code.
Blocking
Should-fix
Suggestions (not blocking)
|
Owner
Author
Resolution: cycle 1 (gate level lean)Head 095a1ee. 22 issues: 20 fixed, 1 deferred, 1 left to the maintainer, 0 false positives. Final gate: PASS. CI: PASSING. Fixed
Two more upgrade-note effects (the old reference files and the install record) were found by the test-plan re-check and added in 095a1ee. The same report-cap clean-up also covered Harden and one registry comment. Ceilings: 10 agent-body and description ceilings fell to their measured sizes. No ceiling rose. No floor changed. Not fixed here
Verification |
Owner
Author
Test Plan Evidence — 095a1eeVerified 45/45: VERIFIED-CI 38, ATTESTED-LOCAL 7, UNVERIFIED 0, STALE 0, FAILED 0, INDETERMINATE 0
|
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.
Summary
devflow ships a dynamic multi-ticket workflow that is no longer maintained, along with plumbing that only it used. This PR removes both.
Changes
devflow-dynamicplugin.devflow initremoves their installed command files and the old wave reference files.compliance,curationandtddswitches also remove retired command files: a switch after a same-version local build now also removes the old command files./code-reviewand/bug-analysisread only top-level design documents.verify-evidence.cjs check waveand thepost-wave-reportGit operation are removed.Breaking Changes
This is a breaking change.
devflow init.--plugin=dynamicand--plugin=devflow-dynamicexit 1 as an unknown plugin.verify-evidence.cjs check waveexits 1.Known Limits
devflow init, or until a switch command at the same version.Testing
npm run buildexits 0, including the script typecheck.tests/fixtures/numeric-floors.jsonfell and none rose. The CLAUDE.md size cap is one of them; it fell from 13,123 to 13,071.LOWERED a -> b by #756record with the date, the reason and the old value, and the maintainer accepted each one.tests/fixtures/numeric-floors.json: 11 floors. Two of them, the posting-operation floor (8 -> 7) and the external-thread floor (3 -> 2) intests/git-agent.test.ts, count only the removedpost-wave-reportoperation.Related Issues
Refs #756