|
| 1 | +# CP90 Follow-up Completion Plan |
| 2 | + |
| 3 | +Date: 2026-09-09 |
| 4 | + |
| 5 | +This plan closes the five upstream-follow-up workstreams whose durable |
| 6 | +completion records were blocked or partial. It is based on CP89 plus the |
| 7 | +selective upstream integration commit 3036e195, and does not authorize |
| 8 | +merging MCP frontend code or pushing worker branches. |
| 9 | + |
| 10 | +## Current status |
| 11 | + |
| 12 | +| Workstream | Worker result | Implementation evidence | Evidence gap | |
| 13 | +| --- | --- | --- | --- | |
| 14 | +| YAML removal guards | blocked | 523d398d; Windows-gated reparse-point and access-denied tests; 64 YAML tests passed | Native Windows execution; completion sidecar was initially read-only | |
| 15 | +| Version-cohort handoff | blocked | 01af5cb2; distinct cache-root handoff and Windows separator-form tests | Runtime assertions could not create secure temp roots via cbm_mkdtemp | |
| 16 | +| Complexity determinism | partial | 43d3a210; production build and changed objects compiled | Focused pipeline suite was interrupted while generated grammar objects stalled | |
| 17 | +| Razor / .cshtml | blocked | 5b1bc085; .cshtml language mapping, route extraction, and three regressions; 562 language/extraction tests passed | Completion sidecar was not finalized; native Windows is not required for this feature | |
| 18 | +| Embedded Svelte/HTML/Astro | partial | f8971e7a; implementation and focused tests committed; whitespace check passed | Test runner link failed on missing SQLite symbols, so extraction suites did not execute | |
| 19 | + |
| 20 | +The separate complexity-r2 run is not a sixth task. It only rechecked the |
| 21 | +complexity fixture and was blocked while writing its completion sidecar; its |
| 22 | +fixture identity check passed. |
| 23 | + |
| 24 | +## Completion sequence |
| 25 | + |
| 26 | +### 1. Normalize the isolated worker results |
| 27 | + |
| 28 | +Use disposable worktrees based on 3036e195 and apply worker commits as review |
| 29 | +inputs, not as unconditional cherry-picks: |
| 30 | + |
| 31 | + YAML 523d398d |
| 32 | + cohort 01af5cb2 |
| 33 | + complexity 43d3a210 |
| 34 | + Razor 5b1bc085 |
| 35 | + embedded f8971e7a |
| 36 | + |
| 37 | +For each worktree: |
| 38 | + |
| 39 | +- verify the commit parent and changed-file list; |
| 40 | +- reject src/mcp, MCP tests, and unrelated release-tooling changes; |
| 41 | +- run git diff --check; |
| 42 | +- preserve the CP89 release-provenance surface; |
| 43 | +- retain the worker completion record, even when its status was blocked by |
| 44 | + workflow permissions rather than code. |
| 45 | + |
| 46 | +Do not merge these commits directly into the dirty checkout until each gate |
| 47 | +below passes. |
| 48 | + |
| 49 | +### 2. Finish complexity evidence |
| 50 | + |
| 51 | +Worktree: 43d3a210. |
| 52 | + |
| 53 | +Run: |
| 54 | + |
| 55 | + scripts/build-dev.sh |
| 56 | + bash scripts/test.sh --suites pipeline |
| 57 | + |
| 58 | +If generated grammar compilation stalls again, build the test runner with the |
| 59 | +repository's normal cached incremental path, capture the exact stalled target, |
| 60 | +and retry once in a clean disposable worktree. Do not weaken the grammar build |
| 61 | +or disable sanitizers. |
| 62 | + |
| 63 | +Before acceptance, add or verify a duplicate-key cyclic fixture covering equal |
| 64 | +qualified name, file path, start line, end line, name, and label. Ensure the |
| 65 | +test checks allocation before freeing the signature. This addresses Terra's |
| 66 | +remaining determinism concern. |
| 67 | + |
| 68 | +Acceptance: pipeline suite green, duplicate-key fixture present, no sanitizer |
| 69 | +error, and production incremental build green. |
| 70 | + |
| 71 | +### 3. Finish version-cohort evidence |
| 72 | + |
| 73 | +Worktree: 01af5cb2. |
| 74 | + |
| 75 | +Run the focused suite in an environment where cbm_mkdtemp is permitted to |
| 76 | +create its secure private root: |
| 77 | + |
| 78 | + bash scripts/test.sh --suites version_cohort |
| 79 | + |
| 80 | +Then run the daemon/application handoff tests that exercise the same cache-root |
| 81 | +identity path. Native Windows must execute the separator-form case; Linux |
| 82 | +cannot substitute for that result. |
| 83 | + |
| 84 | +Acceptance: distinct cache-root holder/waiter handoff passes, Windows |
| 85 | +slash/backslash normalization passes, finite-deadline conflict retry remains |
| 86 | +bounded, and no MCP source is present. |
| 87 | + |
| 88 | +### 4. Finish YAML evidence |
| 89 | + |
| 90 | +Worktree: 523d398d. |
| 91 | + |
| 92 | +Run: |
| 93 | + |
| 94 | + bash scripts/test.sh --suites config_yaml_edit |
| 95 | + |
| 96 | +On a native Windows runner, execute the reparse-point and access-denied cases |
| 97 | +with Developer Mode or symlink privilege explicitly recorded. Confirm that |
| 98 | +access-denied targets fail closed, dangling links are not treated as absent, |
| 99 | +and no lock sidecar or target mutation occurs after refusal. |
| 100 | + |
| 101 | +Acceptance: Linux focused suite green, Windows-gated tests execute rather than |
| 102 | +silently skip except for explicitly recorded platform privilege, and |
| 103 | +check-no-test-skips.sh remains green. |
| 104 | + |
| 105 | +### 5. Finish Razor evidence |
| 106 | + |
| 107 | +Worktree: 5b1bc085. |
| 108 | + |
| 109 | +Run: |
| 110 | + |
| 111 | + bash scripts/test.sh --suites language,extraction |
| 112 | + |
| 113 | +Confirm .cshtml maps to C#, @page produces a GET route, .razor behavior is |
| 114 | +unchanged, and a layout without @page produces no route. Preserve the current |
| 115 | +CP89 .frm/.cls VB6 disambiguation in src/discover/language.c. |
| 116 | + |
| 117 | +Acceptance: language and extraction suites green, no unrelated grammar |
| 118 | +classification changes, and no MCP files or tests added. |
| 119 | + |
| 120 | +### 6. Finish embedded extraction evidence |
| 121 | + |
| 122 | +Worktree: f8971e7a. |
| 123 | + |
| 124 | +First repair the test-runner link invocation in the disposable worktree; the |
| 125 | +worker's reported missing SQLite symbols indicate an incomplete link set, not |
| 126 | +an extraction assertion. Use the same Makefile.cbm target and library list as |
| 127 | +the current repository test runner rather than adding a new dependency. |
| 128 | + |
| 129 | +Run: |
| 130 | + |
| 131 | + bash scripts/test.sh --suites extraction,edge_structural,grammar_labels |
| 132 | + |
| 133 | +Review the behavior change carefully: |
| 134 | + |
| 135 | +- JavaScript/module blocks extract definitions, imports, and calls; |
| 136 | +- src=, JSON, importmap, and other non-JavaScript blocks remain inert; |
| 137 | +- Svelte and Astro label goldens intentionally change; |
| 138 | +- Astro frontmatter's TypeScript default is an explicit contract change. |
| 139 | + |
| 140 | +Acceptance requires all three focused suites to link and pass, existing Vue |
| 141 | +negative controls to remain valid, and graph-count/label deltas to be |
| 142 | +intentional and documented. If the link failure cannot be repaired without |
| 143 | +changing the fork's test infrastructure, defer this feature rather than |
| 144 | +claiming validation. |
| 145 | + |
| 146 | +### 7. Final integration gate |
| 147 | + |
| 148 | +After all five workstreams have independently passed their gates, apply only |
| 149 | +the accepted commits to a clean CP89-derived integration worktree in this |
| 150 | +order: |
| 151 | + |
| 152 | +1. 523d398d YAML evidence closeout |
| 153 | +2. 01af5cb2 cohort evidence closeout |
| 154 | +3. 43d3a210 complexity evidence closeout |
| 155 | +4. 5b1bc085 Razor evidence closeout |
| 156 | +5. f8971e7a embedded extraction evidence closeout |
| 157 | + |
| 158 | +Then run: |
| 159 | + |
| 160 | + git diff --check |
| 161 | + scripts/build-dev.sh |
| 162 | + bash scripts/test.sh --suites cli,config_yaml_edit,version_cohort,language,extraction,edge_structural,grammar_labels,pipeline |
| 163 | + bash scripts/test.sh --suites mem |
| 164 | + |
| 165 | +Run the clean full venue gate only after the focused gates pass. Native Windows |
| 166 | +qualification is required for Windows-specific claims. Commit the accepted |
| 167 | +integration as a separate release-tooling change; do not push until the full |
| 168 | +gate and release review are green. |
| 169 | + |
| 170 | +## Explicit deferrals |
| 171 | + |
| 172 | +- 92725a5e remains excluded: it is a Windows MCP stdio-server watchdog, not a |
| 173 | + CLI process behavior. |
| 174 | +- c1b9c451 remains excluded as a direct port; its MCP session adapter is |
| 175 | + obsolete. Any 9846c3f1 separator-equivalence behavior requires a separate |
| 176 | + neutral daemon implementation and test. |
| 177 | +- 24f54c0e is provisionally implemented in f8971e7a, but acceptance is blocked |
| 178 | + on complete focused-suite linkage and review of the intentional graph/label |
| 179 | + behavior changes. Revert or defer it if those gates cannot be met. |
0 commit comments