v18 Continuum opening campaign#91
Conversation
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (13)
📝 WalkthroughWalkthroughThis PR adds v18 Continuum compatibility docs, domain types and validators for artifact authority/family/descriptor, a JSON adapter converting Wesley manifests/fixtures into validated ContinuumArtifactDescriptor, an ingestion policy that gates acceptance, public exports, fixtures, and unit tests. ChangesV18 Continuum Artifact Ingestion
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Release Preflight
If you tag this commit as |
|
@codex Self-review pass after clean-worktree check and Issue count: Critical 0, Major 3, Minor 2.
|
|
@coderabbitai review please |
🧩 Analysis chainI'll gather the relevant files before starting the full review. 🏁 Script executed: Length of output: 57081 🏁 Script executed: Length of output: 7949
Review: v18 Continuum Opening Campaign✅ All five self-review items confirmed🔴 Major 1 — Shape and authority are not bound togetherConfirmed. // ContinuumArtifactAuthority.ts
isGeneratedAuthority(): boolean {
return (
this.value === GENERATED_ARTIFACT_AUTHORITY || // 'generated-artifact'
this.value === GENERATED_FIXTURE_AUTHORITY // 'generated-fixture'
);
}
The intended invariant — that Wesley manifests carry 🔴 Major 2 — Caller context can override parsed artifact kindConfirmed. Both parsing branches delegate // wesleyManifestFields() [~line 131]
artifactKind: context.artifactKind ?? WESLEY_REALIZATION_MANIFEST_KIND,
// parseContinuumFamilyFixture() [~line 161]
artifactKind: context.artifactKind ?? CONTINUUM_FIXTURE_KIND,The parsed shape determines which branch runs, but the emitted descriptor's 🔴 Major 3 — Wesley generated inventory can be empty or internally inconsistentConfirmed, with a nuance. // readGeneratedLegs() [~line 258]
const names = Object.freeze(Object.keys(generatedLegs).sort()); // {} → []
// No minimum-leg check followsSeveral existing test fixtures that use The
🟡 Minor 4 — Machine-specific absolute path in fixtureConfirmed. "canonicalSchemaPath": "/Users/james/git/continuum/schemas/continuum-receipt-family.graphql"The field is 🟡 Minor 5 — Verification prose documents a known-nonzero exit commandConfirmed. The design doc at lines 109–115 states the targeted Additional observation —
|
| # | Severity | Status |
|---|---|---|
| 1 | Major | Confirmed — generated-artifact / generated-fixture are both admitted for any shape; policy has no shape-authority coupling |
| 2 | Major | Confirmed — context.artifactKind can produce a descriptor whose artifactKind contradicts the parsed JSON shape |
| 3 | Major | Confirmed — empty generatedLegs: {} passes silently; positive artifactCount is never cross-checked against actual files.length |
| 4 | Minor | Confirmed — absolute workstation path in shared fixture |
| 5 | Minor | Confirmed — nonzero-exit command in verification prose |
✅ Actions performed
Review triggered.
Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/domain/continuum/ContinuumArtifactIngestionPolicy.ts`:
- Around line 13-19: assertGeneratedAuthority currently only checks
descriptor.hasGeneratedAuthority() and therefore allows mismatched
kind/authority pairs; update it to validate that the descriptor's actual
authority exactly matches the expected generated authority for its shape/kind.
In practice, inside assertGeneratedAuthority use ContinuumArtifactDescriptor's
identifying property (e.g., kind or shape) to determine the expected generated
authority (compute or call a helper like
expectedGeneratedAuthorityForKind(kind)) and then check both
descriptor.hasGeneratedAuthority() and
descriptor.authority.equals(expectedAuthority); if either fails throw the
existing ContinuumArtifactAuthorityError with a message that includes
descriptor.familyId, descriptor.kind (or shape) and the actual vs expected
authority so mismatches like Wesley manifest + generated-fixture or fixture +
generated-artifact are rejected. Ensure you reference and update
assertGeneratedAuthority, ContinuumArtifactDescriptor, and the thrown
ContinuumArtifactAuthorityError only.
In `@src/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.ts`:
- Around line 133-135: The parsed JSON must determine artifactKind and authority
rather than letting context override them: in ContinuumArtifactJsonFileAdapter's
JSON parsing logic (the block that sets generatedBy, artifactKind, targets using
readStringArray/readString), read the artifactKind and authority from the source
JSON shape and bind artifactKind to that value (do not default to
context.artifactKind), and validate that context.authority (if provided) matches
the parsed authority; if they mismatch, throw a validation/error. Apply the same
enforcement where similar parsing occurs (the other parsing blocks around the
indicated ranges 158-163 and 166-177).
- Around line 258-303: readGeneratedLegs currently accepts empty generatedLegs
and doesn't validate artifactCount against the actual files, allowing
inconsistent sealed manifests; update readGeneratedLegs (and readGeneratedFiles
usage) so that after calling readOptionalNumber(leg, 'artifactCount') and
collecting files via readGeneratedFiles(leg, name) you validate: if
artifactCount is present and not equal to files.length throw an
AdapterValidationError with a clear message referencing the leg name, and
additionally reject an entirely empty generatedLegs map by throwing an
AdapterValidationError when names.length === 0; use the existing
AdapterValidationError type and the functions readOptionalNumber,
readGeneratedFiles, and rejectUnknownKeys to locate where to insert these checks
in readGeneratedLegs.
In `@test/fixtures/continuum/receipt-family-wesley-realization-manifest.json`:
- Line 4: The fixture contains a machine-specific absolute "canonicalSchemaPath"
value which breaks portability; edit the
receipt-family-wesley-realization-manifest.json fixture to either remove the
optional "canonicalSchemaPath" field entirely or replace its value with a
repo-relative path (e.g., "./schemas/continuum-receipt-family.graphql") so the
fixture is consistent across contributors/CI and no host-specific absolute path
remains.
In `@test/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.ts`:
- Line 14: The test uses an environment-specific fixture value for
sourceSchemaPath ('~/git/continuum/...') which should be replaced with a
repo-neutral constant; update the test ContinuumArtifactIngestionPolicy.test.ts
to import or reference the shared test fixture constant (e.g.,
SCHEMA_FIXTURE_PATH or a suite-level RELATIVE_SCHEMA_PATH) and replace all
occurrences of sourceSchemaPath in the file (including the other instances
noted) with that constant so the path is repo-relative and portable across
environments.
In `@test/unit/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.test.ts`:
- Around line 276-349: Add three regression tests to the
ContinuumArtifactJsonFileAdapter test suite: (1) create a fixture JSON loaded
via ContinuumArtifactJsonFileAdapter.loadString with authority
'generated-artifact' and attempt to load a Wesley manifest JSON with authority
'generated-fixture' using loadString, asserting it throws AdapterValidationError
(shape-binding/authority mismatch); (2) add a test that constructs a sealed
Wesley manifest where manifest.artifactCount !== manifest.files.length and
assert ContinuumArtifactJsonFileAdapter.loadString throws AdapterValidationError
(ensure explicit artifactCount must match files.length); and (3) add a test that
creates a sealed Wesley manifest with generatedLegs = [] and assert loadString
throws AdapterValidationError (empty generatedLegs rejected for sealed
manifests). Use existing fixture JSON constants and the
ContinuumArtifactJsonFileAdapter class and its loadString/loadFile calls to
locate where to add these tests.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 47103933-1949-48c5-89f1-9178d67e2899
⛔ Files ignored due to path filters (4)
docs/design/0124-v17-release-blocker-dag.dotis excluded by!**/*.dotdocs/design/0124-v17-release-blocker-dag.svgis excluded by!**/*.svgdocs/design/0124-v17-release-blocker-status.csvis excluded by!**/*.csvdocs/design/continuum-categories.pdfis excluded by!**/*.pdf
📒 Files selected for processing (30)
docs/BEARING.mddocs/VISION.mddocs/design/0124-v17-release-blocker-dag.mddocs/design/0145-push-pr-review-merge/push-pr-review-merge.mddocs/design/0146-v18-continuum-compatibility-charter/v18-continuum-compatibility-charter.mddocs/design/0147-v18-continuum-contract-matrix/v18-continuum-contract-matrix.mddocs/design/0148-v18-warp-optic-realization-map/v18-warp-optic-realization-map.mddocs/design/0149-v18-continuum-artifact-ingestion/v18-continuum-artifact-ingestion.mddocs/design/continuum-categories.texdocs/method/backlog/README.mddocs/method/backlog/WORKLOADS.mddocs/method/backlog/bad-code/RELEASE_TRIAGE.mddocs/method/backlog/v18.0.0/PROTO_echo-shaped-edge-records.mddocs/method/backlog/v18.0.0/PROTO_echo-shaped-node-records.mddocs/method/backlog/v18.0.0/README.mddocs/method/retro/0145-push-pr-review-merge/push-pr-review-merge.mdindex.tssrc/domain/continuum/ContinuumArtifactAuthority.tssrc/domain/continuum/ContinuumArtifactDescriptor.tssrc/domain/continuum/ContinuumArtifactIngestionPolicy.tssrc/domain/continuum/ContinuumFamilyId.tssrc/domain/errors/ContinuumArtifactAuthorityError.tssrc/domain/errors/index.tssrc/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.tstest/fixtures/continuum/receipt-family-generated-artifact.jsontest/fixtures/continuum/receipt-family-wesley-realization-manifest.jsontest/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.tstest/unit/domain/errors/index.test.tstest/unit/domain/index.exports.test.tstest/unit/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.test.ts
Release Preflight
If you tag this commit as |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.ts (1)
1-542: 🛠️ Refactor suggestion | 🟠 Major | 🏗️ Heavy liftSplit this adapter to satisfy source size and cohesion policy.
This module is over the source LOC cap and currently combines multiple peer concerns (context boundary validation, shape parsing, Wesley leg inventory parsing, and descriptor field assembly) in a single file. Please split it into smaller modules before merge.
As per coding guidelines
Maximum file size: 500 LOC (source), 800 LOC (test), 300 LOC (scripts)andsrc/**/*.{ts,tsx}: One file per class, type, or object; split files that accumulate peer concepts.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.ts` around lines 1 - 542, The file exceeds the LOC/cohesion policy by bundling multiple concerns; split the adapter into focused modules: keep ContinuumArtifactJsonFileAdapter and its public methods in one file (ContinuumArtifactJsonFileAdapter with loadFile/loadString), move parsing entry-points and high-level dispatch (parseJson, parseDescriptorFields, parseWesleyRealizationManifest, parseContinuumFamilyFixture, descriptorFields) into a separate parser module, and extract Wesley-specific inventory logic (readSealedIntegrity, readGeneratedLegs, readGeneratedLegNames, readGeneratedLegFiles, validateGeneratedLegEnvelope, readGeneratedFiles) and the various JSON validation helpers (requireJsonObject, isJsonObject, rejectUnknownKeys, readRequiredString/readOptionalString/readStringArray/etc.) into their own validator/inventory modules; ensure exports/imports wire the modules back into ContinuumArtifactJsonFileAdapter and update references to symbols like ContinuumArtifactIngestionPolicy, ContinuumArtifactDescriptorFields, WESLEY_REALIZATION_MANIFEST_KIND, CONTINUUM_FIXTURE_KIND, and LOAD_CONTEXT_KEYS so tests and policy ingestion behavior remain unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@src/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.ts`:
- Around line 1-542: The file exceeds the LOC/cohesion policy by bundling
multiple concerns; split the adapter into focused modules: keep
ContinuumArtifactJsonFileAdapter and its public methods in one file
(ContinuumArtifactJsonFileAdapter with loadFile/loadString), move parsing
entry-points and high-level dispatch (parseJson, parseDescriptorFields,
parseWesleyRealizationManifest, parseContinuumFamilyFixture, descriptorFields)
into a separate parser module, and extract Wesley-specific inventory logic
(readSealedIntegrity, readGeneratedLegs, readGeneratedLegNames,
readGeneratedLegFiles, validateGeneratedLegEnvelope, readGeneratedFiles) and the
various JSON validation helpers (requireJsonObject, isJsonObject,
rejectUnknownKeys, readRequiredString/readOptionalString/readStringArray/etc.)
into their own validator/inventory modules; ensure exports/imports wire the
modules back into ContinuumArtifactJsonFileAdapter and update references to
symbols like ContinuumArtifactIngestionPolicy,
ContinuumArtifactDescriptorFields, WESLEY_REALIZATION_MANIFEST_KIND,
CONTINUUM_FIXTURE_KIND, and LOAD_CONTEXT_KEYS so tests and policy ingestion
behavior remain unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 7b8254e4-902d-4933-b78d-eef97c5f8fb8
📒 Files selected for processing (5)
docs/BEARING.mddocs/design/0149-v18-continuum-artifact-ingestion/v18-continuum-artifact-ingestion.mdsrc/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.tstest/fixtures/continuum/receipt-family-wesley-realization-manifest.jsontest/unit/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.test.ts
✅ Files skipped from review due to trivial changes (1)
- test/fixtures/continuum/receipt-family-wesley-realization-manifest.json
|
@coderabbitai Review feedback resolution summary:
Local verification before push: Observed full-suite results: |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain
🏁 Script executed: Length of output: 24419 Good progress on the first pass. Let me drill into Major 3 and Minor 5 to confirm full resolution. 🏁 Script executed: Length of output: 17130
Resolution verification
Major 1 — Shape/authority binding (fbd240f). Major 2 — Major 3 — Wesley inventory hardening (6e529d8).
The intentional pre-population allowance ( Minor 4 — Absolute path in fixture (fbd240f). Minor 5 — Verification prose (9422601 / 7728214). The refactoring of 6826 tests, 92.13% coverage, IRONCLAD M9 passed. If you found this review helpful, would you consider giving us a shout-out on X? Thank you for using CodeRabbit! |
Release Preflight
If you tag this commit as |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/infrastructure/adapters/continuumArtifactJsonTypes.ts (1)
4-45: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick winSplit peer exported types into separate files.
This file groups multiple peer type exports, which violates the repository’s source-structure rule. Please split these into dedicated files (and optionally re-export via a barrel).
As per coding guidelines,
src/**/*.{ts,tsx}: One file per class, type, or object; split files that accumulate peer concepts.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/infrastructure/adapters/continuumArtifactJsonTypes.ts` around lines 4 - 45, This file groups multiple peer-exported type definitions (JsonObject, ContinuumArtifactJsonLoadContext, DescriptorFieldSource, WesleyIntegrityFields, GeneratedLegInventory); split each top-level type into its own dedicated TypeScript file (e.g., JsonObject.ts, ContinuumArtifactJsonLoadContext.ts, DescriptorFieldSource.ts, WesleyIntegrityFields.ts, GeneratedLegInventory.ts) exporting the same type name, update any imports to point to the new files, and optionally add an index barrel to re-export them for compatibility; ensure each new file preserves the readonly signatures and exported type names exactly as in the original.
🧹 Nitpick comments (1)
test/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.ts (1)
35-87: ⚡ Quick winExtract authority literals into named constants
These repeated authority string literals are magic strings in touched TS code; centralizing them improves consistency and prevents typo drift.
Suggested diff
const RECEIPT_SCHEMA_PATH = 'schemas/continuum-receipt-family.graphql'; const CONTINUUM_FIXTURE_KIND = 'continuum.family.fixture'; const WESLEY_REALIZATION_MANIFEST_KIND = 'wesley.realization.manifest.v1'; +const AUTHORITY_GENERATED_FIXTURE = 'generated-fixture'; +const AUTHORITY_GENERATED_ARTIFACT = 'generated-artifact'; +const AUTHORITY_LOCAL_MIRROR = 'local-mirror'; +const AUTHORITY_HANDWRITTEN_MIRROR = 'handwritten-mirror'; @@ - authority: fields.authority ?? 'generated-fixture', + authority: fields.authority ?? AUTHORITY_GENERATED_FIXTURE, @@ - const descriptor = makeDescriptor({ authority: 'generated-fixture' }); + const descriptor = makeDescriptor({ authority: AUTHORITY_GENERATED_FIXTURE }); @@ - authority: 'generated-artifact', + authority: AUTHORITY_GENERATED_ARTIFACT, @@ - authority: 'generated-artifact', + authority: AUTHORITY_GENERATED_ARTIFACT, @@ - authority: 'generated-fixture', + authority: AUTHORITY_GENERATED_FIXTURE, @@ - authority: 'generated-fixture', + authority: AUTHORITY_GENERATED_FIXTURE, @@ - const descriptor = makeDescriptor({ authority: 'local-mirror' }); + const descriptor = makeDescriptor({ authority: AUTHORITY_LOCAL_MIRROR }); @@ - const descriptor = makeDescriptor({ authority: 'handwritten-mirror' }); + const descriptor = makeDescriptor({ authority: AUTHORITY_HANDWRITTEN_MIRROR });As per coding guidelines, "Avoid magic strings and numbers; use named constants instead".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.ts` around lines 35 - 87, Replace repeated authority string literals in the ContinuumArtifactIngestionPolicy tests with named constants: define e.g. GENERATED_FIXTURE_AUTHORITY = 'generated-fixture', GENERATED_ARTIFACT_AUTHORITY = 'generated-artifact', LOCAL_MIRROR_AUTHORITY = 'local-mirror', and HANDWRITTEN_MIRROR_AUTHORITY = 'handwritten-mirror' at the top of the test file (next to existing WESLEY_REALIZATION_MANIFEST_KIND/CONTINUUM_FIXTURE_KIND usage), then update all makeDescriptor(...) calls and assertions to use these constants instead of inline strings; if your codebase has a canonical place for these authority constants, import them instead of redefining.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@src/infrastructure/adapters/continuumArtifactJsonTypes.ts`:
- Around line 4-45: This file groups multiple peer-exported type definitions
(JsonObject, ContinuumArtifactJsonLoadContext, DescriptorFieldSource,
WesleyIntegrityFields, GeneratedLegInventory); split each top-level type into
its own dedicated TypeScript file (e.g., JsonObject.ts,
ContinuumArtifactJsonLoadContext.ts, DescriptorFieldSource.ts,
WesleyIntegrityFields.ts, GeneratedLegInventory.ts) exporting the same type
name, update any imports to point to the new files, and optionally add an index
barrel to re-export them for compatibility; ensure each new file preserves the
readonly signatures and exported type names exactly as in the original.
---
Nitpick comments:
In `@test/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.ts`:
- Around line 35-87: Replace repeated authority string literals in the
ContinuumArtifactIngestionPolicy tests with named constants: define e.g.
GENERATED_FIXTURE_AUTHORITY = 'generated-fixture', GENERATED_ARTIFACT_AUTHORITY
= 'generated-artifact', LOCAL_MIRROR_AUTHORITY = 'local-mirror', and
HANDWRITTEN_MIRROR_AUTHORITY = 'handwritten-mirror' at the top of the test file
(next to existing WESLEY_REALIZATION_MANIFEST_KIND/CONTINUUM_FIXTURE_KIND
usage), then update all makeDescriptor(...) calls and assertions to use these
constants instead of inline strings; if your codebase has a canonical place for
these authority constants, import them instead of redefining.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e6aec03b-c974-4aff-98f9-5fe1b2e11166
📒 Files selected for processing (11)
CHANGELOG.mddocs/BEARING.mddocs/design/0149-v18-continuum-artifact-ingestion/v18-continuum-artifact-ingestion.mdsrc/domain/continuum/ContinuumArtifactIngestionPolicy.tssrc/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.tssrc/infrastructure/adapters/continuumArtifactJsonParser.tssrc/infrastructure/adapters/continuumArtifactJsonTypes.tssrc/infrastructure/adapters/continuumArtifactJsonValidation.tssrc/infrastructure/adapters/continuumFamilyFixtureValidation.tssrc/infrastructure/adapters/continuumWesleyManifestInventory.tstest/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.ts
✅ Files skipped from review due to trivial changes (1)
- CHANGELOG.md
|
@coderabbitai Review follow-up pushed.
Local validation before push:
Pre-push hook also passed link check, static gates, and @coderabbitai review please |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 41053
Follow-up resolution verification
Finding 1 — Type split (4725ed4). Finding 2 — Named constants (b0b7bf9). The policy test now declares module-level constants for all four authority strings ( Finding 3 — Documentation (040008a). The CHANGELOG carries a second Unreleased entry covering both the per-type file split and named constants. BEARING task 5 is checked and the narrative explicitly enumerates "adapter-local JSON type carriers are split below the source-size and one-file-per-concept caps" and "policy-test authority fixtures are named constants" as closed requirements. The full suite at 6,826 tests / 92.13% line coverage with IRONCLAD M9 passing is consistent with no regressions from the structural refactor. 🐇 ✨ [approve] |
Release Preflight
If you tag this commit as |
Summary
authorityfields and local/handwritten mirror authority.Supersedes #90; this PR replaces the prefixed branch with
v18-continuum-opening.Validation
npm run lintnpm run typecheck:srcnpm run typecheck:testnpm run typecheck:surfacenpm run typecheck:policynpm run lint:sludgenpm run lint:quarantine-graduatenpx --yes markdownlint-cli docs/BEARING.md docs/design/0146-v18-continuum-compatibility-charter/v18-continuum-compatibility-charter.md docs/design/0149-v18-continuum-artifact-ingestion/v18-continuum-artifact-ingestion.mdnpx vitest run test/unit/domain/continuum/ContinuumArtifactIngestionPolicy.test.ts test/unit/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.test.ts test/unit/domain/index.exports.test.ts test/unit/domain/errors/index.test.tsnpm run test:local(447 files, 6821 tests)npm run test:coverage:ci(92.14% lines; threshold 91.90%)Summary by CodeRabbit
New Features
Documentation
Tests