[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-reactivex-rxjs-next-migration":3,"mdc-8vfjo0-key":37,"related-repo-reactivex-rxjs-next-migration":562,"related-org-reactivex-rxjs-next-migration":572},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":32,"sourceUrl":35,"mdContent":36},"rxjs-next-migration","migrate RxJS 7 applications to RxJS Next","Migrate an RxJS 7 application, library, or test suite to RxJS Next through an agent-led workflow that establishes a green behavioral baseline, makes Observable lifecycle choices explicit, uses @rxjs\u002Fmigrate only for bounded fixture-proved rewrites, repairs without weakening evidence, and records a versioned migration contract. Use for repository assessment, migration planning or execution, lifecycle review, TestScheduler conversion, or migration closeout.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"reactivex","ReactiveX","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Freactivex.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"JavaScript","javascript","tag",{"name":17,"slug":18,"type":15},"Migration","migration",{"name":20,"slug":21,"type":15},"Engineering","engineering",{"name":23,"slug":24,"type":15},"Testing","testing",31698,"https:\u002F\u002Fgithub.com\u002FReactiveX\u002Frxjs","2026-08-02T06:09:15.328629",null,2989,[14,31],"rxjs",{"repoUrl":26,"stars":25,"forks":29,"topics":33,"description":34},[14,31],"A reactive programming library for JavaScript","https:\u002F\u002Fgithub.com\u002FReactiveX\u002Frxjs\u002Ftree\u002FHEAD\u002Fpackages\u002Fmigrate\u002Fskill","---\nname: rxjs-next-migration\ndescription: Migrate an RxJS 7 application, library, or test suite to RxJS Next through an agent-led workflow that establishes a green behavioral baseline, makes Observable lifecycle choices explicit, uses @rxjs\u002Fmigrate only for bounded fixture-proved rewrites, repairs without weakening evidence, and records a versioned migration contract. Use for repository assessment, migration planning or execution, lifecycle review, TestScheduler conversion, or migration closeout.\n---\n\n# RxJS 7 to RxJS Next migration\n\nTreat this as reviewed project work, not a codemod run. The objective is an\nintentional RxJS Next contract backed by the project's own build and behavior\nevidence. A transformed file, a clean diff, or one passing test is not proof\nthat the migration is complete.\n\nWork through all eight stages in order. Re-enter an earlier stage whenever new\nevidence changes scope, coverage, or lifecycle intent. Keep the developer\ninvolved at every explicit pause.\n\n## Non-negotiable rules\n\n- Read and obey repository-local instructions before acting. Protect existing\n  work and stay within the authorized repository and paths.\n- Establish the RxJS 7 baseline before changing dependencies or source.\n- Never infer platform sharing versus producer-per-direct-subscription behavior\n  from syntax, filenames, operator names, or a currently passing output.\n- Use the installed engine's versioned registry and schemas as authority. Do\n  not reconstruct capability mappings from this Skill or from memory.\n- Run the deterministic engine without writes first. A refusal is a successful\n  safety outcome, not permission to improvise a mechanical rewrite.\n- Preserve the project's test framework by default. Select a framework adapter\n  only when the developer asked for that separate conversion.\n- Do not weaken, skip, delete, or replace a behavioral expectation merely to\n  make the migrated suite green.\n- Do not add RxJS 7 compatibility shims, string-named platform methods, local\n  substitute operators, or runtime generators unless the developer separately\n  authorizes that product work.\n- Keep changes in small coherent batches. Review and verify each batch before\n  widening the scope.\n- Do not call a migration complete while a required command is unknown,\n  unapproved, skipped, or red without an explicitly accepted blocker.\n\n## Working record\n\nCreate or locate a checked-in migration contract manifest and a concise\nhuman-readable report. Use the schema exported by the installed\n`@rxjs\u002Fmigrate`; schema validity and migration readiness are separate checks.\nUse [assets\u002Fmigration-report.md](assets\u002Fmigration-report.md) for the report.\n\nFor every migration unit, preserve source locations and record:\n\n- its current RxJS 7 behavioral claim;\n- the target lifecycle selected by the developer;\n- its evidence classification and supporting tests;\n- approval state, diagnostics, and any intentional divergence; and\n- verification or a named blocker.\n\n## Stage 1: Establish authority and scope\n\n1. Locate repository instructions, package and workspace metadata, lockfiles,\n   CI configuration, RxJS versions, build\u002Ftest commands, and current working\n   tree state.\n2. Identify the repository root, migration boundary, permitted writes,\n   package manager, network policy, and candidate verification commands.\n3. Record the installed `@rxjs\u002Fmigrate` version and canonical Skill digest.\n   If the installed Skill does not match its package, stop and synchronize it\n   before trusting these instructions.\n4. State the proposed read, write, dependency, and command scope before broad\n   changes.\n\nPause for the developer if the target repository or allowed scope is unclear,\nexisting changes overlap the migration, or destructive, networked, external,\nor broader actions require new authority.\n\nExit only when the scope, allowed writes, package manager, and candidate gates\nare recorded.\n\n## Stage 2: Assess usage, lifecycle risk, and coverage\n\nInventory installed RxJS versions and import forms, then locate Observable\nconstruction, custom producers, Subjects, subscription ownership, repeated\nsubscriptions, retry\u002Frefresh\u002Fcache paths, schedulers and timing, test helpers,\ninterop inputs, cancellation, teardown, and error handling. Include direct and\ntransitive operator usage.\n\nFor each lifecycle-sensitive path, link exact source evidence and mark it as:\n\n- covered by an existing baseline;\n- requiring a characterization test;\n- explicitly unsupported; or\n- an uncovered risk the developer accepts.\n\nProduce a risk and coverage report before proposing rewrites. Read\n[references\u002Fassessment-and-contract.md](references\u002Fassessment-and-contract.md)\nfor the inventory and characterization protocol.\n\nExit only when every in-scope lifecycle-sensitive use has one recorded\ncoverage disposition. Missing coverage is not evidence that behavior is safe.\n\n## Stage 3: Establish the green RxJS 7 baseline\n\nRun the agreed build, type, lint, unit, integration, and behavior checks against\nthe unchanged RxJS 7 project. Record exact commands, environment facts, exit\ncodes, and concise results.\n\nAdd focused characterization tests where Stage 2 found material gaps. Protect\nobservable values, completion\u002Ferror behavior, producer multiplicity,\ncancellation, abort reasons, teardown ordering, timing, and externally visible\nsubscription effects as applicable. Every characterization test must pass on\nRxJS 7 before migration begins.\n\nPause if a starting gate fails. Diagnose it and ask the developer whether to\nfix it first, narrow scope, or record it as an accepted pre-existing failure.\nNever silently reclassify it as a migration regression or ignore it.\n\nExit only with a green baseline or explicit approval for each named\npre-existing failure, plus green characterization tests.\n\n## Stage 4: Classify and approve the target contract\n\nDivide the scope into stable migration units. For each unit, record one target\nlifecycle using the values accepted by the installed manifest schema and one\nevidence classification. Use repository evidence and\n[references\u002Fassessment-and-contract.md](references\u002Fassessment-and-contract.md)\nto explain the choice.\n\nThe engine may identify risk but cannot choose lifecycle intent. `unresolved`\nis a stop state. Pause for the developer when either platform-shared behavior\nor producer-per-direct-subscription behavior is plausible, or when Subject\nsemantics, cancellation, scheduler ordering, error behavior, interop, or a\npublic behavior change is not proved.\n\nIntentional divergences require a concrete old claim, proposed Next claim,\nuser impact, evidence, and developer approval. Validate the manifest\nstructurally, then run the installed readiness assessment. Do not proceed with\na batch containing unresolved intent or required pending approval.\n\nExit only when the developer has approved every ambiguous choice and\nintentional divergence needed for the next batch.\n\n## Stage 5: Plan and dry-run bounded engine changes\n\nInspect the installed capability registry and select only entries whose\nversion, source form, arity, preconditions, and executable evidence match the\napproved unit. Do not infer support from a familiar name. Follow\n[references\u002Fengine-and-batches.md](references\u002Fengine-and-batches.md).\nWhen the batch contains RxJS 7 marble tests, also read\n[references\u002Ftest-migration.md](references\u002Ftest-migration.md).\n\nRun `rxjs-migrate` without `--write` using explicit provenance and, when\nrequired, the approved `cold` or `platform` mode. Preserve the current test\nframework unless a supported adapter was separately selected. Capture the\nversioned JSON report, changed paths, structured diagnostics, and exit code.\n\nPause when a diagnostic requires review or refuses a transform, when output\nwould escape authorized paths, when source does not match the capability\nevidence, or when batch size or semantic reach exceeds the reviewed scope.\nNever conceal unsupported segments inside a partially transformed pipeline.\n\nExit only after diagnostics and changed-file scope are reviewed and the\ndeveloper has approved any newly broadened batch.\n\n## Stage 6: Apply one small migration batch\n\nApply only the reviewed dry-run plan. Require an explicit write destination\ninside the authorized project and preserve source provenance. Do not overwrite\nexisting output without specific approval. Review the resulting diff before\nadditional edits.\n\nFormat through the project's normal tools. Ensure ordinary project-owned\nsource and direct test declarations remain; do not leave dynamic generators,\nhidden case registries, or compatibility assertion layers in the result.\n\nImmediately check parsing, the narrowest useful type boundary, and engine\nidempotence. Re-running the same transform must produce no new source change\nand stable diagnostics. If it does not, restore the affected batch to the\nreviewed starting point and report an engine defect.\n\nExit only when the batch parses, type-checks at its narrow boundary, is\nidempotent, and every diagnostic is resolved, carried forward, or escalated.\n\n## Stage 7: Build, test, diagnose, and repair\n\nRun focused characterization and migrated tests first, then the agreed project\ngates. Classify every failure as a migration defect, RxJS Next product gap,\nintentional divergence, environment\u002Fbaseline issue, or still-unknown result.\nUse [references\u002Fverification-and-closeout.md](references\u002Fverification-and-closeout.md)\nfor the repair rules.\n\nRepair migration defects in a small batch and repeat the relevant gates. For a\nproduct gap, preserve the failing evidence and report it; do not disguise it\nwith a local replacement. For an intentional divergence, change an expectation\nonly after the manifest records approved new behavior and user impact.\n\nPause before any repair that changes public behavior, weakens evidence,\nexpands writes, changes dependencies beyond the reviewed plan, needs external\naccess, or introduces a compatibility layer.\n\nExit only when agreed gates pass or each remaining red result has a named,\nevidenced, explicitly accepted blocker.\n\n## Stage 8: Close out and hand off\n\nUpdate the contract manifest and report with exact source and target versions,\nengine version, capability-registry version, canonical Skill digest, baseline,\nunits, diagnostics, divergences, final commands\u002Fresults, and blockers. Validate\nthe manifest with the installed schema and assess readiness separately.\n\nReview [references\u002Freview-checklist.md](references\u002Freview-checklist.md). Report:\n\n1. what behavior and lifecycle contract changed;\n2. what source and tests changed;\n3. the exact gates run and their results;\n4. migration defects repaired versus product gaps retained;\n5. approved divergences and environment limitations; and\n6. remaining blockers, owners, evidence, and acceptance.\n\nClaim completion only when readiness is `ready`, or\n`ready-with-accepted-blockers` when the developer intentionally chose that\noutcome. Otherwise hand off the migration as incomplete with the next concrete\ndecision or action.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,57,62,69,124,130,152,157,185,191,222,227,232,238,243,248,271,283,288,294,299,304,309,314,320,331,344,349,354,360,379,416,421,426,432,437,442,447,452,458,470,475,480,485,491,496,508,541],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"rxjs-7-to-rxjs-next-migration",[48],{"type":49,"value":50},"text","RxJS 7 to RxJS Next migration",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"Treat this as reviewed project work, not a codemod run. The objective is an\nintentional RxJS Next contract backed by the project's own build and behavior\nevidence. A transformed file, a clean diff, or one passing test is not proof\nthat the migration is complete.",{"type":43,"tag":52,"props":58,"children":59},{},[60],{"type":49,"value":61},"Work through all eight stages in order. Re-enter an earlier stage whenever new\nevidence changes scope, coverage, or lifecycle intent. Keep the developer\ninvolved at every explicit pause.",{"type":43,"tag":63,"props":64,"children":66},"h2",{"id":65},"non-negotiable-rules",[67],{"type":49,"value":68},"Non-negotiable rules",{"type":43,"tag":70,"props":71,"children":72},"ul",{},[73,79,84,89,94,99,104,109,114,119],{"type":43,"tag":74,"props":75,"children":76},"li",{},[77],{"type":49,"value":78},"Read and obey repository-local instructions before acting. Protect existing\nwork and stay within the authorized repository and paths.",{"type":43,"tag":74,"props":80,"children":81},{},[82],{"type":49,"value":83},"Establish the RxJS 7 baseline before changing dependencies or source.",{"type":43,"tag":74,"props":85,"children":86},{},[87],{"type":49,"value":88},"Never infer platform sharing versus producer-per-direct-subscription behavior\nfrom syntax, filenames, operator names, or a currently passing output.",{"type":43,"tag":74,"props":90,"children":91},{},[92],{"type":49,"value":93},"Use the installed engine's versioned registry and schemas as authority. Do\nnot reconstruct capability mappings from this Skill or from memory.",{"type":43,"tag":74,"props":95,"children":96},{},[97],{"type":49,"value":98},"Run the deterministic engine without writes first. A refusal is a successful\nsafety outcome, not permission to improvise a mechanical rewrite.",{"type":43,"tag":74,"props":100,"children":101},{},[102],{"type":49,"value":103},"Preserve the project's test framework by default. Select a framework adapter\nonly when the developer asked for that separate conversion.",{"type":43,"tag":74,"props":105,"children":106},{},[107],{"type":49,"value":108},"Do not weaken, skip, delete, or replace a behavioral expectation merely to\nmake the migrated suite green.",{"type":43,"tag":74,"props":110,"children":111},{},[112],{"type":49,"value":113},"Do not add RxJS 7 compatibility shims, string-named platform methods, local\nsubstitute operators, or runtime generators unless the developer separately\nauthorizes that product work.",{"type":43,"tag":74,"props":115,"children":116},{},[117],{"type":49,"value":118},"Keep changes in small coherent batches. Review and verify each batch before\nwidening the scope.",{"type":43,"tag":74,"props":120,"children":121},{},[122],{"type":49,"value":123},"Do not call a migration complete while a required command is unknown,\nunapproved, skipped, or red without an explicitly accepted blocker.",{"type":43,"tag":63,"props":125,"children":127},{"id":126},"working-record",[128],{"type":49,"value":129},"Working record",{"type":43,"tag":52,"props":131,"children":132},{},[133,135,142,144,150],{"type":49,"value":134},"Create or locate a checked-in migration contract manifest and a concise\nhuman-readable report. Use the schema exported by the installed\n",{"type":43,"tag":136,"props":137,"children":139},"code",{"className":138},[],[140],{"type":49,"value":141},"@rxjs\u002Fmigrate",{"type":49,"value":143},"; schema validity and migration readiness are separate checks.\nUse ",{"type":43,"tag":145,"props":146,"children":148},"a",{"href":147},"assets\u002Fmigration-report.md",[149],{"type":49,"value":147},{"type":49,"value":151}," for the report.",{"type":43,"tag":52,"props":153,"children":154},{},[155],{"type":49,"value":156},"For every migration unit, preserve source locations and record:",{"type":43,"tag":70,"props":158,"children":159},{},[160,165,170,175,180],{"type":43,"tag":74,"props":161,"children":162},{},[163],{"type":49,"value":164},"its current RxJS 7 behavioral claim;",{"type":43,"tag":74,"props":166,"children":167},{},[168],{"type":49,"value":169},"the target lifecycle selected by the developer;",{"type":43,"tag":74,"props":171,"children":172},{},[173],{"type":49,"value":174},"its evidence classification and supporting tests;",{"type":43,"tag":74,"props":176,"children":177},{},[178],{"type":49,"value":179},"approval state, diagnostics, and any intentional divergence; and",{"type":43,"tag":74,"props":181,"children":182},{},[183],{"type":49,"value":184},"verification or a named blocker.",{"type":43,"tag":63,"props":186,"children":188},{"id":187},"stage-1-establish-authority-and-scope",[189],{"type":49,"value":190},"Stage 1: Establish authority and scope",{"type":43,"tag":192,"props":193,"children":194},"ol",{},[195,200,205,217],{"type":43,"tag":74,"props":196,"children":197},{},[198],{"type":49,"value":199},"Locate repository instructions, package and workspace metadata, lockfiles,\nCI configuration, RxJS versions, build\u002Ftest commands, and current working\ntree state.",{"type":43,"tag":74,"props":201,"children":202},{},[203],{"type":49,"value":204},"Identify the repository root, migration boundary, permitted writes,\npackage manager, network policy, and candidate verification commands.",{"type":43,"tag":74,"props":206,"children":207},{},[208,210,215],{"type":49,"value":209},"Record the installed ",{"type":43,"tag":136,"props":211,"children":213},{"className":212},[],[214],{"type":49,"value":141},{"type":49,"value":216}," version and canonical Skill digest.\nIf the installed Skill does not match its package, stop and synchronize it\nbefore trusting these instructions.",{"type":43,"tag":74,"props":218,"children":219},{},[220],{"type":49,"value":221},"State the proposed read, write, dependency, and command scope before broad\nchanges.",{"type":43,"tag":52,"props":223,"children":224},{},[225],{"type":49,"value":226},"Pause for the developer if the target repository or allowed scope is unclear,\nexisting changes overlap the migration, or destructive, networked, external,\nor broader actions require new authority.",{"type":43,"tag":52,"props":228,"children":229},{},[230],{"type":49,"value":231},"Exit only when the scope, allowed writes, package manager, and candidate gates\nare recorded.",{"type":43,"tag":63,"props":233,"children":235},{"id":234},"stage-2-assess-usage-lifecycle-risk-and-coverage",[236],{"type":49,"value":237},"Stage 2: Assess usage, lifecycle risk, and coverage",{"type":43,"tag":52,"props":239,"children":240},{},[241],{"type":49,"value":242},"Inventory installed RxJS versions and import forms, then locate Observable\nconstruction, custom producers, Subjects, subscription ownership, repeated\nsubscriptions, retry\u002Frefresh\u002Fcache paths, schedulers and timing, test helpers,\ninterop inputs, cancellation, teardown, and error handling. Include direct and\ntransitive operator usage.",{"type":43,"tag":52,"props":244,"children":245},{},[246],{"type":49,"value":247},"For each lifecycle-sensitive path, link exact source evidence and mark it as:",{"type":43,"tag":70,"props":249,"children":250},{},[251,256,261,266],{"type":43,"tag":74,"props":252,"children":253},{},[254],{"type":49,"value":255},"covered by an existing baseline;",{"type":43,"tag":74,"props":257,"children":258},{},[259],{"type":49,"value":260},"requiring a characterization test;",{"type":43,"tag":74,"props":262,"children":263},{},[264],{"type":49,"value":265},"explicitly unsupported; or",{"type":43,"tag":74,"props":267,"children":268},{},[269],{"type":49,"value":270},"an uncovered risk the developer accepts.",{"type":43,"tag":52,"props":272,"children":273},{},[274,276,281],{"type":49,"value":275},"Produce a risk and coverage report before proposing rewrites. Read\n",{"type":43,"tag":145,"props":277,"children":279},{"href":278},"references\u002Fassessment-and-contract.md",[280],{"type":49,"value":278},{"type":49,"value":282},"\nfor the inventory and characterization protocol.",{"type":43,"tag":52,"props":284,"children":285},{},[286],{"type":49,"value":287},"Exit only when every in-scope lifecycle-sensitive use has one recorded\ncoverage disposition. Missing coverage is not evidence that behavior is safe.",{"type":43,"tag":63,"props":289,"children":291},{"id":290},"stage-3-establish-the-green-rxjs-7-baseline",[292],{"type":49,"value":293},"Stage 3: Establish the green RxJS 7 baseline",{"type":43,"tag":52,"props":295,"children":296},{},[297],{"type":49,"value":298},"Run the agreed build, type, lint, unit, integration, and behavior checks against\nthe unchanged RxJS 7 project. Record exact commands, environment facts, exit\ncodes, and concise results.",{"type":43,"tag":52,"props":300,"children":301},{},[302],{"type":49,"value":303},"Add focused characterization tests where Stage 2 found material gaps. Protect\nobservable values, completion\u002Ferror behavior, producer multiplicity,\ncancellation, abort reasons, teardown ordering, timing, and externally visible\nsubscription effects as applicable. Every characterization test must pass on\nRxJS 7 before migration begins.",{"type":43,"tag":52,"props":305,"children":306},{},[307],{"type":49,"value":308},"Pause if a starting gate fails. Diagnose it and ask the developer whether to\nfix it first, narrow scope, or record it as an accepted pre-existing failure.\nNever silently reclassify it as a migration regression or ignore it.",{"type":43,"tag":52,"props":310,"children":311},{},[312],{"type":49,"value":313},"Exit only with a green baseline or explicit approval for each named\npre-existing failure, plus green characterization tests.",{"type":43,"tag":63,"props":315,"children":317},{"id":316},"stage-4-classify-and-approve-the-target-contract",[318],{"type":49,"value":319},"Stage 4: Classify and approve the target contract",{"type":43,"tag":52,"props":321,"children":322},{},[323,325,329],{"type":49,"value":324},"Divide the scope into stable migration units. For each unit, record one target\nlifecycle using the values accepted by the installed manifest schema and one\nevidence classification. Use repository evidence and\n",{"type":43,"tag":145,"props":326,"children":327},{"href":278},[328],{"type":49,"value":278},{"type":49,"value":330},"\nto explain the choice.",{"type":43,"tag":52,"props":332,"children":333},{},[334,336,342],{"type":49,"value":335},"The engine may identify risk but cannot choose lifecycle intent. ",{"type":43,"tag":136,"props":337,"children":339},{"className":338},[],[340],{"type":49,"value":341},"unresolved",{"type":49,"value":343},"\nis a stop state. Pause for the developer when either platform-shared behavior\nor producer-per-direct-subscription behavior is plausible, or when Subject\nsemantics, cancellation, scheduler ordering, error behavior, interop, or a\npublic behavior change is not proved.",{"type":43,"tag":52,"props":345,"children":346},{},[347],{"type":49,"value":348},"Intentional divergences require a concrete old claim, proposed Next claim,\nuser impact, evidence, and developer approval. Validate the manifest\nstructurally, then run the installed readiness assessment. Do not proceed with\na batch containing unresolved intent or required pending approval.",{"type":43,"tag":52,"props":350,"children":351},{},[352],{"type":49,"value":353},"Exit only when the developer has approved every ambiguous choice and\nintentional divergence needed for the next batch.",{"type":43,"tag":63,"props":355,"children":357},{"id":356},"stage-5-plan-and-dry-run-bounded-engine-changes",[358],{"type":49,"value":359},"Stage 5: Plan and dry-run bounded engine changes",{"type":43,"tag":52,"props":361,"children":362},{},[363,365,370,372,377],{"type":49,"value":364},"Inspect the installed capability registry and select only entries whose\nversion, source form, arity, preconditions, and executable evidence match the\napproved unit. Do not infer support from a familiar name. Follow\n",{"type":43,"tag":145,"props":366,"children":368},{"href":367},"references\u002Fengine-and-batches.md",[369],{"type":49,"value":367},{"type":49,"value":371},".\nWhen the batch contains RxJS 7 marble tests, also read\n",{"type":43,"tag":145,"props":373,"children":375},{"href":374},"references\u002Ftest-migration.md",[376],{"type":49,"value":374},{"type":49,"value":378},".",{"type":43,"tag":52,"props":380,"children":381},{},[382,384,390,392,398,400,406,408,414],{"type":49,"value":383},"Run ",{"type":43,"tag":136,"props":385,"children":387},{"className":386},[],[388],{"type":49,"value":389},"rxjs-migrate",{"type":49,"value":391}," without ",{"type":43,"tag":136,"props":393,"children":395},{"className":394},[],[396],{"type":49,"value":397},"--write",{"type":49,"value":399}," using explicit provenance and, when\nrequired, the approved ",{"type":43,"tag":136,"props":401,"children":403},{"className":402},[],[404],{"type":49,"value":405},"cold",{"type":49,"value":407}," or ",{"type":43,"tag":136,"props":409,"children":411},{"className":410},[],[412],{"type":49,"value":413},"platform",{"type":49,"value":415}," mode. Preserve the current test\nframework unless a supported adapter was separately selected. Capture the\nversioned JSON report, changed paths, structured diagnostics, and exit code.",{"type":43,"tag":52,"props":417,"children":418},{},[419],{"type":49,"value":420},"Pause when a diagnostic requires review or refuses a transform, when output\nwould escape authorized paths, when source does not match the capability\nevidence, or when batch size or semantic reach exceeds the reviewed scope.\nNever conceal unsupported segments inside a partially transformed pipeline.",{"type":43,"tag":52,"props":422,"children":423},{},[424],{"type":49,"value":425},"Exit only after diagnostics and changed-file scope are reviewed and the\ndeveloper has approved any newly broadened batch.",{"type":43,"tag":63,"props":427,"children":429},{"id":428},"stage-6-apply-one-small-migration-batch",[430],{"type":49,"value":431},"Stage 6: Apply one small migration batch",{"type":43,"tag":52,"props":433,"children":434},{},[435],{"type":49,"value":436},"Apply only the reviewed dry-run plan. Require an explicit write destination\ninside the authorized project and preserve source provenance. Do not overwrite\nexisting output without specific approval. Review the resulting diff before\nadditional edits.",{"type":43,"tag":52,"props":438,"children":439},{},[440],{"type":49,"value":441},"Format through the project's normal tools. Ensure ordinary project-owned\nsource and direct test declarations remain; do not leave dynamic generators,\nhidden case registries, or compatibility assertion layers in the result.",{"type":43,"tag":52,"props":443,"children":444},{},[445],{"type":49,"value":446},"Immediately check parsing, the narrowest useful type boundary, and engine\nidempotence. Re-running the same transform must produce no new source change\nand stable diagnostics. If it does not, restore the affected batch to the\nreviewed starting point and report an engine defect.",{"type":43,"tag":52,"props":448,"children":449},{},[450],{"type":49,"value":451},"Exit only when the batch parses, type-checks at its narrow boundary, is\nidempotent, and every diagnostic is resolved, carried forward, or escalated.",{"type":43,"tag":63,"props":453,"children":455},{"id":454},"stage-7-build-test-diagnose-and-repair",[456],{"type":49,"value":457},"Stage 7: Build, test, diagnose, and repair",{"type":43,"tag":52,"props":459,"children":460},{},[461,463,468],{"type":49,"value":462},"Run focused characterization and migrated tests first, then the agreed project\ngates. Classify every failure as a migration defect, RxJS Next product gap,\nintentional divergence, environment\u002Fbaseline issue, or still-unknown result.\nUse ",{"type":43,"tag":145,"props":464,"children":466},{"href":465},"references\u002Fverification-and-closeout.md",[467],{"type":49,"value":465},{"type":49,"value":469},"\nfor the repair rules.",{"type":43,"tag":52,"props":471,"children":472},{},[473],{"type":49,"value":474},"Repair migration defects in a small batch and repeat the relevant gates. For a\nproduct gap, preserve the failing evidence and report it; do not disguise it\nwith a local replacement. For an intentional divergence, change an expectation\nonly after the manifest records approved new behavior and user impact.",{"type":43,"tag":52,"props":476,"children":477},{},[478],{"type":49,"value":479},"Pause before any repair that changes public behavior, weakens evidence,\nexpands writes, changes dependencies beyond the reviewed plan, needs external\naccess, or introduces a compatibility layer.",{"type":43,"tag":52,"props":481,"children":482},{},[483],{"type":49,"value":484},"Exit only when agreed gates pass or each remaining red result has a named,\nevidenced, explicitly accepted blocker.",{"type":43,"tag":63,"props":486,"children":488},{"id":487},"stage-8-close-out-and-hand-off",[489],{"type":49,"value":490},"Stage 8: Close out and hand off",{"type":43,"tag":52,"props":492,"children":493},{},[494],{"type":49,"value":495},"Update the contract manifest and report with exact source and target versions,\nengine version, capability-registry version, canonical Skill digest, baseline,\nunits, diagnostics, divergences, final commands\u002Fresults, and blockers. Validate\nthe manifest with the installed schema and assess readiness separately.",{"type":43,"tag":52,"props":497,"children":498},{},[499,501,506],{"type":49,"value":500},"Review ",{"type":43,"tag":145,"props":502,"children":504},{"href":503},"references\u002Freview-checklist.md",[505],{"type":49,"value":503},{"type":49,"value":507},". Report:",{"type":43,"tag":192,"props":509,"children":510},{},[511,516,521,526,531,536],{"type":43,"tag":74,"props":512,"children":513},{},[514],{"type":49,"value":515},"what behavior and lifecycle contract changed;",{"type":43,"tag":74,"props":517,"children":518},{},[519],{"type":49,"value":520},"what source and tests changed;",{"type":43,"tag":74,"props":522,"children":523},{},[524],{"type":49,"value":525},"the exact gates run and their results;",{"type":43,"tag":74,"props":527,"children":528},{},[529],{"type":49,"value":530},"migration defects repaired versus product gaps retained;",{"type":43,"tag":74,"props":532,"children":533},{},[534],{"type":49,"value":535},"approved divergences and environment limitations; and",{"type":43,"tag":74,"props":537,"children":538},{},[539],{"type":49,"value":540},"remaining blockers, owners, evidence, and acceptance.",{"type":43,"tag":52,"props":542,"children":543},{},[544,546,552,554,560],{"type":49,"value":545},"Claim completion only when readiness is ",{"type":43,"tag":136,"props":547,"children":549},{"className":548},[],[550],{"type":49,"value":551},"ready",{"type":49,"value":553},", or\n",{"type":43,"tag":136,"props":555,"children":557},{"className":556},[],[558],{"type":49,"value":559},"ready-with-accepted-blockers",{"type":49,"value":561}," when the developer intentionally chose that\noutcome. Otherwise hand off the migration as incomplete with the next concrete\ndecision or action.",{"items":563,"total":571},[564],{"slug":4,"name":4,"fn":5,"description":6,"org":565,"tags":566,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[567,568,569,570],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},1,{"items":573,"total":571},[574],{"slug":4,"name":4,"fn":5,"description":6,"org":575,"tags":576,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[577,578,579,580],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15}]