modify docu

This commit is contained in:
NINI
2026-06-12 01:15:14 +09:00
parent 742f311be1
commit 066b352fcb
62 changed files with 458 additions and 389 deletions
@@ -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)
+1 -1
View File
@@ -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.",
):
+1 -1
View File
@@ -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)
+66 -14
View File
@@ -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()
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -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.",
):
+4 -4
View File
@@ -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",
+12 -10
View File
@@ -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")
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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.",