docs: adopt reader-task documentation standard as a hub policy#38
Conversation
Add a Continuum-specific extension of the Documentation Product Standard and apply it to the first capability (contract-families), per the standard's adoption sequence. - docs/DOCUMENTATION_POLICY.md: local §17 extension. Names Continuum a coordination hub, adds the hub anti-pattern (own the boundary, link outward), a capability taxonomy, hub-native page types, the append-only decision-record rule for design packets, and the generate-don't-curate rule for the cross-repo registry/ownership/release tables. - docs/catalog.yaml: machine-readable catalog with cross-repo fields for agent routing by intent/capability/audience/type. - docs/index.md: capability landing page / router grouped by reader goal. - docs/how-to/publish-runtime-evidence-for-a-contract-family.md: first conformance guide for the contract-families capability. - docs/OVERVIEW.md: fix staleness signal (claimed 0001-0017; route later coordination material through the index instead of fabricating synthesis). - scripts/docs-lint.mjs: dependency-free deterministic gate (internal links, catalog integrity, registry/schema coverage). Currently green.
- CHANGELOG: record the documentation-standard adoption under Unreleased. - .githooks/pre-commit: run scripts/docs-lint.mjs instead of the placeholder no-op, so the documentation gate blocks bad commits locally. - .github/workflows/ci.yml: add CI (none existed) running the docs gate and the apps/warp node --test suite on push to main and on pull requests.
|
Warning Review limit reached
More reviews will be available in 16 minutes and 52 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (14)
WalkthroughAdds documentation policy, catalog, index, and release pages; wires docs linting into hooks and CI; updates warp init to resolve crate-based Wesley binaries; and removes the Wesley/TTD implementation surface. ChangesDocumentation, release, warp, and Wesley changes
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
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 |
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/ci.yml (1)
1-30: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick winMissing least-privilege
permissionsfor GITHUB_TOKEN.Line 1 defines a workflow that currently inherits broad default token scopes. Lock this down explicitly (e.g.,
contents: read) unless a job needs more.Suggested hardening
name: CI +permissions: + contents: read🤖 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 @.github/workflows/ci.yml around lines 1 - 30, The CI workflow is using the default broad GITHUB_TOKEN scopes, so add an explicit least-privilege permissions block at the workflow level in the CI workflow and keep it minimal, such as read-only repository contents. Update the top-level workflow configuration that defines the docs and warp jobs so both jobs inherit the restricted token scope unless a specific step later needs more access.Source: Linters/SAST tools
🤖 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 @.github/workflows/ci.yml:
- Around line 3-7: Add workflow concurrency control to the CI workflow so
redundant runs are cancelled when new commits arrive. Update the top-level
GitHub Actions workflow configuration in the ci workflow to define a concurrency
group and set cancel-in-progress to true, ensuring newer pushes or pull requests
supersede stale runs.
- Around line 13-14: The workflow currently uses mutable GitHub Actions tags for
actions/checkout and actions/setup-node, so update those steps to pinned full
commit SHAs instead of v4. Also modify each actions/checkout invocation to set
persist-credentials to false to disable credential persistence; use the existing
checkout and setup-node step entries in the CI workflow to make these changes.
In `@scripts/docs-lint.mjs`:
- Around line 153-167: The docs lint gate currently skips the registry/schema
coverage checks when either contract-family-registry.md or the schemas directory
is missing, which lets the validation pass silently. Update the logic in
docs-lint.mjs around the registryPath/SCHEMAS existence check so the absence of
either required surface triggers err(...) instead of bypassing enforcement,
while keeping the existing schema-to-registry and registry-to-schema checks in
the same block. Use the existing symbols registryPath, SCHEMAS, and err to make
the failure deterministic and clearly reported.
- Around line 156-159: The schema reference check in the docs lint logic is
using substring matching via registry.includes(f), which can incorrectly accept
incidental text matches. Update the validation in docs-lint.mjs around the
schemaFiles loop to extract explicit schemas/<name>.graphql references from
contract-family-registry.md, compare those parsed references against schemaFiles
as sets, and keep the existing error reporting path in err(...) when an authored
schema is missing from the registry.
---
Outside diff comments:
In @.github/workflows/ci.yml:
- Around line 1-30: The CI workflow is using the default broad GITHUB_TOKEN
scopes, so add an explicit least-privilege permissions block at the workflow
level in the CI workflow and keep it minimal, such as read-only repository
contents. Update the top-level workflow configuration that defines the docs and
warp jobs so both jobs inherit the restricted token scope unless a specific step
later needs more access.
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 2e96ae26-271a-4d28-a15e-6439ae1125a9
📒 Files selected for processing (10)
.githooks/pre-commit.github/workflows/ci.ymlCHANGELOG.mdREADME.mddocs/DOCUMENTATION_POLICY.mddocs/OVERVIEW.mddocs/catalog.yamldocs/how-to/publish-runtime-evidence-for-a-contract-family.mddocs/index.mdscripts/docs-lint.mjs
📜 Review details
🧰 Additional context used
📓 Path-based instructions (1)
**
⚙️ CodeRabbit configuration file
**: # AGENTS.mdRole
Continuum is the coordination spine for the active stack. It does not own a
runtime implementation, a substrate, or a parallel ontology. It owns shared
truth across Echo,git-warp,warp-ttd, and Wesley.Git Safety
- Never amend commits.
- Never rebase.
- Never force git operations.
- Stage only the files written in the current turn.
- Commit each completed slice in the same turn.
Process
- Read METHOD.md before changing structure.
- Keep active work in
docs/design/.- Keep concrete work in
docs/method/backlog/.- Keep retros in
docs/method/retro/.- Update docs/BEARING.md and docs/VISION.md
only at cycle boundaries.Doctrine
- Continuum owns coordination truth, not substrate truth.
- Shared nouns need one authored home and explicit publication boundaries.
- Cross-repo witness and compatibility truth beats hand-wavy alignment claims.
- No shadow schemas, no shadow vocabularies, no shadow ownership.
Files:
docs/how-to/publish-runtime-evidence-for-a-contract-family.mdREADME.mdCHANGELOG.mddocs/OVERVIEW.mddocs/catalog.yamlscripts/docs-lint.mjsdocs/index.mddocs/DOCUMENTATION_POLICY.md
🪛 zizmor (1.26.1)
.github/workflows/ci.yml
[warning] 13-13: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
[warning] 24-24: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
[warning] 1-30: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block
(excessive-permissions)
[warning] 9-18: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block
(excessive-permissions)
[error] 13-13: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[error] 14-14: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[error] 24-24: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[error] 25-25: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[warning] 3-6: insufficient job-level concurrency limits (concurrency-limits): workflow is missing concurrency setting
(concurrency-limits)
🔇 Additional comments (8)
docs/DOCUMENTATION_POLICY.md (1)
1-174: LGTM!docs/catalog.yaml (1)
1-200: LGTM!docs/index.md (1)
1-45: LGTM!docs/how-to/publish-runtime-evidence-for-a-contract-family.md (1)
1-79: LGTM!docs/OVERVIEW.md (1)
3-17: LGTM!README.md (1)
62-63: LGTM!CHANGELOG.md (1)
5-16: LGTM!.githooks/pre-commit (1)
4-5: LGTM!
🐰 Code review —
|
| # | Severity | File | Loc | Type | Finding |
|---|---|---|---|---|---|
| M1 | Major | docs/OVERVIEW.md |
L1-2 | Accuracy | Claims synthesis "covering design packets 0001 through 0022", but 0019, 0020, 0021 are not synthesized anywhere in the body. This reintroduces the exact staleness/accuracy defect the change purports to fix. |
| M2 | Major | scripts/docs-lint.mjs / DOCUMENTATION_POLICY.md |
lint L4,L64,L81 / policy §8 | Consistency | Policy §8 lists "internal relative links and anchors … resolve" as a deterministic gate, but the linter treats anchors as advisory warnings (non-blocking). Diverges from base §12.2 too. |
| M3 | Major | DOCUMENTATION_POLICY.md / docs/catalog.yaml |
policy §6,§7 | Overclaim | Policy asserts catalog records "carry" authored_home, compiler_owner, runtime_owner, consumers, compatibility_status. None of these fields exist in catalog.yaml. Doc describes an unrealized capability. |
| M4 | Major | scripts/docs-lint.mjs |
L46-58 | Soundness | Minimal YAML parser silently ignores any unrecognized line (wrong indent, nested/multiline value). A malformed catalog entry can pass the gate undetected → false confidence. |
| m1 | Minor | docs/index.md |
L13,L20 | Style (base §9.4) | Bare filenames as link labels: [`catalog.yaml`] and [README_FULL]. Violates the standard being adopted. |
| m2 | Minor | scripts/docs-lint.mjs |
L40 | Dead logic | `/^(https?: |
| m3 | Minor | scripts/docs-lint.mjs |
L101-105 | Weak oracle | Coverage uses registry.includes(filename); a mere mention anywhere (prose, "must not" example) satisfies it. Error text "no row references" overstates the check. |
| m4 | Minor | policy / catalog.yaml |
§7 / records | Naming | Policy routes by audience (singular); catalog key is audiences (plural). audiences/intents vocab is uncontrolled and unvalidated despite being routing axes. |
| m5 | Minor | .github/workflows/ci.yml |
L16,L27 | Parity | Pins Node 22; repo developed on Node 26 and warp tests verified only on 26. Dev/CI drift; consider a matrix or alignment. |
| m6 | Minor | DOCUMENTATION_POLICY.md |
§6 | Doc | docs/design/0014-.../README.md ellipsis pseudo-paths in inline code are neither links nor copyable paths. |
| m7 | Minor | scripts/docs-lint.mjs |
L33 | False-positive risk | Link regex scans fenced code blocks; [x](y) inside ``` fences would be checked. |
| m8 | Minor | .github/workflows/ci.yml |
whole | Hardening | No permissions: (least privilege) or concurrency: group. |
| n1 | Nit | README.md |
L94 | MD009 | Pre-existing trailing whitespace adjacent to the edit. |
| n2 | Nit | .github/workflows/ci.yml |
L29 | Coverage | apps/warp/test/*.test.mjs glob misses any nested test dirs. |
| n3 | Nit | docs/how-to/...md |
Related | Policy §4 | conformance-guide MUST "link to … the registry row"; it links the registry page, not a row anchor. |
| n4 | Nit | scripts/docs-lint.mjs |
L1 | License | New source file lacks an Apache-2.0 header if that is repo convention. |
Breakdown: 0 critical · 4 major · 8 minor · 4 nits.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 51c0d22fde
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| This document is the brief synthesis of Continuum's **theory and ontology**, | ||
| covering design packets `0001` through `0022`. |
There was a problem hiding this comment.
Stop claiming missing packet coverage
When a reader uses this overview as the synthesis for packets 0001 through 0022, they will not get the decisions from 0019, 0020, or 0021: the body references 0018 and then jumps to 0022, omitting the Echo invariant audit, shared admission/policy publication, and family-version doctrine. Since this change expands the advertised scope to 0022, the overview now gives false confidence that those pre-0023 decisions are covered.
Useful? React with 👍 / 👎.
| if (!destHeadings.has(anchor)) { | ||
| warn(`${relative(ROOT, file)}: anchor #${anchor} not found in ${target}`); |
There was a problem hiding this comment.
Fail the gate for broken documented anchors
When a docs link targets a renamed or removed heading such as some-page.md#old-heading, this path only records a warning, but §8 of the new policy says internal relative links and anchors are part of the deterministic gate and CI/pre-commit only fail on errors. That means broken anchors still leave docs-lint green, so the enforcement does not match the policy it is supposed to implement.
Useful? React with 👍 / 👎.
| The repo maintains `docs/catalog.yaml` per base §10, extended with the cross-repo | ||
| fields in §6. Rules: |
There was a problem hiding this comment.
Remove the missing catalog-field promise
When agents follow the policy to route via docs/catalog.yaml, this sentence says the catalog is extended with the §6 cross-repo fields, but the new catalog records only contain fields like audiences, intents, and related, and the linter never requires authored_home, compiler_owner, runtime_owner, consumers, or compatibility_status. Either those fields need to be added and validated or the policy should be narrowed, otherwise the documented machine-readable contract points to data that does not exist.
Useful? React with 👍 / 👎.
| if (!registry.includes(f)) { | ||
| err(`contract-family-registry.md: no row references authored family schemas/${f}`); |
There was a problem hiding this comment.
Verify registry rows instead of filename mentions
When a schema filename remains anywhere outside the Family Matrix row, such as explanatory prose or a stale note, registry.includes(f) still reports coverage even if the actual registry row was removed. Since the policy promises every authored family has a registry row and every row's Authored home resolves, the gate should parse the table rows or authored-home cells instead of accepting any substring in the file.
Useful? React with 👍 / 👎.
| if (p.path && !existsSync(resolve(DOCS, p.path))) { | ||
| err(`catalog.yaml: ${label} path does not resolve -> ${p.path}`); |
There was a problem hiding this comment.
Require catalog targets to be files
When a catalog entry accidentally points at an existing directory such as design/ instead of a page, this check still passes even though the new policy says path must resolve to a file. That leaves agents with a green catalog entry they cannot open as a concrete documentation page, so the gate should use statSync(...).isFile() after resolving the path.
Useful? React with 👍 / 👎.
Majors: - OVERVIEW: correct synthesis scope to 0001-0018 + 0022; 0019-0021/0023+ are explicitly not synthesized (M1). - Policy/lint: anchor resolution is documented as advisory (approximate slug), links stay blocking; policy §8 now matches the implementation (M2). - Policy/catalog: cross-repo fields (authored_home, compiler_owner, runtime_owner, consumers, compatibility_status) are now realized on the four family-reference catalog entries; policy scopes the claim to those entries (M3). - docs-lint: catalog parser no longer silently ignores unrecognized lines; an unparsed line is now an error (M4, verified by negative test). Minors/nits: - index.md: descriptive link labels instead of bare filenames (m1). - docs-lint: simplified external-scheme skip (removed dead # branch, m2); registry coverage now requires a `schemas/<file>` path reference with an accurate message (m3); validates a controlled `audiences` vocab (m4); strips fenced/inline code before link and heading scanning (m7). - ci.yml: add least-privilege permissions and a concurrency group (m8); matrix warp tests over Node 22/24 (m5); recursive test glob (n2). - README: drop trailing whitespace adjacent to the edit (n1). - Policy §4/§6: "registry entry" wording (n3); real packet paths, no ellipsis (m6). n4 (license header) dismissed: repo has no per-file header convention.
Reverse the earlier append-only-packet stance in DOCUMENTATION_POLICY.md: - §4: replace the design-packet page type with a decision-record (ADR-lite) type; design-packet is now a frozen legacy archive, not for new docs. - §5: rewrite to "the documentation system is reader-task pages, not the packet log" — durable truth lives in reader-task pages, new decisions use ADR-lite or a CHANGELOG line, docs/design/ is frozen, OVERVIEW must stop synthesizing packets. Add a §5.1 per-capability coverage matrix as the anti-sprawl governor. - §9: reframe adoption as consolidation from the packet log, not new authoring; record the release-targets reference lift as the first step. Notes that METHOD.md's design-cycle mandate needs a follow-up edit.
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)
docs/index.md (1)
42-44: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick winAlign packet lifecycle wording with the new reader-task policy.
Line 42-Line 44 still states packets are “append-only decision records,” but this PR’s own framing shifts packets to frozen legacy history and routes new decisions to ADR-lite/CHANGELOG. Keep one authoritative instruction.
Suggested patch
-- The full record lives in the [design packets](design/README.md). Packets are - append-only decision records; a superseded packet links forward rather than - being deleted. +- The full historical record lives in the [design packets](design/README.md). + Packets are legacy decision history; route new decisions through ADR-lite + records and/or `CHANGELOG.md` per current policy.🤖 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 `@docs/index.md` around lines 42 - 44, Update the packet lifecycle wording in the docs index so it matches the new reader-task policy: remove the “append-only decision records” description and replace it with language that treats packets as frozen legacy history, with new decisions recorded in ADR-lite/CHANGELOG instead. Keep the references in the docs consistent with the symbols and terminology used in the surrounding design packet documentation, especially the design packets README and any packet lifecycle wording in this section.
♻️ Duplicate comments (1)
.github/workflows/ci.yml (1)
35-36: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick winPin the action refs and disable checkout credential persistence.
actions/checkout@v4andactions/setup-node@v4are still mutable tags, and the checkout step still inherits the default persisted token. Pin both actions to full commit SHAs and addpersist-credentials: falseon the checkout step.🤖 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 @.github/workflows/ci.yml around lines 35 - 36, The CI workflow still uses mutable action tags and the checkout step keeps persisted credentials. Update the checkout and setup-node steps in the workflow to use pinned full commit SHAs instead of v4 tags, and add persist-credentials: false to the actions/checkout step so the default token is not retained.Source: Linters/SAST tools
🤖 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 `@docs/index.md`:
- Around line 42-44: Update the packet lifecycle wording in the docs index so it
matches the new reader-task policy: remove the “append-only decision records”
description and replace it with language that treats packets as frozen legacy
history, with new decisions recorded in ADR-lite/CHANGELOG instead. Keep the
references in the docs consistent with the symbols and terminology used in the
surrounding design packet documentation, especially the design packets README
and any packet lifecycle wording in this section.
---
Duplicate comments:
In @.github/workflows/ci.yml:
- Around line 35-36: The CI workflow still uses mutable action tags and the
checkout step keeps persisted credentials. Update the checkout and setup-node
steps in the workflow to use pinned full commit SHAs instead of v4 tags, and add
persist-credentials: false to the actions/checkout step so the default token is
not retained.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: a91cb391-cc41-4022-9907-c64e350ab558
📒 Files selected for processing (8)
.github/workflows/ci.ymlCHANGELOG.mdREADME.mddocs/DOCUMENTATION_POLICY.mddocs/OVERVIEW.mddocs/catalog.yamldocs/index.mdscripts/docs-lint.mjs
📜 Review details
🧰 Additional context used
📓 Path-based instructions (1)
**
⚙️ CodeRabbit configuration file
**: # AGENTS.mdRole
Continuum is the coordination spine for the active stack. It does not own a
runtime implementation, a substrate, or a parallel ontology. It owns shared
truth across Echo,git-warp,warp-ttd, and Wesley.Git Safety
- Never amend commits.
- Never rebase.
- Never force git operations.
- Stage only the files written in the current turn.
- Commit each completed slice in the same turn.
Process
- Read METHOD.md before changing structure.
- Keep active work in
docs/design/.- Keep concrete work in
docs/method/backlog/.- Keep retros in
docs/method/retro/.- Update docs/BEARING.md and docs/VISION.md
only at cycle boundaries.Doctrine
- Continuum owns coordination truth, not substrate truth.
- Shared nouns need one authored home and explicit publication boundaries.
- Cross-repo witness and compatibility truth beats hand-wavy alignment claims.
- No shadow schemas, no shadow vocabularies, no shadow ownership.
Files:
CHANGELOG.mdREADME.mddocs/index.mddocs/catalog.yamldocs/OVERVIEW.mddocs/DOCUMENTATION_POLICY.mdscripts/docs-lint.mjs
🪛 LanguageTool
docs/DOCUMENTATION_POLICY.md
[style] ~131-~131: Consider using “who” when you are referring to a person instead of an object.
Context: ...d, reasoned answer — it is the governor that stops new sprawl. Add a page type only ...
(THAT_WHO)
🪛 zizmor (1.26.1)
.github/workflows/ci.yml
[warning] 35-35: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
[error] 35-35: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[error] 36-36: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
🔇 Additional comments (8)
scripts/docs-lint.mjs (1)
173-174: Schema coverage check still relies on substring matching.This appears to be the same unresolved concern already raised earlier:
registry.includes(\schemas/${f}`)` can still pass on incidental text instead of explicit registry references.docs/DOCUMENTATION_POLICY.md (1)
84-85: LGTM!Also applies to: 95-97, 99-127, 130-142, 143-143, 166-170, 180-187, 188-206, 215-232
docs/catalog.yaml (1)
9-12: LGTM!Also applies to: 110-114, 124-128, 138-142, 152-156
.github/workflows/ci.yml (1)
8-13: LGTM!docs/index.md (1)
13-38: LGTM!docs/OVERVIEW.md (1)
4-6: LGTM!README.md (1)
64-64: LGTM!CHANGELOG.md (1)
5-21: LGTM!
…t in The policy referenced an external, unpublished base standard via dangling "base §N" pointers. Fully adapt it instead: - docs/DOCUMENTATION_POLICY.md: rewrite as the self-contained Continuum Documentation Standard (18 sections: purpose, hub framing + invariant, principles, architecture, capability taxonomy, page types, the reader-task vs packet-log rule, coverage matrix, generate-don't-curate, catalog, evidence discipline, examples, style, gates, change-impact, anti-patterns, done, adoption). No external references remain. - AGENTS.md: point at the standard; mark docs/design/ frozen; route new decisions to ADR-lite/CHANGELOG instead of packets. - CONTRIBUTING.md: new community file pointing at the standard, git laws, conventional commits, the docs gate, and the evidence discipline. - catalog/index/docs-lint: retitle to "Documentation Standard", add the decision-record page type to the controlled vocabulary and the linter.
Add docs/method/DOCUMENTATION_AUDIT.md: a per-file claim audit verified against source code (schemas, the qw CLI, the Wesley module, lint/CI/hook wiring) with path#line@sha citations, accuracy scores, keep/merge/trash decisions, and a signpost + docs/topics/ consolidation map. Apply the unambiguous, source-backed corrections the audit surfaced: - GETTING_STARTED: drop the qw build/qw doctor step (no such commands; apps/warp/VISION already lists them as unimplemented). - DOCUMENTATION_POLICY 18: remove the false "Done: docs/reference/ release-targets.md / packet 0038" claim (none exist). - AGENTS/CONTRIBUTING: name the reader-task dirs that actually exist instead of docs/reference and docs/explanation. - index.md: packets are a frozen historical decision log, not append-only. - METHOD/method/process: replace the design-cycle mandate with the ADR-lite/CHANGELOG rule (policy 7 supersession). - design/README: rewrite as a frozen-archive index; relabel all 41 design files status: proposed -> archived. - wesley/README: the unit tests require @wesley/core; they are not hermetic. Structural consolidation (creating docs/topics/, lifting packets, splitting README_FULL, deleting GoodIdeas) is left for a confirmed pass.
GoodIdeas.md was a salvage list from the old Continuum repo. Its Continuum-relevant ideas are already realized in current docs (invariant index, contract-family registry, glossary, doc policy, schema-first families). The remaining still-live ideas are Echo/git-warp runtime internals; captured them as 'cool ideas' issues #39-42 before deleting so nothing is lost (history retains the file). Also aligned the audit's consolidation map to the policy's named reader-task directories (docs/reference/, docs/how-to/, docs/explanation/, docs/invariants/) instead of an invented docs/topics/ tree.
…ADME_FULL Consolidation pass moving durable truth out of the frozen design log into the policy's named reader-task shelves (docs/reference/, docs/explanation/). - docs/reference/ownership-map.md: lifted from packet 0014 and refreshed to current schema truth (adds the settlement and runtime-boundary families the original packet predated). index.md + catalog.yaml repointed; packet demoted to an archived design-packet. - docs/reference/convergence.md: lifted from packets 0035/0036 (release bar, repository ownership, the six gates with owners/pass rules, GP0-GP6 ordering, compatibility set, closure rule). Live release state is linked to GitHub Project #15 and the gate issues, not copied. 0037/0030 linked as design history; convergence packets archived in catalog. - docs/explanation/protocol-profiles.md: README_FULL's capability tiers (T0-T6) and continuum.*.v1 profiles are not authored in schemas/code, so they are moved here under status: proposed with an explicit no-source caveat. README_FULL now points here and its 'warp doctor' reference is corrected to the qw CLI. docs-lint passes (links, catalog integrity, registry coverage).
…VIEW Continue the consolidation into the policy's reader-task shelves. - docs/reference/glossary.md: canonical shared-noun glossary, source-backed against the four authored families, with cross-repo term usage, banned collapses, and stable-wire-name notes. APP_GLOSSARY.md now points at it and keeps only its per-app (jedit) mapping role. - docs/reference/qw-cli.md: exact qw command surface (init, install, warpspace lock/verify/sync/doctor/locate) from apps/warp/src/cli.mjs, including the not-yet-implemented qw build/doctor/update note. Linked from index.md; GETTING_STARTED.md stays the warp-cli how-to. - docs/OVERVIEW.md: removed the 'synthesis of packets 0001-0018' framing (policy 18) and relabelled per-section 'Detailed packets' as 'Design history'. Kept in place as the ontology explanation hub to avoid breaking many inbound links. Registered the new pages in docs/catalog.yaml; docs-lint passes.
… gate Tests assert software behavior exclusively: return values, state, and observable API behavior. They must not assert on stdout/help text, Markdown, generated output, or repo artifacts as strings — those are fragile and cause friction when adjusting workflows. Doc/artifact checks stay in the scripts/docs-lint.mjs gate, not the behavior test suite. Recorded in CONTRIBUTING.md (Testing principle) and AGENTS.md (Testing).
Per the testing principle (behavior, not incidental stdout), the three 'help works' bats cases asserted exact help-text and flag-name strings. Reduce them to assert --help exits zero (renamed 'help succeeds'); the flag wiring is behavior, the help prose is not. Behavioral tests that assert generated bundles/reports are unchanged. Also refine the principle wording in CONTRIBUTING.md/AGENTS.md: asserting that the software produced an artifact (code, schema, lockfile, structured report) is fine and expected; the prohibition is incidental output/prose strings. bats parse/run verified (cases skip here only for lack of a sibling Wesley host CLI); warp test suite unaffected.
Sweep for incidental-string assertions per the testing principle. The 'warpspace help and usage errors stay user-facing' test asserted help-text content and echoed 'Usage:' strings; remove those and keep the behavioral checks (exit codes, no stack-trace leak, which validation fired). Left intact as legitimate behavior (producing the artifact is the behavior): generated-code/schema-symbol assertions in wesley compile-targets, observer-plan, and runtime-boundary-invariants tests, and the generated toml/lock assertions in warp-init. Warp suite: 28 pass, 0 fail.
Follow the per-case guidance from review: - warp-init: the generated README assertions matched fixed prose; assert the README.md and .warpspace/README.md are absent before init and present after (file existence is the behavior). - warp-warpspace: remove the stack-trace-absence doesNotMatch guards. Keep exit-code asserts, the structured --json error.code check (the real 'type of error' assertion), and the behavioral doesNotMatch (-q not consumed as a path; failed install does not print success). - wesley bats: drop the redundant assert_output "Continuum ... failed" prose; assert_failure already asserts the non-zero return and jq asserts the failed report row. Kept as legitimate (artifacts/behavior): bats assert_file_exist + jq over generated bundles/reports, and the profile.proves data-field check. warp suite 28 pass / 0 fail; bats parse and run (skip without sibling Wesley).
- docs-lint: validate catalog status against a controlled set and require the policy-9 cross-repo fields on family-reference entries. Negative-tested both rules (a bad status and a missing field are caught); current catalog passes. - docs: correct the conformance how-to's stale 'base standard 11.2' reference to the self-contained documentation standard 11. Closes #46.
…dard The 18 adoption sequence still described the design-log freeze, the ownership/convergence lifts, and the OVERVIEW de-scaffolding as not-yet-done, but they have all landed this cycle. Update the steps to reflect reality so the standard does not understate its own progress.
The real Wesley is a Rust Cargo workspace (crates/wesley-cli native CLI), but continuum/wesley/ and the demo manifest target a removed JS-era layout (@wesley/core, packages/wesley-host-node/bin/wesley.mjs). This supersedes the audit's earlier 'vendor @wesley/core in CI' item: there is no JS @wesley/core to vendor and the receipt/settlement fixture-witnessed evidence is not runnable against current Wesley. Tracked in #47; needs an architecture decision before the dependent docs/manifests are touched.
…t dead duplication Per Rust Wesley's own docs (docs/features/ttd-protocol-compiler.md), the TTD protocol compiler was extracted out of generic Wesley INTO continuum/wesley/ttd/ — that tree is its authoritative home, and Rust Wesley has no TTD impl or zod emitter. The echo/warp-ttd targets and receipt/settlement witness logic are Continuum-specific too. The drift is that this JS module lost its base platform when Wesley went Rust and dropped the Node host; the fix is re-platforming, not deletion. Corrected the audit note and issue #47 accordingly.
…Node deleted) I had been grepping and inferring. Reading ~/git/wesley directly: - Wesley ships on crates.io: 'cargo install wesley-cli' (bin 'wesley'). My earlier 'not on crates.io' claim (citing Continuum's stale packet 0026) was wrong. - The legacy Node surface (packages/wesley-core, wesley-cli, wesley-host-node) is deleted per the retirement ledger; surviving bun/deno/browser hosts carry no JS core, so continuum/wesley cannot run on them. - zod and domain-target dispatch were deleted and reassigned to external target modules (Continuum's job; Wesley is domain-empty). - A Rust module-capability-registry already exists (crates/wesley-core/ src/domain/capability.rs) as the extension landing spot. Updated the audit #47 note and issue #47 accordingly: continuum/wesley is the reference to port FROM into a Rust target, with qw invoking the crates.io wesley binary — not a sibling Node checkout.
continuum/wesley/ was a Node-hosted Wesley extension built on the deleted @wesley/core / wesley-host-node packages. The real Wesley is a Rust crate (installed via 'cargo install wesley-cli', v0.1.0). Nothing in the repo imported it (verified across apps/, scripts/, docs/, CI). - Removed all 64 tracked files plus the empty leftover wesley/ dirs. - Registry: downgraded receipt and settlement families from fixture-witnessed to authored, since the witness suite that backed that claim lived in continuum/wesley/test and is gone. Open cut now points at re-establishing the profile on the Rust wesley-cli target. - Capabilities to re-platform (TTD compiler, zod/registry codegen, echo / warp-ttd targets, witness) tracked on issue #47. Warp suite 28 pass / 0 fail; docs gate 0/0.
qw init can now resolve the crates.io-installed wesley binary instead of a sibling Node .mjs. New toolchain.wesley.install.source 'crate': - resolves the binary by name from PATH (cargo install wesley-cli), errors with cargo guidance if absent, invokes it natively (wesley emit ...), and records a resolution receipt under .warpspace (no staging). - reports native-binary runner so no Node runtime is required. Demo manifest flipped to it (wesley-cli 0.1.0, native-rust), dropping the dead @wesley/host-node entrypoint. Demo projections trimmed to typescript since the zod/echo-ir/warp-ttd compilers lived in the deleted continuum/wesley module (deferred to #47). Docs updated (demo README, apps/warp README/VISION, GETTING_STARTED) to describe cargo install wesley-cli. Test-first: two new warp-init tests (resolve-and-invoke; not-installed error). Warp suite 30 pass / 0 fail; docs gate 0/0.
There was a problem hiding this comment.
Actionable comments posted: 11
🤖 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 `@APP_GLOSSARY.md`:
- Around line 9-11: The APP_GLOSSARY.md note is creating a second durable
vocabulary authority alongside docs/reference/glossary.md. Move the app-specific
noun mappings into an appropriate reader-task page under docs/, and make
APP_GLOSSARY.md only a redirect or remove it entirely so the glossary ownership
stays with the shared glossary and there is no shadow vocabulary.
In `@apps/warp/src/init.mjs`:
- Around line 723-739: The absolute-path branch in defaultResolveBinary() is
only checking that the path exists, so non-executable files can still be treated
as valid binaries. Update the path.isAbsolute(binName) case to validate
executability the same way the PATH lookup does by checking X_OK before
returning the path, and only return the absolute path when it is both present
and executable.
- Around line 530-572: In the source === 'crate' branch of init.mjs, the install
receipt currently records wesleySpec.version as if it were the version of the
binary found on PATH. Update the Wesley install flow to inspect the resolved
binary from resolveBinary(binName) and capture its actual version before writing
the receipt. Then use that observed version consistently in the receipt object
and returned install metadata instead of trusting the spec’s version fallback.
In `@apps/warp/test/warp-warpspace.test.mjs`:
- Around line 602-615: Re-add assertions in warp-warpspace.test.mjs to verify
usage-error stderr does not contain stack-trace output, since the current checks
in the help/usage block only validate exit codes and empty stderr. Update the
tests around runCli for the relevant command paths (including warpspace lock and
other usage errors) to explicitly assert that stderr does not include node:,
ENOENT, or stack trace markers, using the existing runCli helper and the
surrounding help/usage assertions as the anchor.
In `@CHANGELOG.md`:
- Around line 78-87: The quickstart documentation still references retired qw
commands, so update GETTING_STARTED.md to remove or replace the stale qw
build/qw doctor/qw update step with the current workflow. Check the affected
quickstart section and align it with the audited source of truth, keeping the
guidance consistent with the actual commands users should run.
In `@docs/DOCUMENTATION_POLICY.md`:
- Around line 219-223: The policy text currently references `intents` in the
routing guidance without defining a controlled vocabulary, so update
DOCUMENTATION_POLICY to either explicitly declare the allowed `intents` set or
remove `intents` from the guidance entirely. Use the surrounding policy section
that already defines `audiences` and `related`, and make the change in the same
documentation area so `docs/catalog.yaml` entries have a clear source of truth.
In `@docs/method/DOCUMENTATION_AUDIT.md`:
- Around line 290-353: Fix the markdownlint spacing violations in the audit
section by inserting blank lines around every heading and table so the
`Signposts`, `Reader-task shelves`, `Keep as archive`, `Trash`, and subsequent
section headings comply with `DOCUMENTATION_AUDIT.md` formatting. Also break up
the long `Still open` architecture-drift block into a separate tracked note or
`docs/method/backlog/` entry, and replace the inline novella here with a short
pointer; use the existing `Still open`/`Architecture drift` content and the
`continuum/wesley/` / `wesley-cli` symbols to relocate it cleanly.
In `@docs/method/release-runbook.md`:
- Around line 1924-1946: The “Adoption checklist for existing repos” list is too
repetitive because many items start with “Add.” Update the checklist language in
the release-runbook section by varying the verbs across the numbered steps while
keeping the meaning unchanged. Use distinctive action verbs for the relevant
entries (for example, around the `.continuum/release.yml`, `RELEASE.md`,
validation, workflow, verification, and retrospective items) so the list reads
more naturally and avoids monotony.
In `@docs/reference/qw-cli.md`:
- Around line 1-4: The document front matter for the qw CLI reference is missing
required Continuum Documentation Standard metadata. Update the front matter in
the qw CLI reference page to include the missing audiences and intents keys so
the docs catalog and gate can classify it correctly, keeping the existing title
and status fields in the same front-matter block.
- Around line 87-89: The “Commands that do not exist yet” note in qw-cli.md
should stay aligned with the current implementation of qw build, top-level qw
doctor, and qw update, and it should point readers to an explicit tracking
source. Update this section so it continues to clearly distinguish the
implemented qw warpspace doctor command from the unimplemented top-level doctor,
and add a reference to the relevant VISION.md section or a tracking issue so the
status can be maintained as commands evolve.
In `@scripts/docs-lint.mjs`:
- Around line 172-177: The docs/catalog.yaml path validation in docs-lint.mjs
only checks that resolve(DOCS, p.path) exists and is a file, so it can still
allow paths that escape the docs directory. Update the validation around
catalogTarget to verify the resolved path stays within DOCS before calling
statSync, using the existing err handling in the catalog.yaml path check. Keep
the containment guard in the same flow as the current existsSync/statSync checks
so entries like ../README_FULL.md are rejected by the docs/catalog.yaml
reader-task boundary enforcement.
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 0383e8bd-ec4b-4157-875f-db3952bdd53f
📒 Files selected for processing (140)
.continuum/release.yml.github/workflows/ci.ymlAGENTS.mdAPP_GLOSSARY.mdCHANGELOG.mdCONTRIBUTING.mdGoodIdeas.mdMETHOD.mdREADME_FULL.mdRELEASE.mdapps/warp/README.mdapps/warp/VISION.mdapps/warp/src/init.mjsapps/warp/test/warp-init.test.mjsapps/warp/test/warp-warpspace.test.mjsdocs/DOCUMENTATION_POLICY.mddocs/GETTING_STARTED.mddocs/OVERVIEW.mddocs/catalog.yamldocs/contract-family-registry.mddocs/design/0001-lane-ontology-and-merge-temporality/README.mddocs/design/0002-kairotic-merge-and-derived-lanes/README.mddocs/design/0003-braid-witness-and-local-optic-neighborhoods/README.mddocs/design/0004-minimal-braid-witness-for-level-2/README.mddocs/design/0005-alignment-structure-and-outcome/README.mddocs/design/0006-focus-boundary-structure/README.mddocs/design/0007-footprint-as-focus-boundary/README.mddocs/design/0008-affect-versus-reintegration-boundary/README.mddocs/design/0009-optic-clarification-of-affect-and-reintegration/README.mddocs/design/0010-residual-reintegration-structure/README.mddocs/design/0011-witness-core-and-receipt-shell/README.mddocs/design/0012-compatibility-obligations-versus-evidence/README.mddocs/design/0013-witness-refinement-and-equivalence/README.mddocs/design/0014-shared-noun-ownership-map/README.mddocs/design/0014-shared-noun-ownership-map/backlog-origin.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/README.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/backlog-origin.mddocs/design/0016-engine-local-vs-shared-observer-contract/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/backlog-origin.mddocs/design/0018-one-graph-two-temperatures-and-runtime-handoff/README.mddocs/design/0019-echo-against-continuum-invariants/README.mddocs/design/0020-shared-admission-and-policy-publication/README.mddocs/design/0021-family-versions-vs-repo-versions/README.mddocs/design/0022-neighborhood-core-and-admission-outcome-family/README.mddocs/design/0023-warpspace-bootstrap-and-stack-release-manifest/README.mddocs/design/0024-warp-cli-and-warpspace-toml/README.mddocs/design/0025-warp-native-distribution-and-node-runtime-policy/README.mddocs/design/0026-warp-package-sources-and-local-packages-site/README.mddocs/design/0027-witnessed-causal-suffix-sync/README.mddocs/design/0028-minimum-runtime-boundary-contract-family/README.mddocs/design/0029-cross-repo-contract-family-registry/README.mddocs/design/0030-continuum-spine-protocol-report/README.mddocs/design/0031-continuum-compendium-v1/README.mddocs/design/0032-tachyon-warpspace-resolution/README.mddocs/design/0033-warpspace-runtime-projection-and-qw-install/README.mddocs/design/0034-agent-neutral-edict-participation/README.mddocs/design/0035-continuum-stack-convergence/README.mddocs/design/0036-continuum-stack-release-roadmap/README.mddocs/design/0037-continuum-stack-project-slice-plan/README.mddocs/design/README.mddocs/explanation/protocol-profiles.mddocs/how-to/publish-runtime-evidence-for-a-contract-family.mddocs/index.mddocs/method/DOCUMENTATION_AUDIT.mddocs/method/process.mddocs/method/release-runbook.mddocs/method/release.mddocs/reference/convergence.mddocs/reference/glossary.mddocs/reference/ownership-map.mddocs/reference/qw-cli.mddocs/releases/demo/README.mddocs/releases/demo/continuum-stack-release.jsonscripts/docs-lint.mjsscripts/setup-hooks.shwesley/README.mdwesley/commands/contract.mjswesley/commands/drift-watch.mjswesley/commands/observer-plan.mjswesley/commands/witness-continuum.mjswesley/commands/witness.mjswesley/continuum-cli-module.mjswesley/profile/contract-bundle.mjswesley/profile/index.mjswesley/profile/judgment-profile.mjswesley/profile/scopes.mjswesley/support/continuum-compile-targets.mjswesley/support/continuum-publication-boundary.mjswesley/support/continuum-receipt-family-witness.mjswesley/support/continuum-settlement-family-witness.mjswesley/support/continuum-witness-report.mjswesley/support/continuum-witness-support.mjswesley/support/graphql-contract-names.mjswesley/support/graphql-from-wesley.mjswesley/support/realization-integrity.mjswesley/support/wesley-deps.mjswesley/test/continuum-compile-targets.test.mjswesley/test/contract-bundle.test.mjswesley/test/contract.batswesley/test/drift-watch.batswesley/test/fixtures/continuum/receipt-family/README.mdwesley/test/fixtures/continuum/receipt-family/boundary.jsonwesley/test/fixtures/continuum/receipt-family/invalid.jsonwesley/test/fixtures/continuum/receipt-family/minimal.jsonwesley/test/fixtures/continuum/receipt-family/receipt-vs-witness.jsonwesley/test/fixtures/continuum/receipt-family/roundtrip.jsonwesley/test/fixtures/continuum/settlement-family/README.mdwesley/test/fixtures/continuum/settlement-family/boundary.jsonwesley/test/fixtures/continuum/settlement-family/decision-separation.jsonwesley/test/fixtures/continuum/settlement-family/minimal.jsonwesley/test/observer-plan.batswesley/test/observer-plan.test.mjswesley/test/profile.test.mjswesley/test/runtime-boundary-invariants.test.mjswesley/test/test_helper.bashwesley/test/witness-continuum.batswesley/ttd/ast.mjswesley/ttd/codegen/index.mjswesley/ttd/codegen/orchestrator.mjswesley/ttd/codegen/ts-registry.mjswesley/ttd/codegen/ts-types.mjswesley/ttd/codegen/ts-zod.mjswesley/ttd/directives.mjswesley/ttd/extractor.mjswesley/ttd/hasher.mjswesley/ttd/index.mjswesley/ttd/invariants/ast.mjswesley/ttd/invariants/golden.mjswesley/ttd/invariants/index.mjswesley/ttd/invariants/lexer.mjswesley/ttd/invariants/obligations.mjswesley/ttd/invariants/parser.mjswesley/ttd/invariants/verifier.mjswesley/ttd/invariants/vm.mjswesley/ttd/manifest.mjswesley/ttd/schemas/README.mdwesley/ttd/schemas/ttd-ir.schema.jsonwesley/ttd/validation.mjswesley/utils/observer-plan.mjs
💤 Files with no reviewable changes (65)
- wesley/README.md
- wesley/test/fixtures/continuum/settlement-family/README.md
- wesley/test/fixtures/continuum/settlement-family/decision-separation.json
- wesley/test/fixtures/continuum/receipt-family/minimal.json
- wesley/test/fixtures/continuum/settlement-family/minimal.json
- wesley/test/fixtures/continuum/receipt-family/roundtrip.json
- wesley/test/fixtures/continuum/settlement-family/boundary.json
- wesley/test/fixtures/continuum/receipt-family/invalid.json
- wesley/test/fixtures/continuum/receipt-family/boundary.json
- wesley/test/profile.test.mjs
- wesley/ttd/codegen/index.mjs
- GoodIdeas.md
- wesley/ttd/codegen/orchestrator.mjs
- wesley/ttd/codegen/ts-registry.mjs
- wesley/support/continuum-receipt-family-witness.mjs
- wesley/support/continuum-settlement-family-witness.mjs
- wesley/ttd/invariants/parser.mjs
- wesley/ttd/hasher.mjs
- wesley/ttd/invariants/index.mjs
- wesley/ttd/extractor.mjs
- wesley/ttd/invariants/ast.mjs
- wesley/test/witness-continuum.bats
- wesley/support/graphql-contract-names.mjs
- wesley/support/continuum-publication-boundary.mjs
- wesley/test/contract-bundle.test.mjs
- wesley/test/test_helper.bash
- wesley/ttd/manifest.mjs
- wesley/test/fixtures/continuum/receipt-family/receipt-vs-witness.json
- wesley/commands/observer-plan.mjs
- wesley/test/contract.bats
- wesley/test/observer-plan.test.mjs
- wesley/support/continuum-witness-report.mjs
- wesley/ttd/directives.mjs
- wesley/support/continuum-compile-targets.mjs
- wesley/ttd/invariants/golden.mjs
- wesley/test/fixtures/continuum/receipt-family/README.md
- wesley/ttd/ast.mjs
- wesley/profile/index.mjs
- wesley/ttd/invariants/vm.mjs
- wesley/commands/witness.mjs
- wesley/ttd/schemas/ttd-ir.schema.json
- wesley/support/realization-integrity.mjs
- wesley/commands/contract.mjs
- wesley/ttd/validation.mjs
- wesley/test/continuum-compile-targets.test.mjs
- wesley/ttd/schemas/README.md
- wesley/ttd/invariants/lexer.mjs
- wesley/support/graphql-from-wesley.mjs
- wesley/profile/judgment-profile.mjs
- wesley/utils/observer-plan.mjs
- wesley/profile/contract-bundle.mjs
- wesley/test/runtime-boundary-invariants.test.mjs
- wesley/ttd/invariants/verifier.mjs
- wesley/test/observer-plan.bats
- wesley/continuum-cli-module.mjs
- wesley/support/continuum-witness-support.mjs
- wesley/support/wesley-deps.mjs
- wesley/ttd/index.mjs
- wesley/ttd/invariants/obligations.mjs
- wesley/ttd/codegen/ts-zod.mjs
- wesley/commands/drift-watch.mjs
- wesley/profile/scopes.mjs
- wesley/test/drift-watch.bats
- wesley/ttd/codegen/ts-types.mjs
- wesley/commands/witness-continuum.mjs
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
docs/**/*
📄 CodeRabbit inference engine (AGENTS.md)
docs/**/*: All documentation must follow the Continuum Documentation Standard indocs/DOCUMENTATION_POLICY.md.
Durable truth must live in reader-task pages underdocs/organized by reader need, not in the design log.
Files:
docs/design/0002-kairotic-merge-and-derived-lanes/README.mddocs/design/0014-shared-noun-ownership-map/backlog-origin.mddocs/design/0034-agent-neutral-edict-participation/README.mddocs/design/0008-affect-versus-reintegration-boundary/README.mddocs/design/0026-warp-package-sources-and-local-packages-site/README.mddocs/design/0033-warpspace-runtime-projection-and-qw-install/README.mddocs/design/0013-witness-refinement-and-equivalence/README.mddocs/design/0001-lane-ontology-and-merge-temporality/README.mddocs/design/0032-tachyon-warpspace-resolution/README.mddocs/design/0023-warpspace-bootstrap-and-stack-release-manifest/README.mddocs/design/0014-shared-noun-ownership-map/README.mddocs/design/0024-warp-cli-and-warpspace-toml/README.mddocs/design/0007-footprint-as-focus-boundary/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/backlog-origin.mddocs/design/0012-compatibility-obligations-versus-evidence/README.mddocs/design/0025-warp-native-distribution-and-node-runtime-policy/README.mddocs/design/0027-witnessed-causal-suffix-sync/README.mddocs/how-to/publish-runtime-evidence-for-a-contract-family.mddocs/design/0035-continuum-stack-convergence/README.mddocs/design/0011-witness-core-and-receipt-shell/README.mddocs/design/0028-minimum-runtime-boundary-contract-family/README.mddocs/design/0019-echo-against-continuum-invariants/README.mddocs/design/0016-engine-local-vs-shared-observer-contract/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/README.mddocs/design/0009-optic-clarification-of-affect-and-reintegration/README.mddocs/design/0031-continuum-compendium-v1/README.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/backlog-origin.mddocs/method/process.mddocs/design/0006-focus-boundary-structure/README.mddocs/design/0010-residual-reintegration-structure/README.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/README.mddocs/reference/glossary.mddocs/design/0029-cross-repo-contract-family-registry/README.mddocs/method/release.mddocs/design/0022-neighborhood-core-and-admission-outcome-family/README.mddocs/design/README.mddocs/reference/ownership-map.mddocs/design/0021-family-versions-vs-repo-versions/README.mddocs/design/0003-braid-witness-and-local-optic-neighborhoods/README.mddocs/design/0037-continuum-stack-project-slice-plan/README.mddocs/design/0030-continuum-spine-protocol-report/README.mddocs/releases/demo/README.mddocs/explanation/protocol-profiles.mddocs/design/0018-one-graph-two-temperatures-and-runtime-handoff/README.mddocs/design/0005-alignment-structure-and-outcome/README.mddocs/design/0004-minimal-braid-witness-for-level-2/README.mddocs/contract-family-registry.mddocs/reference/qw-cli.mddocs/design/0020-shared-admission-and-policy-publication/README.mddocs/design/0036-continuum-stack-release-roadmap/README.mddocs/GETTING_STARTED.mddocs/catalog.yamldocs/index.mddocs/reference/convergence.mddocs/releases/demo/continuum-stack-release.jsondocs/OVERVIEW.mddocs/DOCUMENTATION_POLICY.mddocs/method/DOCUMENTATION_AUDIT.mddocs/method/release-runbook.md
docs/design/**
📄 CodeRabbit inference engine (AGENTS.md)
docs/design/is a frozen historical decision log; do not add new packets there.
Files:
docs/design/0002-kairotic-merge-and-derived-lanes/README.mddocs/design/0014-shared-noun-ownership-map/backlog-origin.mddocs/design/0034-agent-neutral-edict-participation/README.mddocs/design/0008-affect-versus-reintegration-boundary/README.mddocs/design/0026-warp-package-sources-and-local-packages-site/README.mddocs/design/0033-warpspace-runtime-projection-and-qw-install/README.mddocs/design/0013-witness-refinement-and-equivalence/README.mddocs/design/0001-lane-ontology-and-merge-temporality/README.mddocs/design/0032-tachyon-warpspace-resolution/README.mddocs/design/0023-warpspace-bootstrap-and-stack-release-manifest/README.mddocs/design/0014-shared-noun-ownership-map/README.mddocs/design/0024-warp-cli-and-warpspace-toml/README.mddocs/design/0007-footprint-as-focus-boundary/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/backlog-origin.mddocs/design/0012-compatibility-obligations-versus-evidence/README.mddocs/design/0025-warp-native-distribution-and-node-runtime-policy/README.mddocs/design/0027-witnessed-causal-suffix-sync/README.mddocs/design/0035-continuum-stack-convergence/README.mddocs/design/0011-witness-core-and-receipt-shell/README.mddocs/design/0028-minimum-runtime-boundary-contract-family/README.mddocs/design/0019-echo-against-continuum-invariants/README.mddocs/design/0016-engine-local-vs-shared-observer-contract/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/README.mddocs/design/0009-optic-clarification-of-affect-and-reintegration/README.mddocs/design/0031-continuum-compendium-v1/README.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/backlog-origin.mddocs/design/0006-focus-boundary-structure/README.mddocs/design/0010-residual-reintegration-structure/README.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/README.mddocs/design/0029-cross-repo-contract-family-registry/README.mddocs/design/0022-neighborhood-core-and-admission-outcome-family/README.mddocs/design/README.mddocs/design/0021-family-versions-vs-repo-versions/README.mddocs/design/0003-braid-witness-and-local-optic-neighborhoods/README.mddocs/design/0037-continuum-stack-project-slice-plan/README.mddocs/design/0030-continuum-spine-protocol-report/README.mddocs/design/0018-one-graph-two-temperatures-and-runtime-handoff/README.mddocs/design/0005-alignment-structure-and-outcome/README.mddocs/design/0004-minimal-braid-witness-for-level-2/README.mddocs/design/0020-shared-admission-and-policy-publication/README.mddocs/design/0036-continuum-stack-release-roadmap/README.md
**
⚙️ CodeRabbit configuration file
**: # AGENTS.mdRole
Continuum is the coordination spine for the active stack. It does not own a
runtime implementation, a substrate, or a parallel ontology. It owns shared
truth across Echo,git-warp,warp-ttd, and Wesley.Git Safety
- Never amend commits.
- Never rebase.
- Never force git operations.
- Stage only the files written in the current turn.
- Commit each completed slice in the same turn.
Process
- Read METHOD.md before changing structure.
- Keep active work in
docs/design/.- Keep concrete work in
docs/method/backlog/.- Keep retros in
docs/method/retro/.- Update docs/BEARING.md and docs/VISION.md
only at cycle boundaries.Doctrine
- Continuum owns coordination truth, not substrate truth.
- Shared nouns need one authored home and explicit publication boundaries.
- Cross-repo witness and compatibility truth beats hand-wavy alignment claims.
- No shadow schemas, no shadow vocabularies, no shadow ownership.
Files:
docs/design/0002-kairotic-merge-and-derived-lanes/README.mddocs/design/0014-shared-noun-ownership-map/backlog-origin.mddocs/design/0034-agent-neutral-edict-participation/README.mddocs/design/0008-affect-versus-reintegration-boundary/README.mddocs/design/0026-warp-package-sources-and-local-packages-site/README.mddocs/design/0033-warpspace-runtime-projection-and-qw-install/README.mddocs/design/0013-witness-refinement-and-equivalence/README.mddocs/design/0001-lane-ontology-and-merge-temporality/README.mddocs/design/0032-tachyon-warpspace-resolution/README.mddocs/design/0023-warpspace-bootstrap-and-stack-release-manifest/README.mddocs/design/0014-shared-noun-ownership-map/README.mddocs/design/0024-warp-cli-and-warpspace-toml/README.mddocs/design/0007-footprint-as-focus-boundary/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/backlog-origin.mddocs/design/0012-compatibility-obligations-versus-evidence/README.mddocs/design/0025-warp-native-distribution-and-node-runtime-policy/README.mddocs/design/0027-witnessed-causal-suffix-sync/README.mddocs/how-to/publish-runtime-evidence-for-a-contract-family.mddocs/design/0035-continuum-stack-convergence/README.mddocs/design/0011-witness-core-and-receipt-shell/README.mddocs/design/0028-minimum-runtime-boundary-contract-family/README.mddocs/design/0019-echo-against-continuum-invariants/README.mddocs/design/0016-engine-local-vs-shared-observer-contract/README.mddocs/design/0017-settlement-publication-and-shared-reintegration/README.mdAPP_GLOSSARY.mddocs/design/0009-optic-clarification-of-affect-and-reintegration/README.mddocs/design/0031-continuum-compendium-v1/README.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/backlog-origin.mddocs/method/process.mddocs/design/0006-focus-boundary-structure/README.mddocs/design/0010-residual-reintegration-structure/README.mdRELEASE.mddocs/design/0015-echo-wesley-warp-ttd-proof-plan/README.mddocs/reference/glossary.mddocs/design/0029-cross-repo-contract-family-registry/README.mddocs/method/release.mddocs/design/0022-neighborhood-core-and-admission-outcome-family/README.mddocs/design/README.mdCONTRIBUTING.mddocs/reference/ownership-map.mddocs/design/0021-family-versions-vs-repo-versions/README.mddocs/design/0003-braid-witness-and-local-optic-neighborhoods/README.mdapps/warp/README.mddocs/design/0037-continuum-stack-project-slice-plan/README.mddocs/design/0030-continuum-spine-protocol-report/README.mdMETHOD.mddocs/releases/demo/README.mddocs/explanation/protocol-profiles.mddocs/design/0018-one-graph-two-temperatures-and-runtime-handoff/README.mddocs/design/0005-alignment-structure-and-outcome/README.mddocs/design/0004-minimal-braid-witness-for-level-2/README.mdscripts/setup-hooks.shdocs/contract-family-registry.mddocs/reference/qw-cli.mddocs/design/0020-shared-admission-and-policy-publication/README.mddocs/design/0036-continuum-stack-release-roadmap/README.mddocs/GETTING_STARTED.mddocs/catalog.yamlAGENTS.mddocs/index.mdREADME_FULL.mdapps/warp/VISION.mddocs/reference/convergence.mddocs/releases/demo/continuum-stack-release.jsonscripts/docs-lint.mjsapps/warp/test/warp-warpspace.test.mjsapps/warp/src/init.mjsdocs/OVERVIEW.mdapps/warp/test/warp-init.test.mjsdocs/DOCUMENTATION_POLICY.mdCHANGELOG.mddocs/method/DOCUMENTATION_AUDIT.mddocs/method/release-runbook.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: flyingrobots/continuum
Timestamp: 2026-06-27T08:45:45.152Z
Learning: Record new decisions as a one-screen ADR-lite note or a `CHANGELOG.md` line instead of adding them to the design log.
Learnt from: CR
Repo: flyingrobots/continuum
Timestamp: 2026-06-27T08:45:45.152Z
Learning: Run the documentation gate (`node scripts/docs-lint.mjs`) before committing documentation changes.
Learnt from: CR
Repo: flyingrobots/continuum
Timestamp: 2026-06-27T08:45:45.152Z
Learning: If a test looks wrong, do not alter, skip, or circumvent it to unblock yourself; flag it instead.
Learnt from: CR
Repo: flyingrobots/continuum
Timestamp: 2026-06-27T08:45:45.152Z
Learning: Continuum owns coordination truth, not substrate truth; shared nouns need one authored home and explicit publication boundaries; cross-repo witness and compatibility truth beats hand-wavy alignment claims; no shadow schemas, no shadow vocabularies, no shadow ownership.
🪛 LanguageTool
docs/DOCUMENTATION_POLICY.md
[style] ~180-~180: Consider using “who” when you are referring to a person instead of an object.
Context: ...d, reasoned answer — it is the governor that stops sprawl. Add a page type only when...
(THAT_WHO)
docs/method/DOCUMENTATION_AUDIT.md
[uncategorized] ~9-~9: The official name of this software platform is spelled with a capital “H”.
Context: ..., apps/warp/, wesley/, scripts/, .github/`, lock/manifest JSON) — never against ...
(GITHUB)
[grammar] ~45-~45: Ensure spelling is correct
Context: ..., AdmissionOutcomeKind; ids 127–128 (schemas/continuum-neighborhood-core-family.graphql#34-66@2d09038). - runtime-boundary family — IntentEnvelop...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[uncategorized] ~53-~53: The official name of this software platform is spelled with a capital “H”.
Context: ...est apps/warp/test/** on Node 22 & 24 (.github/workflows/ci.yml#16-40@2d09038`). **Wes...
(GITHUB)
[uncategorized] ~70-~70: The official name of this software platform is spelled with a capital “H”.
Context: ...t files exist; CI uses the same runner (.github/workflows/ci.yml#40@2d09038). | | Echo...
(GITHUB)
[style] ~116-~116: Consider an alternative for the overused word “exactly”.
Context: ... source-checkable here. | Fit: this is exactly what the policy's invariant page type...
(EXACTLY_PRECISELY)
[uncategorized] ~191-~191: The official name of this software platform is spelled with a capital “H”.
Context: ...** (trim) - ✅ Check commands match CI (.github/workflows/ci.yml#25,40@2d09038); pre-c...
(GITHUB)
[uncategorized] ~278-~278: The official name of this software platform is spelled with a capital “H”.
Context: ...st/but CI only runsapps/warp/test (.github/workflows/ci.yml#402d09038`). The wesl...
(GITHUB)
docs/method/release-runbook.md
[style] ~22-~22: Consider removing “of” to be more concise
Context: ...doctrine A valid Continuum release has all of the following. 1. A reason. Planned rel...
(ALL_OF_THE)
[grammar] ~241-~241: Ensure spelling is correct
Context: ... release evidence is captured. ### 3.8 retrospectived A release is retrospectived when: - rel...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~679-~679: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...r changed? - What public API changed? - What CLI behavior changed? - What docs truth...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~680-~680: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...changed? - What CLI behavior changed? - What docs truth changed? - What operator wor...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~681-~681: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...r changed? - What docs truth changed? - What operator workflow changed? - What archi...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~682-~682: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ed? - What operator workflow changed? - What architecture boundary changed? - What d...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~683-~683: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...- What architecture boundary changed? - What dependency or package posture changed? ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~684-~684: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ependency or package posture changed? - What release tooling changed? - What did we ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~685-~685: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...nged? - What release tooling changed? - What did we intend to ship but did not? - Wh...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~686-~686: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...at did we intend to ship but did not? - What slipped? - What accidentally expanded? ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~687-~687: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... to ship but did not? - What slipped? - What accidentally expanded? Then update: -...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~717-~717: The official name of this software platform is spelled with a capital “H”.
Context: ...orkflow changes. | | Contributor docs | .github/CONTRIBUTING.md | Contribution or revi...
(GITHUB)
[style] ~1282-~1282: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... allowed only when autotag cannot run. Manual tagging must not bypass failed gates. ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~1935-~1935: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...md`. 7. Add release-prep validation. 8. Add final preflight. 9. Add autotag workflo...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~1938-~1938: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...workflow. 10. Add publish workflow. 11. Add verification commands. 12. Add retrospe...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🪛 markdownlint-cli2 (0.22.1)
docs/method/DOCUMENTATION_AUDIT.md
[warning] 292-292: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 295-295: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 296-296: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 309-309: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 313-313: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 317-317: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 344-344: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 352-352: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🔇 Additional comments (111)
docs/design/0002-kairotic-merge-and-derived-lanes/README.md (1)
3-3: LGTM!docs/design/0014-shared-noun-ownership-map/backlog-origin.md (1)
3-3: LGTM!docs/design/0034-agent-neutral-edict-participation/README.md (1)
3-3: LGTM!docs/design/0008-affect-versus-reintegration-boundary/README.md (1)
3-3: LGTM!docs/design/0005-alignment-structure-and-outcome/README.md (1)
3-3: LGTM!docs/design/0004-minimal-braid-witness-for-level-2/README.md (1)
3-3: LGTM!scripts/setup-hooks.sh (1)
1-6: Pre-commit hook is wired up correctly. The.githooks/pre-commitfile exists, is executable, and runsscripts/docs-lint.mjs.docs/contract-family-registry.md (2)
53-54: No change needed here. Thecontinuum/wesleyremoval / issue#47wording matches the rest of the repo, andwesley-cliis the current Rust CLI target referenced by the docs and demo.
93-94: No downstream status consumer to guard here.scripts/docs-lint.mjsonly checks registry/schema coverage and schema paths; it does not parse the registry status values.> Likely an incorrect or invalid review comment.docs/design/0026-warp-package-sources-and-local-packages-site/README.md (1)
3-3: LGTM!docs/design/0033-warpspace-runtime-projection-and-qw-install/README.md (1)
3-3: LGTM!docs/design/0013-witness-refinement-and-equivalence/README.md (1)
3-3: LGTM!docs/design/0001-lane-ontology-and-merge-temporality/README.md (1)
3-3: LGTM!docs/design/0032-tachyon-warpspace-resolution/README.md (1)
3-3: LGTM!docs/design/0020-shared-admission-and-policy-publication/README.md (1)
3-3: LGTM!docs/design/0036-continuum-stack-release-roadmap/README.md (1)
3-3: LGTM!docs/reference/qw-cli.md (5)
16-18: 🎯 Functional CorrectnessVerify
qwtop-level commands match implementation.The document states top-level commands are
init,install, andwarpspace <subcommand>, with any other command printing usage and exiting non-zero. Verify this against the actual argument parser inapps/warp/src/init.mjsor entry point to ensure the command surface hasn't drifted.
22-25: 🎯 Functional CorrectnessVerify
qw initflag surface against implementation.The documented flags for
qw initneed to match the actual implementation. Specifically verify:
--profileacceptsdemoand other built-in profiles--manifestpath handling forcontinuum-stack-release.json--authority-rootoverride behavior--skip-generateWesley invocation skip--forcenon-empty directory behavior
44-47: 🎯 Functional CorrectnessVerify
qw installflag surface against implementation.Confirm the positional
[warpspace.toml]and flags--manifest,--root,--lock,--allow-dirty,--skip-syncmatch the actual parser. The note "positional or--manifest, not both" is a specific constraint that should be enforced in code.
69-75: 🎯 Functional CorrectnessVerify
qw warpspacesubcommands against implementation.The subcommands
lock,verify,sync,doctor,locateand their specific flag shapes need to match the implementation.locatein particular has the most flags (--lock,--root,--cwd,--basis,--json) — verify these are all implemented and not aspirational.
93-99: 🎯 Functional CorrectnessVerify example commands execute successfully.
The examples section provides concrete commands. Verify these work in a clean environment:
qw init my-app --profile demo— requiresdemoprofile to existqw install— requires prior init or existingwarpspace.tomlqw warpspace lock ...— pathdocs/warpspaces/jedit-echo-dev.tomlmust existqw warpspace sync ...— requires the lock file from prior commandqw warpspace verify ...— requires synced stateConsider marking these as "Example paths; adjust to your environment" or verify they match documented tutorial paths.
docs/design/0023-warpspace-bootstrap-and-stack-release-manifest/README.md (1)
3-3: LGTM!docs/design/0014-shared-noun-ownership-map/README.md (1)
3-3: LGTM!docs/design/0024-warp-cli-and-warpspace-toml/README.md (1)
3-3: LGTM!docs/design/0007-footprint-as-focus-boundary/README.md (1)
3-3: LGTM!docs/design/0017-settlement-publication-and-shared-reintegration/backlog-origin.md (1)
3-3: LGTM!AGENTS.md (1)
19-50: LGTM!docs/catalog.yaml (2)
54-72: 🎯 Functional Correctness
path: ../RELEASE.mdis fine.
111-195: 🎯 Functional CorrectnessNo issue: each
family-referencerow points to an existing local schema file, andauthored_homematchespathin these entries.> Likely an incorrect or invalid review comment.docs/GETTING_STARTED.md (1)
115-119: 🎯 Functional CorrectnessNo mismatch here:
wesleyis resolved fromPATH,emitis the command set, and the crate name iswesley-cli.> Likely an incorrect or invalid review comment.docs/design/0012-compatibility-obligations-versus-evidence/README.md (1)
3-3: LGTM!docs/design/0025-warp-native-distribution-and-node-runtime-policy/README.md (1)
3-3: LGTM!docs/design/0027-witnessed-causal-suffix-sync/README.md (1)
3-3: LGTM!docs/how-to/publish-runtime-evidence-for-a-contract-family.md (2)
1-79: 🎯 Functional CorrectnessVerify all cross-references resolve and "Maintenance Rule" is defined.
The guide references several cross-repo paths that must exist for readers to succeed. The verification script above checks these. Additionally, "Maintenance Rule" appears in quotes but lacks a hyperlink—if this is a defined rule in the registry or policy, it should be linked; if not, the scare quotes may confuse readers.
52-54: Confirmnode scripts/docs-lint.mjsis the correct invocation from repo root.The command matches the path in the PR objectives, but verify the script's shebang or package.json scripts don't offer a more standard entrypoint (e.g.,
npm run docs:lint). Based on learnings, the documentation gate should be run before committing documentation changes.Source: Learnings
docs/design/0035-continuum-stack-convergence/README.md (1)
3-3: LGTM!docs/index.md (2)
12-46: 🎯 Functional CorrectnessVerify every routed link resolves before this page goes live.
The index is a critical router—broken links here block all reader tasks. The verification script above checks all referenced paths. Of particular concern:
../README_FULL.md(parent directory),../schemas/README.md(parent directory),invariants/CONTINUUM.md, and the three design/ packets must all exist.Additionally, the
qw-cli.mdandglossary.mdreferences appear in the "Start here" section but the file showsreference/qw-cli.mdandreference/glossary.md—confirm these reader-task pages exist as durable truth, not design-log artifacts. As per coding guidelines, durable truth must live in reader-task pages underdocs/organized by reader need.Source: Coding guidelines
44-46: LGTM: Frozen history note is doctrinally perfect.The superseded-packets-stay-as-history note matches both the
docs/design/**guideline and the retrieved learning to prefer ADR-lite/CHANGELOG over design-log additions. No additional comment needed beyond approval.Sources: Coding guidelines, Learnings
README_FULL.md (3)
107-110: 🎯 Functional CorrectnessVerify the proposed protocol-profiles destination exists.
The "design target, not yet authored" framing is appropriately honest, but readers following the link need a real destination. Confirm
docs/explanation/protocol-profiles.mdexists or adjust the caveat if the document has a different path or status.
120-126: Consistent and appropriate framing for unauthored profiles.The parallel structure with lines 107-110 and the explicit "design target, not yet authored" caveat prevents reader confusion. The claim that "shared nouns those profiles would build on do exist today" is verifiable against the contract-family registry—ensure this stays true as families evolve.
188-190: "qw doctor" framing is consistent with VISION.md but verify neither overpromises.Both README_FULL.md and VISION.md reference
qw doctoras not-yet-implemented. Confirm this is the same command in both contexts and that the capability tier it belongs to is documented consistently. The VISION.md handoff note mentionsqw build,qw doctor,qw updateas "not yet implemented"—this matches the "does not exist yet" framing here.apps/warp/VISION.md (2)
113-120: 🎯 Functional CorrectnessVerify "resolves from crates.io" claim matches actual init.mjs behavior.
The VISION.md states the demo "now resolves the Wesley CLI from crates.io" but also says it "still relies on the user having that binary on PATH." This is a nuanced claim—verify that
apps/warp/src/init.mjsactually invokeswesleyas a binary found on PATH (which could be fromcargo install) rather than downloading or installing it itself. The "from crates.io" framing should mean the canonical source is crates.io, not that the code performs crate resolution.
194-201: Verify handoff-note "done" claims against test and source truth.The handoff note marks crates.io resolution as "(done)" and pins the next priority as prebuilt-from-manifest. This is a live project status claim—confirm
apps/warp/test/warp-init.test.mjsorwarp-warpspace.test.mjsexercises the Wesley invocation path and that the test expectations match this "done" state. Based on learnings, if a test looks wrong, do not alter it; flag it instead.Source: Learnings
docs/design/0011-witness-core-and-receipt-shell/README.md (1)
3-3: LGTM!docs/design/0028-minimum-runtime-boundary-contract-family/README.md (1)
3-3: LGTM!docs/design/0019-echo-against-continuum-invariants/README.md (1)
3-3: LGTM!docs/design/0016-engine-local-vs-shared-observer-contract/README.md (1)
3-3: LGTM!docs/design/0017-settlement-publication-and-shared-reintegration/README.md (1)
3-3: LGTM!docs/reference/convergence.md (1)
1-114: LGTM!docs/releases/demo/continuum-stack-release.json (1)
20-20: LGTM!Also applies to: 32-41
scripts/docs-lint.mjs (1)
191-211: LGTM!docs/design/0006-focus-boundary-structure/README.md (1)
3-3: LGTM!docs/design/0010-residual-reintegration-structure/README.md (1)
3-3: LGTM!RELEASE.md (1)
1-57: LGTM!docs/design/0015-echo-wesley-warp-ttd-proof-plan/README.md (1)
3-3: LGTM!docs/reference/glossary.md (1)
1-109: LGTM!docs/OVERVIEW.md (2)
3-9: Reframing resolves prior synthesis accuracy concern.The shift from "brief synthesis of packets 0001–0017" to "living explanation" with explicit non-synthesis disclaimer correctly addresses the prior accuracy mismatch. The document now honestly contracts what it provides rather than overstating coverage.
59-381: Consistent "Design history:" relabeling across all sections.All twelve section cross-references uniformly relabeled from "Detailed packets:" to "Design history:". This maintains consistent reader-facing vocabulary matching the new non-synthesis contract.
apps/warp/test/warp-init.test.mjs (5)
5-5: LGTM!
158-162: LGTM!
189-190: LGTM!
706-797: LGTM!
799-852: LGTM!docs/design/0029-cross-repo-contract-family-registry/README.md (2)
3-3: LGTM!
48-48: No change needed.docs/contract-family-registry.mdexists and remains the live registry source of truth; the archived packet can keep pointing to it.docs/method/release.md (2)
5-9: LGTM!
6-8: Cross-references resolve cleanly.docs/design/0022-neighborhood-core-and-admission-outcome-family/README.md (1)
3-3: LGTM!docs/design/README.md (2)
2-22: LGTM!
12-15: Severaldocs/design/**/backlog-origin.mdfiles still havestatus: activeorstatus: captured, so the blanket “every packet is archived” claim is wrong.> Likely an incorrect or invalid review comment.CONTRIBUTING.md (4)
1-89: LGTM!
15-16: No action needed:docs/invariants/exists, so the path inCONTRIBUTING.mdis valid.
48-48: No action needed
scripts/setup-hooks.shexists and is executable.
42-42: No change needed for the test glob CI already runs Node 22/24, sonode --test 'apps/warp/test/**/*.test.mjs'is supported as written.> Likely an incorrect or invalid review comment.docs/DOCUMENTATION_POLICY.md (4)
2-358: LGTM! The policy structure is sound and self-consistent.
86-98:schemas/is at the repo root and contains the GraphQL family definitions.
291-294: Anchor fragments stay advisory. Missing same-file anchors only emit warnings, so this doesn’t block docs-lint.
206-210: Ensuredocs/catalog.yamlcarries the §9 cross-repo fields ontype: family-referenceentries.authored_home,runtime_owner,consumers, andcompatibility_statusshould be present and populated for contract-family records.CHANGELOG.md (7)
1-189: LGTM! Changelog is comprehensive and well-structured.
88-118: Reference pages exist and are registered indocs/catalog.yaml.
14-17: CI hardening note is accurate..github/workflows/ci.ymlpinsactions/checkoutandactions/setup-node, andcheckoutsetspersist-credentials: false.
32-38: No remainingcontinuum/wesley/references.
82-86: No changelog issue:qw doctor/qw buildare not top-level commands. The onlydoctorcommand isqw warpspace doctor, so the “nonexistent” wording is accurate.> Likely an incorrect or invalid review comment.
39-43: Registry statuses are correct.receipt-familyandsettlement-familyareauthored, notfixture-witnessed.
19-31: Wesley crate install and demo manifest align.docs/reference/ownership-map.md (2)
1-17: LGTM!
53-68: Links resolve, and the Wesley wording matches the surrounding docs.> Likely an incorrect or invalid review comment.docs/design/0021-family-versions-vs-repo-versions/README.md (1)
3-3: LGTM!.github/workflows/ci.yml (2)
16-28: LGTM!
29-44: Clarify the Node 24 matrix entryThe workflow already has
concurrency; the remaining question is whether Node 24 is intentional forward-compat coverage or unnecessary CI spend. Either document that support policy or trim the matrix to the supported runtime.docs/design/0003-braid-witness-and-local-optic-neighborhoods/README.md (1)
3-3: LGTM!docs/method/DOCUMENTATION_AUDIT.md (4)
1-55: LGTM!
234-241: LGTM!
246-253: LGTM!
274-278: LGTM!docs/method/release-runbook.md (6)
1-54: LGTM!
159-519: LGTM!
520-833: LGTM!
834-1011: LGTM!
1948-1965: LGTM!
55-158: Example paths are stale placeholders — The repo’s.continuum/release.ymlusesdocs/GETTING_STARTED.md,docs/reference/qw-cli.md,docs/method/release-runbook.md, anddocs/releases/;docs/topics/anddocs/operations/are not the repo’s release-profile paths.> Likely an incorrect or invalid review comment.apps/warp/README.md (1)
44-52: Confirm thecratesource name and.warpspace/packages/wesley/receipt path match the installer.docs/design/0037-continuum-stack-project-slice-plan/README.md (1)
3-3: LGTM!docs/design/0030-continuum-spine-protocol-report/README.md (1)
3-3: LGTM!docs/design/0018-one-graph-two-temperatures-and-runtime-handoff/README.md (1)
3-3: LGTM!.continuum/release.yml (2)
63-69: LGTM: Honest adoption status tracking.The
adoption_statussection transparently reports partial implementation. This is good practice for a release configuration that is still maturing.
37-39: 🩺 Stability & AvailabilityNo change needed
node --testruns on Node 22/24 in.github/workflows/ci.yml, and the quoted glob is passed through to Node as intended.> Likely an incorrect or invalid review comment.docs/explanation/protocol-profiles.md (2)
1-4: 🎯 Functional Correctness
schemas/README.mdis the authored home for the four shared contract families; no change needed.
64-69:continuum#24is the wrong tracker for this section. It exists, but it trackscontinuum.debug.hello.v1, not the participant profile work described here (continuum.participant.hello.v1, descriptor fixture, evidence posture, Wesley witness, WARP TTD discovery,qwreporting).> Likely an incorrect or invalid review comment.METHOD.md (1)
19-21: 🎯 Functional CorrectnessRemove the section-number concern
docs/DOCUMENTATION_POLICY.md§7 is the correct reference for the frozen-archive policy and the “new decisions use a decision record / CHANGELOG.md line” rule. §17 is definition-of-done material and doesn’t apply here. Also,METHOD.mdno longer appears to contain the cited reference text.> Likely an incorrect or invalid review comment.docs/releases/demo/README.md (1)
16-16: 🎯 Functional CorrectnessNo change needed here.
apps/warp/src/init.mjsalready resolveswesley-clifrom PATH fortoolchain.wesley.install.source: crate, and thedemodocs match that native-rust path.
Review updateAll currently unresolved, non-outdated review threads have been verified against the current head (
Validation on the current head:
|
Adopts the reader-task Documentation Product Standard as a Continuum-specific
hub policy, then applies it to the first capability (
contract-families) per thestandard's incremental adoption sequence. Includes the housekeeping to make the
new documentation gate enforceable.
This branch was previously merged via #37 (slice-plan work, already in
main);the diff here is only the two commits below.
Policy (
docs/DOCUMENTATION_POLICY.md)A §17 local extension, not a rewrite. Names Continuum a coordination hub;
adds the "own the boundary, link outward" anti-pattern; defines a capability
taxonomy and hub-native page types; marks design packets as append-only decision
records; and requires the cross-repo registry/ownership/release tables to be
generated-or-validated rather than hand-curated.
Applied to
contract-familiesdocs/index.md— reader-goal router / capability landing page.docs/catalog.yaml— machine-readable catalog with cross-repo routing fields.docs/how-to/publish-runtime-evidence-for-a-contract-family.md— firstconformance guide.
docs/OVERVIEW.md— fixed a real staleness signal (claimed to synthesize0001-0017while packets run to0037).Enforcement
scripts/docs-lint.mjs— dependency-free gate: internal links, catalogintegrity, registry/schema coverage. Currently green.
.githooks/pre-commit— runs the gate (was a no-op placeholder)..github/workflows/ci.yml— new CI (none existed) running the docs gate andthe
apps/warpnode --testsuite (28 tests).Deliberately not done
No mass-conversion of the 37 packets (the standard forbids it; next capability
adopts only after this one is observed in use).