ResearchSpec is becoming the agent-neutral, spec-driven framework layer for Academic Research Skills Universal (ARSU).
The project is no longer a generic ultra-light research contract initializer. Its primary job is to absorb ARSU, maintain ARSU-derived skill artifacts inside this repository, and provide the contract layer that lets those skills work through stable files instead of platform-specific runtime assumptions.
Current external reference paths:
- ResearchSpec project:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec - ARSU project to be absorbed:
/home/joshua/Workspace/Code/Skill/academic-research-skills-universal - ARS upstream checkout inside ARSU:
/home/joshua/Workspace/Code/Skill/academic-research-skills-universal/vendor/ars - ToolUniverse vendor converter source:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec/vendor/tooluniverse - Scientific Agent Skills vendor converter source:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec/vendor/scientific-agent-skills - Materials-Science-Skills-For-LLM audit source:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec/vendor/materials-science-skills-for-llm - FinRobot audit source:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec/vendor/finrobot - HistAgent audit source:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec/vendor/histagent - Education Agent Skills working checkout:
/home/joshua/Workspace/Code/Skill/education-agent-skills - Education Agent Skills audit source:
/home/joshua/Workspace/Code/JavaScript/ResearchSpec/vendor/education-agent-skills
When paths or ownership change, update this file in the same change so future agents do not follow stale locations.
ResearchSpec should become:
- an OpenSpec-style framework for academic paper writing workflows;
- an agent-neutral host for ARSU-derived skills;
- a spec-driven contract system for research intent, sources, claims, manuscripts, workflow state, gates, decisions, artifacts, and patches;
- a converter/maintenance layer for ARSU outputs after ARSU is absorbed.
ResearchSpec should not become:
- an LLM API integration layer;
- a platform-specific Claude Code or Codex adapter;
- a web app, database-first research platform, or citation manager replacement;
- a hand-maintained copy of generated ARSU artifacts when converter rules should own the output.
Files remain the interface. Tool adapters may render and write files, but should not call agent APIs or depend on a specific model.
docs/arsu_user_usage_model.md is the canonical source for how users enter,
confirm, run, resume, verify, and finish ARSU work. Product, architecture, CLI,
schema, Skill, converter, and workflow changes must preserve that model or update
it through an explicit OpenSpec change before implementation.
The locked direction is:
researchspec initprepares the workspace and installs Skills; it does not start academic work.- User-Agent dialogue starts work. Vague, cross-Skill, resume, explanation, and
export requests route through
researchspec-navigate; an explicit ARSU Skill or mode may route directly after the same prerequisite and route-summary check. - Starting a subflow requires a user-confirmed summary of Skill, mode, prerequisites, artifacts, formal Gates, and cost.
- ResearchSpec CLI is the only workflow-state authority. ARSU Skills produce
semantic artifacts, and
academic-pipelinedispatches only from the CLI frontier. - Workflow profiles own work graphs, parallel/join policy, Gates, transitions, and dynamic revision-round templates. Do not hard-code the ARSU pipeline graph in core.
- Candidate artifacts may be submitted automatically with hash binding. Every formal Gate requires human confirmation; a failed-Gate override requires an explicit Decision.
- Only scope, claim, structure, branch, and override choices belong in the Decision ledger. Ordinary exploration belongs in the relevant artifact.
The fixed user-visible agent surface is exactly four ARSU Skills
(deep-research, academic-paper, academic-paper-reviewer,
academic-pipeline) and four Companion Skills (researchspec-navigate,
researchspec-propose, researchspec-decide, researchspec-verify), plus seven
fixed Zotero literature Adapter Skills (zotero-library-agent,
zotero-library-query, zotero-literature-acquisition,
zotero-literature-analysis, zotero-research-synthesis,
zotero-library-curation, zotero-bridge-cli). The 31 registered tools
therefore receive fifteen fixed
Skills, while the 28 command-capable tools still receive only eight wrappers.
Optional
ResearchSpec-maintained domain plugin Skills may extend that base surface from
skills/plugins/registry.json; they do not add Companion Skills or wrappers.
src/literature-adapters/catalog.ts is the installation SSOT for the fixed
zotero-library Adapter. Project runtime and profile files live only under
.zotero-bridge/; status and checks are static and never execute binaries or
contact Zotero. Bundle, CLI, and Skill versions are component-local identities:
never compare their patch versions with one another or reject an update merely
because those patch versions differ. Admission follows the fixed release-set,
protocol/schema, build fingerprint, command checksum and reviewed hashes. The
seven runner files and seven output schemas are opaque runtime metadata:
conversion, delivery, status, checking and packaging preserve their bytes but
never execute or interpret them.
The target public CLI has seventeen top-level commands: init, update, status,
instructions, start, submit, advance, check, list, show, handoff,
pack, propose, decide, archive, doctor, and plugin. New workspaces
default to the adaptive runtime; init --profile strict remains explicit and
existing Schema 0.2 workspaces remain strict until a plan-bound
update --migrate-runtime transaction is executed. The runtime protocol is
status -> instructions <selector> -> start/submit/advance -> status.
Command wrappers are adapters, not separate product capabilities. Do not add a
new public command or Companion merely to expose a low-level transaction.
Domain plugins are stable user installation units assembled from project-maintained vendor Skills, not third-party runtimes. Vendor and domain are separate many-to-many layers: vendor converters own upstream version, provenance, adaptation, and hard Skill dependencies; domains own fixed reviewed Skill lists. They may assist semantic work but must not own or directly modify workflow state, routes, work items, artifact registry, Gates, Decisions, transitions, or receipts. ResearchSpec distributes static reviewed content and never executes plugin scripts or installs their dependencies.
At runtime, Navigate and the active ARSU producer may discover optional domain
assistance from compact packaged Skill metadata. Suggest at most three domains
in one batch, keep plugin consent separate from route confirmation, preview the
exact install, and bind non-interactive execution to its plan_sha256. Use a
newly projected Skill natively when the host has loaded it; otherwise use
plugin instructions <skill-id> only after selection, availability, projection,
and manifest-hash checks. The plugin is a bounded advisory helper whose result
returns to the original ARSU producer. Decline or failure must leave the core
selector, producer, frontier, and workflow authority unchanged.
Discipline domains use ANZSRC 2020 Fields of Research Group as their only
classification standard; Field is audit metadata and never automatic membership.
ResearchSpec also owns exactly five coarse tool domains documented in
docs/domain_taxonomy.md. The internal catalog pre-creates all 213 discipline
domains and five tool domains, but empty domains remain hidden from ordinary user
discovery and installation. A selected domain that becomes empty is unavailable
recovery state until it is safely uninstalled or repopulated.
vendor/tooluniverse is the maintainer-only pinned input for the ToolUniverse
vendor converter. Production admission is controlled by the v1.3.1 audit and
converter policies: 130 reviewed research Skills are generated into an isolated
vendor bundle and assigned by the source-neutral catalog to 28 ANZSRC Group
domains and two non-empty tool domains, while 20 maintenance/setup surfaces remain excluded. Neither the source
checkout nor generated admission authorizes dependency installation, script
execution, credential setup, MCP configuration, or workflow writes.
vendor/scientific-agent-skills is the maintainer-only pinned input for the
Scientific Agent Skills v2.53.0 converter. Its immutable audit covers all 147
upstream Skills. The complete production policies admit 49 reviewed,
vendor-prefixed Skills and exclude 98 for authority, redistribution, ARSU or
ToolUniverse overlap, manual security, domain fit, or content-review reasons.
The generated bundle contributes to 19 ANZSRC Group domains and all five tool
domains. The 40-item manual security catalog is a production SSOT: 39 Skills
are clear only with their approved adaptations and dhdna-profiler remains a
confirmed failure. Do not execute bundled scripts, install dependencies,
handle Skill credentials, infer approval from upstream security labels, or
bypass the checked-in admission, manual-review, dependency, resource, and
source-neutral domain decisions. External model or service use must remain
provider-neutral, use the target Agent's user-approved configuration, and
never expose or persist secrets through ResearchSpec.
vendor/materials-science-skills-for-llm is the maintainer-only pinned input
for the snapshot-fafd3ab audit and converter of all 12 upstream Skills. The
complete production policies admit seven curated, vendor-prefixed Skills and
exclude five for maintenance scope, private tooling, overlap, or privileged
platform authority. Converter version 2 publishes seven complete
ResearchSpec-authored non-native Skill trees bound to aggregate SHA-256
c45bafc4be7e4fa540cc119cbaa81cec8f0e453d60fc9f2efd0124d8ec717e3e.
Atomsk is a Tier 1 external-tool Skill without references; APEX, DeePTB, DP-GEN,
GPUMD, Phonopy, and Uni-Mol are Tier 2 trees with exactly one substantial,
conditionally read reference each. All ordinary paths and hard constraints live
in SKILL.md. The 24-item source catalog, typed capability definitions,
fourteen external-resource decisions, seven-item relationship catalog,
per-Skill derivation, and hash-bound review decision are production SSOTs.
Generated Skills contribute to materials-engineering,
macromolecular-and-materials-chemistry, and
computational-modeling-and-simulation; GPU, remote-service, and HPC use alone
does not create infrastructure-domain membership. Do not execute upstream
commands, install dependencies, configure credentials, retrieve resources,
access external services, compile software, or run scheduler/HPC work. Do not
bypass the checked-in admission, relationship, source-file, resource,
capability, derivation, review, license, or source-neutral domain decisions.
vendor/finrobot is the maintainer-only pinned input for the
snapshot-297a8d2 audit and converter. FinRobot has no upstream SKILL.md; its
immutable audit covers all 146 tracked Git entries, 66 source-bound knowledge
surfaces, five origins, six license claims, and six candidates. Production
policies admit six neutral financial-research-* Skills from twelve candidate
files. The 32 admitted surfaces map exactly once to complete ResearchSpec-authored
Agent procedures or deterministic Python 3.11 standard-library entrypoints; no
upstream FinRobot runtime file or provider helper is distributed.
FinNLP, AutoGen-attributed content, unclear filing/marker trees, and hard
FinRobot aggregate dependencies remain excluded. All generated Skills carry
Apache-2.0 licensing, immutable derivation metadata, empty hard Skill
dependencies, and advisory-only relationships. They contribute to
banking-finance-and-investment; statement analysis and company fundamentals
also contribute to accounting-auditing-and-accountability.
FinRobot safety is form safety, not business-capability removal. ResearchSpec conversion, checking, packaging, installation, discovery, and update never import or execute generated resources, install dependencies, initialize clients, read credentials, or contact services. When explicitly invoked by the target Agent, the Skills may use user-authorized browser, filing, market-data, local corpus, and execution tools and may produce calculations, forecasts, probabilities, sentiment, valuation, targets, ratings, recommendations, and conclusions. Never embed actual secrets, private endpoints, private datasets, local user paths, or unknown-origin content in published files, and do not bypass the checked-in admission, source, surface, origin, license, resource, relationship, derivation, and review decisions.
FinRobot converter version 2 binds the approved aggregate tree hash
eecf6fc9e7669f46ef9c58d4fd5938cabedb6d8d7aceac59e15688e178f3765e.
Company fundamentals, event evidence, relative valuation, and statement analysis
are Tier 3 script-assisted Skills with a copied lib/financial_support.py;
competitive position and corporate risk are Tier 1 Agent procedures. The
current trees contain no references because no supporting material meets the
progressive-disclosure threshold. Do not reintroduce AgentSpec, dependency
manifests, provider contracts/adapters, generic runners, product metadata, or
unconsumed auxiliary resources.
vendor/histagent is the maintainer-only pinned input for the
snapshot-47bbe21 audit and converter of all 120 tracked files. The approved
production bundle contains three self-contained executable Skills:
histagent-historical-research,
histagent-historical-source-identification, and
histagent-historical-source-analysis. All have empty hard Skill dependencies
and advisory-only relationships. Historical studies receives all three;
heritage, archive and museum studies receives source identification and source
analysis; no tool domain receives a HistAgent Skill. The converter binds the
archived audit, complete 21-surface capability map, five attributed-source
records, and approved aggregate tree hash
c44f136b6945868ddde7871b5f5ecd7bfb8ac09f84f080f46fbd37f9e173dbd3.
HistAgent must not publish thin provider wrappers. Every generated Skill is a
complete eight-file authored tree whose SKILL.md contains the ordinary runtime
path and all hard constraints. Each claimed capability maps to a concrete
bundled script, bundled resource, or user-configured external tool. Source
identification and source analysis are script-assisted; historical research
uses Skill-local JSON state and gates without becoming ResearchSpec workflow
authority. Production bytes must remain identical to the approved trees.
HistAgent capability preservation does not authorize implementation copying.
Do not copy or expose scripts/cookies.py, telemetry defaults, tracked bytecode,
unresolved browser_use content, unverified figures, or fixed provider
credentials. The AutoGen/Magentic-One attribution scope includes
scripts/agent_web_browser.py, scripts/image_web_browser.py,
scripts/mdconvert.py, scripts/reformulator.py, and
scripts/text_web_browser.py. Implementation reuse requires exact per-file
MIT-source verification and notice preservation; unresolved content requires
implementation-equivalent replacement. HistBench, GAIA,
and HLE datasets, runners, scoring, combination, and judgment remain audit-only.
Historical-source outputs must distinguish raw observation or OCR,
normalized transcription, emendation, translation, and interpretation, with no
unmarked completion. Explicit Skill invocation permits configured providers and
task materials only under target-Agent and host policy. Conversion, checking,
idempotence, packaging, installation, discovery, update, and registry assembly
never import or execute HistAgent code, install dependencies, read credentials,
start browsers, contact services, or upload material.
vendor/education-agent-skills is the maintainer-only pinned input for the
snapshot-32fce5c audit at commit
32fce5c0d097ec675cf81c750a65a379e4d87e3c and tree
3223d79299ae10391c22549debef7ffc9ef7a0e2. Its immutable audit covers all
238 tracked files and all 165 upstream Skills. The checked-in JSON is the audit
SSOT; its Markdown report is derived deterministically and normal audit checking
is offline. Upstream README, registry, domain, tag, evidence-strength, and
relationship claims are observations only and never production authority.
The pinned root has no tracked license text. README and plugin CC BY-SA 4.0
claims, plus the subtree-scoped mcp-server/LICENSE, do not prove Skill-level
redistribution rights or embedded framework provenance. All 165 Skills therefore
remain excluded by the immutable audit even where their content fit would
otherwise be a candidate or defer. The ResearchSpec-owned
evidence-map.json is bound to immutable audit SHA-256
e9326c43078db4c6bce4387c5a41a5bef775ad4d1691095c2020ef9cb9926857
and maps all 872 declarations to 719 normalized works: 293 verified, 410
unresolved, zero conflicting, and 16 not applicable. Twenty explicit
multi-version declarations use composite mappings. Its
evidence-report.md is derived deterministically, and
education-agent-skills:evidence:check is offline and read-only.
The supplementary Google Scholar discovery round targeted the 428 works that were initially unresolved. Scholar returned candidates for 18 works and no result for 11 before an HTTP 429 challenge blocked the remaining 399 intended lookups across the canonical and regional Scholar hosts. Seventeen returned candidates were independently confirmed through reliable destinations; one mismatched candidate remained unresolved. Scholar result pages are discovery metadata only and never verification sources.
Evidence verification proves bibliographic existence and identity only.
claim_support_reviewed remains false for every work; effect sizes, support
scope, interpretation, and misattribution are not upgraded by a verified
publication record. Original frameworks and unpublished practice methods remain
non-publication evidence rather than verified works. All chains_well_with
declarations remain prospective advisory relationships and never hard
dependencies.
Do not execute or install the upstream installer, MCP server, tests, scripts, or
dependencies; do not configure credentials, contact hosted services, upload
learner material, or grant learner-data access. Student-facing tutoring, minor
analytics, wellbeing or motivation diagnosis, and original frameworks require
explicit review. The ingest-education-agent-skills change consumes the
immutable audit and evidence map through a 165-item admission catalog, an
872-item evidence adaptation catalog, and an 813-item advisory relationship
catalog. Its approved production set admits 136 Gareth Manning Skills under
CC BY-SA 4.0 and excludes 19 original-framework Skills plus ten Sean Hu Skills
whose redistribution authority is not established. The generated trees preserve
student-facing capabilities with reviewed safety boundaries and contributes
only to curriculum-and-pedagogy, education-systems, and
specialist-studies-in-education.
The approved production tree is bound to aggregate SHA-256
c4fc2f93a7553a1c02538d15491ed108afd36ad4a4a291ca4db3bad39e74775d
and publishes the sixth vendor with 136 static Skill trees, empty hard
dependencies, complete CC BY-SA 4.0 licenses and notices, and membership only in
the three reviewed education domains. Production checking and idempotence must
fail on any source, audit, evidence, policy, license, generated-tree, domain, or
registry drift. Education Agent Skills add no public CLI command or workflow
authority.
Six-vendor maintenance must keep converters isolated: each converter stages against all published vendors but emits and commits only its own bundle, while a source-neutral domain catalog and central assembler own the published registry. Vendor root licensing does not replace an evidenced Skill-level content license.
Non-native upstream projects such as HistAgent, FinRobot, and
Materials-Science-Skills-For-LLM follow
docs/non_native_vendor_skill_standard.md. Its templates are authoring
scaffolds, not converter prose fragments or a runtime protocol. references/
is optional and contains only substantial context-saving detail; the only copy
of an execution-critical workflow, constraint, authority boundary, output rule,
or failure rule belongs in SKILL.md. ResearchSpec does not currently consume a
generic runner.json, RUNTIME.json, input/output schema, or fixed stdout
envelope. Do not add those files merely to normalize a Skill. Scripts and domain
schemas are allowed only when the Skill actually uses and documents them.
ARSU is a skill package and converter project. ResearchSpec is the framework layer that should eventually own it.
When working on this repository, treat ARSU as the main capability payload:
deep-researchacademic-paperacademic-paper-revieweracademic-pipeline- optional future ARSU skill groups, if deliberately adopted
The important integration point is the contract design. ResearchSpec contracts use their own current contracts rather than raw ARS/ARSU contracts, and ARSU skills must be adapted to consume the ResearchSpec contracts once this project absorbs them.
Do not bolt ARSU onto the old generic contract model as an afterthought. The contract model is the core coupling between ResearchSpec and ARSU.
Do not enforce current-state-only cleanup on ARSU-derived content by default.
The upstream ARS project intentionally contains a large amount of version, history, changelog, migration, and issue-related text. ARSU deliberately accepts that upstream design because automatically converting thousands of such markers into a perfectly current-only runtime is brittle and high cost.
Rules:
- Respect upstream ARS/ARSU runtime content unless a task explicitly asks for a specific rewrite.
- Do not fail conversion or validation merely because ARSU-derived files contain version markers, changelog sections, historical notes, issue references, or upstream schema-version language.
- It is acceptable to record those markers as diagnostics or risk findings.
- Do not spend effort on broad semantic cleanup of upstream history text unless the user explicitly scopes that work.
- ResearchSpec-authored framework contracts and instructions should still avoid stale history and describe the current intended behavior.
The contract layer should be designed carefully before broad ARSU rewrites. Prefer a typed file-contract model: human-readable Markdown where useful, machine-checkable YAML/JSON/JSONL where downstream skills or gates depend on stable fields.
Recommended conceptual layout:
researchspec/
config.yaml
specs/
project.md
sources.yaml
claims.yaml
manuscript.yaml
workflow.yaml
runs/
current/
state.yaml
artifact-registry.json
decision-ledger.jsonl
gate-ledger.jsonl
handoff.md
changes/
<change-id>/
proposal.md
contract-patch.yaml
tasks.md
draft-patches/
<patch-id>.json
This layout is directional, not yet a frozen implementation contract. If code or specs establish a newer layout, follow the code/specs and update this file.
Contracts describe research intent, constraints, state, and accepted decisions. Artifacts are drafts, reports, reviews, integrity checks, synthesis outputs, figures, tables, and generated files.
Do not make a draft or review report the source of truth for research intent. Register artifacts by path, hash, type, producer, stage, and verification state.
Claims must have stable IDs, support, strength, limits, and wording constraints. Writing and review skills should refer to claim IDs instead of inferring allowed claims from prose.
High-impact changes to claim scope, strength, contribution, or causal language require a proposed contract change and human decision.
Human decisions are part of the runtime record, not chat residue.
Changing research questions, target output, contribution scope, manuscript structure, review-response strategy, or accepted limitations must be represented in a decision ledger or proposed change.
The ARSU pipeline stage graph belongs to the ARSU skill pack. ResearchSpec core should provide generic run-state and gate-ledger contracts, not hard-code one paper pipeline into every project.
Gate logic should check state, blockers, required artifacts, schema validity, hashes, and pending decisions. It should not replace LLM or human academic judgment.
LLMs produce semantic payloads and writing. Scripts validate, register, hash, render, and gate deterministic state.
Follow the OpenSpec pattern: current specs are the truth; proposed changes live separately until accepted.
Do not silently edit core specs for high-impact changes. Create a reviewable proposal or contract patch.
Use this as the default mapping when designing the integration:
- ARSU RQ Brief ->
specs/project.mdand artifact registry - ARSU Bibliography / literature corpus ->
specs/sources.yaml - ARSU Synthesis Report -> artifact registry; proposed claim/spec changes when it changes research meaning
- ARSU Paper Draft -> artifact registry plus
specs/manuscript.yaml - ARSU Integrity Report -> gate ledger and artifact registry
- ARSU Review Report / Revision Roadmap -> artifact registry plus proposed changes or draft patches
- ARSU Response to Reviewers -> artifact registry plus decision/gate ledger
- ARSU Material Passport -> split into artifact registry, state, decision ledger, and gate ledger rather than copying one monolithic object by default
- ARSU Revision Patch ->
draft-patches/<patch-id>.json, preserving the useful block/hash discipline
When absorbing or maintaining ARSU:
- Prefer converter-owned outputs over hand-edited generated files.
- Keep independent skill-group boundaries clear.
- Do not reintroduce Claude Code, Codex, or other platform runtime assumptions into universal ResearchSpec contracts.
- Preserve upstream ARS content unless a deliberate ResearchSpec normalization rule is being implemented.
- If a deterministic script can validate or render a contract, do not ask the LLM to hand-build the authoritative machine artifact.
- If a semantic decision is required, do not hide it in a script or converter rule.
Keep the implementation pragmatic and repo-local.
Prefer:
- TypeScript for the ResearchSpec CLI/framework;
- converter-generated skill artifacts;
- Markdown for human-facing guidance;
- YAML/JSON/JSONL for machine-facing contracts and ledgers;
- explicit schemas and small validators where downstream skills depend on stable structure;
- minimal dependencies.
Avoid unless clearly justified:
- runtime LLM dependencies;
- hidden global state;
- platform-specific skill behavior in core contracts;
- broad semantic cleanup of ARSU upstream content;
- large infrastructure before the contract model is stable.
Do not overwrite user content by default.
For generated skill files:
- safe to create if missing;
- skip or report drift if modified unless
--forceor an explicit regeneration workflow is used; - include generated markers where appropriate.
For research contract files:
- create during init or migration;
- do not overwrite during update;
- only overwrite with explicit
--forceor accepted contract patches.
When implementing features:
- First determine whether the change affects ResearchSpec core contracts, ARSU conversion, ARSU-derived skill content, or tool adapters.
- If the change affects contracts, design DTO/schema/interface boundaries before implementation.
- Preserve ARSU upstream content unless the task explicitly asks for ResearchSpec normalization.
- Keep human review in the loop for high-impact research changes.
- Keep adapters simple and file-based.
- Add tests around generated file trees, schema validation, drift detection, contract patch behavior, and ARSU mapping rules when those surfaces change.
- Do not introduce runtime LLM dependencies.
A change is acceptable when:
- it supports the new ARSU-serving ResearchSpec direction;
- it keeps contract and artifact boundaries clear;
- it preserves agent-neutral behavior;
- it avoids unrequested current-only cleanup of ARSU-derived content;
- it works through files and explicit schemas rather than hidden state;
- it keeps human decisions explicit for high-impact research changes;
- it improves the ability to absorb, maintain, or run ARSU-derived skills through ResearchSpec contracts.
Treat the packaged CLI and installed Agent surface as the acceptance boundary for the canonical user model.
- Exercise authoritative workflow mutations through a fresh packaged CLI process. Test harnesses may create producer candidates only at paths returned by instructions; they must not edit state, registries, receipts, Gate ledgers, or Decision ledgers directly.
- For plan-bound writes, preview and execution must use the same action basis, semantic input, and plan hash.
- Test stable user-observable journeys and structured contracts. Do not require exact documentation headings, archived change identifiers, prose wording, diagram labels, source-code layout, or field order unless one is an explicit public contract.
- A failing journey must be repaired in its owning implementation. Do not weaken the user model or add a test-only authority bypass to make acceptance pass.