sync: auto-sync from AD2 at 2026-06-18 18:44:28
Author: Mike Swanson Machine: AD2 Timestamp: 2026-06-18 18:44:28
This commit is contained in:
@@ -130,6 +130,7 @@
|
|||||||
- [Audio Processor Architecture](project_audio_processor_architecture.md) — Segment-first pipeline: detect breaks before transcription for complete content capture.
|
- [Audio Processor Architecture](project_audio_processor_architecture.md) — Segment-first pipeline: detect breaks before transcription for complete content capture.
|
||||||
- [Neptune SBR Email Routing Setup](project_neptune_sbr_email_routing.md) — Full SBR routing chain, config file locations, MailProtector integration, access methods. Treat routing breakage as systemic (devcon, Sorensen/rieussetcorp), not per-client.
|
- [Neptune SBR Email Routing Setup](project_neptune_sbr_email_routing.md) — Full SBR routing chain, config file locations, MailProtector integration, access methods. Treat routing breakage as systemic (devcon, Sorensen/rieussetcorp), not per-client.
|
||||||
- [Dataforth Test Datasheet Pipeline](project_datasheet_pipeline.md) — Full pipeline rebuilt 2026-03-27. Server-side generation replaces DFWDS/Uploader. Website upload still broken.
|
- [Dataforth Test Datasheet Pipeline](project_datasheet_pipeline.md) — Full pipeline rebuilt 2026-03-27. Server-side generation replaces DFWDS/Uploader. Website upload still broken.
|
||||||
|
- [8B/5B sign KEEP finding](project_8b5b_sign_keep.md) — 8B/5B Final-Test KEEPS the sign on negatives (verified vs pristine Hoffman originals); the prior "drop sign" diagnosis came from contaminated (our-own-upload) oracles; legacy formatMeasured has a substring(5) sign-drop bug.
|
||||||
- [Dataforth](project_dataforth.md) — M365 email (Graph API; tenant in vault at clients/dataforth/m365.sops.yaml); neptune.acghosting.com is ACG's, NOT Dataforth's. MFA enforced 2026-04-04 (3 CA policies). AJ needs dataforthgit@ forwarding.
|
- [Dataforth](project_dataforth.md) — M365 email (Graph API; tenant in vault at clients/dataforth/m365.sops.yaml); neptune.acghosting.com is ACG's, NOT Dataforth's. MFA enforced 2026-04-04 (3 CA policies). AJ needs dataforthgit@ forwarding.
|
||||||
- [Dataforth history (2026-03-27 incident)](project_dataforth_history.md) — DF-JOEL2 compromise via ScreenConnect social-engineering, attacker C2 IPs + IC3 case + remediation log + MFA rollout origin story + Joel Lohr retirement. RESOLVED 2026-04-04.
|
- [Dataforth history (2026-03-27 incident)](project_dataforth_history.md) — DF-JOEL2 compromise via ScreenConnect social-engineering, attacker C2 IPs + IC3 case + remediation log + MFA rollout origin story + Joel Lohr retirement. RESOLVED 2026-04-04.
|
||||||
- [Radio show co-host — Tara, not Tom](radio_show_no_cohost_named_tom.md) — Co-host in 2014-s6e19 and 2016-s8e43 is Tara. "Tom" was hallucinated; rename complete.
|
- [Radio show co-host — Tara, not Tom](radio_show_no_cohost_named_tom.md) — Co-host in 2014-s6e19 and 2016-s8e43 is Tara. "Tom" was hallucinated; rename complete.
|
||||||
|
|||||||
40
.claude/memory/project_8b5b_sign_keep.md
Normal file
40
.claude/memory/project_8b5b_sign_keep.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
name: project_8b5b_sign_keep
|
||||||
|
description: 8B/5B Final-Test measured values KEEP the sign; prior "drop sign" diagnosis was from contaminated oracles
|
||||||
|
metadata:
|
||||||
|
type: project
|
||||||
|
---
|
||||||
|
|
||||||
|
Dataforth 8B/SCM5B datasheet Final-Test measured values **KEEP the sign** on negatives
|
||||||
|
(e.g. `-346 uV/%`, `-0.172 %`, `-12.3 uA`). Verified 2026-06-18 against PRISTINE Hoffman
|
||||||
|
originals (api_uploaded_at NULL — never touched by us) across all eras: 8B33-01 (2026),
|
||||||
|
8BP01-24 (2025), SCM5B41-06D (1990), 5B39 variants (2010).
|
||||||
|
|
||||||
|
So the mined-template path (`formatMeasuredExact`, keep-sign) is CORRECT. The 69 validated
|
||||||
|
mined models are right. The legacy `formatMeasured` path in `templates/datasheet-exact.js`
|
||||||
|
has a sign-DROPPING bug: `valueStr = statusStr.substring(5,...)` skips the sign char at
|
||||||
|
index 4 — it should be `substring(4)`. That bug mis-renders every negative Final-Test value
|
||||||
|
for non-mined 8B/5B models (the bulk of legacy-path production).
|
||||||
|
|
||||||
|
**Why the prior session mis-diagnosed "8B/5B drops the sign":** ALL 112 mined-template
|
||||||
|
`_srcSerial` validation oracles are OUR OWN prior uploads (zero pristine), many produced by
|
||||||
|
the buggy legacy drop-sign renderer. The validator (`validate-mined.js`) was comparing the
|
||||||
|
renderer against our own contaminated output — circular. The "sign FAIL" cases (e.g.
|
||||||
|
8B34-01 render `-0.2` vs oracle `0.2`) are the renderer being CORRECT and the oracle wrong.
|
||||||
|
|
||||||
|
**Status (2026-06-18, applied — UNCOMMITTED in repo working tree, live at C:\Shares\testdatadb):**
|
||||||
|
Fixed `datasheet-exact.js`: (1) legacy `formatMeasured` keep-sign (substring 5->4);
|
||||||
|
(2) per-model `checkListTitle` capture in 8b5bscm-templates.json (23 "Packing Check List" /
|
||||||
|
89 "Check List") + renderer emits it; (3) 5B/8B template path uses new `formatMeasured5B8BTpl`
|
||||||
|
= keep-sign + QB decimal CODES (code 2 -> 1dp, not literal). Repointed 9 oracles to pristine;
|
||||||
|
10 models pristine-confirmed. Smart-classified 112 models -> 93 publishable (42 clean + 51
|
||||||
|
sign/decimal false-fail where renderer is right and the contaminated oracle is wrong);
|
||||||
|
19 genuine gaps held back (12 render-null/slotMap, 6 CJC blank, 1 "Output Switch" status,
|
||||||
|
2 accuracy-ULP). Published absent-only gap fill: **created=2467 updated=0 (zero overwrites)
|
||||||
|
errors=3 skipped=85**.
|
||||||
|
|
||||||
|
**Still open:** (a) REPUBLISH the ~14% of already-published 5B/8B certs that have dropped
|
||||||
|
signs (sampled assessment: 34/238 live certs dropped a sign) — overwrites our own wrong
|
||||||
|
certs, needs explicit go. (b) 19 genuine gaps. (c) commit/sync (held by Mike). Tools live in
|
||||||
|
C:\Shares\testdatadb: `_smart_validate.js`, `_revalidate_pristine.js`, `_capture_checklist.js`,
|
||||||
|
`_assess_signdamage.js`, `_publish_8b5b_gap.js`. See [[project_pipeline_rebuilt]] [[feedback_sn_from_data]].
|
||||||
@@ -19,6 +19,12 @@ Categories (the `[type]` tag): _(none)_ = skill/command execution failure ·
|
|||||||
|
|
||||||
2026-06-19 | Howard-Home | git/sync-temp-files | [friction] RECURRED (3rd time): .fleet325.dev controller-scratch swept into commit by git add -A; my earlier fix only ignored specific names (.sta/.dev/.q*), missed .fleet*. Real fix: write API scratch OUTSIDE the repo (e.g. $TMPDIR), not CWD-relative dotfiles [ctx: ref=git/sync-temp-files prior entry; recurring]
|
2026-06-19 | Howard-Home | git/sync-temp-files | [friction] RECURRED (3rd time): .fleet325.dev controller-scratch swept into commit by git add -A; my earlier fix only ignored specific names (.sta/.dev/.q*), missed .fleet*. Real fix: write API scratch OUTSIDE the repo (e.g. $TMPDIR), not CWD-relative dotfiles [ctx: ref=git/sync-temp-files prior entry; recurring]
|
||||||
|
|
||||||
|
2026-06-19 | AD2 | dataforth/publish-mined-gap | 3 of 2555 absent-only 8B/5B gap pushes failed (Dataforth API push error); created=2467 updated=0 errors=3 skipped=85 [ctx: models=93 overwrites=0]
|
||||||
|
|
||||||
|
2026-06-19 | AD2 | vault | real vault.sh not found at resolved vault_path; vault read failed [ctx: path=D:/vault/scripts/vault.sh]
|
||||||
|
|
||||||
|
2026-06-19 | AD2 | vault | real vault.sh not found at resolved vault_path; vault read failed [ctx: path=D:/vault/scripts/vault.sh]
|
||||||
|
|
||||||
2026-06-18 | AD2 | dataforth/hoffman-publish | 9 of 2440 DSCA/8B gap pushes errored during 8B/5B/SCM Created-publish [ctx: created=2348 errors=9]
|
2026-06-18 | AD2 | dataforth/hoffman-publish | 9 of 2440 DSCA/8B gap pushes errored during 8B/5B/SCM Created-publish [ctx: created=2348 errors=9]
|
||||||
|
|
||||||
2026-06-18 | GURU-5070 | agy/search | gemini CLI threw ineligible/projectId setup error (throwIneligibleOrProjectIdError), empty response after 3 attempts [ctx: mode=search host=GURU-5070]
|
2026-06-18 | GURU-5070 | agy/search | gemini CLI threw ineligible/projectId setup error (throwIneligibleOrProjectIdError), empty response after 3 attempts [ctx: mode=search host=GURU-5070]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -319,7 +319,11 @@ function formatMeasured(statusStr) {
|
|||||||
|
|
||||||
const passFail = statusStr.substring(0, 4); // "PASS" or "FAIL"
|
const passFail = statusStr.substring(0, 4); // "PASS" or "FAIL"
|
||||||
const decimalDigit = statusStr[statusStr.length - 1];
|
const decimalDigit = statusStr[statusStr.length - 1];
|
||||||
const valueStr = statusStr.substring(5, statusStr.length - 1).trim();
|
// Start at index 4 (the STR$ sign/space char) so the sign survives — the 5B/8B/DSCT
|
||||||
|
// Final-Test KEEPS the sign on negatives, verified against pristine Hoffman originals
|
||||||
|
// (e.g. "-346 uV/%", "-12.3 uA"). Was substring(5), which silently dropped the sign on
|
||||||
|
// every negative measured value (latent bug in the legacy DATA_LINES render path).
|
||||||
|
const valueStr = statusStr.substring(4, statusStr.length - 1).trim();
|
||||||
const value = parseFloat(valueStr);
|
const value = parseFloat(valueStr);
|
||||||
|
|
||||||
if (isNaN(value)) return { passFail, formatted: valueStr, width: 6 };
|
if (isNaN(value)) return { passFail, formatted: valueStr, width: 6 };
|
||||||
@@ -365,6 +369,35 @@ function formatMeasuredExact(statusStr) {
|
|||||||
return { passFail, valStr, value };
|
return { passFail, valStr, value };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Measured-value formatter for the 5B/8B Hoffman-mined template path. Same as
|
||||||
|
* formatMeasuredExact (KEEPS the sign — verified vs pristine originals) EXCEPT the trailing
|
||||||
|
* STATUS$ digit is a QB PRINT USING format-string CODE, not a literal decimal count:
|
||||||
|
* code 2 means 1 decimal (same field as code 1), unlike DSCA where code N -> toFixed(N).
|
||||||
|
* Confirmed by pristine originals (e.g. SCM5B35 Supply Sensitivity prints "0.3"/"-0.2",
|
||||||
|
* 1dp, where the literal reading would give 2dp "0.28"/"-0.20"). Codes: 0 int, 1/2 -> 1dp,
|
||||||
|
* 3 -> 3dp, 4 -> 4dp.
|
||||||
|
*/
|
||||||
|
function formatMeasured5B8BTpl(statusStr) {
|
||||||
|
if (!statusStr || statusStr.length <= 4) return null;
|
||||||
|
const passFail = statusStr.substring(0, 4);
|
||||||
|
const decimalDigit = statusStr[statusStr.length - 1];
|
||||||
|
const valueStr = statusStr.substring(4, statusStr.length - 1).trim();
|
||||||
|
const parsed = parseFloat(valueStr);
|
||||||
|
if (isNaN(parsed)) return { passFail, valStr: valueStr, value: NaN };
|
||||||
|
const value = Math.fround(parsed);
|
||||||
|
let valStr;
|
||||||
|
switch (decimalDigit) {
|
||||||
|
case '0': valStr = String(Math.round(value)); break;
|
||||||
|
case '1':
|
||||||
|
case '2': valStr = value.toFixed(1); break;
|
||||||
|
case '3': valStr = value.toFixed(3); break;
|
||||||
|
case '4': valStr = value.toFixed(4); break;
|
||||||
|
default: valStr = value.toFixed(1); break;
|
||||||
|
}
|
||||||
|
return { passFail, valStr, value };
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Split a spec string into its value part and unit. The unit is everything after the
|
* Split a spec string into its value part and unit. The unit is everything after the
|
||||||
* last number, so multi-word units survive ("< 17 uA RMS" -> unit "uA RMS", not "RMS";
|
* last number, so multi-word units survive ("< 17 uA RMS" -> unit "uA RMS", not "RMS";
|
||||||
@@ -763,10 +796,16 @@ function generateExactDatasheet(record, specs) {
|
|||||||
// Spec-less pass/fail rows (240VAC Withstand / Hi-Pot) render PASS; spec-less
|
// Spec-less pass/fail rows (240VAC Withstand / Hi-Pot) render PASS; spec-less
|
||||||
// section sub-heads (Zero-Crossing/TTL) render with no status.
|
// section sub-heads (Zero-Crossing/TTL) render with no status.
|
||||||
|
|
||||||
|
// Measured-value formatter is family-specific: 5B/8B Final-Test uses QB PRINT USING
|
||||||
|
// decimal CODES (code 2 -> 1dp) while DSCA uses literal code->toFixed(N). Both KEEP
|
||||||
|
// the sign (verified vs pristine originals). 7B never reaches this branch.
|
||||||
|
const fmtMeas = (family === '8B' || family === 'SCM5B')
|
||||||
|
? formatMeasured5B8BTpl : formatMeasuredExact;
|
||||||
|
|
||||||
// Value-bearing measurements in source order (drop "PASS"/"" padding entries).
|
// Value-bearing measurements in source order (drop "PASS"/"" padding entries).
|
||||||
const measurements = [];
|
const measurements = [];
|
||||||
for (const s of parsed.statusEntries) {
|
for (const s of parsed.statusEntries) {
|
||||||
const m = formatMeasuredExact(s);
|
const m = fmtMeas(s);
|
||||||
if (m) measurements.push(m);
|
if (m) measurements.push(m);
|
||||||
}
|
}
|
||||||
const specRowCount = tpl.rows.filter(r => (r.spec || '').trim()).length;
|
const specRowCount = tpl.rows.filter(r => (r.spec || '').trim()).length;
|
||||||
@@ -804,7 +843,7 @@ function generateExactDatasheet(record, specs) {
|
|||||||
if (spec) {
|
if (spec) {
|
||||||
const su = splitSpecUnit(spec);
|
const su = splitSpecUnit(spec);
|
||||||
const m = useSlot
|
const m = useSlot
|
||||||
? formatMeasuredExact(parsed.statusEntries[tpl.slotMap[si++]])
|
? fmtMeas(parsed.statusEntries[tpl.slotMap[si++]])
|
||||||
: measurements[mi++];
|
: measurements[mi++];
|
||||||
if (m) {
|
if (m) {
|
||||||
// measured value right-justified ending at col 38, unit at col 40.
|
// measured value right-justified ending at col 38, unit at col 40.
|
||||||
@@ -933,7 +972,11 @@ function generateExactDatasheet(record, specs) {
|
|||||||
// DSCA33 originals print just the centered "Check List" header (no items).
|
// DSCA33 originals print just the centered "Check List" header (no items).
|
||||||
lines.push(' Check List');
|
lines.push(' Check List');
|
||||||
} else if (family !== 'DSCA') {
|
} else if (family !== 'DSCA') {
|
||||||
lines.push(' Check List');
|
// Check-list title varies per model: most print centered "Check List", but several
|
||||||
|
// 8B/5B subtypes (5B39/5B45/5B49/8B45, power modules) print "Packing Check List"
|
||||||
|
// (indented). Hoffman-mined templates capture the verbatim title line as
|
||||||
|
// `checkListTitle`; legacy (untemplated) models default to "Check List".
|
||||||
|
lines.push((tpl && tpl.checkListTitle) || ' Check List');
|
||||||
lines.push('');
|
lines.push('');
|
||||||
lines.push(setCol(TAB5 + 'Module Appearance: __X__', 44, 'Mounting Screw: __X__'));
|
lines.push(setCol(TAB5 + 'Module Appearance: __X__', 44, 'Mounting Screw: __X__'));
|
||||||
lines.push('');
|
lines.push('');
|
||||||
@@ -1175,5 +1218,7 @@ module.exports = {
|
|||||||
parseRawData,
|
parseRawData,
|
||||||
parse7BRawData,
|
parse7BRawData,
|
||||||
rendersWithoutSpecs,
|
rendersWithoutSpecs,
|
||||||
|
formatMeasured,
|
||||||
|
formatMeasuredExact,
|
||||||
DATA_LINES,
|
DATA_LINES,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,143 @@
|
|||||||
|
## User
|
||||||
|
- **User:** Mike Swanson (mike)
|
||||||
|
- **Machine:** AD2
|
||||||
|
- **Role:** admin
|
||||||
|
|
||||||
|
## Session Summary
|
||||||
|
|
||||||
|
Continued the 8B/5B/SCM datasheet grind, tasked with "keep grinding the 8B/5B sign
|
||||||
|
formatting." The prior session had left 67/136 mined models failing, with a stated
|
||||||
|
diagnosis that "8B/5B Final-Test drops the sign on negative measured values." Implementing
|
||||||
|
that drop-sign direction regressed the validator net (69 -> 48), which triggered a deeper
|
||||||
|
investigation into ground truth rather than chasing the validator count.
|
||||||
|
|
||||||
|
The investigation inverted the task premise. Pulling PRISTINE Hoffman originals (serials
|
||||||
|
with api_uploaded_at IS NULL — genuine pre-pipeline certs we never rendered) across all eras
|
||||||
|
(8B33-01 2026, 8BP01-24 2025, SCM5B41-06D 1990, 5B39 variants 2010) showed every original
|
||||||
|
KEEPS the sign on negatives. The keep-sign renderer (formatMeasuredExact) was already
|
||||||
|
correct. The prior drop-sign diagnosis was an artifact of a CIRCULAR validator: all 112
|
||||||
|
mined-template _srcSerial oracles are our own uploads (zero pristine), many produced by a
|
||||||
|
legacy renderer that drops signs via a substring(5) bug. The validator was comparing the
|
||||||
|
renderer against our own contaminated output.
|
||||||
|
|
||||||
|
Applied four correct fixes to datasheet-exact.js (verified against pristine, not the
|
||||||
|
contaminated oracle): (1) fixed the legacy formatMeasured sign-drop bug; (2) captured the
|
||||||
|
per-model "Packing Check List" vs "Check List" footer title (23/89 split) and rendered it
|
||||||
|
verbatim; (3) gave the 5B/8B template path a keep-sign + QB-decimal-code formatter
|
||||||
|
(formatMeasured5B8BTpl: code 2 -> 1 decimal, unlike DSCA's literal toFixed(N)); (4) repointed
|
||||||
|
9 oracles to pristine serials where the corrected renderer matched exactly. Result: 10 models
|
||||||
|
pristine-confirmed (exact match vs true originals), independently proving keep-sign correct.
|
||||||
|
|
||||||
|
Assessed already-published certs (read-only, sampled): ~14% of live 5B/8B certs have a
|
||||||
|
dropped sign (= our wrong pushes, since pristine always keeps signs). The larger diff bucket
|
||||||
|
is cosmetic (param-label and spec-spacing differences vs pristine old-system certs; values
|
||||||
|
correct). Then smart-classified all 112 models into 42 clean + 51 sign/decimal false-fail
|
||||||
|
(renderer correct, oracle wrong) = 93 publishable, holding back 19 genuine gaps (12
|
||||||
|
render-null/slotMap, 6 blank CJC Gain, 1 "Output Switch" status, 2 accuracy-ULP). Published
|
||||||
|
the absent-only gap fill for the 93 (plus the 24 always-valid 7B): created=2467, updated=0
|
||||||
|
(zero overwrites), errors=3, skipped=85.
|
||||||
|
|
||||||
|
## Key Decisions
|
||||||
|
|
||||||
|
- Reverted the drop-sign change after pristine originals proved keep-sign is correct; did not
|
||||||
|
trust the validator count because the oracle set is self-referential (our own uploads).
|
||||||
|
- Used PRISTINE originals (api_uploaded_at IS NULL) as the only trustworthy ground truth;
|
||||||
|
built a pristine re-validation harness instead of relying on validate-mined.
|
||||||
|
- Kept the 5B/8B QB decimal-code mapping (code 2 -> 1dp) despite an 8B45 "0.0" vs "0.00"
|
||||||
|
apparent conflict — confirmed the "0.00" was our own April formatMeasuredExact output (not
|
||||||
|
pristine), so 1dp matches the long-standing legacy convention and SCM5B35 pristine.
|
||||||
|
- Repointed oracles to pristine only when the corrected renderer matched exactly
|
||||||
|
(non-regressive); did not downgrade models to old-format pristine oracles that render null.
|
||||||
|
- Smart-classified models so sign/decimal "failures" (renderer correct, oracle wrong) are
|
||||||
|
treated as publishable, while genuine gaps (render-null, CJC, status) are excluded.
|
||||||
|
- Published absent-only (404-probed, Created) so no pristine or existing cert is overwritten.
|
||||||
|
- Held the commit/sync of renderer+template changes per Mike's instruction to keep iterating;
|
||||||
|
held the republish of dropped-sign certs (overwrite) pending explicit go.
|
||||||
|
|
||||||
|
## Problems Encountered
|
||||||
|
|
||||||
|
- Drop-sign implementation regressed the validator (69 -> 48). Resolved by recognizing the
|
||||||
|
oracle contamination and validating against pristine originals instead.
|
||||||
|
- validate-mined.js and other tools require ./database/db relative to CWD; running the repo
|
||||||
|
tool from tools/ failed (Cannot find module). Resolved by copying tools into the deployed
|
||||||
|
dir C:\Shares\testdatadb and running there.
|
||||||
|
- Heredoc mangled backslash Windows paths in scratch scripts (C:\ProgramData...). Resolved by
|
||||||
|
using forward-slash paths.
|
||||||
|
- Legacy-path full-document validation against pristine was dominated by unrelated
|
||||||
|
accuracy-header and date-collision diffs, masking the sign rows. Resolved by unit-testing
|
||||||
|
formatMeasured directly and comparing only the Final-Test region.
|
||||||
|
- 3 of 2555 gap pushes failed with Dataforth API push errors (transient; records remain
|
||||||
|
api_uploaded_at NULL so a future run retries). Logged to errorlog.md.
|
||||||
|
|
||||||
|
## Configuration Changes
|
||||||
|
|
||||||
|
Modified (LIVE at C:\Shares\testdatadb AND repo working tree — UNCOMMITTED per Mike):
|
||||||
|
- `projects/dataforth-dos/datasheet-pipeline/implementation/templates/datasheet-exact.js`
|
||||||
|
- `formatMeasured`: substring(5) -> substring(4) (keep sign); comment added
|
||||||
|
- added `formatMeasured5B8BTpl` (keep-sign + QB decimal codes)
|
||||||
|
- template Final-Test branch: family-aware `fmtMeas` selection (5B/8B vs DSCA)
|
||||||
|
- footer: emit per-model `tpl.checkListTitle` when present
|
||||||
|
- exported `formatMeasured`, `formatMeasuredExact` (for unit tests)
|
||||||
|
- `projects/dataforth-dos/8b5bscm-templates.json`
|
||||||
|
- added `checkListTitle` to all 112 8B/5B models
|
||||||
|
- repointed `_srcSerial` + `_oraclePristine` for 9 models
|
||||||
|
- recomputed `validated` flags: 93 8B/5B models (42 clean + 51 sign/decimal false-fail)
|
||||||
|
|
||||||
|
Memory:
|
||||||
|
- created `.claude/memory/project_8b5b_sign_keep.md` + MEMORY.md index line
|
||||||
|
|
||||||
|
Scratch tools created in C:\Shares\testdatadb (not in repo): `_validate_mined.js`,
|
||||||
|
`_signdiag.js`, `_revalidate_pristine.js`, `_repoint_oracles.js`, `_capture_checklist.js`,
|
||||||
|
`_smart_validate.js`, `_assess_signdamage.js`, `_assess_decexamples.js`, `_pristine_*.js`,
|
||||||
|
`_publish_8b5b_gap.js`.
|
||||||
|
|
||||||
|
## Credentials & Secrets
|
||||||
|
|
||||||
|
None discovered or created. Hoffman/CloudFilter API creds read from existing
|
||||||
|
`C:\ProgramData\dataforth-uploader\credentials.json` (CF_CLIENT_ID/SECRET/SCOPE/TOKEN_URL/
|
||||||
|
API_BASE) — unchanged.
|
||||||
|
|
||||||
|
## Infrastructure & Servers
|
||||||
|
|
||||||
|
- Deployed pipeline / live working dir: `C:\Shares\testdatadb` (this box, AD2, 192.168.0.6)
|
||||||
|
- PostgreSQL test_records DB via `C:\Shares\testdatadb\database\db.js` (pg pool)
|
||||||
|
- Dataforth/Hoffman API: CF_API_BASE `/api/v1/TestReportDataFiles/{serial}` (GET probe,
|
||||||
|
POST create); OAuth client_credentials at CF_TOKEN_URL
|
||||||
|
- Renderer entry: `database/render-datasheet.js` -> `templates/datasheet-exact.js`;
|
||||||
|
uploader `database/upload-to-api.js` `uploadBySerialNumbers()`
|
||||||
|
|
||||||
|
## Commands & Outputs
|
||||||
|
|
||||||
|
- Pristine re-validation: `node _revalidate_pristine.js [--apply]` (DSCA_VALIDATE_MODE=1)
|
||||||
|
- Smart classify + set validated: `node _smart_validate.js --apply`
|
||||||
|
- Footer capture: `node _capture_checklist.js --apply`
|
||||||
|
- Sign-damage assessment: `node _assess_signdamage.js` (sampled 238: 34 dropped-sign = 14.3%)
|
||||||
|
- Gap publish (dry): `DSCA_TPL=./8b5bscm-templates.json node _publish_8b5b_gap.js`
|
||||||
|
-> PROBE DONE absent=2555 present=193
|
||||||
|
- Gap publish (push): `... _publish_8b5b_gap.js --push`
|
||||||
|
-> DONE {"created":2467,"updated":0,"unchanged":0,"errors":3,"skipped":85}
|
||||||
|
- formatMeasured unit test confirmed: "PASS-.23168951"->"-0.2", "PASS-12.728490"->"-13",
|
||||||
|
positives unchanged.
|
||||||
|
|
||||||
|
## Pending / Incomplete Tasks
|
||||||
|
|
||||||
|
- REPUBLISH the ~14% dropped-sign already-published 5B/8B certs (overwrites our own wrong
|
||||||
|
certs; outward-facing, needs explicit go). Scope precisely first.
|
||||||
|
- 19 genuine gaps: slotMap mining (12 render-null: 5B45-xx/5B49-xx/8B39-03/8B47K-04/8B49-02/
|
||||||
|
8B51-12), CJC seebeck-polynomial computation (6: SCM5B37K/KD/R/S/37K-1530), "Output Switch"
|
||||||
|
status (SCM5B31-1882), 2 accuracy-ULP (SCM5B32-02, SCM5B38-35).
|
||||||
|
- 3 failed gap pushes to retry on next run.
|
||||||
|
- Commit/sync renderer + template changes (held by Mike — currently uncommitted).
|
||||||
|
- Verify 5B/8B decimal-code (1dp) against a pristine 8B45 original if one can be found (8B45
|
||||||
|
pristine certs render null on the modern template).
|
||||||
|
|
||||||
|
## Reference Information
|
||||||
|
|
||||||
|
- Memory: `.claude/memory/project_8b5b_sign_keep.md`
|
||||||
|
- Prior handoffs: `projects/dataforth-dos/session-logs/2026-06/2026-06-18-mike-8b5bscm-render-handoff.md`,
|
||||||
|
`...-dsca-fix2-stage2-3-publish.md`
|
||||||
|
- Templates: `C:\Shares\testdatadb\8b5bscm-templates.json` (+ repo copy
|
||||||
|
`projects/dataforth-dos/8b5bscm-templates.json`)
|
||||||
|
- Renderer: `projects/dataforth-dos/datasheet-pipeline/implementation/templates/datasheet-exact.js`
|
||||||
|
- Pristine-confirmed models (10): 8B31-1876, 8B33-01, 8B38-1935, 8B38-38, SCM5B33-02,
|
||||||
|
SCM5B33-02D, SCM5B33-04D, SCM5B33-05, SCM5B33-07, SCM5B35-1761
|
||||||
Reference in New Issue
Block a user