Imported from cedarwud/beamHO-bench (
AGENTS.md). Install upstream withnpx skills add cedarwud/beamHO-bench. Copyright stays with the author.
beamHO-bench Agent Rules
This file is the repo-local workflow entrypoint for agents working inside beamHO-bench/.
0. Current Repo Role
beamHO-benchis currently retained as a donor/reference project inside the broaderpapersworkspace.- It is not the active primary implementation target;
ntn-sim-corenow holds that role. - Only use this workflow when the task explicitly requires:
- donor inspection
- parity lookup
- selective backport
- direct fixes inside
beamHO-bench
- Do not let
beamHO-benchlocal conventions override the active authority set forntn-sim-core.
1. Authority Order
When instructions conflict, use this order:
PROJECT_CONSTRAINTS.md- active visual acceptance doc:
docs/zh-TW/07-observer-sky-visual-acceptance.mdfor observer-sky frontend work
- current active pending SDD from:
sdd/completed/beamHO-bench-implementation-status.mdsdd/pending/README.md
- closure-tracked pending SDDs only for already-completed lower-layer context
- package scripts and validation docs:
package.jsondocs/zh-TW/04-testing-and-validation.md
2. Working Rules
- Check
git status --shortbefore editing. - Do not overwrite or revert unrelated local changes.
- If there is an active pending SDD, implement against that SDD first.
- Do not open a new SDD unless:
- acceptance criteria materially changed, or
- the current active pending SDD is no longer the correct scope container.
- Do not mark frontend work complete from proxy metrics alone.
- Keep
sdd/pending/limited to active pending scope and keep long-term items insdd/backlog/; do not mix the two roles. - Preserve the project’s research default:
full fidelityis the default pathsimplifiedis allowed only as an explicitly labeled non-default mode
- Do not introduce ungrounded physical/visual parameters. If orbit, pass-time, projection, altitude-scaling, or similar behavior lacks paper or orbital-mechanics support, stop and surface the gap.
- Split oversized files by responsibility, not by arbitrary line chopping:
<= 500lines is normal501-650lines is warning territory> 650lines should be treated as a required split unless there is a strong reason not to
2.1 Skill Routing
Use the project skill docs under agent-skills/ as the first workflow reference when the task matches:
agent-skills/beamho-sdd-workflow/SKILL.md- active pending SDD work, implementation flow, lifecycle-sync
agent-skills/beamho-validation-closure/SKILL.md- validation scope, closure readiness, lifecycle closure
agent-skills/beamho-observer-sky-frontend/SKILL.md- observer-sky rendering, composition, continuity, screen-space acceptance
agent-skills/beamho-traceability-profile-edit/SKILL.md- profile JSON,
.sources.json,paper-sources.json,ASSUME-*, research-parameter consistency
- profile JSON,
3. Frontend Acceptance Rule
For observer-sky / satellite-visual work:
lint,test:sim,build, andvalidate:stageare necessary but not sufficient.- The result must also satisfy:
docs/zh-TW/07-observer-sky-visual-acceptance.md
- Use browser-based inspection evidence when validating visual behavior:
- Playwright snapshot / screenshot evidence is preferred for visual regressions and closure checks.
- If the screen still reads as:
- a cluster near center-top,
- a pack of satellites swapping positions,
- or arbitrary jump/replacement motion, the work is not complete even if tests pass.
- Manual acceptance must be reasoned against all three supported observer-sky modes:
Synthetic OrbitStarlink TLEOneWeb TLE
- Do not let the visible display set collapse into the HO candidate set when the physical above-horizon pool is broader.
- A passing observer-sky result must still read as:
rise -> pass -> setelevation < 0hidden- low-elevation non-serving satellites as ghost/non-active
- active satellites as visually distinguishable serving candidates
4. SDD Lifecycle
- Active pending truth lives in:
sdd/completed/beamHO-bench-implementation-status.md
sdd/pending/README.mdmust match the same lifecycle state.sdd/README.mdmust also stay synchronized when pending/completed package listings change.- Pending work is not closure-tracked until:
- implementation exists,
- validation passes,
- lifecycle docs are synchronized,
- and visual/manual acceptance is satisfied when the package changes frontend behavior.
- Do not convert an SDD to closure-tracked early.
- Completed pending work should have corresponding closure evidence under
sdd/completed/*-closure.mdor the implemented-spec package already referenced by the lifecycle docs.
5. Validation Rules
Run at least:
npm run lintnpm run test:simnpm run buildnpm run validate:stage
Frontend-only copy or lifecycle-doc changes may skip full validation if no code path changed, but the response must say validation was skipped.
During iteration, targeted checks such as node scripts/run-sim-tests.mjs or npx vitest are acceptable for narrowing failures, but they do not replace the final required validation set above when code behavior changes.
Use these additional commands deliberately:
npm run validate:daily- local iteration shortcut only; never a substitute for
validate:stage
- local iteration shortcut only; never a substitute for
npm run validate:val-suite:all- use when full validation-scope coverage is needed beyond core scope
npm run validate:nightly- use for release-grade/full-scope verification
npm run bench:cross-mode- use when touching cross-mode benchmark workflow or reproducibility contracts
npm run bundle:repro-v1- use when touching repro-bundle packaging/output contracts
npm run rerun:contract- use when touching rerun/replay contract behavior The following changes should be treated as stage-gate-required by default:
- KPI or handover logic
- scheduler, scenario, or runtime behavior
- profile/schema/source-map/
ASSUME-*changes - TLE / real-trace / propagation changes
- major refactors or responsibility-preserving file splits
When
validate:stageis part of the task, the expected fresh artifacts include: dist/sim-test-summary.jsondist/validation-suite.jsondist/validation-suite.csvdist/validation-gate-summary.jsondist/runtime-parameter-audit-summary.json
6. Module Ownership
Use these boundaries:
src/sim/**- runtime, handover, scheduler, KPI, scenario state
src/viz/**- projection, display selection, continuity, composition, screen-space checks
src/components/scene/**- scene wiring and view-mode integration
src/components/sim/**- renderer-only display components, HUD, control surfaces
Do not push view-only state back into runtime contracts unless it is explicitly justified and traceable.
7. Traceability Rules
- No hidden KPI-impacting constants.
- Any new
ASSUME-*must be registered and validation-covered in the same change set. - Profile/source map changes must keep traceability intact.
- If a profile or source-trace contract changes, update the synchronized surfaces together as needed:
src/config/paper-profiles/<profile>.jsonsrc/config/paper-profiles/<profile>.sources.jsonsrc/config/references/paper-sources.jsonsrc/config/paper-profiles/paper-profile.schema.jsonsrc/config/research-parameters/catalog.tssrc/config/research-parameters/consistency.ts
- Every new
sourceIdmust exist insrc/config/references/paper-sources.json. - Do not change profile values without updating the corresponding
.sources.jsonjustification when the source basis changes.
8. Commit Discipline
- Commit at meaningful delivery boundaries.
- Do not batch unrelated work into one commit.
- When reporting progress, state:
- what delivery was completed,
- what files changed,
- what validation ran,
- what remains open.
9. Local Skill Source
Project-specific reusable skill sources live under:
agent-skills/
Current skills:
agent-skills/beamho-sdd-workflow/SKILL.mdagent-skills/beamho-validation-closure/SKILL.mdagent-skills/beamho-traceability-profile-edit/SKILL.mdagent-skills/beamho-observer-sky-frontend/SKILL.md