Copy CODING_CONSTITUTION.md from the AgentStore docs/development path and split the seven always-on .mdc files from that exact text.
407 lines
5.2 KiB
Plaintext
407 lines
5.2 KiB
Plaintext
---
|
|
alwaysApply: true
|
|
---
|
|
|
|
# 7. DETERMINISTIC CORE
|
|
|
|
The verification core must be deterministic.
|
|
|
|
For the same:
|
|
|
|
```text
|
|
input
|
|
+
|
|
configuration
|
|
+
|
|
source data
|
|
```
|
|
|
|
Periscope must produce the same:
|
|
|
|
```text
|
|
model
|
|
calculations
|
|
findings
|
|
```
|
|
|
|
Do not make deterministic verification dependent on:
|
|
|
|
* LLM output;
|
|
* prompts;
|
|
* randomness;
|
|
* execution order;
|
|
* hidden state;
|
|
* uncontrolled external state.
|
|
|
|
---
|
|
|
|
# 8. LLM ROLE
|
|
|
|
LLMs may be used for:
|
|
|
|
* extraction;
|
|
* classification;
|
|
* datasheet interpretation;
|
|
* explanation;
|
|
* hypothesis generation;
|
|
* assistance.
|
|
|
|
LLMs must not be the authoritative deterministic verification engine.
|
|
|
|
The intended architecture is:
|
|
|
|
```text
|
|
SOURCE
|
|
↓
|
|
STRUCTURED REQUIREMENT
|
|
↓
|
|
DETERMINISTIC ANALYZER
|
|
↓
|
|
FINDING
|
|
↓
|
|
OPTIONAL LLM EXPLANATION
|
|
```
|
|
|
|
Not:
|
|
|
|
```text
|
|
SOURCE
|
|
↓
|
|
LLM
|
|
↓
|
|
probably wrong
|
|
```
|
|
|
|
---
|
|
|
|
# 9. EVIDENCE BEFORE CONCLUSION
|
|
|
|
Every engineering conclusion must be traceable to evidence.
|
|
|
|
Where applicable, preserve:
|
|
|
|
```text
|
|
observed fact
|
|
requirement
|
|
source
|
|
calculation
|
|
assumption
|
|
conclusion
|
|
confidence
|
|
severity
|
|
```
|
|
|
|
Do not silently transform assumptions into facts.
|
|
|
|
---
|
|
|
|
# 10. REQUIREMENT STRENGTH
|
|
|
|
Requirements must preserve their strength.
|
|
|
|
Use:
|
|
|
|
```text
|
|
MANDATORY
|
|
RECOMMENDED
|
|
TYPICAL
|
|
EXAMPLE
|
|
ENGINEERING_INFERENCE
|
|
```
|
|
|
|
Do not convert:
|
|
|
|
```text
|
|
RECOMMENDED
|
|
```
|
|
|
|
into:
|
|
|
|
```text
|
|
MANDATORY
|
|
```
|
|
|
|
Do not convert an example into an absolute rule.
|
|
|
|
Do not convert an engineering inference into documented manufacturer information.
|
|
|
|
---
|
|
|
|
# 11. SEVERITY AND CONFIDENCE ARE INDEPENDENT
|
|
|
|
A finding must be able to represent independent:
|
|
|
|
```text
|
|
severity
|
|
confidence
|
|
```
|
|
|
|
Examples that are valid:
|
|
|
|
```text
|
|
ERROR + LOW confidence
|
|
RISK + HIGH confidence
|
|
```
|
|
|
|
Do not use confidence as a substitute for severity.
|
|
|
|
---
|
|
|
|
# 12. INSUFFICIENT EVIDENCE
|
|
|
|
If the available information is insufficient to establish a conclusion:
|
|
|
|
```text
|
|
INSUFFICIENT_EVIDENCE
|
|
```
|
|
|
|
must be used.
|
|
|
|
Never invent missing engineering information.
|
|
|
|
Never invent:
|
|
|
|
* electrical limits;
|
|
* timing values;
|
|
* pin functions;
|
|
* voltages;
|
|
* currents;
|
|
* tolerances;
|
|
* PCB rules;
|
|
* thermal limits;
|
|
* datasheet requirements.
|
|
|
|
Missing evidence is not permission to guess.
|
|
|
|
---
|
|
|
|
# 13. SEMANTIC MODEL FIRST
|
|
|
|
Periscope must preserve domain semantics.
|
|
|
|
At minimum, distinguish concepts such as:
|
|
|
|
```text
|
|
Project
|
|
Component
|
|
Pin
|
|
Footprint
|
|
Pad
|
|
Net
|
|
Via
|
|
Track
|
|
Zone
|
|
PowerRail
|
|
SignalGroup
|
|
TimingEvent
|
|
Requirement
|
|
Constraint
|
|
DesignIntent
|
|
Evidence
|
|
Finding
|
|
```
|
|
|
|
Do not collapse semantically different physical objects into one generic object merely because they share coordinates, nets, or attributes.
|
|
|
|
---
|
|
|
|
# 14. SEMANTIC IDENTITY MUST SURVIVE TRANSFORMATIONS
|
|
|
|
A transformation must preserve the semantic identity of objects.
|
|
|
|
For example:
|
|
|
|
```text
|
|
PCB Via
|
|
```
|
|
|
|
must never become:
|
|
|
|
```text
|
|
Component Pad
|
|
```
|
|
|
|
merely because:
|
|
|
|
* it is close to a footprint;
|
|
* it is inside a footprint area;
|
|
* it is connected to GND;
|
|
* it shares a net;
|
|
* it has coordinates similar to a pad.
|
|
|
|
Similarly:
|
|
|
|
```text
|
|
Pad ≠ Via
|
|
Track ≠ Via
|
|
Zone ≠ Pad
|
|
Component Pin ≠ PCB Via
|
|
```
|
|
|
|
This is a fundamental Periscope rule.
|
|
|
|
---
|
|
|
|
# 15. ROOT CAUSE OVER SYMPTOM
|
|
|
|
When a false positive or incorrect result is discovered:
|
|
|
|
Do not simply suppress the finding.
|
|
|
|
Determine where the representation first becomes incorrect.
|
|
|
|
Example:
|
|
|
|
```text
|
|
PCB
|
|
↓
|
|
parser
|
|
↓
|
|
incorrect model
|
|
↓
|
|
correct analyzer operating on incorrect model
|
|
↓
|
|
incorrect finding
|
|
```
|
|
|
|
The fix belongs in the model/parser boundary, not necessarily in the analyzer.
|
|
|
|
Always investigate the complete chain:
|
|
|
|
```text
|
|
source
|
|
→ parser
|
|
→ normalized representation
|
|
→ semantic model
|
|
→ analyzer
|
|
→ finding
|
|
→ report
|
|
```
|
|
|
|
---
|
|
|
|
# 16. NO COMPONENT-SPECIFIC HACKS
|
|
|
|
Do not fix architecture problems with:
|
|
|
|
```text
|
|
if component == U1
|
|
```
|
|
|
|
or:
|
|
|
|
```text
|
|
if footprint == X
|
|
```
|
|
|
|
or:
|
|
|
|
```text
|
|
if net == GND
|
|
```
|
|
|
|
or hard-coded corrections such as:
|
|
|
|
```text
|
|
subtract N
|
|
ignore N
|
|
force expected count
|
|
```
|
|
|
|
unless the condition represents a genuine documented engineering rule.
|
|
|
|
A bug in generic PCB semantics must receive a generic semantic fix.
|
|
|
|
---
|
|
|
|
# 17. PHYSICAL SEMANTICS
|
|
|
|
Periscope is an electronic design verification system.
|
|
|
|
Its internal model must reflect physical reality.
|
|
|
|
Geometric proximity does not establish semantic identity.
|
|
|
|
For example:
|
|
|
|
```text
|
|
Via located inside footprint
|
|
```
|
|
|
|
does not imply:
|
|
|
|
```text
|
|
Via belongs to component as a pad
|
|
```
|
|
|
|
unless the PCB data model explicitly establishes that relationship.
|
|
|
|
Do not infer component relationships solely from proximity when stronger source information exists.
|
|
|
|
---
|
|
|
|
# 18. UNITS MUST BE EXPLICIT
|
|
|
|
Use explicit units.
|
|
|
|
Prefer:
|
|
|
|
```text
|
|
width_mm
|
|
delay_ns
|
|
frequency_hz
|
|
voltage_v
|
|
current_a
|
|
temperature_c
|
|
```
|
|
|
|
over ambiguous variables such as:
|
|
|
|
```text
|
|
width
|
|
delay
|
|
value
|
|
limit
|
|
```
|
|
|
|
when unit ambiguity is possible.
|
|
|
|
Never rely on undocumented implicit units.
|
|
|
|
---
|
|
|
|
# 19. NAMED CONSTANTS
|
|
|
|
Avoid magic numbers.
|
|
|
|
Prefer:
|
|
|
|
```text
|
|
MIN_SUPPLY_V
|
|
MAX_TRACE_LENGTH_MM
|
|
DEFAULT_SPI_CLOCK_HZ
|
|
```
|
|
|
|
over unexplained numeric literals.
|
|
|
|
Engineering constants must have traceable sources where appropriate.
|
|
|
|
---
|
|
|
|
# 20. ERROR CATEGORIES
|
|
|
|
Distinguish:
|
|
|
|
```text
|
|
tool failure
|
|
data failure
|
|
analysis result
|
|
insufficient evidence
|
|
engineering violation
|
|
```
|
|
|
|
Do not collapse fundamentally different failure modes into one generic error.
|
|
|
|
---
|
|
|