modify docu
This commit is contained in:
@@ -30,7 +30,7 @@ class BuildTestExecutorAgentConfigTests(unittest.TestCase):
|
||||
"Do not edit tests.",
|
||||
"Do not edit CMake.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
@@ -32,7 +32,7 @@ class CoordinatorAgentConfigTests(unittest.TestCase):
|
||||
"Do not edit CMake.",
|
||||
"Do not run build/test validation.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not automatically spawn subagents.",
|
||||
"Do not approve release readiness independently.",
|
||||
):
|
||||
|
||||
@@ -32,7 +32,7 @@ class CorrectionAgentConfigTests(unittest.TestCase):
|
||||
"Do not change reference artifacts",
|
||||
"Do not change tolerance policies",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
@@ -13,6 +13,48 @@ COMMON_SECTIONS = (
|
||||
"## Handoff",
|
||||
)
|
||||
|
||||
ACTIVE_CONTRACT_FILES = (
|
||||
ROOT / "AGENTS.md",
|
||||
ROOT / "docs" / "ProjectInitialPlanNote.md",
|
||||
ROOT / "docs" / "PRD.md",
|
||||
ROOT / "docs" / "ARCHITECTURE.md",
|
||||
ROOT / "docs" / "ADR.md",
|
||||
ROOT / "docs" / "SOLVER_AGENT_DESIGN.md",
|
||||
ROOT / "docs" / "SOLVER_SKILL_DESIGN.md",
|
||||
ROOT / "docs" / "reference-models" / "README.md",
|
||||
ROOT / "docs" / "reference-verifications" / "README.md",
|
||||
ROOT / "docs" / "io-definitions" / "README.md",
|
||||
ROOT / "docs" / "implementation-plans" / "README.md",
|
||||
ROOT / "docs" / "physics-evaluations" / "README.md",
|
||||
ROOT / "docs" / "requirements" / "README.md",
|
||||
ROOT / ".codex" / "agents" / "reference-model-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "reference-verification-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "io-definition-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "implementation-planning-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "implementation-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "physics-evaluation-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "release-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "requirement-agent.toml",
|
||||
ROOT / ".codex" / "agents" / "coordinator-agent.toml",
|
||||
ROOT / ".codex" / "skills" / "fesa-reference-models" / "SKILL.md",
|
||||
ROOT / ".codex" / "skills" / "fesa-reference-comparison" / "SKILL.md",
|
||||
ROOT / ".codex" / "skills" / "fesa-io-contract" / "SKILL.md",
|
||||
ROOT / ".codex" / "skills" / "fesa-physics-sanity" / "SKILL.md",
|
||||
ROOT / ".codex" / "skills" / "fesa-cpp-msvc-tdd" / "SKILL.md",
|
||||
ROOT / ".codex" / "skills" / "fesa-release-readiness" / "SKILL.md",
|
||||
ROOT / ".codex" / "skills" / "fesa-requirements-baseline" / "SKILL.md",
|
||||
)
|
||||
|
||||
STALE_REFERENCE_CONTRACT_PHRASES = (
|
||||
"reference" ".h5",
|
||||
"stored reference " "HDF5",
|
||||
"reference " "HDF5 artifact",
|
||||
"results.h5 and " "reference" ".h5",
|
||||
"results.h5` and `reference" ".h5",
|
||||
"derived from reference" ".h5",
|
||||
"references/" "<feature-id>/<model-id>/",
|
||||
)
|
||||
|
||||
|
||||
SKILLS = {
|
||||
"fesa-requirements-baseline": {
|
||||
@@ -97,7 +139,7 @@ SKILLS = {
|
||||
"FESA solver",
|
||||
"Abaqus .inp",
|
||||
"HDF5",
|
||||
"CSV view",
|
||||
"CSV",
|
||||
"I/O",
|
||||
),
|
||||
"body_terms": (
|
||||
@@ -105,9 +147,9 @@ SKILLS = {
|
||||
"Abaqus Input Scope",
|
||||
"Internal Model Contract",
|
||||
"Output HDF5 Schema",
|
||||
"Deterministic CSV View Schemas",
|
||||
"FESA HDF5 to Reference CSV Comparison Schema",
|
||||
"results.h5",
|
||||
"csv/displacements.csv",
|
||||
"reference/<model-id>/",
|
||||
"*NODE",
|
||||
"*ELEMENT",
|
||||
"*MATERIAL",
|
||||
@@ -122,20 +164,19 @@ SKILLS = {
|
||||
"FESA",
|
||||
"reference model",
|
||||
"Abaqus input",
|
||||
"artifact",
|
||||
"CSV",
|
||||
),
|
||||
"body_terms": (
|
||||
"docs/reference-models/<feature-id>-reference-models.md",
|
||||
"references/<feature-id>/<model-id>/",
|
||||
"reference/<model-id>/",
|
||||
"model.inp",
|
||||
"metadata.json",
|
||||
"reference.h5",
|
||||
"csv/displacements.csv",
|
||||
"csv/reactions.csv",
|
||||
"csv/element_forces.csv",
|
||||
"csv/stresses.csv",
|
||||
"<model-id>_displacements.csv",
|
||||
"<model-id>_reactions.csv",
|
||||
"<model-id>_internalforces.csv",
|
||||
"<model-id>_stresses.csv",
|
||||
"Coverage Matrix",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
),
|
||||
},
|
||||
"fesa-cpp-msvc-tdd": {
|
||||
@@ -161,7 +202,7 @@ SKILLS = {
|
||||
"Use when",
|
||||
"FESA solver",
|
||||
"HDF5",
|
||||
"CSV view",
|
||||
"reference CSV",
|
||||
"tolerance",
|
||||
"comparison",
|
||||
),
|
||||
@@ -169,8 +210,12 @@ SKILLS = {
|
||||
"docs/reference-verifications/<feature-id>-reference-verification.md",
|
||||
"ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT",
|
||||
"results.h5",
|
||||
"reference.h5",
|
||||
"deterministic CSV view",
|
||||
"Abaqus reference CSV",
|
||||
"reference/<model-id>/",
|
||||
"<model-id>_displacements.csv",
|
||||
"<model-id>_reactions.csv",
|
||||
"<model-id>_internalforces.csv",
|
||||
"<model-id>_stresses.csv",
|
||||
"max absolute error",
|
||||
"max relative error",
|
||||
"RMS error",
|
||||
@@ -287,6 +332,13 @@ class FesaSolverSkillTests(unittest.TestCase):
|
||||
self.assertIn("default_prompt:", text)
|
||||
self.assertIn(f"${skill_name}", text)
|
||||
|
||||
def test_active_contracts_do_not_require_reference_hdf5(self):
|
||||
for path in ACTIVE_CONTRACT_FILES:
|
||||
with self.subTest(path=str(path.relative_to(ROOT))):
|
||||
text = path.read_text(encoding="utf-8")
|
||||
for stale_phrase in STALE_REFERENCE_CONTRACT_PHRASES:
|
||||
self.assertNotIn(stale_phrase, text)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -29,7 +29,7 @@ class FormulationAgentConfigTests(unittest.TestCase):
|
||||
"Do not implement code.",
|
||||
"Do not design C++ APIs",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
"docs/SOLVER_AGENT_DESIGN.md",
|
||||
"docs/requirements/<feature-id>.md",
|
||||
|
||||
@@ -41,7 +41,7 @@ class ImplementationAgentConfigTests(unittest.TestCase):
|
||||
|
||||
for required_text in (
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
"Do not change requirements",
|
||||
"Do not change formulations",
|
||||
|
||||
@@ -31,7 +31,7 @@ class ImplementationPlanningAgentConfigTests(unittest.TestCase):
|
||||
"Do not edit CMake.",
|
||||
"Do not run CMake/CTest.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not compare solver results.",
|
||||
"Do not approve release readiness.",
|
||||
):
|
||||
|
||||
@@ -29,7 +29,7 @@ class IoDefinitionAgentConfigTests(unittest.TestCase):
|
||||
"Do not implement parsers.",
|
||||
"Do not design C++ APIs",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
"Do not claim full Abaqus compatibility",
|
||||
):
|
||||
@@ -44,7 +44,7 @@ class IoDefinitionAgentConfigTests(unittest.TestCase):
|
||||
"Model data and history data",
|
||||
"supported Abaqus keyword subset",
|
||||
"HDF5 result schema",
|
||||
"deterministic CSV view schemas",
|
||||
"reference CSV comparison row schema",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
@@ -58,7 +58,7 @@ class IoDefinitionAgentConfigTests(unittest.TestCase):
|
||||
"History Data Mapping",
|
||||
"Internal Model Contract",
|
||||
"Output HDF5 Schema",
|
||||
"Deterministic CSV View Schemas",
|
||||
"FESA HDF5 to Reference CSV Comparison Schema",
|
||||
"Validation Rules",
|
||||
"Downstream Handoff",
|
||||
):
|
||||
@@ -89,7 +89,7 @@ class IoDefinitionAgentConfigTests(unittest.TestCase):
|
||||
"History Data Mapping",
|
||||
"Internal Model Contract",
|
||||
"Output HDF5 Schema",
|
||||
"Deterministic CSV View Schemas",
|
||||
"FESA HDF5 to Reference CSV Comparison Schema",
|
||||
"Validation Rules",
|
||||
"Downstream Handoff",
|
||||
"FESA 솔버의 입력 파일은 Abaqus input file이다.",
|
||||
|
||||
@@ -30,7 +30,7 @@ class NumericalReviewAgentConfigTests(unittest.TestCase):
|
||||
"Do not edit formulations directly.",
|
||||
"Do not design C++ APIs",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
"docs/SOLVER_AGENT_DESIGN.md",
|
||||
"docs/formulations/<feature-id>-formulation.md",
|
||||
|
||||
@@ -30,7 +30,7 @@ class PhysicsEvaluationAgentConfigTests(unittest.TestCase):
|
||||
"Do not edit tests.",
|
||||
"Do not edit CMake.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not change tolerances.",
|
||||
"Do not approve release readiness.",
|
||||
):
|
||||
@@ -56,7 +56,7 @@ class PhysicsEvaluationAgentConfigTests(unittest.TestCase):
|
||||
|
||||
for required_text in (
|
||||
"HDF5",
|
||||
"deterministic CSV views",
|
||||
"Abaqus reference CSV files",
|
||||
"Input Evidence",
|
||||
"Physics Checks",
|
||||
"Failure Classification",
|
||||
|
||||
@@ -30,7 +30,7 @@ class ReferenceModelAgentConfigTests(unittest.TestCase):
|
||||
"Do not implement parsers.",
|
||||
"Do not design C++ APIs",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not compare solver results.",
|
||||
"Do not approve release readiness.",
|
||||
):
|
||||
@@ -41,17 +41,19 @@ class ReferenceModelAgentConfigTests(unittest.TestCase):
|
||||
|
||||
for required_text in (
|
||||
"FESA reference models use Abaqus input files.",
|
||||
"references/<feature-id>/<model-id>/",
|
||||
"reference/<model-id>/",
|
||||
"model.inp",
|
||||
"metadata.json",
|
||||
"reference.h5",
|
||||
"csv/displacements.csv",
|
||||
"csv/reactions.csv",
|
||||
"csv/element_forces.csv",
|
||||
"csv/stresses.csv",
|
||||
"<model-id>_displacements.csv",
|
||||
"<model-id>_reactions.csv",
|
||||
"<model-id>_internalforces.csv",
|
||||
"<model-id>_stresses.csv",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
self.assertNotIn("reference" ".h5", instructions)
|
||||
self.assertNotIn("references/" "<feature-id>/<model-id>/", instructions)
|
||||
|
||||
def test_reference_model_agent_instructions_define_output_contract(self):
|
||||
instructions = AGENT_PATH.read_text(encoding="utf-8")
|
||||
|
||||
@@ -61,7 +63,7 @@ class ReferenceModelAgentConfigTests(unittest.TestCase):
|
||||
"Abaqus Input Requirements",
|
||||
"Artifact Bundle Contract",
|
||||
"Metadata JSON Contract",
|
||||
"Reference HDF5 and CSV View Requirements",
|
||||
"Abaqus Reference CSV Requirements",
|
||||
"Coverage Matrix",
|
||||
"Downstream Handoff",
|
||||
):
|
||||
@@ -76,10 +78,10 @@ class ReferenceModelAgentConfigTests(unittest.TestCase):
|
||||
"Abaqus Input Requirements",
|
||||
"Artifact Bundle Contract",
|
||||
"Metadata JSON Contract",
|
||||
"Reference HDF5 and CSV View Requirements",
|
||||
"Abaqus Reference CSV Requirements",
|
||||
"Coverage Matrix",
|
||||
"Downstream Handoff",
|
||||
"references/<feature-id>/<model-id>/",
|
||||
"reference/<model-id>/",
|
||||
):
|
||||
self.assertIn(required_text, guide)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class ReferenceVerificationAgentConfigTests(unittest.TestCase):
|
||||
|
||||
self.assertEqual(data["name"], "reference-verification-agent")
|
||||
self.assertIn("HDF5", data["description"])
|
||||
self.assertIn("deterministic CSV views", data["description"])
|
||||
self.assertIn("Abaqus reference CSV", data["description"])
|
||||
self.assertEqual(data["sandbox_mode"], "workspace-write")
|
||||
self.assertEqual(data["model_reasoning_effort"], "extra high")
|
||||
self.assertIn("developer_instructions", data)
|
||||
@@ -31,7 +31,7 @@ class ReferenceVerificationAgentConfigTests(unittest.TestCase):
|
||||
"Do not edit tests.",
|
||||
"Do not edit CMake.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not approve release readiness.",
|
||||
"Do not change tolerance policies.",
|
||||
):
|
||||
@@ -42,16 +42,19 @@ class ReferenceVerificationAgentConfigTests(unittest.TestCase):
|
||||
|
||||
for required_text in (
|
||||
"results.h5",
|
||||
"reference.h5",
|
||||
"csv/displacements.csv",
|
||||
"csv/reactions.csv",
|
||||
"csv/element_forces.csv",
|
||||
"csv/stresses.csv",
|
||||
"Abaqus reference CSV",
|
||||
"reference/<model-id>/",
|
||||
"<model-id>_displacements.csv",
|
||||
"<model-id>_reactions.csv",
|
||||
"<model-id>_internalforces.csv",
|
||||
"<model-id>_stresses.csv",
|
||||
"metadata.json",
|
||||
"references/<feature-id>/<model-id>/",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
self.assertNotIn("reference" ".h5", instructions)
|
||||
self.assertNotIn("stored reference " "HDF5", instructions)
|
||||
|
||||
def test_reference_verification_agent_instructions_define_output_contract(self):
|
||||
instructions = AGENT_PATH.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ class ReleaseAgentConfigTests(unittest.TestCase):
|
||||
"Do not change reference artifacts",
|
||||
"Do not change tolerance policies",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Do not override failed or missing upstream gates.",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
@@ -29,10 +29,10 @@ class RequirementAgentConfigTests(unittest.TestCase):
|
||||
"Do not implement code.",
|
||||
"Do not write finite element formulations.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not create reference HDF5 outputs or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"Requirement Verification Matrix",
|
||||
"docs/SOLVER_AGENT_DESIGN.md",
|
||||
"references/<feature>",
|
||||
"reference/<model-id>/",
|
||||
):
|
||||
self.assertIn(required_text, instructions)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ class ResearchAgentConfigTests(unittest.TestCase):
|
||||
"Do not implement code.",
|
||||
"Do not finalize FEM formulations.",
|
||||
"Do not run Abaqus, Nastran, or any reference solver.",
|
||||
"Do not generate reference HDF5 files or deterministic CSV views.",
|
||||
"Do not generate or modify Abaqus reference CSV files.",
|
||||
"docs/SOLVER_AGENT_DESIGN.md",
|
||||
"docs/requirements/<feature-id>.md",
|
||||
"Separate verified facts from inference.",
|
||||
|
||||
Reference in New Issue
Block a user