Conversation
Phase 4 staged 4a-4d: carried code, guardrails in dw, seam map and context diet, gate 4 (harness stage C before FREEZE is deleted). Don's rulings 2026-10-01: concat refuses an unrated track, 1,100-line ceiling with a warn band, CLAUDE.md only shrinks after the diet, release decided at the gate; the diet's budget is the root file (<= 150 lines). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e module function validation_context, the six warning methods and cache_hits become direct calls to validation.workflow_context / run_warning_check and workflow_run.cache_hits. validation_errors and validate stay methods. No surface change (snapshot byte-identical). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
resolve_sub_workflow_reference owns the builtin branch, the catalog-root fallback, the search path and the confinement check. create_step_action, resolve_sub_workflow_path, open_sub_workflow (now takes resolved, so sub_workflow_errors resolves once), realize.read_sub_workflow and the observed-cost lookup all call it. Fixes the builtin name 'replace' bug. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sert only what the shared resolver gives Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w, reword argument_template description Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ck with no sample rate gain_audio's frame region goes through slice_region, so its end matches slice_audio's to the sample. reconcile_sample_rates loses skip_unrated and refuses an unrated track by name in concat_videos and dissolve_videos. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A declared audio_sample_rate applies at save, not to an in-memory input, so the message now says to save the step and join the file through output:. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Counts hand-written reference-prefix handling outside dw/references.py: startswith-style calls, len() slices, + / f-string building, module-level alias assignments and prefixed strings. prefix_literals is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An f-string fragment ending '_output:' is the tail of another word, not an output: reference; only a prefix preceded by a non-identifier character counts. Count on the tree unchanged (82). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…es.py Adds RESERVED_TEXT and LAZY_MEDIA, deletes the alias constants and _UNRESOLVED_PREFIXES copies, and moves each startswith/removeprefix/slice/ concatenation site onto is_ref/ref_name/make_ref. prefix_handling 82 -> 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p SHOT_REFERENCE_PREFIX Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Final-review minors: validation docstrings no longer describe the deleted Workflow delegators; dead library.catalog_root_dir removed; CLAUDE.md names workflow_run.cache_hits; the gain_audio release line says 'one sample off', not 'short'. Hot zone back to the standing entries; ROADMAP Phase 4 row says 4a merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Workflow delegators gone (LCOM4 1); one sub-workflow resolver; run-dir reset; kernels variant order; argument_template description; gain_audio rounding; concat refuses an unrated track; prefix_handling ratchet 82 -> 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…modules_over_size_ceiling Key rename in baseline.json (value 0 -> 0): modules_over_1000_lines is now modules_over_size_ceiling, ceiling 1,100. Modules in 1,001-1,100 print a non-failing warning line; a failing --check prints the re-baseline rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd scripts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
arch_metrics: modules_over_size_ceiling (1,100) with a 1,001-1,100 warn band; a failing --check prints the re-baseline rule. CI's backend job and preflight run the ratchet; ruff scoped to dw dw_mcp tests scripts. Carries fe7acd1 (an empty dw/_ratchet_probe.py, which failed CI as intended) and its revert 0f928e3 - no net change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One row per concept: owner module, the rule in one sentence (read off the code), and the test or check that enforces it. Rows are the triage's 26 map rows plus the stabilization's owners and dw/variables.py. tests/test_architecture_map.py checks that every backticked repo path in the map exists (a glob must match) and that every tests/x.py::Class::test it names is defined in that file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hets The checker now reads `path`: `name`, `name` and requires each name to be defined or assigned in that file (or to be a key of a .json file, which is how a ratchet is named against docs/stabilization/baseline.json). A `file::Class::test` must be a test defined inside that class. Map: compound rules split into one sentence per row; partial enforcement narrowed or marked; whole-file citations replaced by specific tests; the Step and persistent-worker rows marked as unenforced; the builtin owner is resolve_sub_workflow_reference. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…their modules Fourteen rules from the 4c triage table now live in the module or function docstring that owns them. Docstrings only; the surface snapshot is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…list claim narrowed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The root keeps only the triage's keep rows: the overview, the common commands plus the unit-test line, a "where things are" block that sends an agent to docs/ARCHITECTURE.md before grepping (with the worker-restart and builtin-vs-workflows facts), the plugin paragraph with every skill named, the security rules with the two CodeQL edit-time lines, and three "before you edit" gotchas, each ending at its owner. Everything else is in a doc, a docstring or a seam-map row, per docs/stabilization/phase-4-surveys/claude-md-triage.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two UI texts pointed at the deleted cartesian-product gotcha; they now cite docs/WORKFLOW_GUIDE.md. The map's confinement row names LibraryPath and the security validators, the step-cache row names memory/clear, and two rows say what their test pins. CLAUDE.md drops the map section list (untested drift); library.py's docstring no longer says builtin: resolves in workflow.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns becomes a pointer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude_md_lines re-baselined 957 -> 129 (root 106, ui 12, dw_mcp 8, dw/server 3). Hot zone back to the standing entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/ARCHITECTURE.md maps 82 concepts to their owning module, rule and enforcement, pinned by tests/test_architecture_map.py. The four CLAUDE.md files go from 957 to 129 lines per a reviewed 221-row triage (docs/stabilization/phase-4-surveys/claude-md-triage.md); 14 rules moved into their modules' docstrings; copilot-instructions is a pointer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 4c merge kept the docstring destinations develop carried from the cherry-picked 0a1876c; 4c no longer needs them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stage C says it reverses stage B's no-waiver rule on purpose, that only the hook ties a baseline raise to arch-approved, reads the hot zone from origin/develop, and unparks what the freeze parked. 4d keeps arch_metrics.py in the hot zone permanently and records for_each memory as a new baseline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Harness stage C is committed (harnest 19a8580), so FREEZE comes off develop. hot-zone.txt keeps scripts/arch_metrics.py permanently and drops docs/stabilization/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Metrics equal to the 4c baseline (re-baseline is a no-op). Workflow LCOM4 1, CLAUDE.md 129 lines, harness stage C at harnest 19a8580. Records the candidate checks for the kept gotchas, the six unenforced seam-map rules, stage C's known gaps, and the host-dependent template tests on an MPS Mac as follow-ups. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
two-stage cold 332 s (the post-deploy encoder stall, as at gate 3), cached 0.92 s; for_each 38.0 s cold / 1.65 s cached with the first memory reading; assemble-and-score (concat_videos) 6.1 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Release 0.7.0: stabilization Phase 4 (gate 4,
stabilization-gate-4). The freeze is lifted; the architecture ratchet runs in CI.Notes
library.resolve_sub_workflow_reference) at every site, so a path a run can open is one validation, the realized workflow's digest and the observed-cost lookup can open too.builtin:builtin:x.jsonno longer loadsx.json: only the leading prefix is stripped, so the namebuiltin:x.jsonis looked up and reported asSubWorkflowNotFound.builtin:workflow now raisesSubWorkflowNotFound(naming the packaged root) instead ofvalidate_workflow_path's missing-file error.manifest.jsonwhen the same workflow instance is reused:Workflow.runresets the directory and version it carried.kernel_availability.stable_message), so the message no longer varies by process.argument_templateschema description now says what the code does: handed arguments are held on the child at run time, never written into the definition, and an authored value is the fallback.gain_audiorounds a frame-addressed region's end once, asslice_audiodoes, so a region's end can no longer be one sample off the matching slice's.concat_videosrefuses a track with no sample rate (concat_videos: '<name>' has audio with no sample rate) instead of joining it unresampled at the wrong speed and pitch;dissolve_videosgives the same message in place of the resample error. Save that step withaudio_sample_ratein its result and join the saved file through anoutput:reference. An unpinneddissolve_videoswith such a track now raises thisValueErrorrather than aTypeError.Workflow's one-line check methods are gone:validation_context,sub_workflow_warnings,adapter_warnings,inherited_vram_warnings,slice_past_end_warnings,shot_span_warnings,null_variable_argument_warningsandcache_hits. Callvalidation.workflow_context(workflow, ...),validation.run_warning_check(workflow, "<name>", ...)andworkflow_run.cache_hits(workflow, arguments).variable:,asset:,output:, ...) are read and built only throughdw.references; a hand-written prefix check elsewhere fails theprefix_handlingratchet.scripts/arch_metrics.py --check docs/stabilization/baseline.jsonruns in CI andscripts/preflight.sh, so a PR that raises any architecture metric goes red. The module-size metric ismodules_over_size_ceiling(fail over 1,100 lines, warn over 1,000), renamed frommodules_over_1000_lines.docs/ARCHITECTURE.mdis the seam map (concept, owning module, rule, enforced-by).stabilization-gate-4).Gate report: docs/stabilization/ROADMAP.md, "Gate 4" (suite green on CI; lem smoke green on a5bced6).
🤖 Generated with Claude Code